コピペプログラマーは悪か?爆速で成長するプログラムコピペ方法の秘密

どうもです!
わだっしーです!

 

今回は
「コピペプログラミングで成長する方法」
について話していきます。

ある程度プログラミングができるようになってくると、
ネットに落ちているコードをそのままコピペして、
現場のコードで使ったりすることって出てくると思います。

ですが、それでは超えられない壁というものが出てきます。

 

自分で書いたコードだけれども、
いまいちよく理解していないからバグっても
自力で直すことができない。。

エラーが出ているのにその理由が自分で全くわからない。。

なんことになりかねないのです。

 

でも、そんなことはわかっているよ!と笑

一つ一つ理解しながらコーディングを進めていたら、
いつまでたっても完成しない。。

全然前に進んでいる気がしない。。

そんなジレンマを抱えている人は多くいることでしょう。

 

今回はそんなコピペに悩めるプログラマーの
最強コピペ成長術について書いていきたいと思います。

半強制的に実用的なレベルで他人の技術を盗むという点では、
どんなスキルにおいても通用するので、
この考え方をマスターして爆速で成長するための
方法を学んでいただければと思います。

コピペが悪手となるパターン

本題に触れる前にまずはこれだけはやっちゃダメ!
っていうコピペについて共有したいと思います。

 

それはパソコンのコピー&ペースト機能を
使うということです。

完全にそのコードについて意味を理解して、
実際にコピペするのなら良いのです。

ですが、完全に理解していないのであれば、
そのコードがどのような処理で動くのかを
論理的に理解していないのであれば、
それは単純なコピペは絶対にやってはいけません。

これはプログラマーというより、
技術者としてやってはいけないことだと思っていて、
なんとなくの理解で済ませてはいけないのです。

理解をしてないと、バグった時に、
その原因を自分では全く突き止めることができなかったり、
その時になって徹夜とかして問題を解決したり、
問題が出た時には取り返しのつかないことになっていたり。

なんてことになりかねないのです。

 

正直な話、僕に相談してくるような初心者の方は、
大抵自分の書いたコードの意味を理解していません。

きちんとコードを1行ずつ精読し、理解するということをしていません。

ハッキリ言ってコードを1行ずつ読むという行為はしんどいです笑

僕も睡眠不足だと確実に寝落ちするレベルで辛いです笑

 

だから、本当にプログラミングの実力を身につけたいけど、
よく処理の内容がわからないのであれば、
最低でも実際に自分の手で模写することをオススメします。

処理の流れを読んで理解できないパターンとして、
プログラムを1行ずつちゃんと精読していない、
というパターンが大半なので、
1行ずつ手で書き写すということは、
1行1行の意味を考えるきっかけになります。

少なくとも読み飛ばしたりすれば、
プログラムは模写することができませんし、
そもそもプログラムを動かすことすら困難です。

模写というのは思考ハードルを下げてくれますし、
読むことに慣れるという意味でも
かなり良い方法だと僕は思っています。

 

コピペから応用技術を身につける方法

ここからはコピペで極限から技術を吸い取り、
血肉にするための方法を話していきます。

 

コピペでは大した技術は身につかないって
言っている人もいるのですが、
僕は全く逆だと思っています。

やり方次第ではプロの技術を自分の指先に
宿すことも可能になりますし、
それこそが最速のスキルアップ方法だと信じています。

自分自身に天才的なプログラミングスキルが
あると思っているのであれば別ですが、
そうでないのであればこのコピペ術は最強だと思っています。

 

では、実際にどのようにコピペをしていくかというと、
大きく2通りのパターンがあります。

  • 違う言語のソースコードを他の言語に書き換える
  • 実用コードに書き換える

 

まずは
「違う言語のソースコードを他の言語に書き換える」
方法です。

さっきこんなJavaのコードを見つけてきました。

 

マージソートというソートアルゴリズムがJavaで書かれています。
よくわからない人は
「効率的なソートをするためのアルゴリズム」
というように思っていてください。

で、これをRubyで書くとこんな感じ。

実行結果

はい。beforeの[2, 3, 1, 4, 5]が昇順で[1, 2, 3, 4, 5]に
並び替えられましたね。

プログラムの中を見ているとわかると思うのですが、
言語によって書き方が違っていたり、
データの扱い方が違うので、
強制的にどう使うのか?
ということを理解せざるを得ないのです。

僕はこれを書くときRubyをほとんど書いたことが
なかったのですが、
Rubyの勉強としていい体験をしたなと思います。

強制的に応用例を考えるには別の言語で、
プログラムを書くというのは力をつけるには、
非常にオススメの方法になります。

 

では、次に
「実用コードに書き換える」
ということをやっていきます。

僕は最近Rubyを勉強し始めたので練習として、
もっと応用したコードを書いていきたいと思います。

お題は、どうしようかな。。

社員情報が書かれたCSVファイルをID順で
ソートするというのをやってみたいと思います。

使うデータはこちら。先頭のIDの順番がバラバラですね。

バラバラになっているIDを整列する
Rubyのプログラムはこちら

ソートの出力結果はこちら。ID順にソートされていますね。

こんな感じでJavaのマージソートのコードから、
実際にリアルで使いそうなデータのソートに応用してみました。

僕が新しく言語を勉強するときは、
基本的な構文を覚えた後はこんな感じで、
いろんな実用パターンに応用してみて、
現場で使えるレベルまで落とし込むということをやっています。

そうすることで構文も手に染み付いて、
忘れなくなりますし、
コーディング速度も段違いにアップしていきます。

 

また、慣れてきたらプログラムを書くためのプログラムも
書いてみると生産性もアップして良いので、
余力のある方は挑戦してもらえればと思います。

コーディングは単純作業なところもあるので、
こういった面倒なことはどんどん自動化していきたいですね。

自動化まで行ければ上級者への道も近いでしょう。

 

俺の技術は俺のもの。プロの技術も俺のもの。

ここまででプロのコードをコピペして、
自分の技術にする方法を紹介してきました。

今回使用したのはネットに適当に落ちていたコードなので、
プロのコードかは怪しいですが、
プログラミング技術の向上という意味では、
役に立つので練習としては非常によかったです。

実際のプロのコードをパクるときは、
オープンソースのアプリケーションだったり、
現場で実際に動いてるコードで、
「これすげぇ!!」
っていうものを対象にするのがベストです。

 

僕の場合、
現場でマジで神がかったPerlコードを書く人がいたので、
その人のコードをコピペして、
その人のコーディング技術を
自分の手にインストールしてきました。

書くスピードももちろんなのですが、

  • 効率的な処理フロー
  • 効率的なメモリ使用
  • 効率的な通信処理
  • 圧倒的なコードのわかりやすさ

というのが非常に優れていました。

なので、僕はその人を完全にトレースできるように、
片っ端からその人のコードを模写していました。

ちょっとでも業務時間中に隙間時間があれば、
模写、模写、模写、模写、模写、模写、、、、、、

こんな感じでそのプロの技を身につけてきました。

今ではPerlに関しては深いレベルで書けるようになりましたし、
実際の現場では18ML(1億8千行)規模のシステムを
僕1人で保守・運用をしていたりします。

そこまでできるようになったのも、
模写したところが本当に大きいなと思っています。

やっぱプロの技術をパクるのが手っ取り早いし、
自分の実力以上の力を身につけるならやっぱりパクリだなと。

 

僕はこうすることでいつもプログラミング技術を身につけているので、
一参考になれば良いのかなと思って今回の記事を書きました。

プログラミングは学び方さえ知ってしまえば、
独学でどこまでも突き抜けることができますし、
プログラミングだけでご飯を食べることも可能です。

僕の場合はプログラミング特化のエンジニアではないのですが、
そういう道を目指すということも一つの選択肢にはあるので、
身につけていて損はなかったなと思っています。

ま、今回のコードを見て、
僕のプログラミング技術が平凡であることもわかったと思うし、
俺の方がもっといいコード書けるんだぜ!
っていう人がいれば僕に対して自慢してください笑

勉強させてください。

 

ではでは、ここまで読んでいただきありがとうございます!

以上、わだっしーでした!

稼ぐエンジニアの考え方を凝縮した電子書籍をプレゼント中

僕はシステムエンジニアとして
年間6000万円以上売り上げています。


才能があったわけではないし、
昔から超がつくほど要領が悪いです。


そんな僕がプログラミングを習得したり、
心から尊敬する先輩や上司から影響を受けて、
エンジニアとして成長することができました。


酸いもあまいも経験してきましたが、
普通の人よりもたくさん失敗してきて、
それをガソリンにして結果にフォーカスしてきました。


その経験から
「ポンコツでもエンジニアになれる」
と思っているし、
成長して理想の自分を手に入れられると信じています。


そして、今は同じ道を志す仲間を
1人でも多く増やして、
エキサイティングでより生産性的な社会を
作っていこうと夢見ています。


そういった理念をもとに、
僕の知識や経験をふんだんに絞り出して、
エンジニアとして成長し、
結果を出すにはどうしたら良いかを
体系的にまとめた電子書籍を作りました。


僕のストーリーも交えて作っていて、
20分程度でサクッと読める内容なので、
もし興味があれば読んでみてください。


→電子書籍『エンジニアという生き方で人生をデザインする。』


メールアドレスを入力すれば、受け取れます。


最後まで読んでいただきありがとうございました。


もしこの記事が役に立った!と思われたら
SNS等でシェアしていただけるとすごく喜びます。
(すぐ下のボタンからシェアできます)