みなさんは、いつもお使いのパソコンやスマホ、あるいは自分の書いたソフトウェアに不具合が起こったらどのように直していますか? じっくり調査して原因を特定するのが正攻法ですが、いつも上手くいくとは限りません。今日は、私が半年ほど前から使っている画期的なメソッドを紹介します!
ITサービスの不具合というのは、実に様々な原因で発生します。単にソースコードの流れから読み取れる制御構造や呼び出しのミスによるバグであれば、原因の特定と修正はかなり容易ですが、ソースコードはITサービスが抱える複雑性のほんの一部です。ITサービスは、ソースコードを空中に放り投げれば動く魔法ではありません。ソースコードをビルドし又はビルドしないで、実際の処理を行うサーバに実行環境を載せて、それらを大量のケーブルやネットワーク機器で繋ぎ合わせたあげく、想定から外れたリクエストさえ受け取る必要があるのです。
ソフトウェアの不具合なら、特定の動作の順番やタイミングの組み合わせでしか発生しないとか、長く起動していると発生する可能性が高いとか、そもそも起動の際に差し込んだパラメータが誤っているというケースもありえます。漫然とソースコードを書いているだけでは意識できないものですが、外部のデータ変換で把握していなかった仕様があるとか、ハードウェアの組み合わせを変えるだけで解消されることもあるわけです。実行環境からはハードウェアに見えても、実はソフトウェアでエミュレートされているた世界の可能性もあり、その場合は仮想環境を作り上げるソフトウェアに特有の不具合があるかもしれません。
私たちはこれらの環境に飛び込んで色々なレイヤーで原因を探し回るわけですが、直接関係のない擬似相関を見いだして明後日の方向に進んでしまったり、バグが発生する状況を安定して再現するのさえ難しいケースもあります。逆に、調査のために挿入したprint文がバグを一時的に解消してしまうことさえ珍しくありません。最低限のつもりで観測しても、対象に大きな変化を与えてしまうわけですね。その他にも、ITサービス運営者の掌握しうる範囲を超えた環境の変化が原因かもしれない……などと考え出すときりがありません。量子力学ほどの不確定性はありませんが、やはりITサービスの複雑性は日々高まり続けています。
もちろん、パソコンやスマホを使っている人もこの手の複雑性とは無縁ではありません。日々使っていると動作が重くなるタイミングがある、保存に時間がかかったりたまに失敗してしまう、といった曖昧な事象はもちろん、アプリが起動してから数秒で勝手に落ちる、特定のデバイスを接続しても認識しない、音が途切れてブルースクリーンが出るといった明確な事象であっても、これらの原因を特定するのは容易ではありません。
不安定なアプリのストアページには、あれが動かないこれが動かない早く直せというような、およそバグの再現と解消には繋がらないだろう情報不足のレビューが大量に溢れています。仮に詳細な状況が書いてあったとしても、それが役に立つとは限らないのが難しいところです。「バニラアイスを買うと車のエンジンがかからない」という現象にアイスの種類は関係なかった、というのは有名なエピソードですが、これはもちろんただの笑い話ではありません。このような不具合の解消には、目の前の現象と向き合うに足る知識とそれを活かす直感の両方が必要です。
しかし、機器の動作や環境についての知識は訓練や学習でどうにかなっても、目の前で絡まり合った複雑性を解いて原因を突き刺すような直感は、誰でも簡単に身につけられるものではありません。では、子羊のような私たちは不具合が勝手に解消するまで我慢したり、祈りながら機器を交換し続けるしかないのでしょうか? ――いえ、まだできることがあります!
人間は太古の昔から、降雨の大小や農作物の豊凶、洪水や台風、疫病の蔓延などの理解しがたい複雑なメカニズムを掌握するために神仏の力を利用してきました。このような神仏の力に頼るという思いは現代にも受け継がれていて、たとえば神田明神ではIT情報安全守護を授与しています。パソコンやスマホの利用中や、ITサービスの運用中に理解しがたい複雑怪奇な不具合が起こらないよう、人知を超えた神様の力が働くことを期待しているわけです。このような護符の入手は一つの解決策になりえます。
さて、本題に入りましょう。私が昨年の夏に入手してから重宝しているのが、この「バグキャッチャー」です。まさに神の力を感じるような金色のボディを基調にして、持ち手は赤い塗料(ベンガラでしょうか?)で色付けされています。持ってみると結構重たくて、真鍮製か鉄に真鍮めっきをしているのだと思います。ときどき持ち手の赤い塗装が剥がれて黒い地が出てくるので、たぶん鉄製ですね。剥がれた箇所は塗り直しながら使っています。
バグキャッチャーは、半分に割れた球体をはさみのように開いたり閉じたりできる神具です。たぶん、球体を開いてこの中にバグや不具合を閉じ込めるという役割を込めた意匠でしょうね。中には小さな鈴が入っているので、振るときれいな音がします。鈴の音には魔除けの霊力があって、また神様も鈴の音の響きを好むと言われているので、バグ除けの神具としては一石二鳥ですね。後ろに写っているのはバグキャッチャーの補助器具で、見た目の通り振ると鈴が鳴るだけのものです。
このバグキャッチャーを入手したときは、まさかバグを解消できる力を持つ器具だとは思えないパッケージで売られていました。パソコンに向かう時にはいつもこれを使うので、普段はパッケージに入れずに机の横に置いてあるのですが、改めてブリスターに入れて当時の見た目を再現してみます。当時はこれが陳列フックに吊るされて大量に並んでいたのだから驚きですね。今はもうなかなか売っていないと思います。
どうですか? まるで、屋外で小さな生き物でも捕まえる子供向けのおもちゃのようにも見えてきます。値段も神具にしては格安の100円だったので、今買わなかったら次は売り切れてしまう!と確信して衝動買いしたのです。私が信用したのは「バグキャッチャー」という分かりやすい名前だけでした。でも、それが実際今ではIT技術の活用に役立っているのですから、商品の価値はやっぱりパッケージのデザインだけでは分かりませんね。
バグキャッチャーの使い方はとても簡単です。不具合が起きているサーバの場所に行けるならそこで、クラウド上ならSSHコンソールを表示した画面の前で、あるいは不安定なパソコンやスマホに向かって、潜んでいるバグを捕まえるようにバグキャッチャーの開閉を繰り返します。人によってはマシンから飛び出すバグの軌跡が見えるらしいですが、私はまだその域には至っていません。まだ不具合が起きていなくても、暇なときは1日1回くらい、忙しくても1週間に1回は予防的にお祓いをしています。
動画でも紹介しますね。たぶん、この音をスマホで流すだけでも多少バグを防いでくれると思います。
今回は補助の鈴を使わずに解消できましたが、根が深い複雑なバグの時はこの鈴もしっかり鳴らしてバグを祓います。前に鈴を併用したときの動画もあるのですが、両手で金色の神具を振り回すのが悪魔祓いみたいでおどろおどろしいし、声も大きくて恥ずかしかったので公開するのは避けておきます。こちらの鈴も同じお店で入手できるので、もし必要なら一緒に購入してください。
ここまで紹介しておいてなんですが、バグキャッチャーを安価で手に入れられる機会はしばらく来ないと思うので、もし入手したい方がいたら夏ごろまでじっくり待つことをおすすめします。たぶん、初夏あたりにセリアに行けばいくらでも売っていると思うので、インターネットで高い類似品を掴まされないように気を付けてください。もしこの冬や春にバグに悩まされることがあったら、価格と天秤にかけて購入を検討してみるといいと思います。
最後になりますが、株式会社成近屋が製造するおもちゃ「バグキャッチャー」には、この記事で示したような効能や効果は全くありません。誤った認識に基づくバグキャッチャーの購入費用や、標準的なソフトウェア分析手法を無視してバグキャッチャーを使用したことによって被った損害の責任は、一切負いませんのでご注意ください。
あらゆるIT技術は魔法ではないので、できる限りその複雑性に向き合って解消に努めるべきです。祈りや神仏の力が通じる範囲はごく限定的であって、おそらく現代のマシンやソフトウェアは神性を理解しません。神的な体験はあなたの直感をわずかに向上させるかもしれませんが、あくまでアロマやストレッチのような気分転換と同じく補助的な手段です。適切な手法を組み合わせて、あなたのコーディングライフを向上させてくださいね。