いまさら聞けない!?プロダクトマネージャー・ディレクターが機械学習の案件を始めるまで

##はじめに

BUYMAでプロダクトマネージャー・ディレクターのようなことをしています。
機械学習に関する案件を初めて進めてみようと思い、 **プロダクトマネージャー・ディレクター目線**で 、やってきたことや学んだことをまとめます。

知識がなくてもプロジェクトや案件は進めれるとは思いますが、ある程度理解があることで、プロジェクトの幅も広がりますし、エンジニアとのコミュニケーションも円滑になりますし、 **何より自分も楽しいです** 。

また、もし機械学習に関して知見がない会社でプロジェクトを進めていく場合の参考になればと思います。


##この記事の対象者

 **非エンジニア** の **プロダクトマネージャー・ディレクター** 　向けの記事です。

* プロジェクトや案件で機械学習を利用しようと検討しているがどうしたらよいかわからない
* 自分で機械学習学びたい！せっかくなら、プロジェクトや案件にしたい！（自分はこのタイプです）
という方向け。

##対象ではない方

* 技術的な話とかかわらない方
* 既に機械学習を利用してプロジェクトを推進している方
* 機械学習に関わるプログラミングを実施している方
* エンジニアの方

##全体の流れ

1.基本知識のインプット
2.実際にコーディングもやってみる
3.プロジェクト・案件にするまで


## 基本知識のインプット

ゼロからスタートする場合は、何から初めてよいのか？と悩むことも多いと思います。


###一番最初にやってみた

まず参考にしたのが下記の記事
[【保存版・初心者向け】独学でAIエンジニアになりたい人向けのオススメの勉強方法](https://qiita.com/tani_AI_Academy/items/4da02cb056646ba43b9d)

網羅されていて、わかりやすいが、プロダクトマネージャー・ディレクターとしては、ここまではいらない。（実際にやってみて途中でいろいろ挫折。時間もかかる）

その中で、やってきたことをプロダクトマネージャー・ディレクター向けに書きます。
下記に出てくる記事や本を読めば、最低限は大丈夫ではないかなと思います。

###STEP1：まず機械学習を知る

例に漏れずここから。流し読みでもかなり面白い。
![ml1.jpeg](https://qiita-image-store.s3.amazonaws.com/0/310035/6009e115-e758-9922-e446-eb4c69fafd2c.jpeg)
[人工知能は人間を超えるか (角川ＥＰＵＢ選書)](https://www.amazon.co.jp/%E4%BA%BA%E5%B7%A5%E7%9F%A5%E8%83%BD%E3%81%AF%E4%BA%BA%E9%96%93%E3%82%92%E8%B6%85%E3%81%88%E3%82%8B%E3%81%8B-%E8%A7%92%E5%B7%9D%EF%BC%A5%EF%BC%B0%EF%BC%B5%EF%BC%A2%E9%81%B8%E6%9B%B8-%E6%9D%BE%E5%B0%BE-%E8%B1%8A-ebook/dp/B00UAAK07S/ref=sr_1_1?s=books&ie=UTF8&qid=1545182903&sr=1-1&refinements=p_27%3A%E6%9D%BE%E5%B0%BE+%E8%B1%8A)



#### 読み終わると

- AIってなんかすごそうってなる
- なんかすごくAIがわかった気持ちになれる
- エンジニアが言っていることが何となくわかるようになる


###STEP2 : Pythonを知る

実際にコーディングもやることを考えると、ディレクターでもPythonは必須です。
全く触れたことがなかったので、本当に簡単なところから。

####ドットインストール

動画を通勤中や移動中に見る。理解しようとせず最初は、流し見でよいと思う。
３回ほど聞くと、なんとなくわかってくる。

![ml2.png](https://qiita-image-store.s3.amazonaws.com/0/310035/0990ee84-cb33-39c7-f3b5-76d5e8b46223.png)
[ドットインストールのPython3](https://dotinstall.com/lessons/basic_python_v3)

#### 終わると

- 動画なら、なんでも良いと思う
- Pythonがわかった気になれる
- Pythonを書いてみたくなる
- エンジニアの言っていることがわかるようになる


####Python3入門ノート

非常にわかりやすかった。
エンジニアではないので、日々コーディングしないと言語は習得が難しいので、なんとなく理解する程度で、読み飛ばす。
その中でも、読んでおくとよさそうのは、 **Part3の「Numpyの配列」** 
ただ、読んでもほぼ忘れる。

あと、読み進める中で気になるところは、写経して実際にコードを書いみると良い。
一番重要なのは、 **あとから困ったときに調べるために使う**こと 。



![ml3.jpeg](https://qiita-image-store.s3.amazonaws.com/0/310035/1f523b81-9f31-eabe-4635-79ee06ce82fe.jpeg)
[詳細! Python 3 入門ノート](https://www.amazon.co.jp/dp/4800711673/ref=cm_sw_r_cp_ep_dp_Xb23Ab89EHBGH)


##### 読み終わると

- Pythonがかけて嬉しくなる
- エンジニアの仲間に入れてた気がする



###STEP3（+α）：Courseraのmachine-learning

 **無料** でここまで使える学習ツールはすごい！

機械学習のロジック部分で、実際にはCourseraを全くやっていなくてもコーディングはできる。知っておくとパラメーターチューニングの意味を理解できる面白い。
通勤中などの移動中に聞ける。
英語できなくても、日本語も用意されているのでほぼ問題ない。

[こういう記事](https://qiita.com/shu223/items/9e3a50e092c2997fe6d2)からも力をもらいながら、完了。



![ml4.png](https://qiita-image-store.s3.amazonaws.com/0/310035/4adb833f-647c-8179-1c76-98b917c83b50.png)

[Courseraのmachine-learning](https://www.coursera.org/learn/machine-learning)

##### 学習を終えると

- なんか機械学習の理論がわかった気になれる
- ただ、本当にすぐに忘れる
- アンドリュー先生（講師の先生）が優しすぎて好きになる


##実際にコーディングもやってみる

### PandasとMachineLearning

[KaggleのLearn](https://www.kaggle.com/learn/overview)がめちゃくちゃ良い。しかも **無料**。 
英語だけれど、Google翻訳を使えばほぼ問題なく進められる。

機械学習を実際に行う際のベースとなる部分なので、これはやっておくことをおすすめする。ただ、使わないと忘れるので注意。

![ml5.png](https://qiita-image-store.s3.amazonaws.com/0/310035/214ded0f-ad08-3b45-a231-2cbad64e171e.png)
[Kaggle](https://www.kaggle.com/learn/overview)

###本を読みながら深掘りしてみる

[pythonで始める機械学習](https://www.amazon.co.jp/Python%E3%81%A7%E3%81%AF%E3%81%98%E3%82%81%E3%82%8B%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92-%E2%80%95scikit-learn%E3%81%A7%E5%AD%A6%E3%81%B6%E7%89%B9%E5%BE%B4%E9%87%8F%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E3%83%AA%E3%83%B3%E3%82%B0%E3%81%A8%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92%E3%81%AE%E5%9F%BA%E7%A4%8E-Andreas-C-Muller/dp/4873117984/ref=sr_1_1?ie=UTF8&qid=1545188549&sr=8-1&keywords=python%E3%81%A7%E5%A7%8B%E3%82%81%E3%82%8B%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92)　を読んで、気になるところは写経してみる。

実際のプロジェクトをする際は、機械学習のパラーメーターチューニングなどはディレクターには求められていないと思うので、1章から３章くらいまでやれば十分だと思う。

![ml6.jpeg](https://qiita-image-store.s3.amazonaws.com/0/310035/748b6af3-d2b8-e932-f3ab-38fef769ae0e.jpeg)

##### 読み終わると

- 機械学習のコードが書けて、嬉しくなる
- なんか実際のデータでやってみたくなる


####（補足）コーディングに利用するツール

自分で環境構築できる方はぜひそちらで。
環境構築ができない/しない方は、Googleの[Colaboratory](https://colab.research.google.com/notebooks/welcome.ipynb)でやるのがおすすめ。
これも無料で簡単なので、僕もこれを使いました。めっちゃ楽です。


##プロジェクト・案件にするまで

###はじめに

プロマネとして、機械学習プロジェクトを始めるならこれは必読書です。

![ml7.jpeg](https://qiita-image-store.s3.amazonaws.com/0/310035/ffa684f0-a3e7-5918-cc63-245fb35ee8b6.jpeg)
[仕事ではじめる機械学習](https://www.amazon.co.jp/%E4%BB%95%E4%BA%8B%E3%81%A7%E3%81%AF%E3%81%98%E3%82%81%E3%82%8B%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92-%E6%9C%89%E8%B3%80-%E5%BA%B7%E9%A1%95/dp/4873118255)


>本書では、機械学習やデータ分析の道具をどのようにビジネスに生かしていけば良いのか、また不確実性が高いと言われている機械学習プロジェクトの進め方について 整理しています。 
本書はもともと、機械学習の初学者向けに書いた文章からはじまりました。入門者のために書きはじ めたのですが、実際には理論を軽めにしたソフトウェアエンジニア向けの実践的なカタログのような形 になっています。 アルゴリズムの話などは他の書籍でも数多く取り上げられているので、本書ではプロジェクトのはじ め方や、システム構成、学習のためのリソースの収集方法など、読者が「実際どうするの？」と気にな るであろう点を中心にしています

とある通り、
 **プロジェクト始めたいけど、でどうするの？** 
ということが書いてありますので、実施にプロジェクトを進める方にはすごく学びが大きいかと思います。
実際に、「その作業必要？」のようなリソース判断をすることや、全体像を理解することで手戻りを少なくする一助にもなるかと思います。

[この要約](https://medium.com/@SEKAINOOKAZAWA/%E4%BB%95%E4%BA%8B%E3%81%A7%E5%A7%8B%E3%82%81%E3%82%8B%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92-%E3%81%AE%E8%A6%81%E7%82%B9%E3%82%92%E3%81%BE%E3%81%A8%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F%E3%82%89%E3%81%A8%E3%81%A6%E3%82%82%E8%89%AF%E3%81%84%E5%85%A5%E9%96%80%E6%9B%B8%E3%81%A0%E3%81%A3%E3%81%9F-7c74f4f2b5af
)がわかりやすかったです。


#### 読み終わると

- 機械学習のプロジェクトは思っているよりも多くのことがあるのだと知る
- 実際にプロジェクトをやってみたくなる


###実際にやったこと

本書の中で重要だと思ったのは、機械学習を使うことを目的化しないということでした。
機械学習の本なのに、 **別に機械学習を使う必要は必ずしもない** 　と書いてあり驚きました。

実際に案件化していくステップとしては、
1.ユーザーの課題を明確にする
2.機械学習を使わずに解決する方法を考える
3.どうしても必要な場合は機械学習を活用する
です。

機械学習の有無にかかわらず、 **ユーザーの課題を明確にする**  ことからスタートして、 **機械学習を解決策の一つ** として持っておく感覚かと思います。



####STEP1:ユーザー課題を明らかにする

プロジェクトを進めるにあたり、課題を明確化します。
実際に僕らが進めた場合は、経営陣やビジネスサイドの方と、

1.経営陣が認識している事業課題
2.現状現場が認識しているサービス課題
3.サービス以外にも、現場メンバーの作業に関する課題

など、様々なレイヤーでサービス課題/業務課題に関するディスカッションする機会を取りました。
課題を俯瞰して考えることで、課題理解も広がり、実際モチベーションも上がりました。

##### このステップを終えると

* やっぱり〇〇はすごい解決したいよね〜（サービスの大きな課題）を再認識できます
* 普段そんな作業をしてるのか。。。という現場のリアルを知れるます
* 他の部署の人と仲良くなります
* 実際にやる前提で話をするので、すごく楽しいです。


####STEP2:課題の解決策を考えて、進める

初めて案件を進めるとなれば、どのように案件を進めるかが難しいかと思います。

はじめての機械学習関連のプロジェクトということもあり意識したのは、いかに **ライトに着地させて一定の効果を出す** かでした。

そのための課題設定と解決策を決めます。

本当は、これが理想。
ただ、簡単に見つからないですよね。。。

![ml8.png](https://qiita-image-store.s3.amazonaws.com/0/310035/60f8b421-83e0-f79c-74d9-0b77efa96730.png)


実際に進めていくなかで、最初の案件として一番しっくりきたのはこういう施策でした。

![ml9.png](https://qiita-image-store.s3.amazonaws.com/0/310035/6445eac3-8bcd-058b-7e7b-6a6239f36b6d.png)

 **機械学習を取り入れる理由が明確にあり** 、且つ工数も比較的小さいもの。
ここを見つけてプロジェクト化していくことで、進みやすくなるかと思います。

実は、ここで言う開発工数とは、機械学習の基盤を作成する工数は除いて考えています。
機械学習の運用基盤を作成するのは工数がもちろん高いので、

* できるだけ使い回せるロジックにすること
* 一度作成すれば、それほどアプリケーション開発の工数が変わらないこと

が重要なので、複数案件化できる状態にしておくことで基盤を作りやすくなるかと思います。

####STEP3:巻き込む人を間違えない

![ml10.png](https://qiita-image-store.s3.amazonaws.com/0/310035/1cfec4bb-9efa-8aac-ceab-0003f57b6f81.png)

前出の[まとめ記事](https://medium.com/@SEKAINOOKAZAWA/%E4%BB%95%E4%BA%8B%E3%81%A7%E5%A7%8B%E3%82%81%E3%82%8B%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92-%E3%81%AE%E8%A6%81%E7%82%B9%E3%82%92%E3%81%BE%E3%81%A8%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F%E3%82%89%E3%81%A8%E3%81%A6%E3%82%82%E8%89%AF%E3%81%84%E5%85%A5%E9%96%80%E6%9B%B8%E3%81%A0%E3%81%A3%E3%81%9F-7c74f4f2b5af)にもありましたが、案件を進める上で上記のメンバーは巻き込む必要があります。
そこで間違えると話が進まないので、初めてプロジェクトを進める場合は気にしてみてください。

##まとめ/終わりに

ここまでお読みいただきありがとうございました。
はじめての記事でしたが、少しでも参考にしていただければ嬉しい限りです。


* 基本的なインプットから、コーディング、プロジェクト化など一通りやってみて非常に勉強なりました。
    * 実際にコーディングもプロジェクトもやってみることが一番だと思いました。
* 案件を考えるときに「機械学習」という選択肢を持てるのは、プロマネとしては強みにな今後なりうるのだろう思います。
    * ただ、選択肢の一つということを意識することは重要
    * 機械学習を使う！と言いながら、やはりいちばん大切なのは、「ユーザーの課題は何か？」という問いに尽きると改めて思いました。
* 実際に、知見がない中で初めてプロジェクトを進める場合は、関わるメンバーや案件は慎重に進めるとよいと思います。
    * 時代の後押しはあるので、比較的会社も挑戦を応援してくれると思います。