Pythonを学びはじめてから人工知能LINEボットをリリースするまでの話

#0. はじめに
とあるIT企業で営業＆企画職として働いているのですが、**エンジニアへのあこがれや自分自身でコードを書けるようになりたいという思いが日に日に熱くなり**、2018/9月頃から本格的にプログラミングを学び始めました。Pythonを学びはじめてから人工知能LINEボットをリリースまでの話を駆け出しエンジニアさんと共有できればと思い、お礼もかねて投稿したいと思います。

下は公開した画像から年齢を予測してカラオケソングをオススメする忘年会用LINEボットです。
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">画像から年齢を予測してカラオケソングをオススメする忘年会用ボットを作りました！ <a href="https://twitter.com/hashtag/DAINOTE?src=hash&amp;ref_src=twsrc%5Etfw">#DAINOTE</a> や <a href="https://twitter.com/hashtag/progate?src=hash&amp;ref_src=twsrc%5Etfw">#progate</a> のおかげで色々作れるようになり楽しい！ <a href="https://t.co/OXlh8fpGD3">pic.twitter.com/OXlh8fpGD3</a></p>&mdash; さいちゃん🦏 (@saisan78) <a href="https://twitter.com/saisan78/status/1077977698473897984?ref_src=twsrc%5Etfw">2018年12月26日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


#1. Pythonとの出会い
プログラミングを始める際に、言語選びで迷う方も多いと思います。私は仕事上チャットボットの提案をやっていたこともあり、**機械学習と相性のよいPythonを選択**しました。また、[Daiさん](https://note.mu/daikawai)のQiitaへの投稿[「AIで似ているAV女優を紹介しているスケベAI「スケベ博士」を作りました。」](https://qiita.com/kkdmgs110/items/ce0f47d053636ce14cae)がバズっているのを見ていたこともPythonを選んだ理由の一つです。

#2. ProgateでPythonの基礎を学んだ
Pythonの基礎の勉強としては[Progate](https://prog-8.com/)を利用しました。Pythonは途中から有料のコースとなっていますが、わかりやすく、ゲーム感覚で楽しく学べたこともあり、気づいたらPython Ⅳまですすめていました。コースを終了するたびに、ツイッターで投稿をしていたのですが、**Progate仲間からいいねをもらえることもモチベーションを保つ刺激になりました。**
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">SQL 学習コース Ⅱを修了しました！ <a href="https://t.co/FsUABYvZwb">https://t.co/FsUABYvZwb</a> <a href="https://twitter.com/hashtag/Progate?src=hash&amp;ref_src=twsrc%5Etfw">#Progate</a></p>&mdash; さいちゃん🦏 (@saisan78) <a href="https://twitter.com/saisan78/status/1044104020103585792?ref_src=twsrc%5Etfw">2018年9月24日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

#3. DAINOTEでLINEBotづくり＆様々なAPIで遊び始める
Pythonを学び始めて二ヶ月目ころから早速LINEBOTづくりに取りかかりはじめました。 Daiさんのnote [【文字認識を利用したAIアプリ】LINEに画像を送ったら自動で文字起こししてくれる機械学習アプリを作ろう](https://note.mu/daikawai/n/n9e203dd4063a?magazine_key=m858540443d43)では、**LINE Botの作成を通してAPIの使い方を学ぶ**ことでき、自分もなにかオリジナルなアプリを作りたいなと思いはじめました。

### MicrosoftのCognitive ServiceとリクルートのAPIで肉のインスタ映え診断LINEBotを作成した
他にもどんなAPIがあるか調べて作ってみた一作目が、MicorosoftのVisionAPIとリクルートのTalkAPI,Image Influence APIを組み合わせた「肉のインスタ映え診断LINEBot」です。利用できるシーンは非常に限定的なLINEBotですが、**自分のアイディアを形にしたり、APIをマッシュアップする面白さ**を感じました。

投稿記事　： [リクルート人工知能APIに肉のインスタ映え診断をしてもらう](https://qiita.com/sai-san/items/c2bdd676f4c7c96934c3)

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">リクルートの人工知能APIとMicrosoftのVisionAPIを合わせた肉のインスタ映え診断LINEボット完成。言語はPython。環境はHerokuです。<a href="https://twitter.com/hashtag/%E9%A7%86%E3%81%91%E5%87%BA%E3%81%97%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E3%81%A8%E7%B9%8B%E3%81%8C%E3%82%8A%E3%81%9F%E3%81%84?src=hash&amp;ref_src=twsrc%5Etfw">#駆け出しエンジニアと繋がりたい</a> <a href="https://t.co/D2k3x8rHJ9">pic.twitter.com/D2k3x8rHJ9</a></p>&mdash; さいちゃん🦏 (@saisan78) <a href="https://twitter.com/saisan78/status/1071775905918283776?ref_src=twsrc%5Etfw">2018年12月9日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


### NTTCommunicationsのCOTOHA APIで西野カナさんの年齢を歌詞から予想してみた
APIを使うことが楽しくなり、次にやってみたのがNTTCommunicationsのCOTOHA APIを使った文章からの年齢予測です。**APIを使うことで簡単に機械学習を実装できることに感動**しました。
投稿記事　：[NTTグループの40年にわたる研究成果を使って、西野カナさんの年齢を予測する](https://qiita.com/sai-san/items/c60e90c1e56d78449c6b)

### AmazonEchoのスキル開発をし、ジャルジャルの国分けごっこを二台でやらせてみた
続けて開発してみたのがAmazonEchoのスキル開発です。 スマートスピーカー開発の独特の要素はあるものの、**LINEBot開発とAmazonEchoのスキル開発方法が似ていた**こともあり、クリスマスイブを丸一日使いましたが、スムーズに開発することができました。（笑）

投稿記事　：[2台のAmazonEchoにジャルジャルの国名分けっこをやらせてみた話](https://qiita.com/sai-san/items/d809d25758ff10a47519)

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">Amazon Echo2台にジャルジャルの国名分けっこゲームをやらせてみた <a href="https://twitter.com/hashtag/python?src=hash&amp;ref_src=twsrc%5Etfw">#python</a> <a href="https://twitter.com/hashtag/%E3%82%AF%E3%83%AA%E3%82%B9%E3%83%9E%E3%82%B9%E5%88%B6%E4%BD%9C?src=hash&amp;ref_src=twsrc%5Etfw">#クリスマス制作</a> <a href="https://twitter.com/hashtag/%E3%83%A1%E3%83%AA%E3%82%AF%E3%83%AA?src=hash&amp;ref_src=twsrc%5Etfw">#メリクリ</a>🎄 <a href="https://t.co/eqtUtGAhYf">pic.twitter.com/eqtUtGAhYf</a></p>&mdash; さいちゃん🦏 (@saisan78) <a href="https://twitter.com/saisan78/status/1077303252083822592?ref_src=twsrc%5Etfw">2018年12月24日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


#4. スクレイピングとの出会いとLINEBotの初公開
LINEBotを作っている中で、Daiさんがスクレイピング入門を無料公開していたことからスクレイピングの学習をはじめました。APIを使うことに面白さを感じていたのですが、**スクレイピングにより使える情報が大きく広がること**に興奮しました。

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">【拡散希望！】<br><br>noteのチュートリアルを期間限定で全文無料公開（多分来週まで！）しています。①感想、②ハッシュタグ <a href="https://twitter.com/hashtag/DAINOTE?src=hash&amp;ref_src=twsrc%5Etfw">#DAINOTE</a>、③noteのURL でツイートお願いします！口コミが多ければ期間延長します！<br><br>≫Pythonによるスクレイピング①入門編<a href="https://t.co/ZVqcayB0vZ">https://t.co/ZVqcayB0vZ</a> <a href="https://t.co/3RCY3uvUhB">pic.twitter.com/3RCY3uvUhB</a></p>&mdash; Dai (@never_be_a_pm) <a href="https://twitter.com/never_be_a_pm/status/1069370126015717376?ref_src=twsrc%5Etfw">2018年12月2日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

### 画像から年齢を予測してカラオケソングをオススメする忘年会用ボットを作ってみた
みんなに作ってもらえるアプリをだしたい。そこで考えたのが、**顔写真から年齢を予測し、カラオケソングをオススメするLINEBot**です。私はカラオケに行く際に、世代ごとランキングから適当に曲を選んでおり、顔画像による年齢認識と曲選びを組み合わせたら面白いなと思ったのがきっかけです。AIの画像診断による年齢予測は失礼な所もあるのですが、流行した音楽を返すことで忘年会の話題のネタになると嬉しいなと思いました。

スクレイピングで年代ごとに流行した楽曲データを取得し、AzureのCognitiveServiceのVisionAPI、リクルートのAPIのマッシュアップさせて開発しています。**技術の掛け算でやれることがどんどん広がっていく面白さを感じました。**

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">画像から年齢を予測してカラオケソングをオススメする忘年会用ボットを作りました！ <a href="https://twitter.com/hashtag/DAINOTE?src=hash&amp;ref_src=twsrc%5Etfw">#DAINOTE</a> や <a href="https://twitter.com/hashtag/progate?src=hash&amp;ref_src=twsrc%5Etfw">#progate</a> のおかげで色々作れるようになり楽しい！ <a href="https://t.co/OXlh8fpGD3">pic.twitter.com/OXlh8fpGD3</a></p>&mdash; さいちゃん🦏 (@saisan78) <a href="https://twitter.com/saisan78/status/1077977698473897984?ref_src=twsrc%5Etfw">2018年12月26日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

▼LINEBotQRコード　５０人限定ですが、ぜひ使ってみてください！
<img width="300" src="https://qiita-image-store.s3.amazonaws.com/0/133230/cf5d3d29-3d92-81ae-b735-1d2704c0d801.png">



これまでのお礼もかねてはじめてTwitterでハッシュタグ＃DAINOTEを使いTwitterに投稿してみたのですが、たくさんのいいねを頂けて嬉しかったです。また、**公開して何人かの方に使って楽しんで頂けたこと、他の方が開発したアプリの投稿もとても刺激になりました。**


#5.プログラミング初心者にこそLINEBbotづくりをおすすめしたい
プログラミングはフロント（デザインなど見た目に近い部分）、サーバ側（後ろで頑張ってくれるプログラム）、インフラ（プログラムを動かす環境）などやることが実は多いのですが、APIを活用したLINEBotづくりはLINEのインターフェースをそのまま使えるので、**初心者でも簡単に見た目のよいアプリを作ることができ、さらに友達に簡単に共有できる**ので初心者の勉強素材としてぜひおすすめしたいです。 


#6.まとめと今後
挫折しやすい＆飽きっぽい私ですが、楽しく学べる場を提供してくれたProgateやDaiさん、Twitterの駆け出しエンジニア仲間のおかげで、簡単なアプリですが初リリースまでたどり着くことができました！

12月はアドベントカレンダーを理由に投稿できた（投稿するネタを無理矢理考えられた）のも自分のためになりました。

学習のコツは下記事にもまとめており、随時更新しています。色々と試行錯誤したなあ、、、と我ながら思います。
投稿記事　：[【2018年初心者向け】 駆け出しエンジニアと共有したいプログラミング学習１２のコツ](https://qiita.com/sai-san/items/a6c6cfc623042bb38777)

今はキカガクさんのAIのコースを受講しており、機械学習をつかった面白いアプリをリリースする予定です！
駆け出しエンジニアや駆け出しデータサイエンティストの皆さんと2019年も頑張っていければと思います。