.NETでXMLを活用していきます。

『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クエスト最終話は、「クライアントサイド」のお話になります。

Comment(0)

コメント

コメントを投稿する