プログラミングでコピペというと、次の2通りの解釈が成立するが:
――この記事では2番目の方のコピペにおける作法について書こうと思う。
……1番目の方のコピペの作法? 無いよ。というか1番目のコピペをするヤツは「3日に1回足の小指をタンスの角にぶつけてしまう」呪いにかかってしまえ!
コピペ元コードのライセンスに留意する
コピペ元コードのライセンスを調査して、コピペ先コードに取り込んでも問題ないことを確認した上で、ライセンスに応じた取り込み方をすること。
コピペ元コードの内容を理解する
検索して見つけたサンプルやスニペットは、手放しでそのまま流用できる代物ではない。
- エラー処理が省略されているかもしれない。
- (自分がやりたいことからすると)余計なことをしているかもしれない。
- バグがあるかもしれない。
- 間違いではないが、ちょっと微妙なコードを含んでいるかもしれない。
- 例えば、配列の要素を連結した文字列を作るのに、joinのような便利な標準の関数/メソッドを使わずに、for文でループして1つずつ連結しているとか。
- 自分の環境では利用できない技法かもしれない。
この辺の判断を下すためにも、コピペ元コードを読み、内容を十分に理解しなくてはならない。
理解できないなら、コピペするのは諦めたほうがよい。後で問題が起きたとき、結局は中身を理解しなくてはならないのだから。
コピペ元コードから必要な部分だけ抽出する
検索して見つけたスニペットには、大抵は自分が実現したい内容にとって不要な処理が含まれている。自分が本当に必要としている部分だけで構成されていることは皆無だ。
だから、不要な部分は徹底的に排除しなくてはならない。不要な部分が残っていると、後でそのソースコードを引き継いだ別の開発者が発狂するだろう。*1
排除するためには、要不要を判断しなくてはならない。要不要を判断するためには、コピペ元コードの内容を理解しなくてはならない。
コピペ先コードのコーディングスタイルに合致させる
検索して見つけたスニペットは、その作者にとって書きなれたスタイルで記述されている。十中八九、コピペ先コードのスタイルとは別物だ。
コピペする際には、コピペ先のスタイルに書き直すこと。
……3〜4つのサンプルコードをコピペして、スタイルを統一せずに組み合わせたコードを、後で解析するのは地獄ですぜ、旦那。実際、地獄だった。*2
コピペ元コードの悪いところを直す
コピペ元コードがスバラシイものであるとは限らない。仕様・機能は十分満たしているが、コード自体はぐだぐだなことも多い。
そういう悪い部分を引き継ぐ必要はない。コードを取り込む際に直してしまうべきだ。
個人的には、VBA(Officeオートメーション)やVBScript(WSHによるWindowsサーバ管理)のスニペットやサンプルコードは、割と「機能は十分だが、コードの中身はちょっと微妙」な代物も多いように思う。VBAは、EUC(エンドユーザコンピューティング)の悪い側面が出ちゃった結果、サンプルコードの品質が微妙なことになった気がする。
まとめ
以下の手順にしたがい、清く正しく美しくコピペすること。
- コピペ元コードのライセンスに留意する
- コピペ元コードの内容を理解する
- コピペ元コードから必要な部分だけ抽出する
- コピペ先コードのコーディングスタイルに合致させる
- コピペ元コードの悪いところを直す