プログラミングをしていて、何か機能が必要になったとき、「こういう機能は既に誰かが作っているのではないか」と考えてみることは重要である。そういう発想がないと「車輪の再発明」をしてしまう。何でも自作しないと気がすまない人もいるが、既に安定して動くコードやライブラリがあるのなら、それを流用した方が効率がよいことは言うまでもない(プログラミング自体の勉強が目的なら別だが)。
もちろん、事前に、既存のコードやライブラリを探す場合と自作する場合とで、どちらが時間が掛かりそうかを判断する必要がある。
そのためには、自分のプログラミング能力と、調査能力を把握しておかなければならない。調査能力については、ネットの「検索力」も重要だが、周囲の人や掲示板等への「質問力」なども影響する。
そして、もっと重要なのは、探そうとしている処理のニーズ(一般性と言ってもいい)を見極めることだ。多くの人が必要としそうな処理ならすぐに見つかるが、限られた人しか必要としないようなものは見つからない。当り前のことだが、その境界がうまく見極められない人もいる。
自分で判断がつかない時は、制限時間を決めて探してみて、時間内に見つからなければ自作する、という方法を取ることもできる。
次に、品質の判断が必要である。見つけたプログラムが信頼できるかどうか、ということである。ソースコードの記述内容の確認や動作を確認するのはもちろんだが、他の人がどの程度利用しているか、その評価はどうか、といった利用実績に関する情報は大きな判断材料となる。
また、配布元の Web サイトにメンテナンス情報やサポート掲示板などがあれば、その情報が参考になる。そういったものがなくても、作者が技術的な内容の文章を公開しているようなら、(たとえそれが必要としているプログラムとは関係のない情報であっても)その内容から、ある程度、技術レベルの判断ができるだろう。
「車輪の再発明」は、新しいプログラミング言語を使う場面でも起こりうる。最近は、言語の標準機能が充実しすぎて、その全てを把握することが困難になってきているからだ。「こういう機能ぐらい、標準で付いてるだろう」といった見当をつけることができなければ、標準の機能まで自作してしまいかねないのである。
この問題については、事前にその言語のリファレンス等にざっと目を通しておくと、かなり改善する。詳細な仕様まで覚える必要はなく、「そういえば、こういう機能は標準で用意されていたような・・・」という程度に思い出せれば十分だ。詳細は、本当に必要になった時に調べればよい。
インターネットやオンラインヘルプは必要な情報をピンポイントで調べるには向いている。しかし、どんな機能があるのかという観点で全体を眺めておきたいような場合には、本の形の方が向いている。新しい言語を学ぶ場合には、標準ライブラリ等の機能を網羅したリファレンス系の書籍が一冊あるといいだろう。
・頭を使って探せ
・ソースコードの盗み方
・簡単コピー・プログラミングの罠
・プログラミングの入門書は何が良いか?
秀和システム (2007/07)
売り上げランキング: 22671
![4.0](https://img-proxy.blog-video.jp/images?url=http%3A%2F%2Fimages-jp.amazon.com%2Fimages%2FG%2F09%2Fx-locale%2Fcommon%2Fcustomer-reviews%2Fstars-4-0.gif)
![4](https://img-proxy.blog-video.jp/images?url=http%3A%2F%2Fimages-jp.amazon.com%2Fimages%2FG%2F09%2Fx-locale%2Fcommon%2Fcustomer-reviews%2Fstars-4-0.gif)
オライリージャパン (2005/08)
売り上げランキング: 140918
![4.5](https://img-proxy.blog-video.jp/images?url=http%3A%2F%2Fimages-jp.amazon.com%2Fimages%2FG%2F09%2Fx-locale%2Fcommon%2Fcustomer-reviews%2Fstars-4-5.gif)
![4](https://img-proxy.blog-video.jp/images?url=http%3A%2F%2Fimages-jp.amazon.com%2Fimages%2FG%2F09%2Fx-locale%2Fcommon%2Fcustomer-reviews%2Fstars-4-0.gif)
![4](https://img-proxy.blog-video.jp/images?url=http%3A%2F%2Fimages-jp.amazon.com%2Fimages%2FG%2F09%2Fx-locale%2Fcommon%2Fcustomer-reviews%2Fstars-4-0.gif)
![5](https://img-proxy.blog-video.jp/images?url=http%3A%2F%2Fimages-jp.amazon.com%2Fimages%2FG%2F09%2Fx-locale%2Fcommon%2Fcustomer-reviews%2Fstars-5-0.gif)