0x000B 開発現場でのよくある風景

#youyeahタグは読み飛ばし可。



 正ギルド員の契約書にサインするのには、324箇所の訂正が必要だった。


 一行辺り、平均三個も悪意ある単語が埋め込まれていたわけだ。あの二人が作成した契約書は、僕が作ったマルウェアより悪質だ。


 とにかく、ジネヴラが経営者。

 僕には首輪が付けられた。首輪の名前は正ギルド員。

 ワースト・ハッカーと言われた僕も年貢の納め時らしい。いつものライフスタイルから抜け出さないといけない。


<youyeah>


 例えば、ドイツのエレクトロニカを流しっぱなしにして、部屋中を踊ったり跳ねたり、俺イケてるFTWなんて叫んだり。ドラッグをぶち込みすぎて、山奥まで自動車ぶっ飛ばし、訳もわからず、山に穴を掘ったりできなくなったわけだ。


 書斎にこもって解析三昧。脳内コンソールは開きっぱなし。スゴいよ、僕の脳も開きっぱなし。酸素も糖分も相当消費したことだろう。


 まるでプログラム開発者みたい。気分はどうかだって?

 システム開発に関わる全ての人と、この気分はシェアできるていると思う。


 最悪suck


 稼働している魔法サービスはよりにもよってJavaで書かれていた。

 プログラマーからするとJavaは使い勝手の悪い言語じゃない。だけど、Javaが使い勝手がいいと言ってる奴はいないと思う。

 メモリリークは直ぐ起こすし、訳のわからないデッドロックを起こす。HashMapなどはバグの宝庫だ。


 一般的なJavaを使ったWebアプリの開発風景を覗いてみよう。


 Javaには色々なバージョンがある。Oracle、IBM、それにGoogle(Android)が独自にJavaを作っている。

 正確に言うとコンパイルで作成されるclassファイルを実行させるJavaVMが別物。でも、それぞれのJavaがそれぞれのバグを抱えている。

 

 問題があって有料サポートに電話しても無駄。手間暇かけてダンプやらログを送っても、大抵、回答は決まっている。

「バグです。でも他のJavaでも同じ問題があります」

 他のJavaで問題あるからバグじゃねーとか意味わからねえ!


 有料サポートの荒塩対応が終わっても、プロジェクトは終わらない。(ある意味終わっているけど)


 地獄への入場チケットが手渡されたチームリーダーは、深呼吸して皆に向かってこう言う。

「今日から徹夜だ。家には電話しとけよ。一週間は帰れないから」

 リーダーの宣言が終わる前に”やっぱり”かという鼻息が聞こえた後、チームの皆は口を揃えてこう言う。

「先週SEのAさんが離婚したから、このチームにいるのはほぼ独身。つまり、大丈夫です。問題はBさんで今週金曜日に離婚調停があります」


 開発現場は死体安置所モルグと大して変わらない。違いがあるとすれば、開発現場に居る死体は喋ることができ、タイピングもできる。そして、定期的にエナジードリンクを飲み干す。

 これぐらいかな?


 まあ、こんな状態で開発されているのが一般的なWebサイト。ハッカーにしたらつけ込み所なんかいくらでもある。ただでさえ脆弱性があるのにね。

 そういったカオスな状態が好ましいのは、ハッキングする側だった場合。脆弱性とはこういったデスマーチから生み出される。


 解析する側に立つと、この法則は逆に適応される。つまり、今の僕はクソのプールに頭から足の先までズッポリ漬かっている。

 ありがたいことに難読化ツールが使われており、解析は困難を極めた。

 ラッシュアワーの門前仲町にバンカーバスターをぶち込んでもこれほど悲惨なことにはならない。


 全てのプログラマーに応援歌を送りたい。


 バグを作りたくて作ってる奴なんかいない。バグが好きで好きでたまらないって奴がいるなら教えて欲しい。ぶっ殺してやる。最低五回はぶっ殺してやる。

 納期は短いし、仕様変更は当たり前。海外開発させたら、大陸越えてぶっ飛んだコードを送ってくる。

 そういう開発あるあるMurphy's Lawは知っている。


 標準化();

 return 何それ、おいしいの?;


 ペア・プログラミング();

 return テメエぶっ殺してやる!;


 そしたらカウボーイ・プログラミング();

 return フリーダムすぎんだろ!;

 

 こんな感じだ。


 コードは極力スマートに作成して欲しい。

 僕だって、マルウェアを作成する時には、バイト単位で命を削っているのだから。


 まあ、ドイツのエレクトロニカを流しっぱなしにして、部屋中を踊ったり跳ねたり、俺イケてるFTWなんて叫んだり。ドラッグをぶち込みすぎて、山奥まで自動車ぶっ飛ばし、訳もわからず、山に穴を掘ったりするけどね。



 魔法の公開までは辿り着けた。

 逆コンパイルかけて、リバースエンジニアリングツールでクラス図とか展開させたが、もう何が何だか状態だった。

 てか、クラス名にIterator1()からIterator256()まであった。

 デザインパターンって、この世界でも、あったんだって思ったけど、作った奴はIteratorがそもそも何なのか全くわかってねえ。マジで止めて欲しい。


 以前に、中国人プログラマが作成した中国語関数を連発するプログラムを解析したことがあったけど、それより意味不明だったよ。


 とにかくエルフのコードも出来が悪く、繰り返し処理が無駄に多かった。つまり、共通関数を事前に準備せず、コピペで済ませたんだろうと思う。

 それにパブリック変数が多すぎ。

 オブジェクト指向言語でカプセル化しなくてどうするの?

 そういう部分ってハッキング対象になっちゃうんですけど!

 オブジェクト指向の言語でアクセサの定義をしっかりしておかないと脆弱性に直結する。パブリック変数を嬉しそうに並べていたら、他のクラスから無理矢理変数を書き換えられ、動作が変わる。

 てか、ハッカーがハッキングされないようにプログラムするとか、何か色々とおかしいし、間違っている。


 冗長な部分をバッサリ削除。変数の初期化とか、条件文を見直したりだとか。繰り返し部分は関数化する。

 見通しの悪いコードは思わぬエラーを作り出す。


 皆、知識としては知っているけど守れない。恐らく納期が近かった。もしくはスキルがある奴がいなかった。それが理由だろう。

 脆弱性の多くは人員不足と、時間不足、品質管理不足から生まれる。


 それにしても、魔法ってさ、もっとファンタジーな感じじゃないの? ねえ?

 色々と泥臭いものが垣間見えてるですけど。コメントとか見ていると。


// I am not sure if we need this,but too scared to delete.

(これが必要かわかんね。でも、怖くて削除できねえ)


 // I have to find a better job.

(もっといい仕事探そう)


 //Mr. Compiler, pleeease do not read this.

(ミスター・コンパイラー、このコードを読み込まないでくだしあ)


 なんかもう、こういうコメント見ていると、こっちが辛くなる。

 コードが酷くなっている有様は、エルフの置かれた境遇が悲惨であったことを物語っている。デスマーチとか、そんなかわいいもんじゃない。


 例えるなら、ピラミッド造りに強制参加させられましたって感じ。

 おーい、お前ら、今日からクフ王のピラミッド造るから。土日無しで年内完成。サハラ砂漠暑くて死にそうだけど、労災とかないからな、みたいなノリだったと思う。


 絶対、過労死したエルフが居ると思う。


 魔法の源泉となる部分。つまり力を供給する部分についてはライブラリの呼び出しを行っており、これは何の言語で書かれたのかサッパリわからなかった。

 アセンブラレベルで解析したらわかるかもと思ったが、命令セットが拡張されてすぎてて、どういう処理をするのか本気でわかりません;


 回りくどくなったが、進捗率を報告しないとね;

 ああ、疲れているみたい。文末がセミコロンになっている。

 コーディングばかりしてると、コードで会話するようになるんだよね。


 後は実技試験を待つばかり。

 魔法ギルド設立に向けて作業をしている内に、僕は自分の首輪がどういうものか理解できた。


 魔法ギルドはブラックだ。

 現代の魔法開発者は全員ギル畜だと思う。そう思わなきゃ、やってられない;

 

 僕が望んだ普通の生活が、陽炎のように消えてゆく……;


 return null;


</youyeah>

  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る