この記事は日経 xTECH有料会員限定ですが、2018年4月9日5時まではどなたでもご覧いただけます。

 ピタッと条件がはまると、こんなに良いツールはありません。難点は、オープン化するの遅かったことです。なかなかオープンソース化されないので、米フェイスブック(Facebook)と米ツイッター(Twitter)でそれぞれ、元グーグル社員がクローンソフトウエアを開発し、それらが先に広まりました。フェイスブックで開発されたのが「Buck」、ツイッターで開発されたのが「Pants」です。

困難を越えてやり遂げた人を尊敬

 最近、感銘を受けたのは、若いプログラマーが「SATySFi」(サティスファイ)という組版システムを自分で作り上げたという話です。組版システムは、TeXが難解なことから誰もが「自分ならもっといいものを作れる」と思いがちですが、実は開発するのはとても大変です。それを最後まで作り上げたのはすごいと思います。

 少し前に、若いプログラマーがつい開発に手を出してしまいがちな「三大厨二プロダクト」がSNSで話題になりました。「独自プログラミング言語」「テキストエディタ」「ビルドツール」の三つです。これらの既存プロダクトは、多かれ少なかれ課題を抱えています。そこで多くの若者が「自分ならもっと良いものを作れる」と思って手を出しますが、たいていは挫折します。

 個人的には、それらに「組版システム」を足してもいいと思います。いわば四大厨二プロダクトですね。実際に、私はそれら四つ全部に手を出したことがあります。プログラミング言語とビルドツールは少なくとも動くところまではいきましたが、エディタと組版ツールはそこまでもたどり着けませんでした。

 実際に動くものを作り、実用レベルまで完成度をあげようとすると、見かけよりもずっと難しい課題がたくさんあります。既存プロダクトの設計にはそれなりの正当な理由があるということを思い知らされました。

 そうした領域では、ゴールまでの道のりが見えないまま開発し続けなければ完成まで到達できない場合があります。これができる人は素晴らしいと思います。私は、RubyやSATySFiはそうした例だと認識しています。

 一方で「少ない労力で効果を得やすいところを目指すこと」「80%の完成度を良しとすること」「適切なマイルストーンを設定できる道筋を選ぶこと」も重要です。ビジネスの観点でもエンジニアリングの観点でも、これらには大きな意味があります。どちらかというと、自分はこうした方向に寄りがちです。

 私が得意とするのは、そのための道具、具体的にはソフトウエア開発の手法である「テスト駆動開発(TDD)」や「スクラム」、ソフトウエア開発の歴史に学ぶことなどです。自分がこれらに寄りがちだからこそ、それとは全く異なるアプローチで困難な課題を解決した人は尊敬しています。