Build Insiderオピニオン:高岡大介(2)
そのコードに意思はあるのか
コピペが何かと話題のいま、プログラマーにとってのコピペ問題を考える。
コピペが何かと話題になっていましたが、プログラマーの間ではソースコードのコピペは日常的に行われています。きちんと理解してから使えばコピペでも問題ないのですが、意味も分からずコピペしていると、時折とんでもないことが起きます。
例えば、以前こんなことがありました。あるプロジェクトにヘルプで参加しているとき、途中で仕様が変更になり、判定条件を変えることになりました。よくあることですよね。
別のメンバーがその部分を担当していたのですが、その条件はあちこちで使われていました。しかし、その条件判定ロジックがそのままコピペされてあちこちに散乱していたのですね。ここまでもよくある話です。
とりあえず一括置換で置き換えよう、と検索してみると、なぜか同じコードが別の箇所でも大量に見つかりました。
なんと、全く関係ない処理でも、そのロジックがあちこちに入っていたのです。おそらく前の開発者のコードからコピペして処理を追加して、それをさらに別の開発者がコピペしてまた追加してコピペして、長年使い込んだ秘伝のたれのような、何が入っているか分からないカオスな熟成ソースができあがっていたのです。
そのコードに意思はあるのか
その昔、尊敬するB先輩から言われて、今でも覚えている言葉です。なぜそう書いたのか、なぜこの値は「1」なのか、この変数名は本当に「x」でよいのか、この文にはどういう意図があるのか、ぜんぶ考えたのか?
プロフェッショナルとしてエンジニアをやっているならば、ソース1文にもしっかりと自分の意思を込めるのがプロの仕事だ、というメッセージです。
シンプルな言葉ですが、実はこれは難しいことです。書かれているコードを理解するのはもちろん、その上で全体的なことも検討しつつ、その場所で書くべきことは何かを考える必要があります。単なる局所的最適ではなく、システム全体、運用保守まで想定し、何が最適なのかを検討するのです。
もちろん、全てのケースでそこまで実装する必要はありません。しかし、なぜ実装する必要がないのか、ほかで担保するのか、そもそも検討する必要がないのか、など理由を明確にしよう、という話でした。
■
最初の例のようなそんなひどいコピペを自分はしない、と思っている方も多いでしょう。しかし、Web上のサンプルサイトからコピペして動かすだけで満足していませんか。オリジナルのドキュメント、APIは確認しましたか? 他にもっと最適なオプション、挙動はないですか? 可能であればソースは読みましたか?
私もコードを書くときはなるべくその理想に近づけるよう意識していますが、いつもできているとはとても言えません。そういうことが自然とできるようになりたいですね。
高岡 大介(たかおか だいすけ)
大手外資系企業でエンタープライズシステムの開発、国立研究所にてセマンティックWeb/オントロジー関連の研究に従事し、 技術顧問、開発、執筆、講演などITに関する仕事に広く携わる。
2015年より取締役 兼 最高技術責任者(CTO)として株式会社オープンウェブ・テクノロジーにジョインし、TechFeedを開発。Webフロントエンドだけでなく、バックエンド、インフラなどシステム全体に関わる。
AITC運営委員(エバンジェリスト)、Sencha UG共同運営者などのコミュニティ活動、 HTML5Exports.jp エキスパート、Build Insider オピニオンコラム執筆など。
※以下では、本稿の前後を合わせて5回分(第1回~第5回)のみ表示しています。
連載の全タイトルを参照するには、[この記事の連載 INDEX]を参照してください。
5. なぜ僕たちはこんなにもIoTに魅せられるのか
「あちら側」と「こちら側」。『Web進化論』から10年近くが過ぎようとしている中で、IoTによってネットとリアルの関係はどう変わろうとしているのか。