Column
コードをコピーアンドペーストしてよい?

「プログラムの本質はコピペ」 時々、そんな言葉を耳にします。 初めてそれを聞いた時は抵抗を感じたものですが、物事の「本質」は多面的だと考えれば、思い至るところはあります。 前の案件で使用していたこのコードをコピペすれば手間を省けそうだ、というのは実際によくありますし、新しい技術や言語を使用する際に、公式サイトからコードをコピペして動かしてみる、というのも初学者によくあることです。
それだけではなく、今や、自分のしたい実装は検索サイトですぐに見つかります。 それをコピペすればすぐに動作するので、手間が省けてそれ以外の実装にリソースを回すことが出来ます。 そういった意味で、様々なサイトにあるコードはコピペ一つで済む力となります。
ただ、もしコピペしたコードにバグが潜んでいて、それをクライアントに指摘された場合、どう対応すればいいでしょうか。 「ここの処理はコピペしただけなので……」 などとは、とても言えません。 そのバグは、自分で発見して、自分で取り除かなければならないバグでした。 こういう場面は出来る限り避けるべきです。
また、コピペしたコードは実装したい処理に近いが、少し処理が足りない、と言った場合は、自分で改良しなければなりません。 どこを改良すればよいか、動作確認や調査をしなければならなくなるでしょう。 この場合、コピペしたコードをより深く理解するきっかけとなり、更なる知識の習得に繋がります。
コピペ元が、今、自分が作成しているアプリケーションの場合はバグが潜んでいる可能性はないと確信できますし、処理が足りていると判断もできます。 そのような場合は動作確認や調査は必要ないかも知れません。 ただ、コピペ元とコピペ先には同じコードが発生することになります。 という事は、その処理は関数としてまとめられないでしょうか? この場合、コピペはコードのリファクタリング(コードの整理整頓)のきっかけとなり、より良いコードとなります。
総じて、自分自身が理解できないコードをただ張り付けただけでは、その時はうまく動いて時間の短縮になったとしても、自分のスキルの向上にはつながりません。 改良や、潜んでいるバグの原因追及が出来ず、結果、クライアントに迷惑をかけることにもなります。 変数名をプロジェクトに沿ったものに置き換えるなどのレベルでもいいので、そのコードをいじったり理解度を高めたりして、自分のエッセンスを加えていきましょう。 そういった作業が、経験値として取り込まれていきます。
このように、コピペにはいい面も悪い面もある、もろはの剣です。 タイトルへの返答としては、「してよいが、それだけで終わらないように」ということになります。 それだけで終わらなければ、コピペは自分のスキルを向上させるきっかけとなります。 冒頭でも触れましたが、本質は多面的です。 もろはの剣のコピペに、自分なりの本質を追加できるとよいですね。