昨日、「メンテナビリティの高いソースコードを目指して」というエントリを書いたところ、dankogaiさんから、「コードも見せていないお前にコードを語る資格はない」と怒られてしまったので返信エントリ。

実はブログを初めて1,2年くらいの頃はコードを含むエントリをそこそこ書いてたのですが、プログラマーでない知人から「何の話か全然わからなかった」と言われ、またdankogaiさんも指摘している通り、「コードについて書く方がコードを書くより読まれる現実」があり、コードを含むエントリはJava Programming Tipsという別のブログに移した経緯があります。

もちろん、Java Programming Tipsへのリンクを貼って、「これが私のコードへのリンクです」等と言うつもりはありません。なぜなら、Java Programming Tipsでは当時意外と知られていなかったTipsを紹介しただけで、私が一番大切にしている可読性や拡張性を考慮した大規模ソフトウェアの設計・実装には一切触れられていないからです。

ではどこに力を入れているかというと、私が一番力を入れいてるのはDataSpiderという商用ソフトウェアの設計と実装ですが、これはアプレッソの50人の社員を10年間支えてきてくれているソフトウェアなので「はい、どうぞ」とソースコードをお見せすることができないのです。

ですが、「コードをオープンにしていない人間はコードについて語る資格を持たない」というdankogaiさんの主張にははっきりNo.と言わざるを得ません。だってオープンソースに携わっている人以外はコードについて語っちゃいけなくなるじゃないですか。どんだけ狭い論壇ですか(笑)

ただ、ソースコードを見せなくても、どんな作品をつくって来たかについては語ることはできます。

(1) DataSpider
エンタープライズでのデータ連携をノンプログラミングで行うためのミドルウェアで、現在約1500社の企業に導入いただいており、企業のデータ連携の分野ではメジャーなプロダクトです。

130万行前後のJavaのコードから形成されており、私は創業から今日に至るまでリードプログラマーとして全体のフレームワークの設計と実装、クライアントの実装を担当しています。接続先、カーネルモジュール等、全体がPluggableな構成になっており、最初のリリースから11年経った今でも顧客ごとのカスタマイズはほぼゼロでここまできています。

アプレッソは「受託は一切やらない」ポリシーで経営しているので、アプレッソの売上はほぼすべてDataSpiderのライセンスと保守料で構成されています。IPAのソフトウェアプロダクト・オブ・ザ・イヤーその他いくつかの賞も受賞しています。

(2) Quest Japanizer
WoW(World of Warcraft)のクエストを日本語化するプラグインです。日本人WoWユーザーの大部分のプレイヤーに利用されていました(当時の日本人ユーザー数は5000人前後と言われており、Quest Japanizer利用ユーザー数は3000人前後だった)。

ゲーム中の地名やキャラ名などを翻訳対象外にしながらクエストの文章を自動翻訳し、wikiに手動翻訳がアップされている場合にはそちらを優先して表示します。私のWoW引退後もCraft Japanizerという後継プラグインのメンテナンスが行われており、wikiには毎日のように新規の手動翻訳データが追加され、一万を超える手動翻訳データが登録されています。

(3) 未踏ソフトウェア関係
未踏ソフトウェア関係では、PICSYプロジェクト(伝播投資貨幣)とGalapagosプロジェクト(eXtreme Meeting支援ツール)の2つのプロジェクトで、クライアントを開発しました。

あとは「人にコードを見せる」という意味では、シリコンバレーのサン・マイクロシステムズ本社で仕事をしていた時に設計・コーディングのスキルが評価されてカルフォルニア州立大学とサン・マイクロシステムズの産学協同プロジェクトでJavaの設計と実装に関する大学院の授業で講師をしたりしていました。


dankogaiさんから「お前ごときが」発言をされるのはこれで2回目で、確かにdankogaiさんと比べると私などは上に書いたことしかしていないしがない一開発者ではありますが、一応、プログラマーとして、また「小さなISV」の経営者として「胸を張って見せられる」ソフトウェア作品をつくってきたつもりですし、これからもそのように励んできたいと思います。

というわけで、今後とも叱咤激励いただければと思います。

※ 2012/1/27 00:07追記
よく考えたら、DataSpiderそのもののコードをオープンにはできなくても、一部エッセンスを抜き出してサンプルコードとして紹介することはできるので、週末にでも「メンテナビリティの高いソースコード」付きのエントリを書きます。明日はちょっと忙しいので少々お待ちを。

※ 2012/1/30 15:31追記
ソースコード付きのエントリを書きました。