『TypePadクエスト』第2話:逆転脱出
はじめての軟禁
「サーバルーム」。
それは、侵入することがとても難しい部屋。
しかし、そこから脱出することは、侵入すること以上に困難である部屋。
不幸にも閉じ込められた「あなた」は、待ち受けている「運命のいたずら」の数々に、果たして耐えられるのか?
●○●
「システムの不具合」によって怒り狂う「情シス担当者」が、あなたを追いつめる。
必要以上に冷やされた室温によって、あなたの体力が徐々に奪われていく。
そしてあらたなる敵、「尿意」が登場。
冷静な判断の継続がさらに困難に。
ネットワークセキュリティも最高レベル。
インターネットから切り離された端末しか存在しない。
あなたのうろ覚えの知識が次々と「無力化」する。
ここには当然「Visual Studio」は存在しない。
使用できる武器はただ1つ。「メモ帳」のみ。
果たして、あなたは無事に生きて脱出することはできるのか?
●○●
脱出系
皆さんこんにちわ。ゲームの中でも特に、「脱出系ゲーム」にハマっている昨今です。あの「クリムゾンルーム」がなんと、Nintendo DSで出ていることを最近知りました! 早速Amazonで注文です。
今回は、ある意味脱出系ともいえる「サーバルーム」から、実際に「奇跡の生還」を果たした技術者の実体験をお送りします。
ではどうぞ。
直さないと出られない
ターゲットは、ASP.NET2.0のWebアプリ。
わたしの仲間が作ったアプリだ。
しかし、こいつがうまく動かなかったせいで、予備知識の全くないわたしが閉じ込められたのだ。
自らの不幸をいくら嘆いてみたところで、何の解決にも繋がらない。
とりあえず、現状を冷静に分析してみることにする。
それが「生きることへの希望」を捨てていない決意の行動でもあるのだから。
……どうやら言語はバイリンガル。C#とVB.NETの両方を使用している。
コードビハインド有無は、ほぼ8割コードビハインドだ。
運が悪いことに、「Webプロジェクト」で作られているようだ。
「Webサイト」で作られていれば、「メモ帳」だけで十分に戦えたものを……。
修正個所を特定する
わたしは、できる限りの情報を集めた。
何しろ、こちらの武器は「メモ帳」しかないのだ。
どんな些細なことでも、解決の糸口になる可能性はある。
そして、ついにわたしは、修正しなければならない箇所をつきとめた。
しかし、それは、わたしを喜ばせ、かつ、失意のどん底に叩き落とした。
なんと修正個所は、「コードビハインドした中」にあったのだ。
「Webプロジェクト」の場合、コードビハインドしたコードはコンパイルされ、「DLLファイル」に変化する。
ところが、「DLLファイル」になったが最後。メモ帳ではもはや修正することができない。
「人生終わった」。
もはや、自らの運命を恨む気力すらなくなっていた。
30分くらいが既に経っただろうか。
ただただ、端末のモニターを、目の前に広がる風景としてながめていた。
「サーバルーム」の異様な寒さの中、わたしの思考回路は「完全停止」していた。
さらに10分ほど経過したところで、それは突然やってきた。
何かにたとえるならば、「天からの助け」が頭の中に舞い降りてきたかのように、とあるアイデアを閃いてしまったのだ。
デリゲートから抜く
わたしは生き返った。
もう一度修正箇所をよく確認してみた。
どうやら修正個所は「デリゲートに登録されたメソッドのみ」で構成されている。
しめた!
デリゲートは通常、メソッドを登録して使うのものだが、逆に言えば、登録してあったメソッドを削除することも当然可能なのである。
修正対象であるメソッドの名前を「AAA」と仮定して、よくよく考えてみる。
確かに、DLL化した「AAA」メソッドは、もはやメモ帳では修正できない。
しかし、「AAA」メソッドはデリゲートに登録され、そのデリゲートを呼ぶことで初めて動作する。
その「AAA」メソッドをデリゲートから抜いて、新たに定義した「BBB」メソッドに入れ替えれば、動作上は「AAA」メソッドの内容を書き換えたことと同じになる。
これで形勢逆転だ!
生きる
脳細胞が再び活発に動き始めた。
膀胱は今にも破裂しそうだが、目指すゴールまで突っ走るしかない。
わたしは一心不乱に「ASPXファイル」を編集し、上書き保存を実行した。
ついに、「メモ帳」だけでWebアプリの不具合は修正されたのだ。
ようやく「サーバルーム」の重い扉が開く瞬間がやってきた。
ありがとうデリゲート。あなたのお陰で、生きて帰れます。
「サーバールーム」から出た瞬間、わたしは生温かい空気に包まれた。
脱出できた喜びを、まさか部屋の温度差で実感することになろうとは……。
この日起こった全ての出来事は、一生忘れることのできない「記憶」として深く体に刻み込まれた。
その後、あの「サーバールーム」がある会社の前を、たまたま通る機会があった。
わたしを閉じ込めた担当者は、まだ在籍しているのだろうか?
体に刻み込まれた「生温かい空気」の記憶によって、涙が頬を流れた週末であった。
最後に
このドラマはフィクションであり、実在の人物・団体等とは一切関係がありません、と言いたいところです(苦笑)。
今回のお話は、技術的に見ると「サーバサイド」のお話でした。実際に修正したサンプルコードを出したところで、大して興味をもってもらえそうにないですし、ソースコードのカラーリングは約2日くらい時間が掛かりそうなので、今回の掲載は無しです。また、別の機会があれば掲載したいと思います。
次回、TypePadクエスト最終話は、「クライアントサイド」のお話になります。