なんも分からないのでしらべたスマートフォン用の表示で見るなんも分からないのでしらべたなんもわからん!...ので、できる範囲で調べる。この広告は、90日以上更新していないブログに表示しています。2018-07-01GoogleHomeで複雑な手順を通知する方法の検討(雑記)GoogleHome手順が複雑な操作が必要なものについて、音声のみのガイダンスで目的を達成しようとするとなかなか難しい。メラビアンの法則によると、純粋な話し言葉の要素だけで相手に伝わる情報量(影響度?)は7%程度らしい。GoogleHomeにて複雑な操作を実現する際にのアプローチはどんなものがあるか検討する。ピラミッド型会話モデルで目的を達成する通常の会話処理をそのまま複数回にわたって、ユーザーとやり取りし、目的を達成する。いわゆるアーキネーターのような感じ。理屈ではどんなことも実現できそうだけど、何段階目かの会話でユーザーが嫌になりそう。VUIエンジニアが、嫌にならないような会話の組み立て方を行うことで、ストレスなく実現できる?疑問。表示可能なデバイスと連携し、複雑な手順を表示する表示情報に頼る。モニター付きスマートスピーカーを利用するorスマートフォンなどに通知を飛ばし処理を引き継ぐ。音声のみ比べて多く情報を表示でき、選択結果の受け取りをまた会話にすることができればかなり複雑なことに対応できる。ユーザーアカウントに紐づいたメールアドレスに複雑な手順を記載する音声でGoogleアカウントにサインインできるため、サインイン情報を取得し、ユーザーのメールに詳細情報などを記載する。実際には案2とやってることはほぼ同じで、シームレスさが落ちるため実装としてはあまり良くない。挙げるなら、スマートフォンを持ってない人へも対応できる点がメリットか?でも設置のためにスマートフォンがそもそも必要なような...。案がそんなにあげられなかったので、既存アプリの調査結果を記事に反映させる。メモGoogleのガイドラインによると、ユースケースとしてそもそもVUIに適切かを検討する必要がありそうだ。https://developers.google.com/actions/design/principles#_2機械的に延々とリストの内容を読み上げたりするとか、多くの選択肢を説明してその中から一つ選んで下さいとか言われても、人間には対応できない。そのため、VUIではシンプルな処理しか対応すべきでないか?というと、多分そうでもない。あらゆる操作の入口として会話からスタートする、というアプローチはあっていいと思う。"Assistant"というように、それ自体は実処理をせず、何かしらの高度な操作・情報へのアクセスへの橋渡しとして働かせることが本来に近いのかもしれない。するとVUI専用アプリを作成して何かしますよ、というのは一時的なものなのかもなあと感じる。06:00広告を非表示にするもっと読むコメントを書く2018-06-30ChromeExtensionのメッセージ通信にchrome.storageを用いる案プログラミングChromeExtensionの設計において、popup-background間のメッセージ通信はchrome.runtime.sendMessageを利用する。scriptに対しては、chrome.tabs.queryを利用する。これらの通信方式の別案として、chrome.storageを使った通信方式ができるのではないかと考えたので記事にする。chrome.storage.onChanged.addListenerという関数があり、これはstorageのデータ変更を監視できる関数だ。通信を送る側は、メッセージ内容をstorageに保管する。受信側は、リスナーが反応して、storageの中身であるメッセージ内容を取り出す、というイメージだ。storage通信を行うメリットとしては、Extensionのパーミッション設定レベルを下げることができる点だ。chrome.tabs.queryを利用した通信では、パーミッション設定としてmanifest.json上のpermission項目にtabsを追加する必要があるが、これを付与した場合、Extensionインストール時の警告として若干キツメの文言が出てしまう。*1一方、storage通信ではtabsパーミッションが不要となるるため、警告内容がマイルドになり、インストール時のユーザー離脱を減らせる...かもしれない。Chrome参考ChromeExtensionのメッセージ通信についての解説var.blog.jpタブ通信方法などy-anz-m.blogspot.comChromeStorageについての分かりやすいまとめqiita.com終わりに本来のstorageの使い方ではないので、多用するようだとあんまり良くないことも起こりそう。データ保存にstorageを多用するExtensionだと、メッセージ通信・非メッセージ通信(本来のstorageの用途)の分岐処理の実装などが必要となる。作業していてふと思いついたので記事として残しておく。Functionsにてasia-northeast1リージョン(東京リージョン)が使えるようになったようだ。fishさんが早速試していた。us-centralと比較すると平均2倍くらい速いレスポンス。初回リクエストに関しては10倍くらい違った。Functionsもキテルのかなと思ったが、全然そんなことはなかった。(既存はus-central1だが、新規プロジェクト立ち上げてリージョン指定してもそのままだった...)一応現時点でも、Fullfillment指定をGCPにして応答を返すようにすれば、GoogleHomeアプリへ速度的な恩恵を受けることができると思う。start速いよとの記載があるので、トータル速度的には結構有利になりそうだ。matthewayne.com応答速度で壁になってるアプリがあればこれで突破できるかもしれない。性能評価しようか悩んだが、firebaseでもそのうちリージョン対応しそう。(そのうちがいつなのかは分からないが...。storeの検索への反映が遅い件についてプログラミングChromeExtensionを作成し、一般に公開した。公開されましたと表示されたが、検索Boxにアプリ名を入れても一向にHitせず非常に焦る。調査した所、検索用のindex作成がかなり時間かかるようで気長に待てとのことのようだ。実際、自分のアプリも2日程度経過したら反映された。急いで公開する場合などは、あらかじめマージンを取る必要がありそうだ。一度公開されれば、verup等を行っても検索によるアプリの表示には影響が無いようだ。22:18広告を非表示にするもっと読むコメントを書く2018-06-29GoogleHomeから会話中にスマートフォンに通知を送る方法GoogleHomeGoogleHome「細かい情報はスマフォに送るね」をやりたい。v2になり日本でも対応できるようになった。詳細な記事をQiitaに投稿した。qiita.comご参考にどうぞ。以下は以前の内容の古い内容。22:12広告を非表示にするもっと読むコメントを書く2018-06-29Chromeでのjavascriptの制約について(未解決)プログラミングChromeにて、requestFullscreen(最大化の実行)をjavascript経由で実行すると怒られた。ログには以下の警告が出ている。gesture.あまり見慣れないエラー。javascript固有の問題かと思ったけど、むしろChrome固有の仕様のようだ。公式リファレンスが見当たらなかった。調べた感じだと自動再生ポリシー関連だと思うが、確度無し。requiredを選択するが、やはり解消されない。自動再生ポリシーに直接関与してないようだ。終わりに断片的な情報によるとChromeでのブラクラや悪意のある広告への対策の仕様のようで、他のブラウザでは実行可能らしい。MDNでもあまり触れて無い感じで、こういう情報をあらかじめ知るにはどうしたらいいんだろう、という感じで調査終わる。非同期処理の書き方(雑記)GoogleHomeインテント受け取り後に、非同期処理をPromiseチェーンで処理を書くと、下記のエラーが出てどうにも動かない。短いコードでも動かなかったので何だこりゃと思って調査した。原因Google公式によると、v2での非同期処理はインテントハンドラに返さないとダメということだ。handler.(さらに、非同期タスクにはライブラリ内の組み込みの直接サポートが追加されました。非同期タスクを実行するには、インテントハンドラにPromiseを返す必要があります。)くそー、何回も読んだページだけど、全然理解して無かったということか...。'アプリに問題が発生しました。後ほどもう一度お試しください。