コラム:開発者が学ぶべきこと(6)
Hulaで開発者もユーザーもハッピーになろう


Tim Romero(ティム・ロメロ)
2005/4/6

エンジニア40人をマネジメントするのは苦労でない

 今回の話は、これまでと違って少し技術的な内容となる。話題の中心は、Webベースのアプリケーションを効率よく展開する方法や、オープンソースのアプリケーションフレームワークとして新たに登場した「Hula」についてだ。真のコンピュータオタクが好きそうな話である。

 そうした話に入る前に、まず一般読者に私の持論や意見についてしっかり理解してもらわなくてはならない。さて、始めよう。ここを飛ばして最後だけ読むなどというずるいことをしてはいけない。

 私は長年エンジニアのマネジメントをしており、この仕事に満足している。優れたエンジニアというものは、まさに職人だ。彼らは自分の仕事にプライドを持っており、難しいプロジェクトに取り組むときにも仕事を楽しんでいる。また、技術力を向上させたいと真剣に考えており、出来上がる製品に対する思いも強い。必要ならば残業だって自主的にやっているのだ。これまでの私の経験からして、40人のエンジニアを管理することは、マーケティング担当者を4人管理するよりずっと簡単だということが分かっている。

エンジニアが陥るわな

 しかし、エンジニアの中でもソフトウェア開発者という人たちは少し変わっていて、どちらかというと危険人物といえる。一般的にソフトウェア開発者は、2つの選択肢から1つを選ぶ場合、簡単にできる方を選んでしまうのだ。あぁ、大勢のプログラマが、「もちろん簡単な方を選ぶさ。そんなの当然じゃないか」といっているのが聞こえてきそうだ!

 確かに、簡単な方を選ぶことは自然なことかもしれないが、それは危険なことなのだ。その理由を説明しよう。まず驚くべきことに、大抵の技術者は自分の仕事量を減らそうと思ってはいない(技術者以外の人間は仕事量を減らしたいと考えるものだが、そういった人たちは製品を生み出す仕事をしていないので、ここでは置いておこう)。

 考えてみたまえ。もし目の前にある橋が、自分の仕事量を減らすことが一番重要だと考える技術者が建てたものだとしたら、その橋を渡りたいと思う人はいるだろうか。この記事を読んでいるそのコンピュータや、そのコンピュータが置かれている机も、とにかく仕事を簡単に済ませたいと考えている人が作ったものだとしたら、その質はいかがなものか。きっと、この世に存在するソフトウェアの大半がそうであるように、質の低いものとなるだろう。

 ありがたいことに、土木技術者は安全で信頼感のある橋を設計することが一番重要だと考えているし、ハードウェア技術者は安価だが素晴らしい製品を作ることが重要だと考えている。手を抜いたり簡単に済ませてしまったりすると結果が明らかに見えてしまうので、彼らはそんなことをしようなどと考えたりはしない。

 だが残念ながら、大抵のソフトウェア開発者は、自分の下した決断がどれほどお金のかかるものなのか、コスト計算するために必要な情報を持ち合わせていない。「柔軟性確保」という言葉の下に出来上がったソフトウェアは、重複した手順や関連性のある操作があちこちに見受けられ、設定オプションが山のように存在するものとなってしまう。しかもそれらの手順や設定方法は、すべて文書化し、テストし、下位互換性を保つために維持・管理しておかなくてはならないのだ。この後、小さな決断に思えることがどれほど大きな影響を与えるかについて触れるが、まずはテクノロジの話だ。そろそろHulaについて話そうと思う。

 信じがたいことだが、業界内ではそろそろ新たなWeb構築プラットフォームが必要だと考えられている。もちろん世の中には多くのWeb構築プラットフォームが存在し、よくできたものもある。だが、大抵の場合、それらのプラットフォームはできる限り「柔軟」に設計されており、完全にマスターするには時間もかかるし、サポートも高額になってしまうのだ。

Hulaを紹介しよう

 ところが今回紹介するHulaは、開発やWebアプリケーションを構築する際の総コストを削減できるよう設計されている。一般的なカスタマイズや開発、サポートなどにかかる費用を削減することに重点を置いて作られたものだからだ。その結果ありがたいことに、Hulaを使った開発は非常にシンプルなものとなる。

 Hulaはすでに約6つのアプリケーションのベースとなっており、テストも進んでいる。Hulaのディストリビューションとソースコードは、「SourceForge.net」のサイトで手に入れることができる。

 Hulaはさまざまなことを違った方法で実行するので、「Hello Worldと表示させる」といった典型的な例を挙げるつもりはない。代わりに、Hulaがいかにしてコスト削減を実現するのかを話そう。Hulaでコスト削減が可能となるのは、Javaアプリケーションの展開において、一般的だが大変解決するのが難しいとされてきた、環境設定ファイルの手違いと無効なJavaのクラスパスという2つの問題点を解決できるからである。

 開発者は設定オプションが大好きだ。デバッグの際に便利だし、こういったオプションのおかげで時間短縮ができる。開発者はファイルから適切な設定を読み取れるからだ。シンプルなアプリケーションでさえ、何百もの設定オプションが付いてくるものがある。

 理想としては、それぞれの設定オプションは考えられるすべての組み合わせについて文書化され、テストされるべきである。しかし実際にそんな時間はなく、小さなバグや設定の依存関係がオプションの中に積み上げられていく。そしてユーザーは、一見何の害もないような設定オプションを変更するだけで、アプリケーションをクラッシュさせてしまう。もちろん、設定を変更したユーザーにも責任はあるのだが、その後そのユーザーは、何も間違ったことはしていないはずだと思いつつ、何時間もかけてどこに問題があったのか調べなくてはならないのだ。

設定オプションは少なくてもよい

 だが実際には、アプリケーションが完成した後に変更してもよい設定オプションなどほとんどないのである。Hulaのマルチステージ設定ファイルでは、ユーザーが変更すべきオプションのみが見えるようになっている。

 Hulaでは、まずアプリケーションのJARファイルの中にあるXMLファイルから設定オプションを呼び出してくる。実際は設定のサブクラスも設定オプションの1つなので、拡張やカスタマイズが可能だ。最初の設定ファイルが読み込まれると、次にHulaは外部のXML設定ファイルを読み込み、以前に読み込まれた値を上書きする。

 ほとんどの開発者は、Hulaのこうした動作が無駄に思えるかもしれないが、サポート担当者であればこれがいかにコスト削減につながるかが分かるだろう。ユーザーが変更してはならない部分はアクセス不可となっているし、たいして重要でない数多くのオプションをサポートしたり説明したりする手間も省けるからだ。大抵の場合、50以上のオプションが存在していても、ユーザー側が見るべきものは3つか4つで十分なのだ。そうすればトラブルシューティングも簡単になる。

クラスパス問題も解決できる

 次にサポート担当者の頭痛のタネとなっているのは、Javaのクラスパスだ。サン・マイクロシステムズのJavaアーキテクチャは、ユーザビリティと優れたセキュリティのバランスが取れたものだ。しかし、顧客のクラスパス問題を解決するために、私は従業員に対してかなりの給料を支払った。Javaの新バージョンをインストールすると(さらに、恐れ多くもJARファイルの移動やファイル名変更など行おうものなら)、非常に不可解なエラーメッセージが出てくることがあるのだ。

 Hulaは、libファイル中のすべてのJARファイルを動的にクラスパスに追加し、リフレクションを利用して正しいアプリケーションを呼び出すことで、この問題を解決する。つまり、Hulaのアプリケーションは、ルートディレクトリに「java -jar libs/hula.jar」というコマンドを入れるだけでスタートさせることができるのだ。

 これでユーザーは、現在使用中のプログラムに影響を与えることなく、ファイルを動かしたりJARファイルの名前を変更したり、さらにはJavaの新バージョンをインストールしたり、アンインストールすることもできるようになる。こうなると、クラスパス関連の問題として残された可能性は2つのみとなる。JARファイルがlibディレクトリの中に存在しないか、Javaのインストールに失敗するかだ。前者の場合、エラーメッセージが出るのですぐに分かるし、後者であれば再インストールすればよい。

 こうしたプログラミング手法は、開発者に対するメリットが見えにくいため、あまり使われていない。しかし長期的に見ると、サポートや管理を視野に入れた開発をすることで、開発者は妙な設定のデバッグや環境の問題解決に費やす時間が減り、本来の開発に没頭できる。すべての人にメリットがあるわけだ。

 Hulaを使いたい人、もしくはHulaの開発に参加したい人は、SourceForgeに登録してもらいたい。現在ドキュメントや事例はすべて英語だが、いいボランティアが見つかり次第すべてを日本語化する予定だ。

筆者プロフィール
Tim Romero(ティム・ロメロ)●米国ワシントンDC出身。1991年に来日し、インターネット金融取引システムなどの開発を手掛けるヴァンガード(Vanguard)を設立。同社がデジタルガレージに買収された後、取締役として2002年9月まで在籍。現在は東京やサンフランシスコの企業とともに、エンジニアリングおよび開発プロセスの改善、技術管理の合理化に向けた活動を行っている。なお、本コラムは不定期での掲載を予定している。

自分戦略研究所、フォーラム化のお知らせ

@IT自分戦略研究所は2014年2月、@ITのフォーラムになりました。

現在ご覧いただいている記事は、既掲載記事をアーカイブ化したものです。新着記事は、 新しくなったトップページよりご覧ください。

これからも、@IT自分戦略研究所をよろしくお願いいたします。