今回は 自走プログラマー Pythonの先輩が教えるプロジェクト開発のベストプラクティス 120
【著】清水川 貴之、清原 弘貴、tell-k【監修】株式会社ビープラウド のレビューをします。
対象読者
以下の対象読者は本書から引用しています。
チョットした便利なコードは書けるけど、中〜大規模のシステムを上手に作れない人
プログラムを書けるけど、レビュー指摘などで手戻りが多い人
優れたエンジニアになりたい人
Python でWebアプリケーションの開発をするときの指針がほしい人
Python 入門を果たしプログラマーで、仕事でPython をやっていこうという人
設計の仕方、メンテナンス性の高いプログラムの書き方を知りたい人
ライブラリの選定を、確信を持ってできるようになりたい人
1つ目と3つ目は勘違いする人がいるかもしれないですが、本書を読むことで中〜大規模のシステムが作れる様になったり、優れたエンジニアになれるわけではないです。
「プロの開発者はその様なことも考えて設計や開発をするのか!」
というような今後のスキル向上のための道標にはなると思います。
タイトルや表紙からは想像つかないですが、Djangoを使ったコードのサンプルが多いです。そのため、Djangoを使ったことのない人やwebサイト開発をしたことのない人にとっては難易度が高いかもしれません。
逆に、Djangoを使っている人にとっては非常に役立つ本だと思います。
内容と感想
全5章で構成されています。以下では各章についての概要と感想を紹介します。
第1章 コード実装
関数設計、クラス設計、モジュール設計、ユニットテストに関するノウハウが紹介されています。
関数設計と、ユニットテストの内容は割と充実していますが、クラス設計に関しては内容が薄すぎました。設計に対する考え方を学ぶというより、小手先のすぐに使えるテクニックを紹介している印象です。
実装規模やレビューなどチーム開発におけるノウハウも紹介されています。
第2章 モデル設計
モデル設計(DB設計)に関しての本があるぐらい専門性の高い分野なのですが、本書の内容は薄いです。
Django ORMの使い方が紹介されています。使ったことがないと難しい専門的な内容ですが、私は非常に勉強になりました。
第3章 エラー設計
エラー設計について書かれている本は少ないので本書の内容は貴重だと思いました。
私はエラー設計は後回しにしがちだったり、InfoとWarningの使い分けを曖昧にしていることが度々あります。
エラー設計は開発内容が違っても大差ないと思うので、基本を抑えておけば困ることはほぼ無くなると思います。
第4章 システム設計
システム設計はwebアプリ向けの内容です。
インフラエンジニア向けの内容が多く、Linuxやサーバーに関する知識が浅い人にはやや難易度が高いです。例えばロードバランサー、CDN、リバースプロキシ、KVS、デーモン、ジョブキューシステムなどが扱われています。
インフラ系の話題ですが、プログラマーが最低限知っておくべき内容ではあります。
第5章 やることの明確化
第5章は計21ページで、各章の中で一番ページ数が少なく内容は薄いです。”要件定義”と、”画面モックアップ”の2つの節に分けて書かれています。要件定義に関しては数ページしか記載がなく大したことがなさそうに捉えてしまいそうですが実際は大変です。
第5章を作るより他の章の内容を増やして欲しいと思うほど取ってつけた様な内容です。要件定義については専門書を読むことをおすすめします。
総括
私は約4年間Djangoでの開発を経験したタイミングでこの本に出会いました。
Djangoの公式ドキュメントは機能の解説は豊富ですが、開発手法や設計方法に関しては意外と書いていません。自分で実装しながら考えたり、githubに公開されているコードを読んだり、他者の記事を読んだりして徐々にスキルを身につけました経緯があります。
本書では私が実装中に悩んだ事のあるユニットテストや、テーブル定義、Django ORM、エラーハンドリング、設定ファイルの使い分け、環境変数、サーバー構成についての指針が書かれていたので非常に参考になりました。特にDjango ORMの使い方に関しては非常に勉強になりました。
Django開発を経験していた身としては
「もっと早く本書に出会っていれば楽できたのに!」
と思えるほどの良書でした。