ビッグデータの活用が進み、機械学習をシステムに組み込む事例が増えています。これまで Webや業務システムを開発していたプログラマーも、今後「機械学習プロジェクト」に参加することが増えていくでしょう。
しかし、初めての分野の仕事は緊張しますし、コツが分かっていないと失敗することがあり、不安になってしまう方も多いのではないでしょうか。そのような方のために、6月12日に発売した「Pythonプロフェッショナルプログラミング 第3版」(株式会社ビープラウド著)では、第15章「プログラマーのための機械学習」の執筆を担当し、自分が仕事を通じて理解したノウハウや仕事をする上での心がけを書きました。
本の概要
この本はハイレベルなPythonエンジニアが集うビープラウド社が日々の業務で培った開発手法をまとめた本で、ビープラウドのメンバーが分担して執筆しています。この一冊で開発環境の構築、開発チームコミュニケーション、テストやCI、パフォーマンス改善、Djangoから機械学習まで幅広く網羅しています。詳しくはharu, shimizukawa, mtb_betaが書いている記事を御覧ください。
すでに多くの方がお買い上げいただいているようで、一時、Amazonの開発技法カテゴリで売れ筋1位だったそうです。ここでは、既にお買い上げ頂いた方でこれから15章を読む人に向けて、まだお買い上げいただいていない方に15章という切り口での宣伝を少し書かせていただきます。
15章は誰に読んでほしいか
冒頭に書いたとおり、これから機械学習を仕事として経験するプログラマーを主なターゲットとしていますが、次のような幅広いにも読んで頂けるのではないかと思います。
- プログラマーを管理するプロジェクトマネージャー
- システム開発会社の経営者
- 機械学習を扱うコンサル
Pythonプロフェッショナルプログラミング全体の読者層を想定しているため、プログラミングの知識は前提として書いていますが、数式など機械学習やデータサイエンスの専門知識は一切不要です。
15章執筆者の狙い
「教師あり、教師なし、強化学習に分かれ、教師あり学習は分類、回帰がある」といったよくある説明は一切カットしました。それらを説明している本はたくさんあるからです。今、専門知識を教えてくれる本はたくさん出ています。自分も読書会を通じて勉強する場を作っています。
一方、プログラマー視点での「仕事の進め方」の本は現時点ではありません。
本職のプログラマーのみなさんが仕事を始めた時、専門知識以外に何を覚えたでしょうか?「要件定義、設計、開発、テスト、納品」という仕事の流れとスケジューリングの大切さではないでしょうか?仕事の流れがわかっていれば、優先順位やスケジュール感を身につけることができます。それが分かれば適切なタイミングでマネージャーに相談することもできます。
しかし、機械学習の仕事では、ウォーターフォールのような開発モデルをうまく適用できません。そこで、従来のシステム開発の知識がある人に何を補ったら効率よく仕事で活躍できるのか?そのことに注力して執筆しています。
15章に書いたこと書かなかったこと
よって、この章を読んだ人が得られると思うことは次のことです
- 「機械学習」のざっくりした概念
- 機械学習を含んだプロジェクトの全体像とスケジュール感
- 仕事をする上での心がけや作業の優先順位
一方、次のことは書いていません
- 機械学習の専門知識
- 機械学習アルゴリズムの説明
- 数学的な理論
これらを補うため、章末に参考書籍が書いてあります。これは筆者も実際に読んで学んだ本なので、順に読めば既に僕と同じレベルに達するとご理解ください。なお、今後僕の主催の読書会でもこれらの本を扱っていくかもしれません。
15章の構成と担当チーム
15章は次のように4部構成になっています。
- 機械学習とは
- 機械学習プロジェクトの概要
- 事前検証フェーズ
- 機械学習の開発環境を準備する
自分はこの中でも1〜3節を執筆しました。しかし実際は1、2節は非常に短いので、実質1〜3節で1セットだとご理解ください。
4節は同僚で、同じく機械学習案件を多数経験し、専門知識やライブラリの使い方の知識が豊富な先輩であるmasayaが執筆しています。masayaと僕は同じプロジェクトのチームになったことがあり、僕が外部調整や個々の処理の糊付け的な開発を担当し、内部のエンジンをmasayaが作りきるという役割分担をして大きな機械学習システムを完成させた仲です。今回も同じチームで1つの章を担当できたことを嬉しく思います。
章末コラム「機械学習で知っておきたいプログラミングテクニック」は2人の合作です!実際の仕事を通じて切実に感じたことを厳選して書いています。
はじめての執筆の感想
2017年9月末に執筆を開始、3月に脱稿、その後度々レビューを直しを経て5月にようやく最終稿を出すことができました。
脱稿まで一体どんな文章を僕が書いていたのか、多くの方にはご心配をおかけしたと思います。僕自身何度もほぼ一から書き直し、構成にドラスティックな変更を加え、一日中日本語のリファクタリングに追われる日々でした。
脱稿後のレビュー直しも大変で、最後は自分一人で文章を書くことができなくなり、意見をくれた数人を招集し、修正方針を練る会議を行っていました。
初めての執筆だったので、執筆チーム、レビュアーチームの皆さんには大変ご迷惑をおかけしました。特に全体のマネージメントを行う傍ら苦しむ僕の道筋を示し続けてくれたtakanory、同じ章担当で積極的に意見をくれたmasaya、レビューで厳しい指摘と温かいアドバイスをくれたharu, shimizukawa, kashew_nuts, mtb_beta, tsutomu, nakagami、説明を分かりやすくするために協力してくれたnatsu, nao_yに感謝します。
まとめ
以上、Pythonプロフェッショナルプログラミング 第3版は「機械学習」の本としても他の本では得られない、個性的な位置づけの内容を含んでいるますので、是非読んでいただければと思います。
まだ、ご購入いただいていない方は、全国の書店またはAmazonなどで購入できます。電子書籍版もあります。