「デベロッパーズ・ナイトメア(developer's nightmare)」というやつをご存知だろうか。そのとき彼らは新しいプロジェクトを始めようとしていた――。
まずはマシンの調達からだ。すべてを購入できることはほとんどない。たいていはどこか別のプロジェクトで使っているやつを貸してもらうか,手持ちの機械をクリーンな状態にしてセットアップを始めることになる。新人にまかせたら,何を悩んでいるのか2~3日どころか1週間もかかっている。
プロジェクトが佳境に入ったころに限って,以前のプロジェクトの改修依頼が来る。以前の開発環境を復元しようと試みるが,セットアップがうまくいかない。ネットを探し回り,ゴミ情報(自分に不必要な情報)だらけのメーリング・リストで素人くさい質問をして常連にののしられながら,ようやく開発環境を復元したときには,すでに2日間徹夜している。
他のスタッフはその間に何をしていたか。一人はマシン・ルームに行くのがいやで手元のマシンに開発環境を構築したのはよいが,手元のマシンでビルドしたバイナリがターゲット・マシンで動作しないと言って悩んでいる。あとの二人は同じソースを並行して修正してしまったので,ソースコードのマージという,どうしようもない作業に時間をかけている。
そんなことをしていても納期は容赦なくやって来る。プログラムを客先の実機にインストールしてもらうが,うまく動かない。仕方がないので実機に開発環境をインストールし,不具合の修正を試みる。が,慣れない環境で作業をするので効率が悪いことこのうえない。
やっと原因が判明したので,修正を自社の開発環境に反映しようとしたら,システムのアップデートをしないと修正部分が動かない。だが,当のターゲット・マシンは,いつのまにか隣のプロジェクトと兼用になっている。システムをアップデートすると隣に迷惑がかかるので,別のマシンを調達することに…(以下,繰り返しにつき省略)。
皆さん,これが「20年以上変わっていない」といわれるソフトウエア開発の現場の実態なのだ(多少の誇張はあるが)。設計や開発に割くべき時間と能力をこうしたドタバタで浪費しているのを,どれだけ見てきたことか。私が当事者になってしまったことも少なくない。一体どうしたらいいのだろうか?
そこで思いついたのが,あらゆる作業環境を保管しておき,どのマシンにでも復元して稼働できる「ユビキタス(ubiquitous=至るところにある)開発環境」構想である。私はマシンの台数を増やすという,ある意味,原始的だが確実な方法で,その理想に少しでも近付こうとしている。呼べばすぐに現れて命令をきいてくれる忠実な「しもべ達」をざっと紹介しよう。
(ITpro編集注:この記事は日経ソフトウエア2002年8月号に掲載されたものです)
【tarkus】Pentium III(1GHz),メモリー512MB,ディスクはSCSI Ultra160 18GB×1,Windows 2000 Professional(W2K)搭載の主力デスクトップ。頼れるやつだが,弱点というか欠点は1万回転/分のディスク音がやかましいことか。
【harpy】Pentium III(750MHz),512MB,ATA 80GB×1,W2KとRed Hat Linux(RHL)7.2を搭載する,超頻之家(2001年9月号179ページ参照)に組んだ中身むき出しのガイコツ・マシン。しもべ達全員の健康状態をチェックするのが主な仕事。AT&Tの英Cambridge研究所で開発されたVNC(Virtual Network Computing)のビューアを入れてある。特徴は再生能力が高いこと。W2Kを2セット完全に独立した形で入れてあるので,クリーンな環境に戻したければもう一方から30分程度で再インストールできる。
【draco】Celeron(667MHz),128MB,ATA(2.5インチ)20GB×1,W2K搭載機。サイコロのような形がかわいい,キューブ型ベアボーンCUBE-24機。あまり電源が入っていないが,いつかきっと役に立ってくれるはずだ。
【wyvern】Celeron(733MHz),128MB,ATA 30GB×1,RHL7.2を搭載する,自宅内LANのDNS/DHCP専用機。dracoと同じベアボーンで作った,私のライフラインをつかさどるサイコロである。常に動きつづけてさまざまな情報をもたらしてくれる。
【sphinx】Pentium III(933MHz),1GB,ATA 80GB×1,160GB×3,RHL7.1搭載の4Uラック・マウント機。米Promise TechnologyのATA RAIDコントローラで,160GB×3をRAID 5で運用しているタフなやつ。VMware専用機で,箱の中では常時5,6台のVMが立ち上がり,さまざまなバージョンのRed Hat Linux環境を動かせるようになっている。
【ettin】Pentium III(750MHz),512MB,ATA 80GB×2,RHL7.2搭載の3Uラック・マウント機。主に負荷テスト用。試練を与えられるためだけに存在するという過酷な運命にある。sphinxが忙しいときにも呼び出されて,こき使われる。
ほかに,対Linux戦で主力になる「golem」,5インチ外部ベイを八つも備える未稼働の大器「griffin」,傭兵の「nekonaq(ホスティング業者からレンタルしている)」がいる。それだけの環境が本当に仕事に必要なの? と思った方もおられるかもしれない。もちろん面と向かってそう聞かれたら「道楽」としか答えようがない。確かにソフトウエアの開発なんて,たとえばデスクトップがWindows ,開発機がLinuxとしたって,2台あればできる。しかし,それでナイトメア(悪夢)から解放されるのなら安いものだ。