2018年を振り返って
さて、2018年の大晦日です。年々時間がすぎるのが早くなってる気がして、今年にあったことなのか昨年にあったことなのか だんだんわからなくなってきましたが、なんとか思い出して今年2018年を振り返ってみます。 娘が5歳になりました 早いもので、我が娘は5歳になりました。  幼稚園の年中さんになり、昨年よりも風邪引いて高熱出す頻度…
さて、2018年の大晦日です。年々時間がすぎるのが早くなってる気がして、今年にあったことなのか昨年にあったことなのか だんだんわからなくなってきましたが、なんとか思い出して今年2018年を振り返ってみます。 娘が5歳になりました 早いもので、我が娘は5歳になりました。  幼稚園の年中さんになり、昨年よりも風邪引いて高熱出す頻度…
macOS Mojaveでは、スクリーンショット撮影が機能強化されています。それは、Command + Shift + 5 を押すことでわかると思います。 また、スクリーンショットを撮った際に、右下にプレビューが表示されます。これにより、スクリーンショットの撮影に成功したか どうかをすぐに確認することができます。 が、このプレビュー機能、残念ながら僕にとっては「不要と思わざるを得ない」機能です。もちろん、プレビュー機能自体は良いと 思…
9月19日と20日は、Google Cloud Next Tokyo 2018 が開催されました。僕は Community Booth というところで、Google アシスタント 関連の相談に答えるべく2日間そこにいました。しかし、実際には Google アシスタントに関する相談はほとんどなく、その代わりに 「コミュニティって、なに?」っていう質問を多く受けました。 もう10年以上、開発者コミュニティというものに参加したり主催したりし…
Googleアシスタントの利用用途は多岐にわたります。その中には、誰が利用しているのか、それをはっきりさせることで、高度なパーソナライズやサービスの提供をすることができるようになることも多いかと思います。ネットサービスのほとんどが、ログイン、つまりユーザ認証を求めてくることは誰しもが実体験していることですが、Googleアシスタントにおいても、アクションを提供する上でユーザ認証は非常に重要です。そして、そのユーザ認証のためにユーザが行う…
Googleアシスタント向けに、Actions on Googleというプラットフォームを使うことで、開発者が独自に機能を拡張することができます。この「機能 を拡張する」ということについて、「アプリを開発する」と表現するのか、「アクションを開発する」と表現するのか、今まで実ははっきりとしていません でした。おそらく人によって「アプリ」と言ったり「アクション」と言ったり違いがあったでしょうし、文脈によって使い分けている人もいたかと思います…
世の中AI全盛な昨今ですが、チャットボットや会話型アプリを開発するためのツールやウェブサービスが次々と登場しています。その中には、 一般的に難しいとされるプログラミングを行うことなく、GUIをいろいろ操作していけば開発できますよ、というものも少なくありません。 [Converse AI](http://www.converse.ai/) は、そんなウェブサービスの中の一つです。ここでは、Converse AIを使ってGoogleアシスタ…
There are many apps in the world. Currently, most apps have a graphical user interface. But, most developers have a problem how to test the user interface. Especially, it is difficult to do an End-to-End test for GUI app…
世界には、多くのアプリがあります。現在、そのほとんどは、グラフィカルユーザインタフェースを有しています。しかし、ほとんどの開発者は、 どのようにそのユーザインターフェイスをテストすれば良いか、という問題を抱えています。特に、GUIアプリのEnd-to-Endテストは難しいです。 End-to-Endテストを行うためのいくつかのソリューションが提供されていますが、End-to-Endテストは情報産業において大きなテーマです。 Googl…
Since starting the Actions on Google, developers can use an Anonymous User Identity feature. [Anonymous User Identity](https://developers.google.com/actions/identity/user-info) - Actions on Google document Developers c…
Actions on Googleの開始以来、開発者は匿名ユーザID機能を使うことが可能です。 [Anonymous User Identity](https://developers.google.com/actions/identity/user-info) - Actions on Google document 開発者は、ユーザをトラックするためにこの機能を使うことができます。具体的には、ユーザがアクションを利用する際に、A…
6月14日に、 [Leon Nicholls](https://plus.google.com/u/0/+LeonNicholls) は、 ko-KR を除く全ての Actions on Google の ロケール向けに、Media responses がサポートされたことを G+ 上でアナウンスしました。 Media Response Update: [https://plus.google.com/u/0/+LeonNicholl…
On July 14th, [Leon Nicholls](https://plus.google.com/u/0/+LeonNicholls) announced on G+ that Media responses are now supported for all Actions on Google locales except for ko-KR. Media Response Update: [https://plus.go…
僕以外の Assistant GDE に教えてもらった素晴らしいサービスがあるので、ちょっと紹介してみたいと思います。 今年のGoogle I/O 2018では、Googleアシスタントを利用可能なデバイスが世界には既に5億台あることがアナウンスされました。 5億台と聞くととても多い印象がありますが、本当に世界中を5億台で網羅できているかというと、残念ながら違います。 Googleアシスタントだけではなく、そもそもインターネットがまだ…
I would like to introduce the story here, because I heard the great service this morning from some other Assistant GDE. In the Google I/O 2018 this year, it was announced that there are already 500 million devices which…
In developing apps for Google Assistant, the actions-on-google-nodejs SDK is a tool hard to replace. The format of requests and responses on Actions on Google platform and Dialogflow is a JSON. The JSON format has many p…
Googleアシスタント向けアプリ開発で欠かせないものの一つに、SDKがあります。プラットフォームであるActions on Googleや DialogflowからのWebhookのリクエストとレスポンスはJSON形式なのですが、その項目数も多く、手で扱うにはなかなかしんどい ものがあります。actions-on-google-nodejsは、Webhookを受け取って必要な処理を手軽に書くことができる便利機能を数多く 提供してくれる…
Google I/O 2018が終わりました。いやー、非常に多くの新しいことが発表されましたね。多すぎて圧倒されていますが、 しっかりとキャッチアップしていかなければなりません。 Googleアシスタントアプリとして、特に会話型アプリを開発する際に、Dialogflowは非常に強力なツールとなります。特に、自然言語処理を Dialogflowに完全にお任せできることは、とても嬉しいことです。これにより、会話の中でユーザの意図をしっかり…
現在Google I/O 2018が開催されています。既に2日目が終わっていますが、例年このI/Oのタイミングに合わせて数多くの新しいことが登場します。 もちろん、Googleアシスタント関連でも、多くの発表がありました。 Keynoteを見ていた方は、Google Duplexでのあの「人間と機械の会話」にびっくりしたと思います。もう、人間の会話力の方が低いのでは?と 言わざるを得ないデモでしたね。下にある動画で、その会話のデモを実…
2017-2018年のスキーシーズンが、4月21日で終わりました。今シーズンは、結構回数行った方かな。 [NASPAスキーガーデン](http://naspa.co.jp/ski/) に2回。 [舞子スノーリゾート](https://www.maiko-resort.com/winter/) に3回。 [たんばらスキーパーク](https://www.tambara.co.jp/skipark/) に1回。 12月は1回も行っ…
4月23日に、Google Developers Expert の選考プロセスを無事通過して、Assistant 担当 GDE として活動していくことになりました。 2008年に当時の Google API Expert の OpenSocial 担当として、2013年からは現行の Google Developers Expert の Web Technology 担当として活動してきました。今回の承認によって、Web Techn…
Transactions APIを使うことで、Googleアシスタントアプリに購買や予約と行った機能を組み込むことができます。 しかし、いくつかの手順、いくつかのインテント、いくつかのイベント、そしていくつかのデータ構造があるため、 Transactions APIの利用方法を理解することは難しいかも知れません。つまり、複雑なのです。 幸いなことに。Transactions APIをより簡単に理解するためのサンプルコードセットがありま…
You can integrate a purchase and reservation feature with your Google Assistant App using the Transactions API. But, you may not understand the usage of the Transactions API, because there are some steps, some intents, s…
今年は、Googleアシスタントアプリの開発に関して、世界中で活発に様々な活動が行われています。その中でも、Build Actions for Your Community という取り組みは、世界中で同時期に行われている、非常に大きな活動です。 [Build Actions for Your Community イベントサイト](https://developers.google.com/events/buildactions/) …
Transactions APIを利用して、Googleアシスタント向けアプリに対して、購買や予約などの機能を組み込むことができるようになりました。手順としては少し多めで複雑ですが、一般的なそのようなトランザクションを扱う際の組み込み方と、そう大差はありません。既に何らかのECや予約サイトなどを運営されている方は、ぜひGoogleアシスタント向けアプリを開発し、Transactions APIを使った購買、予約機能の組み込みを検討してみ…
Googleアシスタントは、もはや多くのユーザの側にいます。Android端末をお持ちであれば、Googleアシスタントが毎日手の中にいることになりますし、Google Homeを家に置いている方々についても、常に家族の一員としてGoogleアシスタントが側にいます。そんな相棒が、商品の購入や予約をしたいと思った際にも、自然な形でサポートしてくれたら、それは素敵な未来だと思いませんか?でも、未来ではなく、もう既にやってきました。日本語環…
Actions on Googleでは、スマートホームアプリを開発することができます。これは、会話によって何かユーザに価値をもたらす会話型のアプリとは開発手順が違ってきます。 Actions on Googleのドキュメントにある [Smart Home - Create a Smart Home App](https://developers.google.com/actions/smarthome/create-app)にて、 ス…
Actions on Google上で登録し開発したスマートホームアプリは、もちろんテストが行われた後に、公開されることになります。テストは、一人だけで行うのではなく、複数のメンバーによって行われるかも知れません。Actions on Googleでは、公開前の複数人によるテストもサポートされています。そして、テスト項目も[決められていて](https://docs.google.com/spreadsheets/d/1n6iOOX6j…
Googleアシスタント向けアプリとして、会話側のアプリの他に、スマートホーム向けの各種デバイスを操作することを目的とした、昔「ダイレクトアクション」と 呼んでいたアプリの形態があります。今では「スマートホームアプリ」と呼びます。 Actions on Googleのドキュメントにある [Smart Home - Overview](https://developers.google.com/actions/smarthome/)にて…
Googleアシスタント向けアプリを設計する上で、VUI(Voice User Interface)の理解がとても重要になります。GUIのように数多くのUIが組み合わされて UXが決まっていくことに対して、VUIはあくまで「対話」がUXを決定します。基本的には視覚的な情報が一切ない状態で、自然言語を使った会話によって目的を 達成しなければならないため、GUIとは全く違った設計手法が必要になってきます。 以前、Googleアシスタント向…
Googleアシスタント向けアプリにおいて、そのアプリマーケットが今後活性化するかどうかを決定するであろう重要な要素に、「購入」という機能をあげることができると思います。エコシステムが機能するためには、ユーザとアプリ開発者の間で利益の交換が正しく行われなければなりません。もちろん、VUI(Voice User Interface)の分野において、ユーザが何かを購入するための安全なフローは、まだ確立されていないと言って良いでしょう。しかし…
Googleアシスタント向けアプリにおいて、ユーザ認証は非常に重要な機能となります。特に、アシスタント向けアプリの開発者が持つサービスのアカウントとのリンクについてが重要であり、これはアカウントリンクという仕組みで実現されます。それにはOAuth 2.0のフローが適用されるため、もしOAuth 2.0についての知見があれば、スムーズにその仕組みを理解し実装することができると思います。 Actions on Googleのドキュメントに…
Googleアカウント向けアプリでは、Googleアシスタントを利用している際のGoogleアカウントと、アシスタント向けアプリの裏にあるサービスでのアカウントとを紐付けるための仕組みが提供されています。これは、アカウントリンクと呼ばれ、その仕組みはOAuth 2.0をベースに組み立てられています。 Actions on Googleのドキュメントにある [Account Linking - Implementing Account …
Googleアシスタント向けアプリでは、開発者が持つサービス側のアカウントと、アシスタント向けアプリを利用する際のGoogleアカウントを、互いに紐付けることをしたくなるはずです。これにより、パーソナライズがさらに加速すると共に、元々開発者が持っていたサービスをアシスタント向けアプリ経由でユーザが利用することができるようになります。このアカウントの紐付けを「アカウントリンク」と呼び、それには「シームレスなアカウントリンク」と「従来のリン…
Googleアシスタント向けアプリでは、そのアプリを利用するユーザの情報を利用したくなる時があります。それは、名前や住所などです。それらを使うことで、よりパーソナライズされた機能を提供することができるようになります。 Actions on Googleのドキュメントにある [Identity - User Information](https://developers.google.com/actions/identity/user-…
gitで何かコードを修正してmasterに反映するには、以下のようなことをすると思います。 1. git checkout -b fixfoobar 1. コード修正 & git add ... & git commit 1. git push origin fixfoobar 1. GitHub上でPull Request作成 & masterにマージ ここまでで、「よし、作業終わった」と一段落を迎えるのですが、GitHub上は良…
2015-16シーズンに「ATOMIC BLUESTER LC 3.0 172cm」を買って、それ以来大回り〜中回りばかり滑ってきました。スキーを始めてもう25年以上経つけど、小回りにはある程度自信あっても、大回り〜中回りは本当に苦手でした。スピードが出れば出るほど「もうどうしていいかわからない」状態になってしまうし、切り替え直後に板が谷回りしてくれずに「2段ターン」になってしまうことも多く、本当に苦手意識しかなかったです。が、しかし、…
今週、Googleアシスタント向けアプリに新しいアプリを公開しました。その名も、「[勉強会検索](https://assistant.google.com/services/a/uid/000000128bf4348f?hl=ja)」です。  このアプリは、[connpass API](https://connpass.c…
Googleアシスタント向けアプリを開発する際には、多くの場合フルフィルメントを準備するためにプログラミングが必要になります。フルフィルメントを開発し運用するために、Firebaseは最も手軽かつ強力な武器となります。 Actions on Googleのドキュメントにある [Fulfillment - Firebase Services](https://developers.google.com/actions/tools/ass…
Googleアシスタント向けアプリによってユーザに提供される会話のUIは、比較的歴史が浅く、まだまだ新しい分野です。今後使いやすい会話型UIとは何かが研究され、そして多くの開発者に広まっていくことでしょう。ただ、現時点でも、明らかに気をつけておくべきことはいくつかわかっています。 Actions on Googleのドキュメントにある [Conversations - Best Practices](https://developer…
昨年末に、[OneDriveとWevDAVのChromeOS向けFile System Provider実装のメンテナンスをやめます](https://www.eisbahn.jp/yoichiro/2018/01/stoptwofsps.html)というエントリをポストしました。これは、過去に5つ作ったChromeアプリのうち2つをもうメンテナンスせずに、Chromeウェブストアからも非公開にする、つまりオワコンにしますよっていう宣言…
Googleアシスタント向けアプリを開発している中で、「あ、この情報欲しいな」と思うことがあります。それは、ユーザの氏名だったり、 住所だったりです。また、ユーザにGoogleサインインしてもらって、その結果のアクセストークンを得たいこともあるでしょう。そのような 情報を入手するために、Actions on Googleは共通的な機能を提供しています。それらを「ヘルパー(Helpers)」と呼びます。 Actions on Googl…
VUI(Voice User Interface)において、ユーザがアプリをいつでも終わることができる、ということが結構重要だったりします。 会話を終えるためのことをユーザが明確に言うこともあるでしょうし、いつの間にかユーザが何も言わなくなっていることもあるでしょう。 少なくとも、ユーザが明確に会話を終了させようとしてきた時には、それをフルフィルメントにて受け取り、適切な後処理を行うことができます。 Actions on Google…
Googleアシスタント向けアプリを呼び出すための方法は、明示的な呼び出し(Explicit Invocation)と、暗黙的な呼び出し(Implicit Invocation) の2種類があります。「ユーザがどのようにコンタクトを取ってくるか」を十分に考えることで、これらの呼び出しに関する設計も洗練されてくるはずです。 Actions on Googleのドキュメントにある [Invocation and Discovery - C…
Googleアシスタント向けアプリの明示的な呼び出しには、ユーザは事前にそのアプリ名を知っていなければなりません。もちろん、既に そのアプリを利用した経験があって名前を知っていれば、アプリ名を使って直接呼び出すことができるため、非常に明確です。しかし、 ユーザがまだアプリ名を知らない際には、ユーザができることは「何をしたいのか」を表明することだけです。そこで、アシスタント向けアプリ では、「何ができるのか」を予めActions on G…
Googleアシスタント向けアプリを利用するユーザにとって、それらは目に見えないものです。ユーザの目の前には、Googleアシスタントのみが 見えていて、その向こうにはどのようなアプリがいるのか、アプリのディレクトリページに行かない限りわかりません。Googleアシスタントとして 本質的なことは、アプリを発見してもらうことではなく、ユーザがやりたいこと、達成したいことを満たしてくれるアプリが適切に呼び出されるか どうか、ということです。…
Googleアシスタント向けアプリのアプリ名をユーザが知っている場合は、ユーザはそのアプリ名を使ってそのアプリを呼び出すことができます。 これを明示的な呼び出し(Explicit Invocation)と呼びます。その際、例えば 「オッケーグーグル、マイレシピアプリで 今日のスープレシピについて教えて 」というように、アプリに対して呼び出しと意図を同時に ユーザが伝え、そのことをアプリが受け取ることができます。こうすることで、ユーザがア…
Google Cloud PlatformにあるCloud Functionsは非常に強力です。Node.JSベースのJavaScriptで書かれた関数をCloud Functionsにデプロイするだけで、 あら不思議、スケールするAPIのエンドポイントが出来上がってしまいます。 例えば、以下のようなコードを書いて、 これをgcloudコマンドでデプロイするだけで、 curlコマンドで、 と返事をしてくれるでしょう。…
Googleアシスタント向けアプリがGoogleアシスタントに応答する際に、Google Homeを想像すると、文章のみを応答として返して それがGoogle Homeによって発話される、となると思います。しかし、サーフェスとして音声だけでなく画面も想定されています。 つまり、アシスタント向けアプリの応答は、単純なテキストだけではなく、もっとリッチな応答も返すことができ、それはサーフェスと して画面をサポートしていれば、視覚的にリッチな…
昨年末に、自作のGoogleアシスタント向けアプリ「イートアンドバイト」を公開しています。簡単な3桁の数字を あてるゲームなのですが、アシスタント向けアプリの開発から審査、公開、運用を一通り体験するためには手頃な サイズでした。Google HomeやAndroidのGoogleアシスタントなどに対して「イートアンドバイトにつないで」 と話しかけることで遊べますので、ぜひ試してみてください。 さて、審査を無事通過してアシスタント向けア…
ユーザは気まぐれです。アプリ開発者の想定通りに会話をしてくれることは、むしろ希です。何らかの割り込みが入れば、 ユーザは会話を途中で放棄してしまうことも多々起き得ます。こういった事態にも、アシスタント向けアプリは備えておかなければ なりません。ユーザが一定時間発言をしなかった際に、アシスタント向けアプリはユーザに何度か問いかけることができます。この 問いかけのことを、再プロンプト(Reprompts)と呼びます。 Actions on…
Googleアシスタントは、「音声のみ」「画面のみ」「音声と画面の両方」のいずれかをサポートしたデバイス上で動作することが想定されています。 これらの種別のことを「サーフェス」と呼んでいて、サーフェスが違えば、アシスタント向けアプリが応答可能なメッセージも変わってきます。 Actions on Googleのドキュメントにある [Conversations - Surface Capabilities](https://develop…
今日、ChromeOS向けに公開していたFile System Provider実装のうち、2つのメンテナンスをもう続けないと決めました。 OneDrive WebDAV 理由は、それらのアップデートをするための十分な時間を確保することができないことです。僕は全部で5つの実装を開発し、メンテナンスしてきました: Dropbox, SMB, SFTP, OneDrive and WebDAV。でも、メンテナンスを続けることは難しい…