Build Insiderオピニオン:高岡大介(2)

Build Insiderオピニオン:高岡大介(2)

そのコードに意思はあるのか

2014年6月17日

コピペが何かと話題のいま、プログラマーにとってのコピペ問題を考える。

高岡 大介
  • このエントリーをはてなブックマークに追加

 コピペが何かと話題になっていましたが、プログラマーの間ではソースコードのコピペは日常的に行われています。きちんと理解してから使えばコピペでも問題ないのですが、意味も分からずコピペしていると、時折とんでもないことが起きます。

 例えば、以前こんなことがありました。あるプロジェクトにヘルプで参加しているとき、途中で仕様が変更になり、判定条件を変えることになりました。よくあることですよね。

 別のメンバーがその部分を担当していたのですが、その条件はあちこちで使われていました。しかし、その条件判定ロジックがそのままコピペされてあちこちに散乱していたのですね。ここまでもよくある話です。

 とりあえず一括置換で置き換えよう、と検索してみると、なぜか同じコードが別の箇所でも大量に見つかりました。

 なんと、全く関係ない処理でも、そのロジックがあちこちに入っていたのです。おそらく前の開発者のコードからコピペして処理を追加して、それをさらに別の開発者がコピペしてまた追加してコピペして、長年使い込んだ秘伝のたれのような、何が入っているか分からないカオスな熟成ソースができあがっていたのです。

 そのコードに意思はあるのか

 その昔、尊敬するB先輩から言われて、今でも覚えている言葉です。なぜそう書いたのか、なぜこの値は「1」なのか、この変数名は本当に「x」でよいのか、この文にはどういう意図があるのか、ぜんぶ考えたのか?

 プロフェッショナルとしてエンジニアをやっているならば、ソース1文にもしっかりと自分の意思を込めるのがプロの仕事だ、というメッセージです。

 シンプルな言葉ですが、実はこれは難しいことです。書かれているコードを理解するのはもちろん、その上で全体的なことも検討しつつ、その場所で書くべきことは何かを考える必要があります。単なる局所的最適ではなく、システム全体、運用保守まで想定し、何が最適なのかを検討するのです。

 もちろん、全てのケースでそこまで実装する必要はありません。しかし、なぜ実装する必要がないのか、ほかで担保するのか、そもそも検討する必要がないのか、など理由を明確にしよう、という話でした。

 最初の例のようなそんなひどいコピペを自分はしない、と思っている方も多いでしょう。しかし、Web上のサンプルサイトからコピペして動かすだけで満足していませんか。オリジナルのドキュメント、APIは確認しましたか? 他にもっと最適なオプション、挙動はないですか? 可能であればソースは読みましたか?

 私もコードを書くときはなるべくその理想に近づけるよう意識していますが、いつもできているとはとても言えません。そういうことが自然とできるようになりたいですね。

高岡 大介(たかおか だいすけ)

高岡 大介(たかおか だいすけ)

大手外資系企業でエンタープライズシステムの開発、国立研究所にてセマンティックWeb/オントロジー関連の研究に従事し、 技術顧問、開発、執筆、講演などITに関する仕事に広く携わる。

2015年より取締役 兼 最高技術責任者(CTO)として株式会社オープンウェブ・テクノロジーにジョインし、TechFeedを開発。Webフロントエンドだけでなく、バックエンド、インフラなどシステム全体に関わる。

AITC運営委員(エバンジェリスト)、Sencha UG共同運営者などのコミュニティ活動、 HTML5Exports.jp エキスパート、Build Insider オピニオンコラム執筆など。

 

※以下では、本稿の前後を合わせて5回分(第1回~第5回)のみ表示しています。
 連載の全タイトルを参照するには、[この記事の連載 INDEX]を参照してください。

1. 世界は驚きに満ちている

「現場のエンジニアとして、日常で感じたこと」をゆるく書くコラム連載スタート。

2. 【現在、表示中】≫ そのコードに意思はあるのか

コピペが何かと話題のいま、プログラマーにとってのコピペ問題を考える。

3. もっと自由な働き方があるんじゃない? 父親だって育児したい!

子供が産まれて育児に関わるようになった経験から、ITエンジニアの多様な働き方を考える。

4. フリーランスに対する5つの誤解と、気を付けている点

フリーランスで働くとは? よくある誤解を解きながら、フリーランスという働き方について考える。

5. なぜ僕たちはこんなにもIoTに魅せられるのか

「あちら側」と「こちら側」。『Web進化論』から10年近くが過ぎようとしている中で、IoTによってネットとリアルの関係はどう変わろうとしているのか。

サイトからのお知らせ

Twitterでつぶやこう!


Build Insider賛同企業・団体

Build Insiderは、以下の企業・団体の支援を受けて活動しています(募集概要)。

ゴールドレベル

  • グレープシティ株式会社
  • 日本マイクロソフト株式会社