オンプレ系インフラエンジニアがAzureを勉強する

いつか誰かの何かの役に立つと嬉しいな

Google HomeとAzure Functionsを連携させる

Google HomeとAzure Functionsを連携させて簡単なやり取りができるようにします。

動機

・家に使ってないGoogle Home miniがあったから

成果が目に見えるのでAzureの勉強としてわかりやすく面白そう

 

 今回やること

Azure Functionsと連携させてGoogle Homeに何かをさせようとしたときの土台になりそうなこちらの記事を再現します。

Google アシスタントアプリを開発する時に Fulfillment の先を C# で開発する方法(スマートスピーカーを遊びたおす会での LT 内容) - かずきのBlog@hatena

 

環境

・Windows10

・Azureアカウント(サブスクリプション持ち)

Visual Studio 2017

 

Function APP新規作成(Azureポータル作業部分)

Azureポータルでにログインし、Function APPを新規作成します。

f:id:mitsunooon:20190224200515j:plain

 

必要事項を記入し、作成すると以下のような項目ができます。

稲妻アイコンのものがFunction APPの本体ですね。

f:id:mitsunooon:20190224200641j:plain

 

Function APP新規作成(Visual Studio作業部分)

Function APPの中身を作っていきます。

参考サイトではAzure Functions Core Toolsを使っていますが、

Visual Studio 2017でもできるようなので今回はローカルのVisual Studio 2017で作成します。

 

Visual Studio の新規作成にて、[Azure Functions]>[HTTP trigger]を選択します。

f:id:mitsunooon:20190224201841j:plain

f:id:mitsunooon:20190224201928j:plain

f:id:mitsunooon:20190224203828j:plain


次に各クラスを作成します。

今回必要なのは大きく分けて2種類です。

JSONの送受信部分

GoogleHomeとやり取りをするには、JSON形式で受け取ってJSON形式で返します。

よってその窓口になる部分を作ります。

・メイン関数部分

何を受け取った時に何と返すかを決める動作のメイン部分になります。

JSON送受信部分

基本的には以下のサイトを利用します。

JSONのサンプルが公開されているサイト

Dialogflow Webhook Format  |  Actions on Google  |  Google Developers

JSONを各言語のコードにしてくれるサイト

https://quicktype.io/

<リクエスト側>

上記サイトよりリクエスト側のJSONをコピーしてきます。

f:id:mitsunooon:20190224203114j:plain

 

コピーしたものを変換サイトの左ペインにペーストし、

右ペインで言語とnamespaceを変更します。

今回のnamespaceは「DialogflowWebhook.Requests」です。

f:id:mitsunooon:20190224203306j:plain

 

[Copy Code]でコピーしたら、VisualStudioに戻ります。

クラスを新規追加し、ペーストします。

このときclass名が「Welcome」になっているので「DialogflowRequest」に変更します。

f:id:mitsunooon:20190224203944j:plain

 

<レスポンス側>

リクエスト側と同様です。

コピーしてくるJSONのサンプルだけ異なります。

f:id:mitsunooon:20190224204958j:plain

 

クラス名は「DialogflowResponse」です。

f:id:mitsunooon:20190224205232j:plain

 

 メイン関数部分

参考サイトよりコピーしました。

f:id:mitsunooon:20190224205655j:plain


新規で作成したときデフォルトで「Function1.cs」が作成されていますが、今回は使用しないのでプロジェクトから外しています。

 

発行

Azureポータル上で作成したFunction APPに発行します。

発行先はすでに作成していますので、[既存のものを選択]を選びます。

f:id:mitsunooon:20190224210432j:plain

 

f:id:mitsunooon:20190224210520j:plain

 

発行が完了するとAzureポータル上で関数として表示されます。

f:id:mitsunooon:20190224210733j:plain

 

[関数のURLの取得]にてこのFunction APPを呼び出すためのURLをコピーします。

f:id:mitsunooon:20190224210911j:plain

 

Dialogflowの設定

Dialogflowの基本的な操作は以下を参考にさせていただきました。

Dialogflowでチャットボットをつくってみる - Qiita

Dialogflow入門 - Qiita

 

今回Dialogflowで触る部分は以下です。

<新規Intents作成>

①新規Intentsの名前

 この名前はメイン関数で指定してる名前になります。

②Training phrasesにGoogle Homeに問いかける文言を設定する

③Fulfillmentを[Enable]にする

f:id:mitsunooon:20190224212414j:plain

f:id:mitsunooon:20190224212437j:plain

 

 <Fulfillmentの設定>

FulfillmentにAzureポータル上でコピーしたURLをペーストします。

f:id:mitsunooon:20190224212949j:plain

 

動作確認

Google Assistantに接続し、動作確認します。

f:id:mitsunooon:20190224213141j:plain

 

Intentsで登録した文言を送ると関数で指定した文言が返ってきますね!

f:id:mitsunooon:20190224213454j:plain

 

ちょい足し

Intentsを増やして、返答パターンを増やしてみます。

 

<Dialogflow側>

 新規Intensを作成します。

f:id:mitsunooon:20190224213649j:plain

 

<関数側>

元がif構文なのでelse ifで分岐を増やします。

f:id:mitsunooon:20190224214115j:plain

 

コードを変更したら上書き発行します。

 

動作確認します。

f:id:mitsunooon:20190224214237j:plain

2パターンの返しができるようになりました!

 

 

 以上をベースにもう少し複雑なやり取りができるようにしていきます!

 

 

【レポ】JAZUG女子部×JAWS-UGクラウド女子会 合同くりぱ勉強会

JAZUG女子部×JAWS-UGクラウド女子会 合同くりぱ勉強会に参加してきました。

JAZUG女子部×JAWS-UGクラウド女子会 合同勉強会
techplay.jp

Microsoftクラウドサービス Azureのユーザグループ『JAZUG』
Japan Azure User Group | JAZUG
Amazonクラウドサービス AWSのユーザグループ『JAWS-UG』
JAWS-UG(AWS Users Group – Japan)

上記二つにはそれぞれ女子部が存在します。
兼ねてより気になっていたこの女子部イベントに念願叶い参加してきましたので
その感想を書いていきます!

全体の印象

女子会、クリパがテーマということで、駄菓子やドーナツなどたくさんあってフランクな雰囲気でした。
TECHPLAYさんの施設自体もとてもきれい!
女性限定のイベントでしたが、エスコートも可ということで
男性も数名いらっしゃいました。

はじめにAzureについてざっくり

主催の方々のご挨拶の後に
JAZUG女子部の方から
まずはざっくりしたAzureの説明が!

中でも印象に残ってるのはサービスの種類について。
Azureのサービスは今時点でなんとおよそ272種類!(前日の夜に主催の方々が数えたそうです笑
あまりに多いので全てを知ってる人はほとんどいないそう…
Azureはやりたい用途に合ったサービスを見つけて
それ1つで実現することを想定されてるそうです。

続いてAWSについてザックリ

JAWS-UGクラウド女子会の方よりAWS のお話!
主にAWSの歴史とイベントについて。
印象に残っているのは、
AWSはオンプレからIaaS、PaaSを経てSaaSへ移行するまでに
たくさんあった課題の隙間を埋めていったというところ。
オンプレからクラウドまでを学ぶ身としてはこの辺りはちゃんとお勉強しておきたいところ…
Azureと比較して、
AWSはサービスをいくつか組み合わせてやりたいことを実現する形のようです。

最後にワークショップ

4人1組のチームでテーマに沿ったアーキテクチャを考えるワークショップでした!
テーマはこちら↓↓↓

『お題に沿ってクリスマスに関連したアーキテクチャを考える』

お題は

  • 画像判定サービス(Azure/AWS
  • グローバルなECサイト(Azure/AWS
  • IoT(Azure/AWS

私たちはAWSを使ったIoTについてがテーマでした。
チームにまさにAWSのIoTに詳しい方がいらっしゃったので
イデアを出すとどんどんぴったりなAWSのサービスを教えてくださり、
まったく初心者の私としては大変勉強になりました。

私たちのチームが考えたサービス名は『ボクとサンタさん』です。
サンタさんが来たことを子供が知るためのサービスです!

概要としては、
サンタさんが家に入ってきたことを家中に設置したいろいろなセンサーで感知し、
その情報をラズパイに集約→SORACOM AirAWSに飛ばす。
AWS内ではAWS IoT→Lambda→デバイスへ通知という流れです。

f:id:mitsunooon:20181209230115j:plain
ボクとサンタさんの概要図

おまけとして、デバイスに通知したあとにAlexaでサンタさんからのメッセージが聞けるというオプションもつけました笑

ほかのチームはクリスマスコフレやケーキに絡めたアーキテクチャなどがあり、聞いてるだけでわくわくしました!
また、それぞれのチームにスペシャリストが1人はいるようにチーム分けがされていたようです。(配慮が細やか!

おわりに

クラウドということもあってか、中々出会うことのできないオンプレやインフラ寄りの女性もちらほらいらっしゃってとても嬉しかったです!
主催様方の配慮も細やかで過ごしやすい空間でした。
今度はもう少しAzureの知識をつけてワークショップで貢献できるようにしていきますヽ(•̀ω•́ )ゝ✧

おまけ

日本マイクロソフトさんやAWSさんからノベルティの差し入れがたくさんありました!
ステッカーにピンバッヂにマグネット!どれもかわいくてテンション上がりました!ありがとうございました!

f:id:mitsunooon:20181211213834j:plain
お気に入りのピンバッヂ