バグ調査は水平思考だった|実務ネタのウミガメのスープを作った


水平思考クイズ(ウミガメのスープ)とは、一見わけのわからない状況について「はい/いいえ」で答えられる質問を重ね、その裏にある真相を突き止める推理ゲームです。答えを直接当てにいくのではなく、質問で可能性を削って範囲を狭めていきます。この手つきは、制作の現場で毎日やっている原因究明とまったく同じです。

「本番だけ画像が出ない」「先方の画面でだけ書体が変わる」「書き出したファイルだけ無音になる」。こうした報告を受けたとき、経験のある人はコードやデータを開く前に質問をします。いつから起きているか、他の人でも起きるか、別の環境ではどうか。この質問の順番がうまい人ほど、原因にたどり着くのが速い。逆に、思いついた場所から順にコードを読み始める人は、当たるまで時間がかかります。

その「質問で範囲を狭める力」だけを取り出して練習できるものが欲しくて、ブラウザだけで遊べる水平思考クイズを作りました。通常編に加えて、エンジニア・デザイナー・動画編集者の実務で実際に起きるトラブルを題材にしたジャンルを用意しています。この記事では、収録した問題の中身、1人で遊べるようにした仕組み、そして遊び終わったあとに実務へ持ち帰れる質問の型までを書きます。


水平思考クイズ(ウミガメのスープ)とはどんなゲームか

水平思考(lateral thinking)という言葉は、エドワード・デ・ボノの著作にさかのぼります。出版元のページには「First published in 1967 as The Use of Lateral Thinking」とあり、1967年の刊行以来のロングセラーとして紹介されています(出典:debono.com「Lateral Thinking. An Introduction」)。筋道を一段ずつ下りていく垂直思考に対して、前提そのものを疑って別の入口を探すのが水平思考です。

日本で「ウミガメのスープ」という呼び名が広まったきっかけは、書籍『ポール・スローンのウミガメのスープ 水平思考推理ゲーム』(ポール・スローン、デス・マクヘール著/クリストファー・ルイス訳)です。版元のエクスナレッジによれば2004年10月20日の刊行で、この形式の問題を81題収録しています(出典:エクスナレッジ 書籍ページ)。以来、ゲームの形式そのものを指す通称として定着しました。

ルールは3つだけです。出題者が不可解な状況を提示する。プレイヤーは「はい/いいえ」で答えられる質問だけを投げる。出題者は「はい」「いいえ」「関係ありません」のいずれかで答える。真相が見えたら宣言して答え合わせをします。

 垂直思考で解こうとすると水平思考で解こうとすると
最初の一手思いついた答えを直接ぶつける状況を分ける軸を探す
外れたとき手がかりが増えないその方向が消えて範囲が狭まる
効いてくる質問「犯人は誰?」「時間帯は関係ある?」
行き詰まる原因前提を疑っていない(前提を疑うところから始める)

思考法としてのロジカルシンキングとラテラルシンキングの関係、そして仕事のなかでどう使い分けるかはロジカルシンキングとラテラルシンキングで整理しています。この記事は、その片方を手を動かして鍛えるための道具にあたります。


なぜ制作者の脳トレとして機能するのか

不具合の調査は、水平思考クイズと構造が同じです。目の前にあるのは「結果」だけで、原因は隠れている。触れるのは、状況を切り分ける質問だけ。そして質問を投げるたびに、可能性の範囲が狭まっていきます。

違いは、実務では質問に答えてくれる相手がいないことです。答えるのはブラウザであり、ログであり、再現手順です。だから調査の速さは、そのまま「どんな軸で切るかを思いつけるか」で決まります。クイズで練習できるのは、まさにこの部分だけです。

もうひとつ、実務との共通点があります。否定の答えにも同じだけの価値があることです。「いいえ」が返ってきた質問は失敗ではなく、可能性をひとつ消した成果です。調査で「ここは関係なかった」と分かったときに手応えを感じられる人は、この切り分けが身についています。実際にブラウザ上で仮説と検証を往復する手順はChrome DevToolsで仮説と検証を回す手順にまとめてあります。クイズで身につく質問の型は、そのまま検証の順番に置き換わります。

そして職種別のジャンルには、もうひとつ効用があります。エンジニアがデザイナー編を、デザイナーが動画編集者編を解くと、隣の職種が何につまずいているのかが分かるのです。「なぜこの依頼はいつも急ぎなのか」「なぜあの確認がしつこいのか」の答えが、問題の真相として書いてあります。


収録した4ジャンル68問の中身

通常編・エンジニア編・デザイナー編・動画編集者編の4ジャンルを各17問、合計68問収録しています。そしてすべて書き下ろしのオリジナルです。有名な問題の転載は1問も含んでいません。既存の問題は検索すれば答えが出てしまいますし、職種別の題材はそもそも既存の問題集に存在しないためです。

ジャンル題材判定の出方
通常編日常のなかの不可解な状況・人物はい/いいえ/関係ありません
エンジニア編デプロイ・キャッシュ・時刻・メモリ・権限YES / NO / IRRELEVANT
デザイナー編色・書体・入稿・レビューのすれ違いYES / NO / IRRELEVANT
動画編集者編書き出し・音・撮影条件・尺の調整YES / NO / IRRELEVANT

判定ラベルをジャンルごとに変えているのは、雰囲気を切り替えるためです。通常編は物語として読ませたいので日本語、職種別の3ジャンルは障害対応のログを読んでいる感覚に寄せたいので英語にしてあります。ゲームとしての挙動は同じです。

ジャンルの追加は、問題データのファイルを1つ足してレジストリに1行加えるだけで済むようにしてあります。タブの並び・問題一覧・件数表示・進捗の保存は、すべて自動で追従します。今後ジャンルを増やす場合も、同じ手順で足していきます。


職種別の3ジャンルは実務で起きるトラブルが題材

職種別の3ジャンルは、いずれも現場で実際に起きるトラブルを題材にしています。以下では各ジャンルの出題文だけを並べます。真相はここには書きません。読んだ時点で「あ、あれか」と思い当たるものもあるはずですが、思い当たらない問題こそ、質問で削っていく練習になります。

エンジニア編:環境・時間・状態が絡む不具合

エンジニア編は、実装のミスそのものではなく「環境・時間・状態」が絡んだ不具合を中心に集めました。コードを読んでも見つからず、質問で切り分けるしかないタイプです。

  • 毎週金曜の夜だけ、デプロイが必ず失敗する。コードは何も変えていない。
  • そのテストは、単体で実行すると必ず通る。だが全テストをまとめて実行すると必ず落ちる。
  • 新しい社員を社内システムに登録しようとすると、その人だけ必ずエラーになる。名前を入れた時点で弾かれる。
  • 海外拠点との定例会議が、毎年3月と11月にだけ1時間ずれる。カレンダーの設定は誰も触っていない。
  • 障害から復旧させようとリトライを重ねるほど、システムは復旧しなくなっていった。

どれも「一度は見たことがある」形にしてあります。心当たりがある人ほど早く解けますし、初見の人でも質問を重ねれば必ず届きます。最難問の★★★★は「原因を突き止めようとログを仕込んだ途端、まったく再現しなくなった」という一問です。

「CSSを直したのに一部の人だけ古いまま」のように、環境の違いが原因になる不具合は現実にも頻出します。実際の切り分け手順はChrome・VSCode・GitHubでCSSが反映されない原因と対処法にまとめてあるので、クイズで引っかかった人はそのまま実務側の対処に進めます。

デザイナー編:入稿事故とレビューのすれ違い

デザイナー編は2種類に分かれます。ひとつは色・書体・データ形式といった技術的な事故。もうひとつは、レビューや合意形成でこじれる人と人のすれ違いです。後者は「正解が技術の外にある」ので、水平思考の練習としてはむしろこちらが本命です。

  • 画面では鮮やかだったのに、刷り上がったチラシはどんよりくすんでいた。印刷所のミスではない。
  • 数値はきっちり中央に合わせた。それなのに、見た人全員が「少し下に見える」と言う。
  • 色分けしたグラフを作ったら、一部の人からだけ「どれがどれか分からない」と言われた。色ははっきり分けてある。
  • 指示どおりに直すたびに、次の打ち合わせで前の状態に戻せと言われる。誰も嘘はついていない。
  • リニューアルしたデザインは社内で絶賛された。公開後、申し込みの数だけが落ちた。

「何案出しても『なんか違う』と返される。具体的にどこが違うのかは、誰も説明できない」という一問は、経験者ほど反応が割れます。技術の問題として解こうとすると、いつまでも当たりません。

動画編集者編:書き出しと撮影条件

動画編集者編は、編集画面では起きないのに、書き出した先や再生する環境でだけ起きるという形の問題が中心です。撮影時の条件が数日後に効いてくるタイプの問題も混ぜました。

  • 編集画面では音楽もナレーションも鳴っている。書き出したファイルだけが完全な無音になる。
  • 同じ部屋で、同じ照明で撮った。それなのにカットごとに明るさが違い、つなぐと不自然になる。
  • 肉眼では何ともないのに、撮った映像だけが細かくチラついている。カメラは新品だ。
  • 「あと10秒だけ縮めてほしい」と言われた。不要なカットはいくらでもある。それなのに縮められない。
  • つなぎ目に粗はひとつもない。音も映像も綺麗だ。それでも試写した全員が「見ていて疲れる」と言った。

映像の制作環境そのものをこれから整える段階なら、After Effects導入前チェックに必要スペックと最初の1本の作り方をまとめてあります。ここで扱っている事故の多くは、環境と設定の理解でそのまま防げるものです。


難易度は★〜★★★★の4段階

難易度は、状況から真相までの距離で決めています。★は1つの軸で切れば届くもの、★★は2つの要素が重なっているもの、★★★は前提そのものを疑わないと届かないもの。そして★★★★は、各ジャンルに1問だけ置いた最難問です。

ジャンル★★★★★★★★★
通常編3941
エンジニア編11051
デザイナー編21041
動画編集者編21041

問題一覧の上部で難易度を絞り込めます。まず★から順に慣らすのが素直な進め方ですが、いきなり★★★★に挑んで、降参してから真相を読むのも悪くありません。解けなかった問題の真相ほど、質問の型として頭に残ります


1人で遊べる仕組み:出題者役はブラウザが担当する

このゲームの最大の制約は、本来真相を知っている出題者役の人間が必要だという点です。1人で遊ぶには、その役をプログラムに担当させるしかありません。

判定は問題ごとの判定表で返す

採用したのは、問題ごとに用意した判定表です。「この語が含まれていたらYES」「この語ならNO」「この語なら関係ありません」という対応を、問題ごとに数十件ずつ書き下ろしました。4ジャンル合計で1,083件のルールがあります。プレイヤーの質問は上から順に照合され、最初に一致したルールの答えが返ります。

判定表を主役にしたのには理由があります。AIに毎回判定させると、同じ質問に対して答えがぶれることがあります。推理ゲームで判定がぶれると、プレイヤーは自分の推理ではなく判定を疑い始めます。ぶれない判定こそがこのゲームの土台なので、まず表で答えられる範囲を厚くしました。

解答は正解か不正解かの二択にしない

解答の判定も同じ考え方です。真相を一言一句あてる必要はなく、核心となる要素をいくつ言い当てたかで見ます。惜しいときは「核心の2/3までは合っています」のように、どこまで届いているかが返ります。正解か不正解かの二択にしないことで、あと一歩の状態から自力で詰められるようにしました。


質問の投げ方でスコアが変わる

クリアすると、その問題にかかった質問の回数とヒントの回数が記録されます。答えにたどり着けたかどうかではなく、何手で届いたかが成績になります。ヒントは1問につき3段階まで開けますが、使うほど成績としては不利になります。

手数を減らす質問には共通点があります。どちらの答えが返っても範囲が半分になることです。逆に、当たれば一撃だが外れると何も残らない質問は、期待値が低くなります。

手数を減らす質問手数が増える質問
それは仕事に関係がありますか?その人は通訳ですか?
時間帯や曜日は関係がありますか?金曜の23時ですか?
他の人にも同じことが起きますか?田中さんだけですか?
環境が変わると結果も変わりますか?キャッシュが原因ですか?

右の列は、実務でいえば「ログを見る前に原因を決めつけている」状態です。当たれば速いのですが、外れたときに次の一手が残りません。左の列は、外れても必ず範囲が狭まります。この差がそのまま調査時間の差になります


AI判定はオフのままでも最後まで遊べる

判定表にどれだけ語を書いても、想定していない聞き方は必ず出ます。そのときだけAIに回す設定を用意しました。ただし既定はオフで、オフのままでも最後まで遊べます。AIは判定表を置き換えるものではなく、こぼれた質問だけを拾う補助です。

AIに渡すのは、その問題の真相と判定の基準、そしてプレイヤーの質問です。返させるのは「はい/いいえ/関係ありません」のいずれか1語だけで、説明文は返させません。ヒントが漏れないようにするためです。

利用にはご自身のAPIキーが必要です。Google Gemini・Groq・Claudeから選べます。入力したキーはその端末のブラウザ内にのみ保存され、CodeQuest.workのサーバーには送信されません。こちらでキーを預かる設計にしていないので、使い終わったらブラウザの保存データを消せば残りません。


遊び方は4ステップ

  1. 上のタブでジャンルを選び、必要なら難易度で絞り込んで、問題一覧から1問選ぶ
  2. 「はい/いいえで答えられる質問」を入力して送信する(例:「曜日は関係ある?」)
  3. 返ってきた判定を手がかりに範囲を絞る。「関係ありません」は、その方向に真相がないという意味
  4. 真相が見えたら「解答を宣言」を押し、自分の言葉で答えを書く

ボタンを使わずキーボードだけで進めたい場合は、入力欄にコマンドを打てます。

コマンド動作
/hintヒントを1段階開く(全3段階)
/answer解答を宣言する
/giveup降参して真相を読む
/list問題一覧に戻る
/cancel解答モードを抜ける

クリア状況はその端末に自動で保存されます。登録もインストールも不要で、途中でタブを閉じても、次に開いたときにどこまで解いたかが残っています。


実務に持ち帰れる4つの問いかけ

遊んで終わりにしないために、質問の型を4つに畳んでおきます。どれも「どちらの答えが返っても範囲が狭まる」問いです。クイズでも実務でも、最初に投げるべきはこの4つです。

問いかけ切れる軸実務での言い換え
いつ起きるか時間・頻度・順番いつからか。毎回か、たまにか
誰に起きるか対象・権限・属性全員か、特定の人だけか
どこで起きるか環境・経路・場所本番だけか、他の端末でも出るか
何をすると変わるか操作・条件直前に変えたことは何か

次に不具合の報告を受けたら、コードを開く前にこの4つを埋めてみてください。埋まらなかった項目が、最初に確認すべき箇所です。「いつ」が埋まらないなら再現条件から、「誰に」が埋まらないなら対象の範囲から着手します。原因の当てずっぽうより先に、この表を埋める時間のほうが安く済みます。

4つを埋めても原因が絞れないときは、前提のどれかが間違っています。「誰も何も変更していない」「設定は触っていない」といった申告は、しばしば事実と違います。ここで前提を疑えるかどうかが水平思考の分かれ目で、ゲームでも実務でも同じです。


よくある質問(FAQ)

Q. 水平思考クイズとウミガメのスープは違うものですか?

同じものを指します。水平思考クイズ(ラテラルシンキングパズル)が形式の名前で、「ウミガメのスープ」はその代表的な一問の題名が形式そのものの通称として定着したものです。日本では書籍『ポール・スローンのウミガメのスープ 水平思考推理ゲーム』の刊行以降、この呼び方が広まりました。当ゲームではその形式だけを借りており、収録している問題は転載ではなくすべて書き下ろしです。

Q. 出題者役の人がいなくても遊べますか?

遊べます。出題者役はブラウザが担当します。問題ごとに用意した判定表と質問を照合し、「はい」「いいえ」「関係ありません」のいずれかを返す仕組みです。判定表はプレイヤーの画面側で動くので、通信の待ち時間もありません。複数人で画面を囲んで、質問を相談しながら進める遊び方もできます。

Q. AIのAPIキーがなくても最後まで遊べますか?

遊べます。判定はまず問題ごとの判定表でおこなうため、AIをオフのままでも全問クリアできます。AIは、判定表に載っていない聞き方をしたときだけ回す補助として用意したものです。オンにする場合はご自身のAPIキーが必要ですが、キーはその端末のブラウザ内にのみ保存され、当サイトのサーバーには送信されません。

Q. エンジニアやデザイナーでなくても楽しめますか?

楽しめます。通常編は職種に関係なく解ける日常の題材で構成しています。職種別のジャンルも、専門知識を前提にした問題ではなく、質問を重ねれば届く形にしてあります。むしろ、自分の職種でないジャンルを解くと、隣の職種が何につまずいているのかが分かるので、チーム内の理解を深める使い方に向いています。

Q. 途中でやめても続きから遊べますか?

クリア状況はその端末のブラウザに自動保存されるので、タブを閉じても次に開いたときに残っています。ただし保存先は端末ごとなので、パソコンで解いた記録がスマートフォンに引き継がれることはありません。ブラウザの保存データを消したり、シークレットウィンドウで遊んだりした場合も記録は残りません。登録やログインは不要です。

Q. どうしても解けないときはどうすればいいですか?

ヒントを使ってください。1問につき3段階まであり、後の段階ほど核心に近づきます。それでも届かなければ「降参する」で真相を読めます。降参は負けではありません。解けなかった問題の真相こそ、次に似た状況へ出会ったときの質問の型になります。読んだあとで、どの質問を最初に投げていれば早く届いたかを振り返ると効果的です。