タグ別アーカイブ: アプリケーション

ライブラリはアプリケーションの延長では開発できない。

アプリケーションの開発者というのはよく見かけますが、分野を問わず、ライブラリの開発者というのを見かけることはあまりありません。ライブラリを専門的に開発しているのではなくても、アプリケーションだけではなく本格的なライブラリを開発できるというプログラマーが少ないのです。

アプリケーションばかり開発しているプログラマーはこのようにいいます。「アプリ開発の過程で生まれたクラスやモジュールなどを再利用できるようにとっておきます」と。けれども、アプリケーション開発の副産物として生まれたコード群と、はじめからライブラリにすることを目的に作られたコード群では明らかな違いがあります。

はじめからライブラリにすることを目的に作られたコードは、汎用性や移植性、サイズ効率や速度効率などに相応の配慮が行われているものです。特定のアプリケーションで使うことに特化すれば、その目的に合致する限りは、もっと使いやすく、もっと効率的なものができるかもしれませんが、通常ライブラリはそのような選択はせず、もっと応用範囲を広げる努力をするものです。

きれいごとをいうのはやめて、もっと現実に目を向けるならば、アプリケーションの副産物として生まれたコードは細かいところまで作り込まれていないケースがほとんどです。

具体的にいうと、Java のクラスであれば、hashCode や toString といったメソッドを、それが生まれたアプリケーションで実際に必要となる場合以外にきちんと実装されているケースが果たしてどれだけあるでしょうか?

C++ であれば、アプリケーション独自のコンテナを作ったとして、それが本当に標準規格で定められたコンテナの要件を完全に満たしていることがどれだけあるでしょうか?

一点一点を指摘されれば、アプリケーション・プログラマーであってもそれらに対応できる可能性は十分あります。けれども、指摘される前から網羅的に必要なことに配慮することはまずできないのではないかと思います。

日本のプログラマーは、もっとライブラリを書く力を身につけてもよいのではないかと感じています。細かいところまで配慮したライブラリを書くのは、特定の目的だけを達成できればよいアプリケーション視点からは無駄のように見えることもあるかもしれません。しかし、一見遠回りのようであっても、実は近道だということはあるのです。