高専キャリアとマイクロソフトがコラボしたクラウドAI開発講座進捗報告[8]

# クラウドAI開発講座進捗報告- 8週目
# 目次
* [第1週](https://qiita.com/teruto725/items/222b011a8dd63bf76158)
* [第2週](https://qiita.com/teruto725/items/715b879edf562c389a08)
* [第3週](https://qiita.com/teruto725/items/f6e2763caaff7f5f3c9c)
* [第4週](https://qiita.com/teruto725/items/36317ea20761fc43e7f9)
* [第5週](https://qiita.com/teruto725/items/53d577b9628f029b0ff6)
* [第6週](https://qiita.com/teruto725/items/2df66d52eaf701d61680)
* [第7週](https://qiita.com/teruto725/items/b16a79007e38294aec13)
* [第8週](https://qiita.com/teruto725/items/4fb91aee55fbb6a37189)


# はじめに
この講座もついにあと一週間。
多大な労力をかけついにbotが完成しました！！！（やったー）
本当に長かったけど、かなり頑張ったし、その分達成感がみなぎっています！
今週はほとんど時間とれないのでたぶんこれが完成形になると思います。
なので今回の記事は作ったボットの紹介をします！

細かいエラーが多くてデバックしんどかった。

# Word Booker
## 概要
一言でいうとTeams上で動くIntelligentな単語帳ボットです。



## 機能
このBotが持つ機能を紹介します。

### Basicな機能
単語帳として不可欠な「単語登録」、「登録単語一覧表示」、「単語出題」、「答え確認」機能が実装してあります。
単語帳として不自由なく利用できるようにかなりのコマンドを用意しています。
またリアクションを用いることでできるだけキーボード入力を減らして、スムーズに復習ができるように工夫しました。

word add コマンドで単語を追加できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/573723/998e019e-213c-6a50-0afa-f6baf9c3bb17.png)

word list word　コマンドで登録されている単語一覧をチェックできます。
単語ごとに正解回数や、失敗回数も表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/573723/61147db3-a36b-5b25-5fcc-49ab06132fe8.png)

word test コマンドで問題が出題されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/573723/f1f24941-ae05-628b-4f66-7b186fe27e33.png)

また word test diff コマンドを入力すると、ユーザが頻繁に間違っている苦手な単語が出題されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/573723/9eda6d3d-7732-c1ae-6419-802cb8c2a08b.png)

出題された問題に対してユーザはword ans で答えをチェックできます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/573723/8febc709-544f-c8fd-8cb8-d6871ebd5702.png)

さらに答えがわかったら笑いリアクションを、わからなければ悲しいリアクションをとることで、それに応じて単語の難易度が変化します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/573723/9e85338a-03cb-82e8-f1b1-b7fcdc48c2ab.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/573723/287086e1-fc1b-90de-69c3-c4a22ad39871.png)


またword ans (答え）というように答えを直接入力することもできます。この場合はBotが勝手に正解不正解を判断してくれます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/573723/512b2d55-a94e-fed1-b9de-c8fa8b1ed391.png)

またword tocsvコマンドを
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/573723/2fa0a4a5-0f0f-aca3-dd03-492922a08954.png)


### Intelligentな機能
このbotなんと画像から単語の登録ができます！！
ここの実装が一番大変だったので一番見てほしいポイントかもです。Teams上でここまでできるってすごくないですか？実質google翻訳！
CSV出力もできるので、ただの翻訳Botとして使うのもあり！

この機能はbotとの個人チャットでしか利用できないのですが、word picと打って画像を添付することで画像から英単語を抜き出してくれます！ 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/573723/415442ac-f09e-a112-0625-017c8ddb9798.png)

これらの単語はword temp listコマンドで確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/573723/9bf591c8-3669-8c24-af5a-8df9594f65c5.png)

word checkコマンドを打つとこの中から一つ単語が選ばれるので、単語帳に登録する場合はハートリアクション、単語帳に登録しない場合は怒りリアクションをすることで必要な単語だけ単語帳に登録できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/573723/685ad754-c2b8-08fc-6b78-bbefc6775794.png)

復習はほかのGUIアプリでやりたいって人向けにCSV機能も付けました。
word tocsvって打つことでcsv登録単語一覧をCVS形式で出力できます。

### Motivativeな機能
ユーザがより楽しめるために何かやりこみ要素が欲しいと思ってレベル機能を付けました！
問題を正解すると経験値がもらえて一定数経験値がたまるとレベルアップできます！
このレベルアップ機能は結構こだわってて、連続で正解すると連続正解ボーナスがかかりもらえる経験値もどんどん増えていきます。しかし一度ミスすると連続正解ボーナスはリセットされるので注意深く復習しましょう。
レベルアップに必要な経験値は何とレベルが上がるごとに指数関数上に増えていきます笑。
なんでそのうち本当にレベルが上がらなくなりそう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/573723/0e2b937b-d98d-f249-289b-d465652dc33a.png)


でも一人でレベル上げってつまらないですよね？？せっかくSNS上で動いているのでオンラインゲーム仕様にしました！！

word rankingコマンドで、自分の世界ランキングを確認できます！（世界ランキングといっても単なる利用ユーザ内でのランキングですが．．．）
目指せ世界ランキング1位！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/573723/4a8f2cb7-ec25-e7c1-ca41-169a3d54b861.png)



### Funnyな機能
これが一番のこだわりポイントです。
でも、最終プレゼンまで秘密にしておきます！！

全部しゃべっちゃうと最終プレゼンがつまらなくなりそうなので。


## 最後に全体の感想とか

始めCognitive Serviceの存在を知ったとき、素直にすごいという気持ちが生まれました。
なんで、Botのテーマを考えるときにもCognitive Serviceを使いたいって気持ちが強くて、そこからGoogle翻訳みたいなの作れそうっていうアイデアからこのテーマが生まれました。

でもどんどん作っているうちに、ちょっと違うなって感情が生まれ始めました。TeamsってSNSなのに当時の単語帳はソロプレイの機能しかなくてこれってTeamsで動いている意味ないなって。

そっから、またアイデアだしに戻って、何か他の人とのつながりが生かせる機能がないか模索しました。その結果Motivativeな機能と、Funnyな機能が思いついて、それぞれ実装しました。

正直、コマンドベースなので慣れるまで使いづらいみたいなユーザビリティのデメリットは大きいと思います。
できるだけそれをなくすようにリアクションを用いた応答を付けたり、新しいコマンドを追加したりしましたが、それでもGUIを用いた他の単語帳アプリに劣る点はまだあると思います。

でも、SNSという性質を利用した面白さはオンリーワンだと思っているので、「気分転換で使ってみよかなー」と思ってもらえたらうれしいなって思います。

実はユーザ間の対戦機能とかつけてより面白くしたかったんですが、時間切れでした。

とにかくいつもは一人で黙々とやるプログラミングですがメンターさんやほかの参加者さんとコミュニケーションをとりながらプログラミングできて楽しかったというのが感想です。