2015年1月6日
ソフトウェアエンジニアを目指す人へのコードに関するアドバイス
本記事は、原著者の許諾のもとに翻訳・掲載しております。
この短い記事で私は、ある素晴らしいアイデアを提案します。それは、製品品質のコードは、下記リストに挙げた特性で説明することができるということです。それぞれ、重要性の高いものから順番に記述しています。もしあなたが、学校もしくは独学でプログラミングを学ぶ、真面目な学生なのであれば、製品品質のシステムを構成するコードの特性を学びたいと思うのではないでしょうか。
是非、 ご意見・ご感想 をお寄せください。
読みやすさ
言うまでもなく、読みやすいコードである。
読みやすいコードは、必要に応じて簡単に変更できる。
読みやすいコードは、他の人も理解することができ、共有することができる。
予測可能
予測可能なコードは、信頼を築く。
予測可能なコードは、予想通りに壊れる。
予測可能なコードは、他の人に使われる最初のコードである。
正確さ
正確なコードは、エッジケースを含む。
正確なコードは、書くことで唯一報酬を得られるコードである。
正確なコードは、すべての既知の入力に対して、正しい結果を出力する。
効率的
効率的なコードは、実行する費用が安価である。
効率的なコードは、「これは必要か?」と聞いてくる。
効率的なコードは、必要以上のリソースを使わない。
なぜこの順番なのか?
価値のあるものを構築する際、コードが 正確である ことは絶対ですから、“正確さ”が一番目にリストされると思うかもしれません。ですが、それぞれの特性は次の特性の土台となるので、ほとんどの場合、この順番で構築していけば、より早く正確なコードを書けるようになるのも事実なのです。この見解が正しい理由は、次のようにまとめることができます。
もしコードが読みにくかったら、予測可能とは言い難い。
もしコードが予測可能でなかったら、偶然を除けばそれは正確ではない。
もしコードが正確でなかったら、おそらくそれは役に立たない。
もしコードが効率的でなかったら、広く役立つものとして見なされそうにない。
全てのコードが完璧である必要はない
これらのルールに明らかに当てはまらないのが一時使用のためのコードです。これには、(a)一度しか実行されないタスクのコードと、(b)問題の解決方法を調査するための単なる実験的なコードが含まれます。実際、この種類のコードは頻繁に書く必要があります。つまり、一時使用のためのコードは良いコードである必要はなく、ただ動作すればよいのです。
そこで、「間違いなく一時使用が目的のコードはどれか? これらのルールを無視しても大丈夫なのはいつか?」という疑問が出てきます。この答えは、経験によって得られるもので、実践を重ねることで身につくものなのです。
監修者
古川陽介
株式会社リクルート プロダクト統括本部 プロダクト開発統括室 グループマネジャー 株式会社ニジボックス デベロップメント室 室長 Node.js 日本ユーザーグループ代表
株式会社リクルート プロダクト統括本部 プロダクト開発統括室 グループマネジャー 株式会社ニジボックス デベロップメント室 室長 Node.js 日本ユーザーグループ代表
複合機メーカー、ゲーム会社を経て、2016年に株式会社リクルートテクノロジーズ(現リクルート)入社。
現在はAPソリューショングループのマネジャーとしてアプリ基盤の改善や運用、各種開発支援ツールの開発、またテックリードとしてエンジニアチームの支援や育成までを担う。
2019年より株式会社ニジボックスを兼務し、室長としてエンジニア育成基盤の設計、技術指南も遂行。
Node.js 日本ユーザーグループの代表を務め、Node学園祭などを主宰。
- Twitter: @yosuke_furukawa
- Github: yosuke-furukawa