Mukai Systems

プログラマとウミガメのスープ

正月に「ウミガメのスープ」という推理ゲームで遊んだ。

これは、「シチュエーションパズル」ないし、「水平思考パズル」などと呼ばれるらしい。

シチュエーションパズルは通常何人かのグループで遊ぶ。

一人が問題を出し、他の人はイエス(はい、肯定)・ノー(いいえ、否定)で答えられる質問を出す

場合によっては「関係ありません」などのイエス・ノー以外の答もあり得る

質問者は、出題者が考えているストーリー、あるいは物を推測して語る。

それがすべての謎を説明できたとき、このパズルは解けたことになる。

以下の問題は、シチュエーションパズルの有名な問題の一つ。

ある男がバーに入ってきて、バーテンダーに水を一杯注文した。

バーテンダーは銃を取り出し、男に狙いをつけて撃鉄を上げた。

男は「ありがとう」と言って帰って行った。

一体どういうことか?

この問題で、出題者への質問とその答は、たとえば以下のようなものになる。

質問:バーテンダーは男の声を聞き取ることができたか?

答:はい。

質問:バーテンダーはなにかに怒っていたか?

答:いいえ。

質問:彼らは以前から顔見知りだったか?

答:いいえ。もしくは、関係ありません。

質問:男が「ありがとう」と言ったのは皮肉だったか?

答:いいえ。(ヒントを付けて答えるなら、「いいえ、ある理由で、男は心から喜んでいました。」)

質問:男が水を頼んだとき、乱暴な口調だったか?

答:いいえ。

質問:男が水を頼んだとき、変な頼み方だったか?

答:はい。

正解は以下の通り。

男はシャックリをしていて、水を注文した。

バーテンダーはシャックリの声を聞いて状況を知り、手っ取り早い方法として、銃で男を驚かしてシャックリを止めた。

男は驚いたが、シャックリが止まったので喜んだ。

そして水を飲む必要も無くなった。

-- Wikipedia: シチュエーションパズル

遊んでいるときに、どうも、「ウミガメのスープ」になじめなかった。例えば、上記の例では「驚いてシャックリなんか止まんねーよ。」といったように、パズル自体の質に起因するもの。また、「「乱暴な口調か否か。」の問いには、「関係ない」かむしろ「はい」と返答するのが妥当じゃないか。」のように、出題者の返答に起因するものである。

即席で作った次のパズルを見てほしい。

問
あなたはあるウェブシステムを開発している。
テスターから不具合の報告が上がったが、あなたの環境では再現しない。
一体なぜ?

あなたとテスターは同じサーバで確認をしましたか。
-> いいえ。
あなたが確認したサーバと、テスターが確認したサーバに上がっているソースコードは同一ですか。
-> はい。
status codeは200ですか。
-> はい。
ブラウザのコンソールにエラーが出力されていますか。
-> はい。
テスターはブラウザのキャッシュをクリアして確認していますか。
-> はい。
あなたとテスターが使用してるブラウザは同一のものですか。
-> いいえ。
テスターが使用してるブラウザはIEですか。
-> はい。

答
あなたはChromeを使用していて、テスターはIEを使用していた。
一方で、あなたはIEがサポートしていない「Arrow function expressions」使用していたため、
テスターでのみ不具合が発生した。

こんなものは日常茶飯事じゃあないか。プログラマは厳密に「yes/no」で答えを得られる「質の良い」ウミガメのスープを毎日やっているのである。正月に感じた腑に落ちない点の正体はこれだったのだ。

プログラマが遭遇した事象をまとめた、プログラマのための「ウミガメのスープ」を出版したらそこそこ売れるんじゃないだろうか。

例えば、こんな話がある。

問
あるサーバは毎朝、決まった時刻に強制終了している。
一体なぜ?

答
清掃業者が掃除のためにサーバのコンセントを抜いていたから。

本格的に収集したら出版できそうな気がしてきた。