10-ツールの選択は慎重に

プログラマが知るべき97のこと」の10個目のエピソードは、ライブラリなどツールの選定に関する話題です。最近はフレームワークやライブラリなどはオープンソースで公開されている事が多くなり、それらのほとんどは無償で利用できます。勿論、商用ライブラリもあります。アプリケーションの規模や複雑性が増す一方で開発期間は縮小される流れは加速しており、適切にツールを選択することはプログラマにとって重要なスキルです。
このエピソードではそんな選択肢豊富なプログラマが、ツールを選択するときに留意すべき事を書いています。目的に応じての選択、ライフサイクル、ライセンス形態などです。また、大量に導入してしまい保守しにくくなった経験は1回くらいはあるのではないでしょうか?そんな理由からもスモールスタートで必要最低限のツールを導入した方が良いと書かれています。
基本的にはスモールスタートが最適だという事に異論はありません。しかし、最初は幾つかのフレームワークとライブラリを使い、次第に依存かライブラリを減らしていくというアプローチもありだと思います。車輪の再発明を避けてあるものは利用する、しかしあえて車輪の再発明をして、最適で必要最低限のAPIを開発するという流れです。最近メインで遊んでいるGoogle App Engineでは特にそれが求められます。公開されているような機能豊富なライブラリは、依存ライブラリが多かったり必要以上の機能があるために重いことがあります。CPU時間が課金に直結するGAEでは「あるライブラリを自作の最小限で最適なライブラリに置き換えたら劇的に運用コストが下がった」というケースはあるわけです。
また、ある程度の経験を積んだプログラマにとって、全く知らないパラダイムの言語でなければ、新しい言語を使う事は大きな障害ではありません。しかし、ライブラリやフレームワークに関するノウハウだけは一朝一夕では身につかないというのが現実です。従って、自分の得意とする言語に関しては様々なライブラリやフレームワークの知識を身につけ、選択肢として提案できるまで習熟する必要があるでしょう。
たくさんのツールの知識を保有しているという事は、開発というゲームの中での手札(選択肢)が多いという事です。ですが、強力なカードをたくさん持っていても勝てるとは限りません。手札がなければゲームになりませんが、効率的に使う事は大切です。

プログラマが知るべき97のこと

プログラマが知るべき97のこと