ビープラウド社長のブログ

株式会社ビープラウドの社長が、日々の思いなどを綴っていきます。

「Pythonプロフェッショナルプログラミング 第3版」は、10年の取り組みの集大成

2018年6月12日にビープラウドのメンバーで執筆した「Pythonプロフェッショナルプログラミング 第3版」が出版されます。

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

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

第1版が2012年3月26日、第2版が2015年2月27日、第3版が2018年6月12日の発売で、約3年おきに版を重ねてきました。

最新技術に合わせてバージョンアップ

IT技術は日々バージョンアップされ、数年もすれば技術の構成やベストプラクティスも変わってきます。

技術の進歩に合わせて、書籍も第3版としてバージョンアップしました。

主な改訂内容は以下のとおりです。

  • Python2.7.6→Python3.6.4
  • Ubuntu14.04 LTS→Ubuntu16.04 LTS
  • Webアプリケーション(2章) サンプルアプリケーションを「乗りログ」という新たなアプリケーションに変更
  • ソースコード管理(6章) Mercurial→Git/GitHub
  • Pythonパッケージの利用と開発への適用(9章):manylinux, Dockerの活用
  • 継続的インテグレーション(10章):Jenkins→Circle CI
  • テスト(13章) :テストの見積もりについて説明追加
  • 開発環境のセットアップ(Appendix):Vagrant、ネットワーク設定、ファイル同期、環境のバックアップなどの説明を追加
  • プログラマーのための機械学習(15章) を新たに追加

上記以外にも全面的に内容を見直し、細かい修正を加えています。

機械学習の章を新たに追加

ビープラウドでは、2017年から機械学習・データ分析系のシステムも受託開発しています(2017〜2018年の実績は6案件(2018年6月時点))。

機械学習のプロジェクトというと、データサイエンティストやドメインエキスパートといった役割が浮かびますが、ビープラウドではWeb開発を担当していたプログラマーも、機械学習のプロジェクトに携わっています*1

機械学習の実プロジェクトから得たノウハウ、主にプロジェクトの進め方や考え方を「プログラマーのための機械学習」の章として追加したのも第3版の大きな特徴のひとつです。

「プロフェッショナル」というタイトルの意味

プログラマーになるためには、まずプログラミングの文法から学び始めます。

しかし仕事として実際のプロジェクトにプログラマーとして参加するには、プログラミングの文法を学んだだけでは良い仕事はできません。

なぜならプロジェクトにはQCD(Quality:品質、Cost:費用、Delivery:納期)の制約があるからです。

実プロジェクトにおいてQCDの制約の中で、職業としてのプログラマー(以下、プロフェッショナル・プログラマー)としての役割を果たすには、プログラミング以外にも、開発環境、エディターの使い方、ソースコード管理、ドキュメント、テスト、デバッグ、設計、サーバーインフラ、パフォーマンス、ライブラリ、ミドルウェア、継続的インテグレーション、課題管理、レビュー、チームでの仕事の進め方などさまざまな知識を持ち、活用する必要があります。

プロフェッショナル・プログラマーは、プログラミングだけではなく周辺技術を活用できてはじめてプロジェクトのQCDを守れるという、ある意味厳しい環境で仕事をしているといえるでしょう(だからこそナレッジワーカーとしてのプログラマーの仕事の価値があります)。

プログラミング言語Pythonに特化し、プロフェッショナル・プログラマーにとって実プロジェクトで必要な知識・スキルのベストプラクティスをまとめたのが「Pythonプロフェッショナルプログラミング」です。

さまざまな技術についてまとめていますので、書籍は488ページ(全15章+Appendix)にも及んでいます。

また会社のサイトトップには以下のように会社のミッションが書かれています。

株式会社ビープラウドはソフトウェア開発のプロフェッショナルチームです。 日々研鑽した知識・技術・創造力とチーム力で、アイデアをカタチにし、価値を創り出します。

ここでの「プロフェッショナル」は、職業という意味だけではなく、以下のような意味も込められています*2

  • 専門家のこと。ある分野について、専門的知識・技術を有しているひと
  • そのことに対して厳しい姿勢で臨み、かつ、第三者がそれを認める行為を実行している人

この「プロフェッショナル」への思いが、書籍のタイトルにも込められていることも加えておきます。

本書の土台になっているもの

ビープラウドでは、2008年4月にPythonを開発のメイン言語に定めました。

それ以来10年間にわたり、90以上のプロジェクトでPythonを採用し、開発実績を積み、技術やノウハウを洗練してきました。

ビープラウドの技術者たちの会話を聞いていると、さまざまな技術の比較やよしあし、技術動向、技術の経緯など「よく知っているなぁ」と感心することが多々あります。

これらの知識は「より良い仕事をしたい」「自分のスキルをアップしたい」「技術が好き」という意志がベースにあり、多くの時間を使って追求した結果です。

技術者のすべての行動には理由が必要です。

「なぜその技術を使うのか?」「なぜそのように技術を使うのか」

理由を突き詰め、積み上げた先にあるのが価値を創り出す安定したシステムです

日々多くの時間を使い追求した技術を土台に「なぜその技術を使うのか?」「なぜそのように技術を使うのか」が随所に説明されている点も本書の見どころのひとつです。

PyQとのコラボレーション

ビープラウドで運営しているオンラインPython学習プラットフォームのPyQで、書籍とのコラボ問題を用意しました(コラボ問題は無料です。クレジットカードの登録が必要で、書籍内にキャンペーンコードが記載されていますので画面で入力してください)。

第2章で新たに用意したサンプルWebアプリケーションの「乗りログ」を開発する問題です。

「乗りログ」を作ろう

書籍で読んだことを、PyQで実際に手を動かしプログラミングし動かすことで、理解を深めることができます

ご自分で環境を用意するよりも早くアプリケーションを試すことができますので、是非トライしてみてください。

pyq.jp

最後に

Pythonを採用して丸10年という節目に、ビープラウドのノウハウ・知識を書籍としてまとめてくれた会社メンバー(11名)、書籍をレビューしてくれた社内メンバー(16名)、そして社外から唯一レビューに参加してくれた @aodag に感謝します。

そして本書の出版に尽力してくださった秀和システムの平野孝幸さんに感謝します。

「Pythonプロフェッショナルプログラミング 第3版」は「Pythonによる開発のイマを知るのに最適である」と自信をもっておすすめできる書籍に仕上がりました。是非お手にとってお読みください。

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

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

f:id:haru860:20180612115141j:plain

*1:機械学習の顧問としてサイボウズ・ラボの西尾泰和さんに2017年から参画していただき、機械学習を勉強したエンジニアが西尾さんにアドバイスを受けながら手を動かすというカタチでプロジェクトを進めている。勉強と実践のギャップを埋める効果を狙った取り組み(参考URL)

*2: Wikipediaより