最近プログラミングを始めたばかりで、色々なサイトでコードを見る機会があるのですが、コピペしていいの?
それともそのまま書き写したほうが力になるの?
プログラミングでのコピペの是非について教えてください!
こんな悩みに答えます。
プログラミングを始めたばかりであれば、コピペは楽だけど、これでいいのかな・・・と不安になる人も多いハズ。
私自身も、プログラミングを始めたばかりの頃は「楽したいけどコピペしたらなんか力にならなさそう…」と思っていました。
そんな悩みを、現役Webエンジニアの私が解決策を紹介していきます。
早速紹介していきます。
プログラミングでコピペはしてもOK【活用方法を間違えない】
結論ですが、プログラミングでコピペをするのは「使い方を間違えなければOK」です。
重要なのは
コードを理解した上でコピペを活用する
という点。
多くの人が最初の学習に使うProgateは結構コピペで進むところがありますよね。
脳死でとにかくコピペは絶対にNGです。
関連記事【Progateの進め方】最高効率で学習する方法・学習順番と注意点を解説
【具体例】コードを理解した上でコピペするってどういうこと?
例えば、PHPで配列をソートしたいとします。(関数使えば一発ですが、例として1から書きます)
ソートとは、例えば数字を小さい順に並び変えるものです。
function bubble_sort(&$array){
$size = count($array);
for ($i = 0; $i < $size; $i++) {
for ($j = 0; $j < ($size - 1 - $i); $j++) {
if ($array[$j + 1] < $array[$j]) {
$tmp = $array[$j + 1];
$array[$j + 1] = $array[$j];
$array[$j] = $tmp;
}
}
}
}
$array = [100, 3, 30, 20, 44, 32];
bubble_sort($array);
上記のように書けば、下から2行目の部分の「100, 3, 30, 20, 44, 32」が「3, 20, 30, 32, 44, 100」と順番が変わります。
「なんかこう書けばソートできる」程度では思考停止状態なのでNGです。
ソートしたいなぁと思ったときに、上記をコピペすれば動いて終わり!ってなるのですが、なぜそうなったのかまでを理解する必要があります。
なぜなら、理解しないまま進めると自分で何も作れなくなるから。
「並び替え」はよく必要になってきますが、その途中で処理を加えたり、並び替え方が特殊だったりして、大抵は応用が必要になってきます。
その応用の際に、元々の基本形を身につけておかないと自分の力で書けるわけありません。
結構「動いたからOK」「よくわからないけどフル暗記」なんて学習をしている人は意外と多くいますが、間違った学習方法です。
コードをぱっと理解できなかった場合はコピペした後で理解を深めよう
コードの中に分からない部分がある時には、途中で状況を確認しつつ理解していきましょう。
例えば先ほどの例であれば、途中でprint_r($array)などを出力して順番が変わっていく様子を1つずつ見ていくことで理解の助けに繋がります。
頻繁に状況を確認しながら進めるというのは必須スキルで、理解を深めつつちょっとずつ進んでいくというのが基本。
とはいえ、試行錯誤を重ねて独学でプログラミングをするのって正直かなりしんどいです。
当サイトでは、基本的にプログラミングスクールを推奨していて、教えてもらいつつの方が効率もいいです。
オススメのスクールについては『おすすめプログラミングスクールのランキング12選【2024年最新】』の記事で紹介していますので、独学がしんどいかも、という人は参考にしてみてください。
「コピペしたらプログラムが予想通り動いたからよし」ではだめなのか
反論として、「いやいや、コピペして思った通りの動きをしたからOKじゃないの?」と思う方もいると思います。
コチラについては、後で聞かれても説明できるレベルを目指しましょう。
理由としては、以下の通り。
- 大規模開発では、同じ部分を見直す機会が頻発する
- 自分が何を書いたのか理解できていないと、バグが多くなる
- 自分が理解しにくいコード=他人も理解しにくいコードなので改善が必要
ある程度は「誰が見ても分かるコード」を目指したほうがよくて、そのためにも理解できた部分はコメントしつつ進めていくのもアリです。
なお、動いたからいいやで進めていくと、自分の手で作る時に全く作れない・・・という現象に陥ります。
経験があると思うのですが、数学の問題の答えをうつしても、いざ自分で解くとなると全く分からなくなる現象と似てるかなと思います。
やはり自分の手で書けないと意味がないので、説明できる程度には理解した状態で進んでいくべきです。
プログラミングのコピペのメリットとデメリットを理解しよう
実はプログラミングでのコピペはメリットもあります。
- やはり楽
- 色々な手法を試すことができる
- 効率が良くなる
1つずつ解説していきます。
プログラムのコピペはやはり楽
長ったらしいコードで、分かり切っているような部分はガンガンコピペすべきだと思います。
プログラミングでは使いまわしも多く発生するので、楽をしましょう。
その中でも理解できない部分だけサクッと調べるという感じで良いと思います。
プログラミングのコピペは色々な手法を試すことができる
想像通りの動作を実現できそうな書き方は大抵いくつかあり、コピペでスピーディに色々な手法を試せるのでシンプルに経験値が貯まります。
その中で色々な手法を見たり、考えたりすることでさらに学習にも繋がってきますので、素早くPDCAを回せるという点でもコピペは優秀。
個人的には、「とにかく試す」ことを重視してプログラミングをしているので、うまくいきそうなコードはとにかくコピペして試しています。
で、うまくいったらコードをじっくり理解して、「本当に使えるか?」「バグが起きる可能性はないか?」などを考えます。
プログラミングのコピペで効率が良くなる
分かり切っているところを手打ちするのは無駄です。
プロセスごとにブロック分けをしていって、理解できるところはコピペ
理解できないところは理解しつつ考えながら書いていく
というやり方がベターかなと。
やはりプログラムではひな形がいくつかあり、長ったらしくて覚えてられないものも多いので、ひな形はひな形と認識してコピペするのが一番ですね。
余談:プログラミングのコピペってバレる?
コピペのデメリットも当然あります。
ぱっと思いつくのは「自分で書いたものを説明できない」「自力でコードを書けなくなる」ですが、重要な点として「ばれる」があります。
もしかしたら、プログラミングの授業などでわからなさすぎてコピペしようとしている人もいるかもと思ったので、コピペ関連の余談として書いておきます。
結論から言えば、コピペするとバレます。
検索して出てきたそのままのコードを貼りつけたような回答だと、ツールを使えば一発で分かります。
きちんと少しずつ理解しながら進めた人と比較しても、変数名や書き方、コメントなどでどうしても違いや性格が現れてきます。
一部分の処理を(書き写すのが面倒だから)コピペならセーフだと思いますが、全体をコピペするのは、よっぽど簡単なプログラムでない限り避けましょう。
コピペできる状況でも、理解してから先に進んでいかないと意味はないです。
優しい友人は、みんなに見せた後で自分のを書きかえていた模様。
プログラミングの写経VSコピペ【結論】
まとめにはなりますが、以下の通りです。
特に一番下に関しては写経派も多いかもですが、動かないとやっぱ意味がないので効率重視の私としてはこんな感じです。
それでもガチ初心者の人は写経から始めよう
結構コピペ推しで書いてきましたが、それでもガチ初心者の方は写経から始めるべきです。
プログラミングの空気感とか、感動を覚えるにはやはり自分の手で書くことが大事だと思っており、楽しむことが挫折しにくい勉強方法かなと思います。
基礎を勉強する際には、手を動かしつつ学ぶのが一番だと思いますので、教材を参考にしている間くらいは写経して「手で覚える」というのも大事です。
動画学習サイトのUdemyとかだと、写経で学びます。
Udemyだとガチガチのエンジニアの書き方を写経で学べるので一気にレベルアップできます。
参考Udemyで初心者にもおすすめのプログラミング講座9選【現役エンジニア推薦】
正直、現役エンジニアになった今でも『こんなきれいな書き方があったのか…』と勉強になっています。
プログラミングのコピペはうまく活用しよう
教材を使わずに、自分の考えた通りの物を作りたいという場面になってきたら、経験重視になってきます。
経験重視になってきたら、試行回数を増やすためにも積極的に(理解できないところを潰しつつ)コピペしていけばいいです。
逆に、最初の教材の内容をそのまま書いて予想通りの結果になるかを試す段階では写経しないと学習効率も落ちるかと思いますので、面倒でも写経重視かなと感じます。