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

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

 

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

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

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

 

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

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

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

 

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

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

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

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

 

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

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

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

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

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

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

 

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

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

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

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

 

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

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

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

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

 

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

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

 

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

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

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

 

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

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

 

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

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

 

これは、マージソートというソートアルゴリズムが
Javaで書かれています。

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

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

実行結果

はい。

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

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

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

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

 

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

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

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

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

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

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

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

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

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

構文も手に染み付いて、
忘れなくなりますし、
コーディング速度もアップします。

 

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

 

プログラム生成の例としてあげるなら、
ASP(アプリケーションサービスプロバイダー)では、

「ユーザー企業ごとのUIを
設定ファイルを
用意すれば
コマンドひとつでUIを作成できる

プログラムを作っておく」

ことはよくあります。

実際、僕がASPに関連する仕事をしていた時は、
ユーザーごとの画面作成プログラムを
Perlで書いていたりしました。

ユーザーごとにUIの表示を変えたり、
機能を限定するのって、
ちょっとした違いだけで実装できるので、
個別に実装するよりも
設定で分岐した方が効率が良いです。

全ユーザーでコードを共通化できるし、
運用・保守のコストも下げられるので、
片手間に少しずつでもやるようにした方が、
システム全体のパフォーマンスが上がります。

 

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

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

 

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

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

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

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

 

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

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

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

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

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

ちょっとでも仕事中にスキマ時間があれば、
模写、模写、模写、模写、模写、模写、、、、、、

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

おかげさまで、
プログラマー以上のプログラミングスキルをもった、
マネージャーになることもできました。

そこまでできるようになったのも、
コピペプログラミングで勉強してきたのが、
大きな要因だと思います。

コーディングスキルをあげたいなら、
プロの技術をパクるのが手っ取り早いし、
自分の実力以上の力を身につけるなら
やっぱりパクリだなと。

 

僕はいまだに新しく言語を勉強する時は、
いつもこのコピペ手法を使っていて、
効率が良いと思っています。

なので、その情報を少し、
お裾分けできたらと思い、
今回の記事を書いてみました。

プログラミングは学び方次第で、
誰でもできるようになります。

僕の仕事はプログラマーを管理することですが、
プログラマーが本気で困っていたら、
僕がコードを書くことが多いので、
いまだにプログラミングを勉強しています。

なので、このコピペプログラミングは、
しばらく使い続けることになると思います。

 

では、今回は以上になります。

わだっしーでした。

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

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


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


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


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


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


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


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


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


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


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


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


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