kun432's blog

技術ネタ、読書記録、など。2015年から人生をやり直し中です。

須磨水族館のAIペンギンに会ってきた

f:id:kun432:20190610005646j:plain

ちょっと前にニュースで上がっていたこれ、すごい気になっていました

どんな仕組みで動いているのかな?実際に見てみたい!ということで週末に行ってきました。うちの奥様とのデートも兼ねておりますが、久々のVUI実例レポです。

「スマスイ」という愛称で知られていますが、正しくは「須磨海浜水族館」といいます。三宮からJRで15分、須磨海浜公園駅から徒歩10分程度、海沿いにあります。こんな感じのちょっと古いけど大きめの建物がスマスイです。

f:id:kun432:20190610005714j:plain

入口の上にはこんな看板が。

f:id:kun432:20190610005811j:plain

ちなみにこのキャラクター、神戸市にお住まいの方ならよくご存知「ワケトン」のデザインをされた、ザ・ロケット・ゴールド・スターさんのデザインです。スマスイ以外にも、さんちかとか神戸マラソンなど、神戸関連のデザインを多数されていて、スマスイ内にも到るところにたくさんあふれています。

これがチケット。

f:id:kun432:20190610010648j:plain

入り口横にもこんな看板があります。調子に乗ってこんな写真撮ってしまいました。おっさんのお見苦しい姿でお目を汚してしまい大変申し訳ございません、、、 m( )m

f:id:kun432:20190610010828j:plain

気を取り直して、AIペンギンです。ペンギン館にあります。ここにもザ・ロケット・ゴールド・スターさんのキャラが。

f:id:kun432:20190610011239j:plain

入り口入ったすぐのところにあります。

f:id:kun432:20190610011350j:plain

中に2匹いてます。アレハンドロとアンジェリーナ、ということで、アルゼンチンから来られたマゼランペンギンのご夫婦だそうです。

f:id:kun432:20190610005646j:plain

実際に動いているのを見てもらうほうがわかりやすいかと思いますので、動画です。

アンジェリーナの方は動画取るのに失敗してました、、、がきちんと女性の声でした。そして今気づいた、アレハンドロが右なのか!アレハンドロがたくさんしゃべったので左かと思ってました。。。

f:id:kun432:20190610013224j:plain

話しかけるときはこんな感じでライトでわかります、スマートスピーカーお使いの方なら非常にわかりやすいですね。羽もパタパタ動きます。ちなみに、ウェイクワードは不要です。近づくとあっちから話しかけてくれるようです。

f:id:kun432:20190610013026j:plain

こんな感じで説明も楽しいです

f:id:kun432:20190610013642j:plain

その他、気づいたところはこんな感じです。

  • 結構周りがガヤガヤしてる上、ペンギン館の中は少し声が届きにくい感じもあり、普通に話しかけるぐらいの音量だと反応しないこともありました。声大きめに話してあげるといい感じで答えてくれます。
  • しばらく見ていたのですが、通り掛かった人はみんな結構興味持って見てたし、ほとんどの人が話しかけてましたね、特に子供の食いつきはすごい良かったです。あと、ウェイクワード不要なので突然話しかけられてびっくりする人多数な感じで面白かったです。
  • ちょっとレスポンスが遅い(LEDが点滅している時間が長い)瞬間がありました。まあなんとなくわかりますw

いやー、非常に面白かったです。で、個人的にちょっと刺さったのはこれです。

f:id:kun432:20190610015537j:plain

f:id:kun432:20190610015544j:plain

スマスイさんでは、以前、来園者の方から飼育員の方への質問を紙で受け付けるという取り組みを2年間ほどされていたそうで(今もされているのかはわかりませんが、投書ボックスのようなものはありました)、しかもこれ全部飼育員の方が手書きで回答してあるんですね、その数なんと8500通。ファイルがこんなことになります。

f:id:kun432:20190610015832j:plain

今回のペンギンの回答はこの内容をベースにしているそうです。これ、手書きで丁寧に回答してあるのもすごい大変だと思うんですけど、質問した方もこれだけあると次に来たときに自分の質問の回答、もう探せないですよね。来園者(特に子供)がペンギンなどの生き物に興味を持ってくれて、飼育員の方が非常に多忙な中で丁寧に回答してくれる、これって損得勘定ない純粋な欲求だと思うのです。これが物理的・時間的な理由で届かないかもしれないというのは非常に残念です。

新しいテクノロジーって、効率化による課題解決みたいな、ビジネス的な観点で取り上げられることが多いと思っていて、もちろんそれはそれでとても大事なのだけど、それだけじゃなくて、人間の感情的な部分もきちんと汲み取ってあげれるようなものであってほしいし、VUI・音声認識って、そういう人間的な部分にとても近い技術だと思っています。現状のVUIの成熟度では、ビジネス・感情のどちらの面でも大きな課題解決をできるようなフェーズには至ってないと思っていますが、今回の企画はその可能性の一旦を見れるような実例として、非常に興味深く見せていただきました。

開発された神戸デジタル・ラボ (KDL)さん、とても良いものを見せてもらいました。ありがとうございました!

www.kdl.co.jp

ちなみに、実証実験ということで、アレハンドロとアンジェリーナに会えるのは 6/23 までらしいので、お時間ある方はぜひお早めに行ってみてください!

現場からは以上です。

大阪スマートスピーカーミーティング #10 で LTしてきた

f:id:kun432:20190607003324p:plain

今月も@gaomarさん主催の「大阪スマートスピーカーミーティング」でLTしてきました。今回でなんと10回目!すごい!

ちなみにここでの私のLTももう4回目になります。いつもありがとうございます!>@gaomarさん

資料

動画(その2の10:30〜33:00あたり)

その1

その2

動画の撮影、いつもありがとうございます!>@diberidarshiさん

内容

今回のきっかけは、ISAO中嶋さん(@aiminakajima)のこのツイートです。

中嶋さんが #AlexaSkillsUS というハッシュタグで、USのAlexaスキルを100個日替わりで紹介するという取り組みをされている中で紹介されていたこのスキル、非常にシンプルで実用的、またAPLで試してみるにも良い題材かなと思いトライしてみました。

あと、Alexa Day 2019 の "Alexa KoBuilder Challenge supported by 神戸市” で AAJUG 田尻さん(@ayaka_pespes)が発表されていたスキル「神戸のトイレマップ」でGoogle MapをAPL使って表示していたのを見て、前からマップ連携やってみたいなーと思っていたのもあります。

神戸のトイレマップ

神戸のトイレマップ

きっかけを頂いたお二人に感謝です!

詳細は資料をご覧ください。

補足

LTの中でいくつか端折ってしまったことがあるので、補足します。

ask-sdk-v2での住所の利用許可チェックについて

該当部分のコードはこんな感じです。

async handle(handlerInput) {
    const speechText = 'こんにちは。所在地情報のテストです。';
    const deviceId = handlerInput.requestEnvelope.context.System.device.deviceId;
    try{
        const deviceAddressServiceClient = handlerInput.serviceClientFactory.getDeviceAddressServiceClient();
        const address = await deviceAddressServiceClient.getFullAddress(deviceId);
        console.log(JSON.stringify(address));
        return handlerInput.responseBuilder
            .speak(speechText + "住所の取得に成功しました。")
            .getResponse();
    } catch (error) {
        if (error.name === 'ServiceError' && error.statusCode === 403) {
            return handlerInput.responseBuilder
                .speak('住所の利用が許可されていません。アレクサアプリの設定で許可してください。')
                .withAskForPermissionsConsentCard(['read::alexa:device:all:address'])
                .getResponse();
        } else {
            return handlerInput.responseBuilder
                .speak(speechText + "住所の取得に失敗しました。")
                .getResponse();
        }
    }
}

ざっくり言ってしまうと、「住所の許可されているかどうか?はとりあえず一回普通に住所を取りに行って、エラーが返ってきたら許可されていない」という判断です。以前の所在地情報の取得に関する記事をいくつか見てみると、住所の利用が許可されている場合、Alexaからのリクエストで context.System.user.permissionsの中にconsentTokenが含まれているのでこれをチェックするというのが一般的なのですが、Alexaの公式ドキュメント では、

重要: Alexaからのリクエストには、session.user.permissionsとcontext.System.user.permissions内にconsentTokenも含まれている場合があります。このプロパティは廃止になりました。consentTokenを使用する既存のスキルは引き続き機能しますが、代わりにcontext.System.apiAccessTokenプロパティが使用されます。

となっており、consentTokenを使うやり方はobsoleteになるようです。ではどうするのか、というと、

ユーザーがスキルに権限を付与しなかった場合のテストをするには、Alexaコンパニオンアプリでスキルのアドレス権限が有効になっていないことを確認してください。スキルを開くと(「アレクサ、skill_nameを開いて」)、LaunchRequestが送信されます。このリクエストにはdeviceIdの値とapiAccessTokenの値が含まれますが、apiAccessTokenは正しい権限を指定していません。このトークンをデバイスアドレスAPIに渡すと、403 Forbidden応答コードが返されます。

ということで、おそらく apiAccessToken の中に権限情報も含まれるのではないかと推測してますが、これを読み取ることはできないようで、上に書いたようなやり方になるのだろうと思います。エラーの場合でも、レスポンスコードをきちんとチェックするようにすれば、アクセス権限がないのか、その他のエラーなのかも判断できるんで、まあ良いのではないかと思います。

Voiceflowでの所在地情報の取得

Voiceflowの場合は書いてあるとおりですが、少しだけ補足。

_systemというドキュメント的にはどこにも書いてないオブジェクトをCode Blockから取得して、デバイスアドレスAPIを叩くために必要な情報を用意してますが、ここにヒントが有りました。

Voiceflowの情報源としてはfacebookが一番活発だと思いますが、フォーラムにもちょいちょいチュートリアル記事が上がるのでオススメです。(ただし英語)

ということで、Voiceflowで実際に作ってみたスキルの動画も貼っときます。

最後に

次回は7/25頃だそうです。もちろん参加しますし、LTします!個人的に、イベントでLTする!と決めてから、いろいろ調べたりスキル作ったり資料作ったり、という「LT駆動型開発」、納期もある中できちんとインプットとアウトプットができる感じになるので、とてもオススメです。

ネタ探しについても、今回取り上げた「所在地情報」自体は1年ぐらい前からできる新しくもなんともない今更感あるネタですけど、Voiceflowでやってみた、とか、実際にこういうものを作ってみた、とか、やってみたらいろいろ苦労した、とかっていう切り口で共有すれば役に立つ場合もあると思うし、調査してコード書いてまとめてというところで、自分の経験値にもなるので、気にせずやってみるといいと思います。

ということで、もし興味があれば是非スマートスピーカーミーティング、お越しください。みんなでゆるーく楽しみましょう!

今日もありがとうございました!

2019年5月の振り返り

f:id:kun432:20190602214423p:plain

5月の振り返りです。今月は少し大きな変化がありまして、それもあって少しバタバタしてしまいました。


資格を取る

  • AWS
    • 資格系は少しお休みしてますが、Alexaスキルビルダーについてコツコツ情報だけは集めてます。
    • 半額バウチャーあるし、とりあえず一回受けてもいいかなって思い始めてますが、もう少し様子見かな。
  • GCP
    • ML Study Jamsパート2、スルーしちゃいました。
    • 目的はっきりしないとやっぱりダメだなー
    • ということで、こちらは一旦消します

毎月一個、テーマを持ってスキルを作る

  • 4月分で作った「神戸あるある」に続いて「大阪あるある」をリリースしました。

大阪あるある

大阪あるある

  • ただ本来の目標は「新しいテーマを決めてスキルを作る」なので、横展開しただけのスキルだと、個人的にはノルマ果たせてないかなと。
  • 実際は、一応今月は以下のテーマに取り組んでスキル作ってたものの、どれもリリースまで至らなかった次第。
    • ダイアログモデル
    • APL
    • 位置情報
  • ちょっとテーマを増やしすぎたかな、、、こういうスキル面白いかも、というところからやってたので致し方ない。特にAPLは時間かけすぎた。お陰でだいぶわかってきた感あるけど、レイアウトうまくコントロールできない時もあるし、こういうふうにするにはどうすればいいのか?みたいなのある、、、
  • 6月早々になるだけ多くリリースしたい
  • スキル開発100チャレンジのタグつけちゃったので、コツコツ頑張る所存

アウトプット

LT

  • 5月はLTなしです、そういうイベントがすくなかったのもあるかも
  • 6月は早速LTやりますよ!資料もう作りました!

社内勉強会

  • いろいろあって開催できず。
  • というか、前回が最後の社内勉強会になりました。詳細は後述。

ブログ

2件書きました。少なめですね、、、

その他

イベント

今月もいろいろ行きました。主催者ならびに登壇者、参加者の皆様、ありがとうございます。今月はTwilio多め。でもTwilioほんとうに楽しいです。

https://developer.amazon.com/ja/alexa/alexa-live

その他

私事ですが、5月一杯で現職を退職しました。実際には最後2週間は有給消化させてもらったので、5/20が最終出勤日でした。最近流行りの退職エントリみたいなのは書きませんが、いい意味でも悪い意味でも勉強させてもらったと思っています。ちなみに数ヶ月前から通常業務と並行して引き継ぎ準備を進めていたのですが、それでも流石に期限が見えてくるとほんと追い込みで一杯一杯でした、、、それもあって社内VUI勉強会は頓挫しちゃいました。ただこちらについては、有志で会社に関係なくやろうという話になっているので落ち着いたらまたやりたいと思ってます。

次の職場は、マーケティング関連の会社でインフラエンジニアやります。ただ、個人的にはインフラにだけこだわることなく、組織全体がうまく回るように視座高く・視野広く見ていくようなエンジニアとしてやっていきたいと思っています。今のところ、VUI関連が業務に絡むことはなさそうですが、それは置いといても、引き続きいろいろとやっていきたいと思っています。


6月からは環境が変わります。もちろん不安もありますけど、ワクワクのほうが強くて楽しみです。引き続き、頑張っていきたいと思います。

ということで告知です。

今週の木曜日、スマートスピーカーミーティングあります。もちろんLTします!今回はAlexaの位置情報についてです。もちろんVoiceflowでの位置情報の使い方についてもお話します。

AAJUGは6月、2回あります。

1回目 6/22はAmazonさんの大阪支社でAmazon PayをテーマにAlexaワークショップがあります。Amazon Payは私も全く触ったことないですがメンターで参加予定w。あと、この日はWordPressAmazon Payとの二本立てになってます。申込みは別なので興味があればそちらもどうぞ〜(すでにキャンセル待ちっぽいですが)

2回目 6/29は京都です。こちらはVUIデザインがテーマです。京都初なので楽しみです。

どれも楽しいイベントですので、お時間合えばぜひぜひお越しください〜。

それでは6月もよろしくお願いします。

Alexaスキル「大阪あるある」をリリースしました

先日のAlexaスキル「神戸あるある」に続いて、「大阪あるある」をリリースしました。

大阪あるある

大阪あるある

内容としては、単に神戸が大阪になっただけの横展開スキルです。コンテンツ部分だけ変えてロジックそのまんまなのでサクッとできるかというと、ネタ集め、ジングル素材探し、アイコン作成、あたりは案外手間がかかってたりします。。。

あと、あるある投稿フォームもあります。

あとは、京都に対応すれば三都物語完成、同じように全都道府県に対応すればトータル47個できちゃうんですが、さすがに住んだことない(大学時代は京都だったけど)と感覚的にもわからないし、茶化すだけになるのもアレなので、ちょっと考え中です。

とりあえず、よろしければご利用ください!

Alexaスキル「神戸あるある」をリリースしました

ちょっと遅くなりましたが、4月分のノルマとして、Alexaスキル「神戸あるある」をリリースしました。

神戸あるある

神戸あるある

内容としては、

  • 神戸市民ならではの「あるある」なネタを話してくれます。
  • それに対して、「あるある」「ないない」で答えると、あなたの神戸市民度を判定してくれます!

という、まあ、よくあるfactスキルに毛が生えたようなものですが、先日アップデートされた Voiceflow の Integration Block を使って、Googleスプレッドシートと連携させながら、今回はいろいろなデータ管理をやってみました。

概要

こんな感じのスキルです。

アレクサ、神戸あるあるを開いて

神戸あるあるを初めてご利用いただきありがとうございます。このスキルでは神戸の「あるある」なエピソードを、5個ご紹介して、最後にあなたの「神戸市民度」を判定します。エピソードが話されたあとに「あるある」か「ないない」で答えてください。では始めますか?

はい

では、神戸あるある、はじめましょう!
最初のあるあるです!

(♪BGM再生)

北のことを、、、、山側と言ってしまう。

あるある?ないない?

あるある

(♪歓声)

では、○個目のあるあるです

・・・繰り返し・・・

あるあるが終了しました。あなたの今回の神戸市民度は!・・・(♪ドラムロール)

〇〇パーセントでした!(♪ファンファーレ)

またご利用くださいね。

Voiceflowの中身

こんな感じです。約50ブロック使ってます。

f:id:kun432:20190504011515p:plain

内訳はこんな感じです。

ブロック名 ブロックの内容 使用数
Speak Alexaに話をさせるためのブロック。BGMや効果音などもここで。 20
Interaction ユーザの発話をインテントに振り分けてスロットを取得するブロック。開始前の確認で「はい」を受け取るところ、エピソードの後に「あるある」「ないない」をうけとるところで。 2
If 変数などを元に条件分岐するブロック 4
Set 変数を設定するブロック 3
Code JavaScriptで直接コードを書くスロット。主に変数の値をフィルタするような処理だけ、ロジック的なものはない。 6
Integration Googleスプレッドシートと連携してデータの登録・参照・更新を行うブロック。今回のキモ。 7
Card Alexaアプリのカードを出力するブロック 2
Flow 共通のフローをまとめるブロック 5

あと、変数は、ビルトインのものを除くと、21個作ってます。

開発期間は4日ぐらいです。設計とか実装とかよりも、

  • 素材探してきてアイコン作成
  • BGMとか効果音素材探してきて加工
  • あるあるネタ探して加工
  • Alexaの変な発話とか読み間違いの調整
  • テスト・デバッグ

の方に手間がかかってます。。。。

Integration Blockを使ったAPI連携について

元々はAPI Blockという外部API連携ができるブロックだったのですが、エンドポイント・リクエスト・レスポンスのパースとかを全部チマチマやらないといけない、直感的ではないというところがありました。これがビルトインでGUIでできるようになったのがIntegration Blockです。どんな感じで設定していくのかは以下のスライドにまとめてます。

今の所使えるのは、Googleスプレッドシートだけなので、これを使って以下のようなことをやっています。

あるあるエピソードのデータ管理

エピソードのデータをJSONなどでスキル内に持たせてしまうと更新するたびにいちいち申請が必要になり面倒です。この部分は別の部分で切り出して申請に関係なく自由に更新したいですよね。

通常のスキル開発ならロジックはLambda+Node.jsとかで実装して、データはS3とかDynamoDBを使うことになるわけですが、非エンジニアの方が簡単に更新できるか?とか、いつでもどこからでも更新できるか?ということを考えると、ちょっと辛い部分もあるのではないかと思います。その点、GoogleスプレッドシートならExcelとほぼ同じ感覚で使えますし、スマホなどからも更新ができて、とても魅力的ですよね。

ということで、エピソードの一覧を管理するシートはこんな感じになっています。

f:id:kun432:20190504095953p:plain

スキルから呼び出すと、この中からランダムにエピソードが選択されて発話されます。また、新しいエピソードがあればここにどんどん追加していくだけでコンテンツが更新されていくという感じです。

エピソードを2つに分けているのは、前半と後半に分けて「タメ」を作りたかったからです。「さ○ま御殿」のエピソード紹介をイメージしてもらうとわかりやすいと思います。上の例でいうと、「北のことを、」「・・(タメ)・・」「山側と言ってしまう。」って感じですね。

あと、統計的なデータを取っておけば後々なにか役に立つかも、ということで、「あるある」といった場合・「ないない」といった場合、それぞれの回数を記録するようにしています。ユースケースとしては以下のような感じに使えるのではないかと思ってます。

  • 「ないない」が多いエピソードは楽しくないので消したい
  • 「あるある」エピソードのベスト10を算出したい
  • あまり呼び出されていないエピソードを優先的に呼び出すようにしたい

ユーザの利用度管理

今回少し突っ込んでやってみたかったのはこれです。

f:id:kun432:20190504100042p:plain

ユーザごとに以下の情報を管理しています。

  • ユーザID
  • 初回利用日
  • 最終利用日
  • スキル実行回数
  • 「あるある」といった合計回数
  • 「あるある」「ないない」両方の合計回数

新規ユーザの場合は、各パラメータを初期化した形で新しく追加されます。既存ユーザの場合は、自分のユーザ情報が抽出されてスキルの中で利用され、スキル実行後に最新の状態が保存されます。

なぜこれを実装したか。

このスキルでは、あるあるを話してくれる、という機能の他に、神戸市民度の判定を行うという機能があります。この判定は、毎セッションごとに5個のエピソードのうち何個あるあるだったか?というところから判定します。ただし、セッション中だけの管理であれば変数で管理すればよいし、また、Voiceflowの変数はユーザごとにすべて「永続」扱いになっているので、例えばとあるユーザの過去のセッション全て含めた市民度というのも算出できちゃうので、いちいち外に切り出して管理する必要はありません。

ただ、この場合、すべてVoiceflowの中で処理されてしまうので、ユーザを跨いだ横断的な統計処理を行うことはできません。これを外に切り出すことで、以下のような情報を得られるのではないかというのが狙いです。

  • スキルの初回利用日から有効化数の推移を算出
  • スキルの実行回数ごとのユーザの分布
  • 総あるある率の高いユーザのベスト10

そして、こういうデータの解析は、ExcelGoogleスプレッドシートならお手の物ですよね。まだユーザ数が少ないのでアレですが、簡単なBIツールとして使えるし、こういう情報を活用することでスキルのグロースハック(大げさ)に繋げれるのではないかなと思っています。

あるあるエピソードの募集

今回、スキルの外側の部分で何かしら広がりを作れないか、ということで、あるあるエピソードを募集する仕組みを考えてみました。

登録しているあるあるエピソードはいろいろググったりして集めてきたわけですが、一人でやるのは限界がありますし、モチベーションも続きません。そこで、ユーザの皆様からエピソードを投稿いただければよいのではないか?ということで、Googleフォームを用意しました。

bit.ly

Googleフォームを使うと、フォームから投稿された内容をそのままGoogleスプレッドシートに追記することができます。追記先のシートを直接エピソード一覧管理シートに指定すれば、そのままエピソードが更新されていくということですね。ただ、現状は少しSSMLで加工が必要だったりするので、直接ではなくて一旦別のシートに保存して、更新があった場合はメールで通知されるので、その内容を踏まえてエピソードを更新するって感じで考えています。

Googleフォームへの誘導については、スキルの中から、初回利用時と一定利用回数ごとに以下のようなメッセージを流して、Alexaアプリのカードに誘導するようにしています。

最後にお知らせです。

神戸あるあるでは、皆様のあるあるなエピソードを募集しています。アレクサアプリを起動して、メニューからアクティビティを選択して、カードに表示されているURLにアクセスしていただくとエピソードの投稿ができます。よろしければぜひ投稿してください。

皆様の「神戸あるある」なネタ、お待ちしております!

カードはこんな感じです。

f:id:kun432:20190504120550p:plain

ただ、これ、非常に辛いのは、

  • AlexaアプリのカードにURLを含めてもリンクが有効にならない、、、
  • なのでコピペして貰うしかないのですが、コピペも効かない、、、
  • 短縮URLでできる限り短くはしました、、、

というところでして、、、さらに、そもそも現時点のVUIの課題として、レビューがされないというのがあるところに、さらに別の口を用意しても投稿が増えることは全く期待できないと思います。

画面付きデバイスQRコード表示するとかいろいろ考えてはみたものの、やはり音声でできるのが一番良いと思います。今後改善したいと思っています。(余談ですが、VoiceflowだとSearchQueryで発話をマルッと取ることができないので、何かしらサンプル発話のフォーマットが必要にはなります)

感想

Integration Blockを使うとちょっと凝ったスキルが簡単にできてしまうので、ハンズオン資料作るのも兼ねて実際にリリースまでやってみよう、というところからスタートしてます。が、作ってる最中に、こういうデータ取ったらいろいろ活用できるんじゃないか、みたいなアイデアがチラホラ出てきて、当初よりもだいぶやることが増えてしまい、すっかりハンズオン資料のことは忘れていました、、、

言えるのは、やっぱりデータベース的なものと連携させるとスキルの幅が広がります、それがGoogleスプレッドシートのような誰でも使えるものを活用できて、かつ、ノンコーディングでクリックしていくだけで使えちゃうというのは、ほんとVoiceflowの素晴らしいところです!スキルの中で直接使うデータはもちろんですが、今回のような統計的なデータの活用とかも、やろうと思えばできるということがは少しでも伝われば幸いかなと思います。

ただし、デメリットと言うか、辛いところもあります。

  • GUIで簡単にできるとはいいつつも、何個もIntegration Blockを用意して、いちいち設定していくのはやっぱり手間です。ブロックのコピペでできるんですけど、コピペして中身変えるとたまにおかしな動きする場合があったので、手間ですが確実にやるべくチマチマやってます。
  • 上と関係しますが、作ってからGoogleスプレッドシート側のシート名とかカラム名とか変えると、めちゃめちゃめんどくさいことになります。ある程度、名前は最初のうちに固めておいたほうがいいです。
  • Integration Blockで、Googleスプレッドシート側のデータを取得した後、各カラムごとに変数を用意してマッピングするのですが、この特性上、変数が多くなりがちで見通しが悪いです。ハッシュとか使えるともう少し見やすいんですが。
  • 上と関係しますが、Voiceflowの変数はすべて「永続」です。すなわち、一度でもスキルを起動した事がある場合は前のセッションで持っていた変数の値をそのまま引き継ぎます。スプレッドシートから取得すれば上書きされますけど、初期化すべきものについてはスキル起動直後に初期化しとくべきです。
  • デバッグやエラー処理が非常にやりにくいです。ログ機能のようなものはあるんですけどクリティカルなエラーしか記録されないので、APIのエラーとかはエラー時の分岐はできるものの、エラーが起きた理由がわかりません。Integration Blockを使えば使うほどエラーが起きうる場所が増えることになるので、このあたりはもう少し改善していってもらえるといいなーと。

こういった部分で注意は必要なものの、シンプルなスキルであればほとんど気にならないと思いますし、本当に簡単にできちゃうので、ぜひVoiceflowでスキル開発を始める方が増えればいいなーと思います。

今後の予定

ということで、ハンズオン資料については、GW中になんとか公開すべく、この後、作成します。。。

2019年4月の振り返り

f:id:kun432:20190428235220p:plain

4月の振り返りです。本当は平成最後のエントリにしようと思ってたけど、スキル開発が間に合わず、令和最初のエントリとなってしまいました、、、


資格を取る

  • AWS
    • 試験が4月終わりにずれ込んでしまったけど、無事デベロッパー・アソシエイト合格!
    • 次はAlexaスキルビルダーだけど、しばらくはスキル開発とか中心にしたいので、資格系はお休み予定。
  • GCP
    • はてなんのことやら😆って感じで、目的見失ってるのでちょっと置いとくことにする。
    • Cloud Study JamsとML Study Jamsパート2を暇を見つけてやってみて、あとはGoogle Home向けアクションを作る気になったら考える。

毎月一個、テーマを持ってスキルを作る

  • やべえ、、、全然作ってない、、、というのに気づいたのが2日前、なんとか申請まではと思い必死で作るも、間に合わず、、、
  • これはカウントし、、、ないよなー、申請してないし。
  • とりあえず、Voiceflowの新しい機能であるIntegration Blockをガンガン使ったスキルをGW中にはリリースしたい。かつ、ハンズオン資料もあわせて作りたい。 → 追記:2019/5/4 リリースしました。 Alexaスキル「神戸あるある」をリリースしました - kun432's blog
  • しばらくはVoiceflowのプラン改定でアンロックされた、いろんな機能を色々試す予定

アウトプット

LT

  • AAJUGでLTしてきました。AAJUGでの初LT!

社内勉強会

  • 4月はいろいろあって開催できず。
    • GW明けに第3回開催予定。
    • 過去2回でスキル開発の流れは理解いただいたと思うので、実際に社内で使えるスキル作って社内で設置して利用してみようという今度はワークショップ型で。blueprints使っても良いかも。
    • 動くものを実際に見ると偉い人が多少なりとも興味を示すだろうという目論見。

ブログ

5件書きました。

その他

イベント

今月もいろいろ行きました。主催者ならびに登壇者、参加者の皆様、ありがとうございます。特にAlexa Dayは楽しかった!


5月もがんばります、ということで告知です。

5/14 AAJUGあります。テーマは、公開企画会議ということで、今後のイベントをみんなで考えよう、といういつもと違う形式です。会場は十三コワーキング様ということで、梅田から二駅なら会社帰りに気軽に寄れますね!遠方の方はオンラインもありますので、こちらも気軽に参加できますね!今回は受付等でお手伝いします。お時間合えばぜひご参加ください〜

あと、スマートスピーカーミーティング、次回は少しずれて6月の頭の予定だそうです。6月以降ちょっといろいろありましてまだわからないのですが、全力で参加する方向で調整します!お時間合えば是非ご参加ください〜、いろいろ話しましょう!

令和もよろしくお願いします。

AWS認定デベロッパー・アソシエイトに合格した

f:id:kun432:20190430190340p:plain

追記:2019/4/30 スコアレポートが反映されたので更新

2019年の目標とやりたいことに書いていた、AWS認定デベロッパー・アソシエイト認定、本日無事に合格したということで、どういう勉強したかを残しておきます。参考になれば。

AWS認定の遍歴

  • 2014年 AWS認定ソリューションアーキテクト・アソシエイト、SysOpsアドミニストレータ・アソシエイト、共に合格
  • 2016年 両方とも再認定に合格
  • 2018年末 ソリューションアーキテクト・アソシエイト再認定に合格、SysOpsアドミニストレータ・アソシエイト再認定は不合格
  • 2019年2月 SysOpsアドミニストレータ・アソシエイト再認定に合格
  • 2019年4月 デベロッパー・アソシエイト認定、合格 ← 今回

スペック

  • ISPのインフラエンジニア、サーバ(Solaris/Linux)がメイン。キャリアだけは長い。メールとかDNSとかRadiusとかをオンプレのデータセンターで面倒見てました。LPIC Level3保持。
  • FW/L2SW/L3SW/LB/VPN/SAN/NASとかデータセンターにありそうなものは一通り触ってます。
  • 仮想化レイヤーはあまり触ってません。Solarisコンテナでローコストな検証環境作ったぐらい。
  • クラウドは、AWS/GCPともにプライベートで多少いじるぐらいで業務経験ゼロ。
    • Alexaスキル作るようになってからは結構AWS触ってるけど、正味ここ1年ぐらい。
    • GCP認定プロフェッショナルクラウドアーキテクト持ってるけど、今振り返ってもなんで受かったのかわかんない。

勉強方法

前回のSysOps再認定で学んだ、昨年の改訂で大幅に内容が変わったということを踏まえて、今回は事前に出題範囲をきちんと確認しました。ソリューションアーキテクトあるから大丈夫だろ、ってのはもう通用しないことを前回学びました。

さらに、海外の有名なAWS認定の出題ポイントをまとめられているJayendraさんのブログでも出題範囲を確認しました。

実際の学習は、Udemyのデベロッパー・アソシエイト対策講座です。普通に買うとお高いですが、セールで買うと1800円とかでよくセールやってるので、そのときに買えばよいです。下手に試験対策本買うより安いし(といっても、デベロッパー・アソシエイト対策本はないのですが・・・)。これを通勤時間にずっと見て、触ったことのないサービスとかあまり自信がないサービスだけ一通り手を動かしてみた、って感じです。

基本的にこれだけです。ただ、Jayendraさんのブログで書かれているけどUdemyでカバーされてないもの、が結構あるので、それらは個別に確認してます。あと、ソリューションアーキテクトやSysOpsと試験範囲がかぶってるところもあるので、ソリューションアーキテクト・アソシエイトはやっぱり基本かなぁと思います。

試験

毎度のことですが、試験内容については触れません。ただ、個人的に普段からバリバリコード書く仕事してるわけじゃないんで、デベロッパーならではの問題ってどういうものかも想像つかない中で、どこまでやればいいんだろう?っていうのがキツかったですね。SysOpsの時も、AWSならではの運用、ってのは確かに経験ないと難しいなぁと思ったけど、まだインフラエンジニアとして分かる部分はあったので、その意味では今回が一番難しかったと思います。

まだスコアレポートもらってないのでわかりませんけど、合格はできたものの、正直見たくないなーって感じです、、、

追記:2019/4/30 スコアが反映されたので更新

思いの外、点数取れてたのでホッとした。ただ、内訳見るとモニタリングが一番取れてないし、過去のスコアの順でいうとSAA>DVASOAって感じで、SOAが一番点数取れてないのはインフラエンジニアとしてどうかと思う、、、

今後

次はAlexaスキルビルダー認定の取得に向けて進みたいと思いますが、認定資格取得向けの勉強はしばらくお休みして、当面はAlexaスキル開発に集中してやっていこうと思っています。Voiceflowのハンズオン資料も作りたいですしね。

GCPは、、、、Google Home向けのアクションを作る気になったら考えよう。