見出し画像

初心者にこそおすすめしたいプリンシプル オブ プログラミング

設計やプログラミングをしていると「ここのクラス設計どうしよう?」「この構造どうしたら良い設計になるんだろう?」とたくさんの課題にぶつかります。

レビューしようにも設計の指標がわからないので、コードのタイポを確認する程度のことしかできません。

そして設計は絶対唯一の答えがあるわけではなく、求められるプロダクトによって可変です。

つまりひたすら経験を積み上げていく方法でしか実力を身に付けることは難しいです。

…とは言っても何も指標がないと経験を積むにしても、勉強するにしても非常に大変です。

The Principles of Programming

これを解消する方法の一つとして、今までの歴史の中で積み上げられてきたプログラミングに関するいくつかの原理原則を学習することが挙げられます。

しかし初心者あるあるなのですが、そもそも存在を知らないような物事や単語は検索しようにも調べようがありません。

なのでおすすめしたいのがこの「プリンシプル オブ プログラミング」です。

この本は書籍名の通りプログラミングに関する101の原理原則について解説されています。

一つ一つの原理についての解説は長くはないですが、それぞれが数ページで丁寧にまとめられていて概要を理解するには十分で、深く学習していくための足掛かりには十分なり得ます。

一年前に知りたかった原理原則

自分はちょうどITエンジニアになってから一年が経つのですが、その中から一年、いやせめて半年前に知ってればもっと楽に開発できたんだろうな、というものをいくつか紹介したいと思います。

プログラミングセオリー
アーキテクチャ根底技法
アーキテクチャ非機能要件
七つの設計原理

・プログラミングセオリー

プログラミングをやっているとなんとなく「不要な振り返しは避けるべき」とか「神クラスを作らない」といったことをネット上で見たり、学んだりすることがあるかと思います。

プログラミングセオリーの章では何故そう言ったことを避けるべきなのかを、3つの価値と6つの原則という形で説明しています。

・アーキテクチャ根底技法

プログラミングセオリーが「何故」を説明する章なら、アーキテクチャ根底技法は「具体的な解決策」を示す章です。

抽象化、カプセル化など10個のモジュール設計の技法を紹介しています。

特に自分の場合は初めてのプロダクトで触った言語がKotlin/Spring Bootだったので、これをちゃんと理解していればだいぶ苦労が減ったんだろうなと読んでてしみじみと感じました。

コードを書いているとき、何度過去の自分に平手を食らわせたくなったことか…

・アーキテクチャ非機能要件

プロダクト開発において機能要件と同等以上に非機能要件についても考える必要があります。

自分はまだ初期開発の業務しか担当したことがないのですが、通常リリース後の追加開発や運用保守においてアーキテクチャの非機能要件は重要な役割を果たします。

将来サービスの成長に伴い、どんな追加要望や修正が入るのかは今現在からは想像することはできません。

なので将来の自分が困らないように非機能要件という形で考えておく必要があります。

・七つの設計原理

七つの設計原理は障害を作らないために考慮すべき、コード構造上の観点です。

コードを書くときやレビュー時にチェック観点として使用することで、コードの価値観が漏れたりブレたりすることを防魏、品質を一定に保つことができます。

これを知っていればコードレビューを頼まれた際にタイポだけ確認してLGTMをするような、なんちゃってレビューから卒業することができるのです。

まとめ

この一年間、自分が開発をやって大変だったのは設計やプログラムのベストな設計やレビューの指標がわからないことです。

調べて勉強しようにもそういった情報はネット上ではなかなか見つけられず、また詳しく説明されていることも稀です。

このプリンシプル オブ プログラミングには「知りたいけど、それ言い表す単語を知らないから検索すらできないこと」が一覧で101個も記載されています。

今までなんとなく感覚でやっていたことが、本来どんな原理原則なのか丁寧に言語化されていてとても勉強になりました。

もしこの本の内容でもっと詳しく知りたいと箇所があったら、検索するためのワードやヒントが文中や参考文書といった形で十分に散りばめられているのでスムーズに他の情報源にたどり着けることができます。

自分にとってこの本は何か困ったときにとりあえず開いてみる一冊になりそうです。


この記事が気に入ったらサポートをしてみませんか?