人のコードのマネ、100%理解することの意味


 こんにちは、営業と採用担当をしています倉星(仮名)です。

今回は人のコードの真似、その意味を100%理解することの意味、というテーマで記事を書きます。


筋野さんの先日の記事
研修で失敗した話 (git-media.blogspot.com)を読んで書こうと思った記事です。


最近個人的にブロックチェーンの技術を調べまくっていて、Poly networkのハッキング事故が去年あったことを知りました。

660億円相当の暗号資産が流出、「DeFiではない」プロジェクトPoly Networkがハッキング被害に【ブロックチェーン講座】 - INTERNET Watch (impress.co.jp)

Mediumという海外サイトでgerhard-wagnerさんというホワイトハッカーが投稿していた記事で、


なぜバグが起こるか予想するならば、
誰かのコードをどういう働きなのか100%理解せずに使っていることが原因。

と言っていて、規模は違えど原因は同じだと思ったのでそのことについて書きます。

人のコードの真似、その意味を100%理解することの意味

研修だけに限らず、参考コードはネット上にいくらでも落ちています。
私も普段なにか作りたいものがあるときは

  1. 大枠で似ているシステムのソースコード探す
  2. それぞれの行がどんな動きしているか解読
  3. 目的の動きからずれているところを修正、足りていない機能追加

みたいな流れでコードを完成させています。

検索力が重要だと思いますし、
コードを引用してくるのも問題ないと思います。

ただ、条件はあると思っています。

  • 一行一行のコードの意味を日本語に置き換えられるか
  • フローチャートでこのコードの動きを書けるか
ここができていないと、
組み立てていったときに複雑化、
問題がどこにあるのか見当もつけられなくなって、
最初から自分で作るほうが早かった、みたいなことになります。

研修について

筋野さんの記事でもわかる通り、
丸パクりして内容理解できていないと、
取返しがつかなくなってしまうので対策を練っています。

  • 確認テストを作成している
  • 詰まった時にまずしてもらうのは一行一行のコードの解読の徹底
だいたいわからないっていう人にコードを解読させると、
間違った認識をしていたり、理解できていなかったりするのでおススメです。

この現象を面接に横展開してみます



これはプログラミングだけに限らず、
他のことでも同じような問題が発生している気がします。


例えば、
面接を受けるときに、ググった情報をそのまま使うみたいな事です。
本質的になぜこの回答が正しいとされているのかを考えることが大切で、
それが正解たる理由を100%理解できれば、他の正解も導けます。

志望動機を聞かれたときにA「定年まで働きます」という回答モデルがあるとします。
これをそのまま行っても面接官は「定番」くらいで、感動ゼロです。

Aという回答モデルがなぜ正しいのかを考えてみましょう。
①面接官に「すぐには辞めないだろう」と思ってもらうため
②面接官に「本音はどうであれ、最低限の建前は使える人」と思ってもらうため
③Aという回答モデルが自然に出てくる状態が会社にとって好ましいため

などなど、いくつか可能性がでてきます。

①の場合、
面接官に「すぐに辞めない」と思ってもらうのが目的ならば、

A「定年まで働きます」でなくても、
B「定年までとは言えませんが、採用していただいた御恩をしっかり返せるまでは働きます」
も正解です。

ちなみにBは丸パクりでなく自分の頭で考えたオリジナルなので、
感情が伝わりやすく、感動が生まれやすいです。

少しかけ離れてしまったかもしれませんが、
取得した情報をわけもわからず使っているのは、問題が起こる可能性あり。
情報の本質を考え、応用するのはけっこう簡単にできます。
その割に効果大きいのでおすすめです。

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

GITの応募ページを確認してみる!