ハッカソンで使い勝手のよさそうな Microsoft のサービス紹介

## 追記

2022 年版を書きました。

https://qiita.com/okazuki/items/32a1d02b4cd85c227b27

## 本文

2 年くらいまえにこんな記事を書きました。

[ハッカソンで使い勝手の良さそうな Microsoft のサービス](https://blog.okazuki.jp/entry/2018/05/25/170009)

2 年もたつと今のご時世色々変わりますよね。ということで 2020 年 9 月時点の自分の知ってる範囲でまとめてみようと思います。

## QnA Maker

トップバッターは QnA Maker ですね！
質問と回答のペアを登録してトレーニングすると質問に対して一番それっぽい答えを返してくれる API が出来ます。

特徴としては、QA サイトとかみたいに質問と回答が書いてあるホームページとかを食わせてもいいです。

単純な REST API が出来上がるので直接 URL を叩いてもいいし C#、Go、JavaScript、Python、Ruby 向けの SDK が提供されている（これを書くために調べてみて Java 版がないのにびっくりした！）ので、SDK を使ってもいいですね。

ぶっちゃけ質問に対して回答もらうだけなら、REST API は[このドキュメント](https://docs.microsoft.com/ja-jp/rest/api/cognitiveservices/qnamakerruntime/runtime/generateanswer)にある通り以下のような感じでいけるので正直 SDK 入れてクラスやメソッド調べて…となるよりも早い可能性はあります。

> 上記のドキュメントから抜粋
> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70288/7881d192-84ba-5a94-24d0-47777606fa57.png)

なんか面白そうだな？と思ったらチュートリアルドキュメントは以下のリンクから行けるので見てみてください。

[クイック スタート:QnA Maker ナレッジ ベースの作成、トレーニング、発行](https://docs.microsoft.com/ja-jp/azure/cognitive-services/qnamaker/quickstarts/create-publish-knowledge-base)

さらに自己学習ページの Microsoft Learn には、QnA Maker で一番よく使うと思われる QA ボットを作るコースがあります。動くものを作ってみるという観点では、これが一番とっつきやすいかも。

[QnA Maker と Azure Bot Service を使用してボットを作成する](https://docs.microsoft.com/ja-jp/learn/modules/build-faq-chatbot-qna-maker-azure-bot-service/)

## Custom Vision API

[公式ドキュメント](https://docs.microsoft.com/ja-jp/azure/cognitive-services/custom-vision-service/)のトップページから引用してみましょう。

> Custom Vision を使用すると、独自の画像分類器を構築、デプロイ、改良できます。 画像分類器は、視覚特性に基づいて画像に (クラスを表す) ラベルを適用する AI サービスです。

... なるほど。わからん。

端的に言うと Web ページに画像をアップロードして、この画像には何が写っているというのをポチポチと登録していくことで、画像に何が写ってる！！というのを返してくれる REST API や、TensorFlow や CoreML や ONNX などのように携帯や PC などのモバイルアプリで使えるようにモデルをエクスポートすることが出来ます。

りんごの画像食わせたらりんごって答えてくれる Web API が前提知識ほぼなしで出来るのは結構強い。この手のサービスは他にもありますが、MS なら Custom Vision API って感じですね。

ちょまどさんが前に牛めし（松屋）と牛丼（他社）を判別して遊んでましたね。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">ちなみに、私の作った機械学習モデルでは、<br>松屋は完全に当てられます。<br>吉野家とすき家の判定があやうい。<br><br>(皆も <a href="https://t.co/rbnlrmPTzb">https://t.co/rbnlrmPTzb</a> で学習させてみよう！画像をアップロードして「これは松屋」とタグ付けして「学習」ボタン押すだけ！簡単だよ！)<a href="https://twitter.com/hashtag/JXUG?src=hash&amp;ref_src=twsrc%5Etfw">#JXUG</a> <a href="https://t.co/3rb320kB5C">pic.twitter.com/3rb320kB5C</a></p>&mdash; ちょまど🎀 (@chomado) <a href="https://twitter.com/chomado/status/898812060624068609?ref_src=twsrc%5Etfw">August 19, 2017</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

漫画の表紙の判別とかにも使われてたりしてアイデア次第で使い方無限大になりそう。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">自動デジタルサイン会に使っていたdocomoの画像認識APIが提供終了になるので、Microsoft AzureのCustom Visionを試しているのだけど、認識精度が高くて良さそうな感じ。<br><br>試しに『変女』と『SE』の画像を認識させると、ちゃんと変女のオブジェクトだけ抽出して、巻数も間違えずに認識出来てる‼️ <a href="https://t.co/ImgFAwuCG8">pic.twitter.com/ImgFAwuCG8</a></p>&mdash; 変女bot(公式)@会話できます (@henjo_official) <a href="https://twitter.com/henjo_official/status/1015863933687685121?ref_src=twsrc%5Etfw">July 8, 2018</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">『変女』13巻発売に向けていつもの自動デジタルサイン機能用にMicrosoft Azure Custom Visionのタグ付け作業〜。毎回思うけど、これでノンプログラミングな機械学習が出来るというのだから本当に便利（タグ付け作業だけは地味だけど😅 <a href="https://t.co/XsFAylKbji">pic.twitter.com/XsFAylKbji</a></p>&mdash; コノギヨシヲ@変女IT担当 (@yoshiwo_konogi) <a href="https://twitter.com/yoshiwo_konogi/status/1154271438129418240?ref_src=twsrc%5Etfw">July 25, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

## そのままさくっと使える AI

### Face

お次は顔認識です。

[Microsoft Cognitive Service Face](https://azure.microsoft.com/ja-jp/services/cognitive-services/face/)

自分で学習させて特定の個人を認識させることもできますが、作った段階でも顔は認識してくれます。感情も判定してくれるのでお前は怒ってるのか？とか喜んでるのか？というのを判断させるのに使ったりも出来ますね。お手軽。

上記のリンクから実際にどんな結果が返されるのか確認できるページにいけるので興味があったら試してみてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70288/02452e9c-499b-18fa-464d-e484f1b4b819.png)


### Computer Vision API

Face が顔に特化したものですが、Vision API は画像を食わせてわかることはとりあえず全部返してくれます。

[Computer Vision API](https://azure.microsoft.com/ja-jp/services/cognitive-services/computer-vision/)

このページも以下のように実際に API を呼び出したときにどんな風に結果が返ってくるのかを確認できるサイトがあるので、ここで説明を書くよりも試してみたほうが早い系です。

例えば上記のサイトでサンプル画像を食わせた結果なのですが、ちゃんと地下鉄の電車だと認識してますね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70288/fde278df-1af5-a48c-0085-8531073ef7a0.png)

他には、この画像はなんなのか？というのを説明した文章も返してくれたりします。上の例だとこんな文字列が返ってきてました。

> people waiting at a train station

正しい。まぁ英語なので日本向けアプリで使おうと思ったら後述する翻訳系 API に食わせる必要がある点がちょっと残念。
そのほかにも画像に書いてある文字を認識したりと、使い勝手がいいサービスになります。

### Translator

ということで翻訳 API。翻訳してくれる REST API が作られる。

[Translator](https://azure.microsoft.com/ja-jp/services/cognitive-services/translator/)

### Speech API

音声系です。言葉をテキストにしたりといったものや、テキストを音声にしたりといったものがあります。

[Speech to Text](https://azure.microsoft.com/ja-jp/services/cognitive-services/speech-to-text/), [Text to Speech](https://azure.microsoft.com/ja-jp/services/cognitive-services/text-to-speech/), [Speech Translation](https://azure.microsoft.com/ja-jp/services/cognitive-services/speech-translation/)

テキストを音声にするやつは、ニューラルネットワークを使ったやつが日本語にも対応していて、まだ不自然だと感じることはあるけど、昔の棒読みじゃね？っていうのに比べるとマジで進化を感じるのでぜひ試してもらいたいですね！

こちらから試せます！

https://azure.microsoft.com/ja-jp/services/cognitive-services/text-to-speech/#features

他に音声をリアルタイムで翻訳してくれる機能もあるのでまじでびっくりです。

https://azure.microsoft.com/ja-jp/services/cognitive-services/speech-translation/#features

この記事の出だしを読んでみたら割と英語に翻訳してくれたりしました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70288/f092169e-0110-9859-f029-cb0fa8271b13.png)

ちょっと前までは「音声 → テキスト化 → 翻訳」を複数 API 組み合わせてやってたけど、必要なくなりましたね。

### Bing Image Search

Bing 系の API も色々あるのですが、個人的に一押しなものを紹介したいと思います。名前のとおりテキストから画像を検索してくれる API です。

[Bing Image Search API](https://azure.microsoft.com/ja-jp/services/cognitive-services/bing-image-search-api/)

意外と文字をイメージにして表示すると人間が見てわかりやすいので、アイデア次第では面白くなりそうなサービスです。

例えば先日 Computer Vision API の OCR と組み合わせて以下のように海外の文字だけのレストランのメニューの画像から料理のイメージ画像を検索するようなアプリを遊びで作ってみました。

[海外のレストランのメニューには写真がない問題を解決しよう](https://qiita.com/okazuki/items/d867a29f711f8e96857c)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70288/c8ced1e4-1edb-6f30-7aee-2fa22336bfe4.png)

## 使い方

Microsoft Azure の契約（サブスクリプション）があれば一番早いのですが、持ってる人は少数派だと思うので無料体験用のものを作るというのが一番お手軽に色々試せると思います。
いくつかの無料サービスもあるので、ちょっとしたものを試すだけなら無料で収まることもあります。特に、ここで紹介した AI 系サービスの Cognitive Services に名前を連ねる人たちは無料枠があるものが多いのでぜひ試してみてください。

[Azure の無料アカウントを今すぐ作成しましょう](https://azure.microsoft.com/ja-jp/free/search/?&ef_id=CjwKCAjw74b7BRA_EiwAF8yHFGHnkuStDGQzvZQAWUR0oaAjxt5ngW9r56Fb-QVc2s3YLqEDIQh9BBoCvWIQAvD_BwE:G:s&OCID=AID2100066_SEM_CjwKCAjw74b7BRA_EiwAF8yHFGHnkuStDGQzvZQAWUR0oaAjxt5ngW9r56Fb-QVc2s3YLqEDIQh9BBoCvWIQAvD_BwE:G:s&dclid=CLLzhtaB7usCFcM3vAodhxMCbw)


学生さんの場合はクレカ無しで無料枠をゲットできる Azure for Students というものもあります。

[Azure for Students](https://azure.microsoft.com/ja-jp/free/students/)

## まとめ

ということで、ハッカソンみたいなものでコアの部分は自分たちで作るとして味付けとして何処にでもあるような一般的な AI の機能なんかは、ここらへんのものを使ったり、もしくは既にある API でも組み合わせとアイデアによって思いもよらぬ使い道が出来たりと色々な使い道があると思います。

ということで、ハッカソンのような催しでさくっと使える面白そうな AI 系の API を個人の主観で紹介してみました。
Microsoft Azure Cognitive Services の完全なリストは以下のサイトから見てみてください。私が面白いと思ってないだけで、実は面白いものがあるかもしれないので。

[Cognitive Services](https://azure.microsoft.com/ja-jp/services/cognitive-services/)

## 追記

ちょまどさんが、この記事の内容をベースにサービス紹介してくれました。

<iframe src="//www.slideshare.net/slideshow/embed_code/key/j1xVrkATfArFQQ" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen> </iframe> <div style="margin-bottom:5px"> <strong> <a href="//www.slideshare.net/chomado/2020917-microsoft-ai" title="2020/9/17_ハッカソンで Microsoft AI サービスを使って爆速開発" target="_blank">2020/9/17_ハッカソンで Microsoft AI サービスを使って爆速開発</a> </strong> from <strong><a href="https://www.slideshare.net/chomado" target="_blank">Madoka Chiyoda</a></strong> </div>

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70288/ab0f0ecc-3ace-32e9-037b-0735f1353658.png)