ふつーのプログラマです。主に企業内Webシステムの要件定義から保守まで何でもやってる、ふつーのプログラマです。

ハローサマー、グッドバイ(5) 説明にならない説明

»

 ボリスによる概要説明が終わった後、谷少尉が、ぼくを部屋に案内してくれた。

 「明朝は7 時にモーニングコールが入ります」谷少尉はぼくに告げた。「それまで、このドアは中からは開かなくなります。シャワールームやトイレ、ドリンク類は全て室内にありますが、他に何か必要なものがあればお持ちします」

 外出の自由をくれよ、と言いたいのを我慢して、ぼくは首を横に振って部屋に入った。ドアが閉まり、電子ロックのかかる音が聞こえた。

 ビジネスホテルのシングルルームより小さな部屋だったが、エアコンが効いていて快適だった。部屋にあるのはベッドと小型の冷蔵庫、何冊かの古い文庫本と今日の新聞が載ったデスク、バスルームだった。照明のスイッチは壁にあるが、その他のスイッチ類はなく、窓も高い位置に採光窓があるだけだ。一応、ドアを調べてみたが、内側にはドアノブさえなかった。谷少尉が言っていた独房というのは、この部屋のことだったのかもしれない。

 スマートフォンを充電したいところだったが、コンセントは1つもない。バッテリーを節約するために電源を落とした。

 シャワーを浴びた後、冷蔵庫に1本だけ入っていた缶ビールをすすりながら、ぼくは1枚だけもらった構成図を眺めた。

Photo_3

 いかにも素人が作った感ありありな構成図だった。ぼくに説明しなければならないので、慌てて作ったのだろうが、ひょっとすると何か別の理由があったのかもしれない

 ボリスの立ち位置がどうもはっきりしなかったのだが、プログラマでないことだけはわかった。ボリスが嫌々ながらしてくれた概要説明は、文字通り概要そのもので、パッケージ商品なら箱に印刷されているレベルの情報しか与えてもらえなかった。少し細かい部分を質問すると、決まって「企業秘密だ」という返事が投げつけられた。企業秘密というのは表向きの理由でしかなく、ボリス自身もプログラムレベルの構成情報は知らないのだろう。

 とにかくその説明によれば、ソリストは指揮車両に搭載されるサーバ群と、各隊員が携行するAndroid 端末で構成されている。サーバを構成する主なモジュールは7種類だが、冗長化および分散処理のため、オペレーションMM では12 台のサーバを持って行くという。

 「サーバはいずれも特注品だ」ボリスは自慢そうに言った。「小型筐体だが、性能は破壊的なぐらいもの凄い」

 ボリスがもったいぶって見せてくれた画像には、見たこともない形状のサーバが写っていた。筐体の天板にはずらりとヒートシンクが生えている。大きさはピザボックスより一回り小さいぐらいか。スイッチやパイロットランプなどは一切付いていない。ラックにセットすると、自動的に電源が入るらしい。

Server_2

 「可能な限り静音性を高めるためにファンレスだし、全てフラッシュストレージにしてある。プロセッサやメモリは省電力・低温設計の製品だ」

 「あまり頑丈には見えませんね」

 ボリスはぼくを睨んだが、谷少尉が口を挟んだ。

 「表面が穴だらけだからそう見えるかもしれませんが、フレームはチタニウム製です。10メートル上からコンクリート面に落としても壊れないぐらいの耐久性テストをクリアしてもらってます。防水、耐熱はもちろん、9ミリまでなら銃撃も大丈夫です」

 「ハウンドの軍事関連機器は、世界各国の軍で使用されているんだ」ボリスはぼくの無知を笑うように鼻を鳴らした。「お前が見たこともないような高度な技術を持ってるんだよ」

 「ミスター・ボリス」谷少尉が穏やかに促した。「続きをどうぞ」

 サーバOS は、CentOS にカスタマイズを加えたLinux だという。搭載メモリは24G。やや少ないように感じられるが、フラッシュストレージが非常に高速であるため問題はないそうだ。そのストレージは冗長化構成で、サーバ1台あたりの有効使用可能領域は640T。そんなに大容量を何に使うのか訊いたところ、ほとんどがデータベースとなるそうだ。

 「さらにいくつかのソフトウェアはチップ化してある。たとえば、OS のカーネル部分やJavaVM、DBMS だな。バージョンアップはチップごと差し替えるだけだ」

 「DB は何を使ってるんですか?まさか、MySQL とかじゃないですよね?」

 「RDB ではないです」谷少尉が言った。「処理速度、スケールアウト、分散処理などの点から、KVS データベースを要求しました」

 「その要求に応じて、Soldis を作成した。Redis というKVS をカスタマイズしたデータベースだ」

 「Redis なら知ってます。メモリデータベースですよね」

 「そうだ。Soldis はメモリを使わないがな。ソリストで使用するデータは、全てSoldis に格納される。全てのデータは、同時に2台以上のサーバにレプリケーションされる。また、全てのモジュール、サブモジュールは、やはり2台以上にスタンバイがあり、ハード的、ソフト的、どちらのダウンにも瞬時にフェイルオーバーされる。緊急時にはどれか1台のサーバだけでも、全機能を代替することができるし......」

 ボリスはその後もソリストの構成について、いくつか説明を並べたが、ぼくが知りたいこと、すなわちソフトウェア的な構成がどうなっているのか、という点については、何の情報も持ち合わせていないことがわかった。さすがに温厚なぼくも、少し腹が立ってきたので、これではデバッグなどできません、と少しきつめの口調で言ったところ、谷少尉も同調してくれた。

 「ミスター・ボリス。ソフトウェア的な部分について、説明できる人を呼んでおいて下さい、とお願いしたはずですが」

 「それが、どうも担当者の乗るはずだった飛行機が飛ばなかったようで」ボリスは涼しい顔で釈明した。「明日の振替便に乗ると言っていましたが」

 「ソースは事前に見せてもらえるんですか?」

 ぼくの問いに対して、ボリスはまたしても蔑んだような笑いで答えた。

 「私の一存じゃ決められないな。上に確認しておこう」

 「これだけ巨大なシステムなんですから」ぼくは怒りを抑えながら言った。「構成を掴むだけでも時間がかかります。直前に見せられても、何もできませんよ」

 「そうか?何しろ、ソースは企業秘密だからな。いろいろな手続きに時間がかかるんだよ。お前が優秀なプログラマなら、初見のプログラムだって何とかできるんじゃないのか」

 ぼくは谷少尉の顔を見たが、どうしようもない、という諦観の表情だけがあった。

 「ミスター・ボリス。そちらが企業秘密の流出に慎重なのはわかりますが、もう少し協力していただかないと困りますね」

 「上司に確認しておきます」

 これ以上食い下がってもムダだ、と思わせる口調だった。それがわかったのか、谷少尉も重ねて要求しようとはしなかった。

 結局、単に1時間ほどの時間をムダに費やしただけの、実りのない概要説明だった。部屋まで送ってくれる途中、申しわけなさそうな顔で謝ってくれた。

 「すみませんでした。佐分利の方に、何とか実装レベルの情報を出してもらえるように話しておきます」

 「実際、1日でどこまで見られるのかわかりませんけどね」

 ぼくがそう言うと、谷少尉は困ったような顔になった。

 「何か?」

 「明日は、午前中、いくつかの簡単な訓練を受けてもらうことになっています。午後は装備の説明などもありますから、ソースが入手できたとしても見る時間は、夕食以降になってしまうかもしれませんね」

 「発注者としての権限で、要求することはできないんでしょうか」

 「JSPKF もなかなか微妙な立場にあるので、無用な波風を立てるわけにもいかないんですよ。むろん、向こうのいいなりになる素人じゃないので、要求はしっかりしていきますが」

 「......」

 「隊員達のソリスト端末の方は、明日の装備の説明の際、うちの隊員の誰かに説明させます。そっちのハードは、ハウンド製ではないので。といっても、ソフトウェア部分の中身まではわからないですがね」

 「谷少尉もわからないんですか?」

 「そうなんです」谷少尉は少し悔しそうに答えた。「本当は、私がもう少し深く関わる予定だったんですが、ちょうどその頃、川崎の方でZの侵入が続いて対応に追われていたので」

 一人でベッドに寝転がり、装飾性皆無の殺風景な天井を眺めながら、先ほどの概要説明について考えた。説明されなかったことを、と言った方が正しいかもしれない。

 ボリスは明らかにぼくの参加を歓迎していない、というより、露骨に拒否反応を示している。個人的に嫌われた、という可能性もあるが、谷少尉が言ったように「コードを読める人間が参加する」ことを嫌がっているようだ。これは何を意味するのか。

 インシデントZ前、都内の中堅ネット通販会社のサイト改修の仕事をしたことがあった。いろいろな営業的な駆け引きの結果、PC 版サイトを競合他社――A社としておこう――が、モバイル版サイトをぼくがいた会社で請け負うことになったのだが、担当営業マンによれば、A社は非常に強引な価格設定で受注を勝ち取ったそうだ。同じ横浜市内の会社だったのだが、起業したばかりの若い経営者が何としても仕事を取ろうと必死だったのだろう。営業交渉には、A社の社長自らが足を運んだそうだ。

 システム構築の手順は、まずPC 版サイトがカットオーバーした後で、モバイル版を組み込む形に決まった。モバイルファーストと逆行する考えだが、元々モバイル版を重視していなかったのだろう。担当営業マンはPC 版――できれば両方――を取りたかったのだが、常識外れの価格に負けたらしい。

 ぼくたちは準備をしながらPC 版サイトが上がってくるのを待った。週に1度の進捗会議では、非常に順調だという報告が上がってきていたので、それほど心配はしていなかったのだが、次第に波風が立ち始めた。契約上の零号テスト日を2週間以上過ぎても、プロトタイプさえ上がってこなかったのだ。ぼくはモバイル版担当技術者として進捗会議に参加だけはしていたのだが、ユーザ側の苛立ちが日毎に募っていくのがわかり、他人事ながらハラハラしたことを憶えている。クレジットカードのオーソリ部分で滞っているという話だったので、「その部分だけでも弊社でやりましょうか」と申し出てみたのだが、にべもなく拒絶されてしまった。技術料を請求されることを嫌っているのかと思い、営業とも相談した上で「無償で協力しますよ」と再度提案してみたが、やはり拒否された。ぼくの立場としては、それ以上強引に出ることはできず、引き下がるしかなかった。

 やがて破局が訪れた。業を煮やしたユーザ側担当者が、「途中でも何でも、とにかく今現在できている分だけの全ソースを、即時に納品してもらいたい。でなければ契約不履行でしかるべき措置を取る」とA社の社長に直接電話をしたのだ。その電話は、進捗会議のまさにその席でかけられ、同席していたA社のエンジニアは蒼白になった。A社の社長は、様々な理由をまくしたて、週明け――その日は金曜日だった――までの猶予を得ようとしていたが、ユーザ側担当者は聞き入れなかった。

 ソースは30分後に送られてきたが、圧縮ファイルの中身は全てのファイル名が文字化けしていた上に、ファイルサイズがゼロバイトだった。時間稼ぎをしていると見たユーザ側担当者が「10分以内にまともなファイルが送られてこなければ、意図的な詐欺行為と見なす」と伝えたところ、9分40秒後に正しい圧縮ファイルが送られてきた。

 中身を見せてもらったぼくは愕然となった。HTML 部分だけは完成していたが、PHP 部分はほとんど手つかずだったのだ。後に明らかになった事情によると、同じ時期に別の仕事を受注してしまい、そちらの方が金額が大きかったために、エンジニアのリソースを全て投入してしまったとのことだった。A社の社長は、とても弁舌の立つ男性で、口先一つで経営上の危機を何度も切り抜けてきたと豪語するのがクセだったらしく、今回も何とか誤魔化すつもりだったのだろう。もちろん、ぼくの提案を拒否したのは、ソースを見られれば実態が明らかになってしまうからだ。サイト改修は、一度棚上げとなり、後日、改めてぼくがいた会社がまとめて受注することなった。A社は、損害賠償こそ免れたが、その年のうちに倒産したらしい。

 多国籍企業たるハウンドと、横浜の小さなA社とでは、資本金の規模も、投入できるリソースも桁が3つか4つ違うだろうから、単純な比較はできない。だが、Z戦争で貴重な技術的資産を大量に失った国も多く、ハウンドのヘッドクォーターがあるアメリカ合衆国もその1つだ。JSPKF の仕事を受注したはいいが、思うように進めることができなかった、ということもないとは言えないではないか。実装作業自体は、日本の佐分利が主役だったとしても、その裏側にはハウンドがいたのだから。

 「考えていても仕方ないか」

 ぼくはつぶやくと、役に立たない概要図を放り出して、照明を消した。谷少尉が言っていた朝からの訓練で何をやるのか知らないが、灰色の脳細胞より、筋肉を使用するに違いない。睡眠を取っておいた方がいいだろう。そういえば、この部屋には電話の類いがない。モーニングコールというのは、どういう形でかかってくるんだろうか。

 疲れていたのか、すぐに眠りに落ちた。はっきり憶えてはいないが、Zに周囲を囲まれながら必死でソースを解読している夢を見たような気がする。正夢にならなければいいのだが。

(続)

Comment(9)

コメント

hoge

640Tでほぼデータ仕様となりメモリ24Gでredisを運用ってメモリきっつい。

メモリ管理i大変そうだ・・・メモリ128は欲しいと思った

Dai

× ビザボックス
× 谷少尉に言う朝からの訓練

Daiさん、ご指摘ありがとうございます。

fuga

仕事が忙しくて周回遅れになってしまったw

> さすがの

さすがに

> 時間稼ぎをしていると見たユーザ側担当者は、10分以内にまともなファイルが送られてこなければ、意図的な詐欺行為と見なすと伝え、9分40秒後に正しい圧縮ファイルが送られてきた。

文章がおかしいね。

> 全面的に受注することなった。

fugaさん、ご指摘ありがとうございます。

通りすがり

KVSデータベースって言葉にはちょっと違和感がありますねぇ。

ゴーン

>>640Tでほぼデータ仕様となりメモリ24Gでredisを運用ってメモリきっつい

よく読もうよ。

[引用]
搭載メモリは24G。やや少ないように感じられるが、フラッシュストレージが非常に高速であるため問題はないそうだ。
Redis というKVS をカスタマイズしたデータベースだ
Soldis はメモリを使わないがな
[引用終わり]

これから推測するに、SoldisというのはRedisのように使えるKVSだけどメモリデータベースじゃないということかな。

---

デスマーチ(物理)が始まるのは何号先からだろうか。

たぬきち

綱島のあの跡地で昔働いていた身としては、なかなか刺激的で楽しく読ませてもらってます(笑)

コメントを投稿する