トラブルの「捜査手順」 [Edit]

殺人事件の捜査は、まず被害者の特定に始まり、つぎに犯行時刻を推定し、そして容疑者のアリバイを洗います。トラブルシューティングの手順も、これと同じ考え方で進めることができます。

[1]被害者の特定
被害者が誰なのかがわからなければ、捜査は難航をきわめるでしょう。トラブルシューティングでは、「結果」として何が起こったかを特定することが大切です。このとき「うまくいきません」とか「動きません」で済ませるのは、「死体がありました」だけで捜査を進めるのと同じです。死体が具体的にどういう人物か、つまり結果が具体的にどういうことなのかを明らかにしなければなりません。

「動かない」のは、そもそもハンドラやステートメントが実行されていないのか、あるいは必要な要素が整わないために、実行したにもかかわらず変化がないのかを確認する必要があります。後者であれば、使われている変数値やインスタンスの取得、条件など、具体的にどこが「うまくいかない」のかを確かめます。

できれば、新規のムービーから、問題を再現することが望ましいでしょう。

参考:「質問NGワード集」 > 【問題を再現しようとしない】

[2]犯行時刻の推定
被害者がいつ殺されたのかは、容疑者を特定するうえで、きわめて重要です。鑑定に加えて証言や証拠で、被害者はいつまで生存していて、少なくともいつの時点で死亡したかを絞込みます。トラブルシューティングなら、どこの時点まで意図どおりに動作し、どの段階で問題が発生しているのかを確認していくということです。問題を絞込まずにカンで原因を確かめようとするのは、犯行時刻を特定せずにキャッチセールスのような聴込みをするのと同じです。

よくあるパターンが、「外部テキストを読込んで、〜をしたらうまくいきません」という質問です。「外部テキストを読込んだ」ことが、本当に事件に関係しているのかどうかは、確かめなければなりません。犯罪捜査とは異なり、Flashムービーは何度でも変更を加えて、試してみることが可能です。テキストを外部から読込まずに、予め入力しておいたり、スクリプトで直接設定してみれば、事件との関わりが簡単にわかります。経験上、8〜9割り方「外部テキストの読込み」はシロです。

参考:「ScrollBarコンポーネントのスクロールバーがアクティブにならない
*よく「外部テキスト」が犯人扱いされる例

[3]アリバイ捜査
犯行時刻が絞込まれると、具体的な容疑者も上がってきます。つぎの段階は、それら容疑者のひとりひとりについて、アリバイを洗うことです。つまり、トラブルの原因と考えられる要素を、ひとつひとつ確認します。多くの場合、この段階でかなり原因の目星がついてきます。しかし、実際にテストして確かめるまで、予断は禁物です。

犯行時刻が十分に絞込めなかったり、容疑者が多すぎるという場合には、「消去法」を使います。つまり、ムービー中の要素(フレーム・シンボル・インスタンス、あるいはスクリプトのステートメントなど)を片っ端から削除していきます。その都度動作を確認して、問題の現象が消滅したら、その直前に削除した要素の中に容疑者がいます。そうして、これ以上ひとつの要素も削除できないという状態になったら、改めてその内容を詳しく検討します。

[4]犯行動機と殺害方法
犯人を逮捕するには、その証拠をつかまなくてはなりません。そのためには、なぜ犯行に及んだかという動機と、どのように殺害したのかという方法を明らかにする必要があるでしょう。トラブルもその原因と発生のメカニズムが判明しないと、解決には至りません。この解明は、地道に調査するしかありません。

中には、いきなり山カンで動機を決めつける人がいます。起こった問題だけいい立てて「このアクションはこういうときには使えないものなのですか」とか、いきなり「バグでしょうか」などという質問をされる方々です。「こういうとき」がそもそもどういうときなのかという詳しい状況には触れず、バグと決めつけた現象の具体的な説明もないままです。細木数子ハンナ・ポドヴィチでないかぎり、死体を見ただけで犯人の動機を言い当てようなどと考えるべきではありません。くれぐれも、思込み捜査やえん罪で、真犯人を取逃がす愚は避けましょう。

その他の記事