一回捨てませんか?
著者: 平山 尚使用済みプログラムは、一旦ゴミ箱に捨てましょう。
物を捨てることには悪いイメージがつきまといます。再利用に異を唱えるのは勇気が必要です。しかし、再利用して良いのは、再利用による長所と短所を比べて、長所の方が大きいと判断した時だけです。段ボールを再利用することは、再利用しないことよりも本当に得なのか。それが問題です。
再利用にはコストがかかります。段ボールなら、運び、刻み、洗い、溶かさなくてはなりません。プログラムの再利用にもコストがかかります。とりわけ、違う人が使う場合はコストが膨らみます。
再利用しやすいように書くことはすでにコストです。後で使うならと汎用化しようとして、無駄に複雑化することは良くあります。サンプルコードとして使う程度の再利用ならまだしも、そのまま組み込むとなれば動く状態を維持せねばなりません。使う方にしても、使い方を覚えるコストがかかります。時間が経っていたり、作った人がいなくなっていたりすれば、このコストは跳ね上がります。文書を残して覚えやすくすることもできますが、それもコストです。バグがあるかもしれません。他人が作ったものの間違いを直すのは苦痛です。作った人はもう別の仕事をしていて、すっかり中身を忘れているかもしれません。
そもそも、再利用の利点はなんでしょう。それは何よりも手間の削減です。同じ状況が何度もあれば、同じものを使いまわせるはずです。しかし、本当に同じ状況なのでしょうか。
夏であっても、山道を歩くなら長袖がいいでしょう。半袖では虫や小枝に対して無力です。いくら寒くても、エベレストにでも登れそうな防寒着を東京で着ることはありません。出してきた服はもう時代遅れで恥ずかしくて着られないかもしれません。何人もの人の手を経た服は継ぎ接ぎだらけで着心地も悪く、耐久性も劣るかもしれません。コストを減らしたいのに性能第一主義だったり、全く使わない機能がてんこもりで計算負荷が大きく、覚えるのも大変だったり、今のスタイルに合わず古臭い書き方を強いられたり、増改築でわかりにくくなっている上にバグが潜んでいたり、というようなことは常に起こります。
もちろん、再利用するな、なんてことは言いません。再利用は常に選択肢として検討すべきです。しかし、再利用は一つの選択肢で、唯一ではありませんし、再利用するにしても、参考にするレベルからそのまま使うレベルまで様々です。「もったいない」という言葉が頭にちらつくと往々にして選択肢が一つしかないように見えてしまいますが、我々はそれに抵抗しなくてはなりません。そして、それに抵抗するには、ともかくも一度「何もないとしたらどうするか」を考えるべきなのです。「一旦ゴミ箱に入れましょう」というのは、そういうことです。
実際、私は自分が作ったものの大半は二度と使いません。せいぜい参考にする程度で、そのまま使うことは皆無です。他人が作ったものを再利用して失敗した、と思ったこともあります。作った人が想定した用途からずれている場合には特にそうです。例えば不必要に多機能であることは使うコストを増やします。コストを割く気がない部分については、多機能であることは害になります。一から作ることが無理でも、改造を加えて機能を削り落としてから使うべきだったと思ったことがあります。
繰り返します。使用済みのプログラムは、一旦ゴミ箱に入れましょう。これはプログラムに限りません。やめるべき、捨てるべきことはいくらでもあり、それが「もったいない病」から逃れる道なのです。