GoTheDistance

ござ先輩と言われています。(株) クオリティスタートという会社をやっています。

【書評】Pythonプロフェッショナルプログラミング第2版

BPStudy#92 - connpassBPStudy#91 - connpassに連投するから献本オネシャスしたら、寛大な佐藤社長より頂いたので御礼の書評を書きます。

Pythonプロフェッショナルプログラミング第2版

Pythonプロフェッショナルプログラミング第2版

以下、本書をあたって感じたことを書き連ねます。

virtualenv使おう

これ、相当便利ですよね。flaskをやるようになってから知ったんですが、結構衝撃でした。pythonの実行モジュールを指定すれば、複数バージョンでPython動作環境が作ることができる。phpだとvirtualenvに該当する仕組みがないのが辛みあるし、ビルドオプションも多いし、色々だるい..。

ブランチの作成とマージ

BP社ではシンプルな原理原則がありました。

  • トピックブランチの名前を考えるのは時間の無駄なのでチケットIDで。
  • 親子関係にあるブランチのみマージ可能。子ブランチの派生はNG。
  • 子ブランチの内容を別の子ブランチに反映したくても、まずは親に取り込んでから。

ヘルシーな運用を心がけたいものです。

モジュール分割設計

本書はではこんな感じで分割されていました。

  • View
  • ApplicationModel
  • DomainModel
  • ServiceGateway
  • Utility

ApplicationとDomainで別のモデルに分けているんですね。ApplicationではDomainModelの処理を呼び出すだけに留めておき、Domainに変更が発生する場合は全てそちらに処理を書く。複数のDomainModelが係る場合は、ApplicationModelを経由して呼び出すようです。

永続化される状態を持つオブジェクトとアプリケーションで利用するオブジェクトは違うことが多いので、そこを分割統治しているようです。MVVMに近いなぁと思いました。ViewModel→ApplicationModelみたいな感覚を覚えた。

Ansible活用

Ansibleの標準モジュールで構築できないような作業は無駄か間違ってるから、削除するか手順を改善するようにしている、とのこと。環境構築は簡単であれば簡単であるほど望ましいはずなので、自動化ツールを使ってバッドノウハウが溜まらないように留意しましょう。

Pythonの雰囲気を掴みたい方にもオススメ

僕が特に面白いと感じたのは上記ポイントですが、本書ではドキュメントであったりチケットの作り方やテストのやり方なども書いてあり、仕事をする上での要点がうまくまとめてあります。本書はPythonの入門書籍ではなく、あくまでPythonで仕事をする人のための書籍です。ただ、他言語に見識のある方がPythonで開発するってどうなんだろって興味をもった時、本書をあたればPythonのコードを見つつ現状の作業環境と対比できるので、勉強になって面白いはずです。

Pythonプロフェッショナルプログラミング第2版

Pythonプロフェッショナルプログラミング第2版