『プリンシプル オブ プログラミング』の要点をまとめてみた
はじめに
今回の記事では、エンジニアリング界隈では必読の書籍の1冊である『プリンシプル オブ プログラミング』の要点とその活用方法を簡潔に解説した。本書は様々な書籍からの内容を引用してプロジェクトやエンジニアリングの原理原則が丁寧にまとめられている。
専門的な内容が少し多いものの、プログラミング・エンジニアリングをそこまで知らなくても役立つ知識や考え方が丁寧にまとめられている。本書はエンジニアリングに携わる人全員なら全員読んでほしい。
本記事では、主にプログラマーに対して、本書を読み進めて個人的に重要なポイントを3つに集約して解説する。
プログラミングに銀の弾丸はない
私たちプログラマーは何らかのソフトウェアを開発している。その開発の最中に、突然混乱に陥って理不尽なことが起こることは珍しいことではない。ところが、プログラミングに関連するすべての問題を解決する方法はない。本書では、これを「銀の弾丸」という言葉で表現している。
要は、「これさえあればうまくいく」という特効薬はプログラミングの世界に存在しないのだ。
プログラミングで作られるソフトウェアには困難性という性質がある。そして、困難性には以下の4つの性質がある。
- 複雑性:ソフトウェアは大きくて複雑
- 同調性:ソフトウェアは単独で存在しているわけではなく、ハードウェアやネットワークなど様々な要素から成り立っている
- 可変性:ソフトウェアは変化し続ける必要がある
- 不可視性:ソフトウェアは概念や知識の集まりで、目に見えない
このように、ソフトウェアの本質が困難性である以上、それを成果物とするプログラミングは非常に難しい。実世界を取り巻く状況が複雑で、問題が多種多様であるのですべてを解決できる特効薬は存在しない。
ソフトウェア開発で何らかの問題を解決するためには、地道に一つ一つ改善するしか術がないのだ。
コードは設計書である
ソフトウェアの「基本設計」から「詳細設計」「プログラミング」「テスト」「デバッグ」までがすべて「設計」である。そのアウトプットが「コード」になる。
このように考えると、プログラミングは設計する行為そのものだ。ソフトウェア開発で作成されるあらゆる文書の中で、「コード」こそが設計書そのものである。ソフトウェア製品の改良はプログラミングを十分に理解していないとわからないことが数多くある。プログラミングは設計そのものだ。そう考えると、開発の体制や環境が定まる。
プログラミングは創造的な行為だ。与えられた仕様をコードにただ置き換えるだけの作業ではない。更に重要なことは、コードはできるだけ早く書き始めるべきであるということだ。コードを書かないと、不明確な部分だらけでいつまでも設計は終わらない。ソフトウェア開発において、コードはソフトウェアの設計書そのものである。
コードは必ず変更される
コードは一度書いてそれで終わりということはない。一度書いたコードはその後必ず変更される。
ソフトウェアは本質的に複雑なので、決して完璧に仕上がることはない。リリースされた後は必ず障害が発生し、それを修正しなければならない。さらに、リリース後にユーザから要望が上がり、機能を拡張する必要がある。ユーザ側でも、実際に使ってみるまでわからないことがあるからだ。最初のリリースだけで、要望を完全に網羅したソフトウェアを開発するのは非常に困難である。
プログラミングにおける一つ一つの判断は、「そのコードが変更される」という前提で行うようにしよう。要は、変更に強いコードを書くということである。そのためには、読みやすいコードを書く必要がある。
とどのつまり、コードは書いている時間よりも読んでいる時間の方が遥かに長くなる。変更されるという前提でコードを書くと、書くのにどれだけ時間がかかっても読む時間を短縮できるので十分に元を取れる。
おわりに
今回の記事では、エンジニアリング界隈で有名な書籍である『プリンシプル オブ プログラミング』の要点を簡潔にまとめてみた。
【本書の要点】
- プログラミングに銀の弾丸はない
- コードは設計書である
- コードは必ず変更される
参考サイト
参考文献
Discussion