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