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

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

価値創造に必要な「価値」を明確化するスキル

本記事は、匠塾 Advent Calendar 2021の12/23の記事です。

プロジェクト(仕事)の目的は、価値を届けること

2021年8月にPMBOK(Project Management Body of Knowledge)の第7版がリリースされました。第6版までは「成果物を届けること」が主目的であったのに対し、第7版は「価値を届けること」が主目的になりました。

この変更は、予測型(PMBOKでは第6版まで)から適応型(同第7版)への変化とも言われています。

「予測型」は、「あらかじめ決められたとおり(予測したとおり)に仕事をしていれば価値が生まれる」という前提に立っています。予測型の開発では、その前提のもとに「決められたことを、しっかりやり遂げること=成果物を届けること」にフォーカスします。

「適応型」は、「あらかじめ決められたとおり(予測したとおり)に仕事をしても価値が生まれない」という前提に立っています。適応型の開発では、その前提のもとに「状況に適応して行動し、価値を生み出すこと」にフォーカスします。

ソフトウェアエンジニアの仕事で言えば「ソフトウェアを作ることが仕事」から「価値を創ることが仕事」になったといえるでしょう。

PMBOKの第7版の変更点については、以下の記事が参考になります。

note.com

「価値」を明確化する匠Method

「価値を届けること」を目指して皆で仕事をするときに、目指す対象が曖昧であれば、開発プロジェクトは迷走してしまいます。目指す対象とは価値のことです。

一方で価値を明確にしておけば、その実現のために各自で考え動き出すことができます。

価値を表現し明確化する方法として有効なのが、匠Methodです。*1

匠Methodでは、価値を表層的価値深層的価値という2つの価値で表現します。

表層的価値とは、製品やサービスを使うことによって得られる機能性やデザイン性などの価値です。価値といわれて思い浮かべるのは、この価値でしょう。

深層的価値とは、自分たちの内面にもつ価値です。一般的にストーリーとして表現され、ビジョン、意志、価値観などで表されます。

匠Methodでは、表層的価値を価値分析モデル、深層的価値を価値デザインモデルという図で表現することで、価値をカタチにします。

※各モデルについては以下のスライドを参照してください。(価値分析モデルは、P36、価値デザインモデルはP39)

speakerdeck.com

匠Methodの価値のモデル(価値分析モデル、価値デザインモデル)を、開発のスタート時点でつくることで、目指すべきものが明確化されます。

もちろん、プロジェクトのスタート時点でつくった価値のモデルも仮説でしかありません。

ソフトウェアをリリースし、使用されることで新たな価値が見えてきます。

ソフトウェアを使用した学びの中から、価値のモデルを洗練させていくことが必要です。

ビジネスでの開発に求められる仮説検証サイクル

ビジネスでの開発では、仮説検証のサイクルが求められます。*2

開発のスタート地点で、このようなものをつくればうまくいくという仮説をカタチにして人に見せる必要があります。

なぜなら、仮説も無しに企業が人員をアサインすることはほぼ無いからです。「未知のジャンルなので、とにかくやってみよう」という場面でも、最低限の仮説は求められるでしょう。

仮説を立てるときの注意点としては、頭でっかちにならないことです。

頭でっかちにならないためには、仮説をスピーディーにつくることです。

匠Methodの価値のモデルはシンプルなので、慣れれば数時間で価値の仮説を作成できます。

価値のモデルがうまくつくれないのであれば、そのアイデアで進めても、価値は生まれないかもしれません。

まとめ

「価値を届けること」を目指して皆で仕事をするときに、匠Methodで「価値」を明確化することが有効です。

また、ビジネスでの開発では仮説検証のサイクルが求められるので、匠Methodで価値の仮説をつくってみるとよいでしょう。

匠Methodについて知りたい方は、以下の書籍を読んでみてください。

匠Method: 〜新たな価値観でプロジェクトをデザインするために〜

*1:ビープラウドでは、自社サービスの開発、受託開発、自社の方針決めなどで匠Methodを活用しています

*2:仮説検証のサイクル=まず仮説を立てて行動によって仮説を検証していくこと。それを繰り返すこと

『PythonユーザのためのJupyter[実践]入門』は、Pythonでデータ分析を始める人に最初におすすめの書籍

PythonユーザのためのJupyter[実践]入門を拝読しました。3人の方々はビープラウドのひとたちとも親しくして頂いてる、池内 孝啓さん, 片柳 薫子さん, @drillerさんの執筆です。

本書の構成

本書の構成を下図にまとめてみました。

f:id:haru860:20210321124747p:plain

図に書いたとおり、本書は大きく3つのパートに分かれています。

1つ目はデータ分析ツールについての章です。1章と2章は本書のメインツールであるJupyterLabの環境構築方法と使い方の基本を紹介しています。最終章の8章は環境構築の必要がないクラウドツールのColaboratoryの紹介です。

2つ目はPythonでのデータ分析で最も使われるpandasでのデータ処理の基本を説明しています(第3章)

3つ目は、データの可視化です。標準的ツールであるmatplotlib、matplotlibをラップして使いやすさを向上したseaboanについて説明しています。matplotlib、seaboanともにまずグラフの描画方法を説明し、そのあとにさらに使いこなす方法を説明しています。本書のコアはこの3つ目のパートであるといえるでしょう(4〜7章:合計230ページ)

Pythonでデータ分析を始めたい人が、足回りの知識を揃えるのにおすすめ

本書の読み進め方は、以下のようになると思います。

  1. データ分析ツール(JupyterLab)の環境を構築し、基本的な動かし方を学ぶ(1,2章)
  2. Pandasのデータ処理の基本を学ぶ(3章)
  3. グラフの可視化の基本を学ぶ(4章、6章)
  4. 可視化のための細かい指定方法、設定方法を学ぶ(5章、7章)
  5. クラウドデータ分析環境のColaboratoryについて知る

本書の特徴となる章は、5章、7章です。Excelでもそうですが、データを可視化する時に細かい指定方法や設定方法を調べていると、意外に時間が過ぎてしまうものです。そうなるとデータを分析する本質的な作業に使える時間が少なくなっていきます。 本書の5章、7章(matplotlibを使う場合は5章、seabornを使う場合は7章)をひととおり学んでおけば、データ分析の作業に使う時間を増やせるでしょう。

また本書はPythonのデータ分析の基本についてひととおりまとまっていますので、実務のときも本書をリファレンスとして手元においておけば重宝しそうです。

「PythonユーザのためのJupyter「実践」入門」は、Pythonでデータ分析を始めてみようという方におすすめの書籍です。

改訂版 Pythonユーザのための Jupyter[実践]入門

独習Pythonは、入門書の次のスモールステップとしてオススメ

山田祥寛さんが執筆した独習Pythonを拝読しました。

独習Python

独習Python

著者の山田祥寛さんは、WingsProjectという執筆者コミュニティ(会社でもある)を運営されていて、200冊近くのプログラミング、技術書籍の執筆、監修の実績があります。(その他、雑誌記事やWeb記事など多数)

私も2005年から2010年の期間、雑誌記事(JavaPress、DB Magazine、ムック本)やWeb記事(CodeZine、@IT)をWingsProjectの1メンバーとして執筆させていただき、山田さん(ご夫妻)に監修いただきました。Codezineに掲載したDjangoチュートリアルGoogleAppEngineの記事ははてなブックマークでホットエントリー入りもしました*1

前置きはこのあたりにして、独習Pythonの特徴を紹介します。

対象者

  • 入門書でPythonを動かしてみたが、知識が頭の中でまとまっていない人
  • 他言語を知っていて新たにPythonを学ぶ人
  • Pythonについて体系的な知識を学びたい人

Pythonの対応バージョン

3.8(この記事を書いた2020年8月時点で最新)

Pythonの文法を基本から応用までひととおり学ぶのに最適

Pythonプログラミングの入門書(たとえば、いちばんやさしいPythonの教本 人気講師が教える基礎からサーバサイド開発まで 「いちばんやさしい教本」シリーズ)を読んで、なんとなくプログラムを動かせるようになった次のステップは何をすればよいでしょうか。

それは、Pythonの文法や書き方をひととおり憶えることです。

入門書の次のステップとして自分のつくりたいプログラムをつくりながら都度文法を調べるという方法もあります。

しかし、その方法だとなんとなく動いてしまったために適切な書き方を知らないままになってしまい、悪い癖がつくなどの弊害が生まれます。

そのようなことにならないためには、入門書の次のステップとしてはPythonの文法を網羅的に学ぶのが良いでしょう。

独習PythonはPythonの基本からひとつひとつ丁寧に説明が始まり、応用レベルの文法まで解説されています。

応用的な内容として、特にオブジェクト指向構文については110ページを割いて丁寧に説明されています(10章、11章)。

オブジェクト指向はプログラミングのレベルを上げるための必須スキルなので、じっくり読んで理解できるまで取り組んでみるとよいでしょう。

学ぶペースとしては基本的な内容である1〜8章を1日1章ペースでさくっと進め、9章〜11章は1節ずつ自分のペースで読み進めていくのがよいでしょう。

ひととおり学んだ後もプログラミングのリファレンスとして活用できる

山田さんの書籍の特徴は、書籍が網羅的でかつシンプルにまとまっていることです。独習Pythonもその例外ではありません。

網羅的でかつシンプルな構成なので、ひととおり学んだ後もプログラミング時のリファレンスとして活用できます。

プログラミングのときに手元に置いておくと役に立つでしょう。

私もプログラミングが主な仕事のときは山田さんの書籍で学び、知識を身につけていました。特に新しい言語を学ぶ時は手元に書籍を置き、ことあるごとに読み返していました。

プログラミングで大事なことが随所に書かれている

プログラミングには「書くことはできるが書かないほうが良い書き方」があります。

コードは他の人が最短時間で理解できるように書かなければならない」とはリーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)に書かれている「読みやすさの基本定理」です。

「書くことはできるが書かないほうが良い書き方」をしてしまうと、他の人(将来の自分も含む)がプログラムコードを理解するスピードが落ちてしまいます。

文法を学んだだけではこれに気づくことができず、実践の場でレビューされて初めて気づく(もしくは気づかないままプロダクトコードに埋め込まれてしまう)などといったことになりがちです。

独習Pythonでは文法を説明するだけでなく、どのように書いたら良いかという点についても折りに触れて説明されています。

この説明を理解することにより、学んだ文法を適切に使うことができるでしょう。

まとめ

Pythonプログラミングの入門書を読んだ次の書籍として独習Pythonで文法をひととおり学ぶことで、中級プログラマーへの土台をつくることができるでしょう。

網羅的かつ簡潔にまとまっていますので、他言語を知っている人がPythonを学ぶ際にも役立つ書籍です。

Pythonの本もいろいろ出ていますが、これからPythonをじっくり学びたい人には独習Pythonをおすすめしたいと思います。

WebでPythonを学びたい人は、オンラインPython学習サービスのPyQもありますので、よろしくお願いします。

独習Python

*1:httpからhttpsへのURL変更でブックマーク数がリセットされてしまったのが残念です。

「自走プログラマー」は中級以上のPythonプログラマーになりたい人のための豊富なレシピ集

ビープラウドの清水川貴之さん@shimizukawa , 清原弘貴さん@hirokiky@tell-kさんが執筆(ビープラウド監修)した「自走プログラマー」が出版されます(大手書店は2020年2月18日から先行販売、電子書籍は2月22日販売開始、一般書店は2月27日販売開始です)。

自走プログラマーの前書きには「プログラミング入門者が中級者にランクアップするのに必要な知識をお伝えする本」と書かれています。

私なりに、入門、初級、中級以上のそれぞれのプログラマーのレベルをイメージしてみました。

  • 入門プログラマー
    • プログラミングの文法を学びながら書いている。プログラムが完成しないこともある。
  • 初級プログラマー
    • 見よう見まねで動くプログラムを完成できる。しかしレビューを受けると、多くの指摘があり、レビュー、修正ともに大きな時間がかかってしまう。行ったり来たり、止まったりの「迷子状態」にハマることが多い。
  • 中級以上のプログラマー
    • 動くプログラムを完成できる。レビューは指摘事項が少なく、少量の修正で済む。人の助けを借りる量も少なく自走している状態。

中級以上のプログラマーが持っている習慣

中級以上のプログラマーが持っていて、入門、初級プログラマーが持っていない習慣があります。

それは「すべての設計・実装に理由をもつ習慣」です。

中級以上のプログラマーは、設計や実装の理由を質問すると、明確な答えが返ってきます。

一方で、入門、初級プログラマーにレビューで質問をすると「なんとなく」「憶えていない」「Webからコピペしたので理由はない」というような答えがしばしば返ってきます。

中級以上のプログラマーは「すべての設計・実装に理由を考える」習慣をもっているために、プログラムやシステムの全体の一貫性が維持され、メンテナンス性、パフォーマンスにも優れたプログラムを書くことができるのです。細部まで心が行き届いている状況といえるでしょう。

入門、初級者の人がすべてに理由を考えられない理由

入門、初級者の人が理由を考えられないのには理由があります。

入門・初級者はプログラムを動かすための知識を1つしかもっていません。

それは、プログラムの入門書には「プログラムを動かす方法」は書かれていますが、設計や実装の選択肢やメリット・デメリットは書かれていないからです*1

設計や実装の選択肢を1つしか持っていないので、それが良いのか悪いのかわからないのです*2。そのため、設計や実装の理由を考えようにも考えられないのです。

設計・実装の選択肢を良いも悪いも含めて複数もっていれば、それぞれの案を比較検討できますし、少しずつでも理由を考えられるようになります。

「自走プログラマー」には、この良い(ベストプラクティス)・悪い(具体的な失敗例)の選択肢が良い・悪いも合わせて240(120のプラクティス☓2)個掲載されていますので、理由を考えるための「設計・実装の選択肢」を得ることができるでしょう。

この「理由を考えるための設計・実装の選択肢」が、前書きに書かれている「プログラミング入門者が中級者にランクアップするのに必要な知識」の本質です。

「自走プログラマー」の具体的な内容

自走プログラマーの目次は以下です。

第1章 コード実装
1.1 関数設計
1.2 クラス設計
1.3 モジュール設計
1.4 ユニットテスト
1.5 実装の進め方
1.6 レビュー

第2章 モデル設計
2.1 データ設計
2.2 テーブル定義
2.3 Django ORMとの付き合い方

第3章 エラー設計
3.1 エラーハンドリング
3.2 ロギング
3.3 トラブルシューティング・デバッグ

第4章 システム設計
4.1 プロジェクト構成
4.2 サーバー構成
4.3 プロセス設計
4.4 ライブラリ
4.5 リソース設計
4.6 ネットワーク

第5章 やることの明確化
5.1 要件定義
5.2 画面モックアップ

関数名の名前付け、関数設計から始まり、クラス設計、モジュール設計、ユニットテストと進み、レビュー、モデル設計、エラー設計、システム設計、要件定義と、ソフトウェアの小さな範囲からソフトウェア全体へと範囲が広がっていきます。

中級以上のプログラマーの意識は、機能をつくるというソフトウェアの「点」にとどまらず、開発するソフトウェアが安定して持続的に運用や開発を続けていけるのかという「面」にも視点が及んでいるのでそのような構成になっています。

プログラマーは、実運用で起きうるエラーや異常をあらかじめ認識したエラーハンドリング、そして迅速な状況把握を可能にするロギングができて、はじめて一人前です。

「自走プログラマー」では、エラー設計(ロギング)にも37ページの紙幅をとっています。

このように自走プログラマーは、本番運用まで見越した実践的な内容になっています。

「自走プログラマー」の活用方法

設計・実装の選択肢を得た上で「自走プログラマー」を以下のように実践で活用していただければと思います。

  • 「自走プログラマー」のプラクティスに書かれているように実装してみる。実装・設計のパターンを頭に入れる
  • 「自走プログラマー」にかかれている「具体的な失敗例」と「ベストプラクティス」の違いをひとつひとつ理解する*3
  • 「ベストプラクティス」ではない設計・実装をしたときにどのようなデメリットが発生するかを考える
  • すべての設計・実装に理由を考えることを始める・続ける

「自走プログラマー」のひとつひとつのプラクティスは日々の開発で「理由」を考え抜いて得られたものです。料理でいうとプロの料理人によって考え抜かれたレシピ集です。

これらを読んでいくことで、中級以上のプログラマーが、日々どのようなことにこだわり、思考を積み上げているかを知ることもできるでしょう(中にはそこまで考える必要あるの?というものもあるでしょう)。

最後に

中級以上のプログラマーには誰もが一足跳びには到達できません。

日々のひとつひとつの仕事(設計・実装)に意味・理由を考えて、思考を重ね、洗練させていくなかで、徐々にそのレベルに到達していきます。

日々、すべてに理由を考える習慣を続けられる人は、短い期間で初級者から中級以上のレベルに達することができます

逆にいうと、日々すべてに理由を考える習慣のないプログラマーは何年経っても初級プログラマーから中級以上のプログラマーに進化はできないでしょう。これは厳しいようですが現実です。

このようにならないためにも、理由を考えるための設計・実装の選択肢と、中級以上のプログラマーの考え抜く視点を「自走プログラマー」から手に入れてもらえればと思います。

そして、得た知識をもとに、すべてに理由を考える習慣を始めるとよいでしょう。

入門・初級レベルのプログラマーの方は是非とも、中級以上のプログラマーを目指しましょう。

一回このレベルに到達すれば、プロフェッショナルなプログラマーとして安定した成果が出せますし、周囲からの信頼も高くなるでしょう。

そのための入り口として「自走プログラマー」を是非お手にとっていただければと思います。

自走プログラマー ~Pythonの先輩が教えるプロジェクト開発のベストプラクティス120

*1:これは入門書という性質上仕方のないことです

*2:良い悪いは相対的なものなので

*3:プログラミングの設計や実装の違いは、小さなこだわりであることもしばしばあります。そのため違いを理解できないこともあるかもしれません。読書会を開催して複数の視点から考えるのも良いかもしれません

「ザッソウ」は価値を創造するチームのための導入しやすいコミュニケーションガイド

ソニックガーデン社の倉貫義人さんが執筆された「ザッソウ」を拝読しました。

ザッソウ 結果を出すチームの習慣 ホウレンソウに代わる「雑談+相談」

ザッソウ 結果を出すチームの習慣 ホウレンソウに代わる「雑談+相談」

「ザッソウ」とは

「ザッソウ」とは雑談+相談の造語です。

本書のメイン・テーマは、雑談と相談をチームコミュニケーションの土台にしていくことの提案です。

書籍を読んで感じた本書の特徴や感想を以下にあげていきます。

「チームの価値創造力」を高めることが中心コンセプト

私が「ザッソウ」を読んで納得感を感じたのは、チームが価値を創造し、成果を生むために「ザッソウ(雑談と相談)」が必要という観点から全体が書かれていることです。

チームの心理的安全性を高めたり、働きやすい職場をつくるのはなぜでしょうか。

その理由をつきつめると、チームが価値を創造し、成果を生むためです。

その目的を忘れてしまうと、うまくコミュニケーションを取っているようでも、実は衝突を回避したり、嫌われないための表面的なコミュニケーションだったりすることも多々あります。

本書は、チームが価値を創造し、成果を生むことを目的とした、しかし敷居が低く取り組みやすいコミュニケーション方法としての「ザッソウ」を提案していることに、書籍の骨太さを感じました。

チームコミュニケーションを俯瞰するための理論がまとまっている

雑談や相談によってコミュニケーションが活発化した結果、チーム内で衝突が起きるなどチームに変化が起きます。

また、日々、漫然と雑談していてよいのだろうかという不安に襲われることもあるかもしれません。

そのような時に、役立つのがコミュニケーションや心理学の理論です。

本書で紹介されているチームコミュニケーションの理論を知っておくことで、チームに起きた変化や現在地点を俯瞰できます。

それにより、自分たちの状況を客観的に考えることができるので、対策を考え、行動できるようになるでしょう。

また、ザッソウの目的・効果を知っておくことで、チーム内のザッソウの内容も時間とともに進歩していくことでしょう。

本書では紹介されている主な理論は以下のようなものです。

わたしも紹介されている理論は部分的には知っていたのですが、書籍にまとめていただいたことで、それぞれが関連付けられ深く知ることができました。

チーム内での役割や個人の段階に応じて読むことができる

本書は、チームリーダーやメンバーなどチーム内の役割や成長の段階に応じた、ザッソウのコツや考え方が書かれています。

  • チームリーダーが、チームのコミュニケーションを活発化し、チームのレベルを高めていく考え方、ザッソウを促すコツ
  • 経験の浅いメンバーが、チームでザッソウする考え方やコツ

自分の状況に応じて、必要な箇所を読んでみるとよいでしょう。

また、経験の浅いメンバーがリーダーの気持ちや考えを知ることもでき、リーダーもメンバーの気持ちを知る(思い出す)こともできるでしょう。

各個人が、自分と違う役割や段階の人についてお互いに知ることで、チームのコミュニケーションレベルもあがり、チーム力の底上げにつながります。

最後に

これからの時代は、人が時間をかけて作業していた単純な仕事は、AIやロボットによって自動化されます。

そのような時代では、人にしかできない仕事が人の仕事になります。

その仕事とは、未来のビジョンや実現したい価値を描き、それをカタチにし、価値を創造していくことです。

そのような仕事は、ひとりではなく複数人のチームで実現していくことになります。

そのときには、チームとしての創造力を高めることが、価値の実現につながります。

なぜなら、創造力に必要な、想像力、知識、発想、アイデア、技術力、視点、ビジョンなどは、人とのコミュニケーションから生まれてくることが多いからです。

チームの創造力を高め、最大限に価値を実現するためのコミュニケーション手法が「ザッソウ」です。

本書を読めばわかりますが、ザッソウは導入の敷居が極めて低く明日からでも始められます。

仕事の期限に追われているときは、少しでも早く手を動かしたい気持ちになります。

しかし日頃から「急がば回れ」の発想で「ザッソウ」を導入することで、ビジョンの実現に速く近づくチームになれるのではないでしょうか。

「ザッソウ」を価値を創造するチームのためのコミュニケーションガイドとしておすすめします。

ザッソウ 結果を出すチームの習慣 ホウレンソウに代わる「雑談+相談」

*1:書籍を参照してください

「正しいものを正しくつくる」は、エンジニアの傲慢が詰まった書籍か

カイゼン・ジャーニー たった1人からはじめて、「越境」するチームをつくるまで」の著者、市谷聡啓さんが2019年6月に出版した「正しいものを正しくつくる プロダクトをつくるとはどういうことなのか、あるいはアジャイルのその先について」を拝読しました。

正しいものを正しくつくる プロダクトをつくるとはどういうことなのか、あるいはアジャイルのその先について

本書をおすすめしたい人

  • プロダクト開発において、アジャイル開発での進めかたを知りたい人
  • アジャイル開発チームのプロダクトオーナー(ビジネスサイド、企画者)
  • プロダクト開発チームが所属している会社の経営者
  • アジャイル開発を新たに学びたい人
  • アジャイル開発をひととおり知っているが、あらためて学びたい人

「正しいものを正しくつくる」という中心理念

本書のAmazonレビューを見ていたところ、星1つのレビューを見つけました。

エンジニアの傲慢さが詰まった本

「正しい」という言葉を使うエンジニア、同じエンジニアとして非常に恥ずかしい思いです。 「正しいもの」など誰がわかるのでしょう?わかるのなら皆誰も失敗などしないでしょう。

書籍のタイトルだけを見たら、このように考えるのもおかしくはありません。

必ず成果が出る「正しい」要求や仕様をビジネスサイドから提供されれば、それにもとづいて作りますというエンジニアも世の中には存在するからです。

しかし、本書に描かれているアジャイル開発チームの考え方は、真逆です。

プロダクト開発のプロジェクトは「不確実性*1」と常に背中合わせです。

その状況のなかで「正しいものとは何か?」という問いを立て、仮説検証しながらつくるべきものを探り、開発においては「正しくつくれているか?」を日々確かめる、謙虚で思慮深いアジャイル開発チームの姿を本書からはイメージすることができます。

プロダクト開発において「正しさ」はプロジェクトが続く限り、追い求めていくものであり、問い続けていくものです。

「正しいものを正しくつくる」という言葉は、本書の内容を読めば、いうまでもなくエンジニアの傲慢ではないことがわかります。

「正しいものを正しくつくる」とは、「正しいものとは何か?」「つくっているものは正しいといえるか?」「正しくつくれているか?」と問い続けるチームをつくるための中心理念であるといえるでしょう。

チームが不確実性と戦っていくための戦略の書

本書の第4章「アジャイル開発は2度失敗する」で、アジャイル開発チームは2つの壁につきあたると説明されています。

  • アジャイルに作ることによる困難の壁

    • アジャイル開発を習得することそのものの難しさによる困難
  • プロダクトの成果が上がらないという壁

    • プロダクトをリリースしたが売上が伸びない、使われない

本書は、これらの壁をアジャイル開発チームが乗り越え、成長し、成果を出すための考え方と取り組みを順を追って説明しています。

その説明の深さと内容は、アジャイル開発チームが不確実性と戦っていくための戦略の書であるといえます。

アジャイル開発の基本を学べる

本書はアジャイル開発そのものについても、ボリュームを割いて丁寧に説明しています。

アジャイル開発の一般的な説明というよりも、プロダクト開発という文脈を起点にアジャイル開発を説明しているので、より実践的な説明であるといえるでしょう。

そのため、アジャイル開発について入門したいという人から、アジャイル開発をあらためて学びたいという人にもおすすめです。

最後に:著者のプロジェクト経験から学ぶ

アジャイル開発に関する書籍では「アジャイルで開発すればうまくいく」という内容になりがちです。

しかし、本書ではアジャイルに開発するだけではうまくいかないことにしっかりと目を向けています。

本書は、チームがアジャイル開発における失敗から学び、成長していく過程を追体験できる構成です。

愚者は(自分の)経験に学び、賢者は歴史(他人の失敗)に学ぶ*2といいます。

プロジェクトのチームに与えられる時間も、人生の時間も限りがあります。

アジャイル開発でプロダクト開発に取り組む方々は、自らの経験と失敗の中から学ぶのもよいですが、本書の著者の失敗と経験の中から得た知見から学ぶのはいかがでしょうか*3

P.S

私は自分の血肉になりそうな書籍は、図にまとめて理解を深め、ことあるごとに参照するようにしています。

「正しいものを正しくつくる」を拝読させていただき、今後何度も読み返す書籍であると思い、図にまとめました*4

本書のさらなる内容紹介になれば幸いです。

f:id:haru860:20190721100551p:plain

*1:不確実性とは、起こりうる事象はわかっているが、それが起こる確率が事前に予測できないという性質のこと

*2:オットー・フォン・ビスマルク(初代ドイツ帝国宰相)の言葉

*3:それでも、多くの失敗をするでしょう

*4:書籍内の全体構成図をさらに加筆

「いちばんやさしいPython機械学習の教本」は、機械学習の実践的入門書

いちばんやさしいPython機械学習の教本」をビープラウドのメンバーで執筆し、上梓しました。

いちばんやさしいPython機械学習の教本 人気講師が教える業務で役立つ実践ノウハウ

いちばんやさしいPython機械学習の教本 人気講師が教える業務で役立つ実践ノウハウ

  • 作者: 鈴木たかのり,降籏洋行,平井孝幸,株式会社ビープラウド
  • 出版社/メーカー: インプレス
  • 発売日: 2019/06/21
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

本書をおすすめしたい人

  • 機械学習の基本理論を学びたい人
  • 将来、AIを活用して仕事を楽にしたい人。そのために基礎を学びたい人
  • いつかはAIを開発してみたい人。そのために基礎を学びたい人
  • AIリテラシー(AIについて知識を持ち、活用・応用する能力)を身につけていきたい人
  • Web開発者でAI・機械学習についての知識を身つけたい人

本書執筆の背景

本書のタイトルにある「機械学習」とは、AIを実現するための技術のことです。

機械学習という名前は、コンピュータ(機械)がデータのパターンを学習し、未知のことを予測ができるようになることからつけられています。

世の中では、AI(AIを実現するための機械学習)を活用し、人が担ってきた仕事を代替しようという動きが盛んです。

機械学習を実装するために一番使われているプログラミング言語がPythonです。

そのためPython+機械学習を学びたいというニーズが増えてきました。

そのニーズに応えるかたちで、本書を執筆しました。

本書の基本構成

本書はAIのbot(本書内では「pybot」)*1に、以下のような機能をPythonでプログラミングし、学習を進めていきます。

  • 書籍データ検索(データ収集)
  • 文章自動生成(自然言語処理)
  • 手書き文字認識(機械学習)
  • 気温予測(機械学習)

f:id:haru860:20190708060713p:plain
本書で開発する機能の全体像

簡単なAIのbotをつくることで、AIがどのように動いているのかの基本を知ることができます。

本書の特徴

仕組みや理論を図解を中心に説明しているので、機械学習の概念を理解しやすい

新しいことを学ぶときには、図で全体を俯瞰した方が早く理解できます。

本書では、機械学習システムの全体像やデータ処理(文章、画像、表形式データ等)の流れ、構造などをカラー図解で丁寧に説明しています。

機械学習の説明やプログラミングコードなどをひととおり読んだあとに、これらの図解を繰り返し参照するとよいでしょう。

全体との位置づけや処理の流れをイメージしながら、知識を定着させることができます。

機械学習の基本を手を動かしながら学び、理解を深めることができる

機械学習の説明を読んだだけでは、理解が浅くなりがちです。

実際にプログラムを書き、動かすことで説明の内容が理解できることもあります。

本書では、機械学習のPythonプログラムを開発し、Webで実行可能なAIのbotに機能を追加していきます。

慣れてきたら自分で機能をつくりかえたり、データを変えてみてもよいでしょう。

プログラミングや機械学習の応用力が身につきます

そして、プログラムが動いたらふたたび説明を読み返しましょう。

理論と実践がさらに結びつき、理解が深まります

今後、機械学習を学び続けるためのベースとして活用できる

本書の内容の全体像を下図に示します。

f:id:haru860:20190708060924p:plain
本書の構成

全体構成は以下のとおりです。

  • Chapter1:機械学習の概要、全体像や学習の進め方
  • Chapter2:機械学習の開発環境準備
  • Chapter3〜7:機械学習と関連技術の機能をプログラミング
  • Chapter8:本書を学んだあとの次のステップ

本書の構成はシンプルですが骨太です。

1章でまずは機械学習の全体像を理解していただき、そのあとに3〜7章で理論の理解と実践をしていただければ、機械学習の第一歩を踏み出したといえる内容になっています。

そして、本書で学んだあとの第二歩目を歩むために、Chapter8でさらに学習を続けるための情報源(Webサイト、書籍、コミュニティ)を紹介しています。

本書の知識をベースとして、Chapter8に書かれた情報源にアクセスし、さらに学習範囲を広げ深めていただければと思います。

最後に

「いちばんやさしいPython機械学習の教本」は、著者以外にもビープラウドのメンバー17名がレビュアーとして参加しました。

書籍の内容や説明も、自信のある品質に仕上がりました。

本書で、機械学習の基本と仕組みを学び、Pythonで実装するための第一歩を踏み出してみてはいかがでしょうか。

いちばんやさしいPython機械学習の教本 人気講師が教える業務で役立つ実践ノウハウ

まずはPythonを学びたいという方へ

本書内のサンプルプログラムはシンプルですが、Pythonプログラミングの基本的な知識を持っていればスムーズに学習に入れます。

Pythonをまずは学びたいという方は、姉妹書のいちばんやさしいPythonの教本 人気講師が教える基礎からサーバサイド開発まで (「いちばんやさしい教本」シリーズ)をご参照ください。

以下は「いちばんやさしいPythonの教本」の紹介記事です。

shacho.beproud.jp

*1:botとは、人間に代わって作業を行うコンピュータープログラムの総称