2018年を振り返って

さて、2018年の大晦日です。年々時間がすぎるのが早くなってる気がして、今年にあったことなのか昨年にあったことなのか だんだんわからなくなってきましたが、なんとか思い出して今年2018年を振り返ってみます。 娘が5歳になりました 早いもので、我が娘は5歳になりました。 幼稚園の年中さんになり、昨年よりも風邪引いて高熱出す頻度が減った気がします。その結果、親に風邪が伝染る頻度も減って、 楽になりました。 5歳になって、一人でできることも格段に増えて、スキーでも緩斜面ならハの字で滑...

macOS Mojaveのスクリーンショット撮影のプレビューを無効にする方法

macOS Mojaveでは、スクリーンショット撮影が機能強化されています。それは、Command + Shift + 5 を押すことでわかると思います。 また、スクリーンショットを撮った際に、右下にプレビューが表示されます。これにより、スクリーンショットの撮影に成功したか どうかをすぐに確認することができます。 が、このプレビュー機能、残念ながら僕にとっては「不要と思わざるを得ない」機能です。もちろん、プレビュー機能自体は良いと 思うのですが、この機能によって僕の使い方に不都合が出てき...

我々はなぜコミュニティをやっているのか?

9月19日と20日は、Google Cloud Next Tokyo 2018 が開催されました。僕は Community Booth というところで、Google アシスタント 関連の相談に答えるべく2日間そこにいました。しかし、実際には Google アシスタントに関する相談はほとんどなく、その代わりに 「コミュニティって、なに?」っていう質問を多く受けました。 もう10年以上、開発者コミュニティというものに参加したり主催したりしてきて、「コミュニティ」というものが既に僕の中で 当た...

Google Sign-In for the Assistantが日本語でも利用可能になりました

Googleアシスタントの利用用途は多岐にわたります。その中には、誰が利用しているのか、それをはっきりさせることで、高度なパーソナライズやサービスの提供をすることができるようになることも多いかと思います。ネットサービスのほとんどが、ログイン、つまりユーザ認証を求めてくることは誰しもが実体験していることですが、Googleアシスタントにおいても、アクションを提供する上でユーザ認証は非常に重要です。そして、そのユーザ認証のためにユーザが行う手順が簡単であればあるほど、ユーザ認証してくれる可能性...

Actions on Googleの用語集です

Googleアシスタント向けに、Actions on Googleというプラットフォームを使うことで、開発者が独自に機能を拡張することができます。この「機能 を拡張する」ということについて、「アプリを開発する」と表現するのか、「アクションを開発する」と表現するのか、今まで実ははっきりとしていません でした。おそらく人によって「アプリ」と言ったり「アクション」と言ったり違いがあったでしょうし、文脈によって使い分けている人もいたかと思います。 長らく「どっちなんだ問題」としてふわふわしていまし...

Converse AIを使ったGoogleアシスタント向けアクションの開発

世の中AI全盛な昨今ですが、チャットボットや会話型アプリを開発するためのツールやウェブサービスが次々と登場しています。その中には、 一般的に難しいとされるプログラミングを行うことなく、GUIをいろいろ操作していけば開発できますよ、というものも少なくありません。 Converse AI は、そんなウェブサービスの中の一つです。ここでは、Converse AIを使ってGoogleアシスタント 向けアクションを開発するための手順を紹介したいと思います。 アクション作成手順が以前と変わってる ...

Googleアシスタント向けアプリのEnd to Endテストライブラリの使い方

世界には、多くのアプリがあります。現在、そのほとんどは、グラフィカルユーザインタフェースを有しています。しかし、ほとんどの開発者は、 どのようにそのユーザインターフェイスをテストすれば良いか、という問題を抱えています。特に、GUIアプリのEnd-to-Endテストは難しいです。 End-to-Endテストを行うためのいくつかのソリューションが提供されていますが、End-to-Endテストは情報産業において大きなテーマです。 Googleアシスタント向けのアプリを開発している全ての開発者に...

How to use the End-to-End testing library for Google Assistant apps

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 apps. Some solutions to do the...

Googleアシスタント向けの匿名ユーザIDが非推奨になります

Actions on Googleの開始以来、開発者は匿名ユーザID機能を使うことが可能です。 Anonymous User Identity - Actions on Google document 開発者は、ユーザをトラックするためにこの機能を使うことができます。具体的には、ユーザがアクションを利用する際に、Actions on Googleによって そのユーザ向けに匿名ユーザIDが発行されます。その匿名ユーザIDは、アクションに渡されます。もしユーザがそのアクションを再び利用した...

Anonymous User Identity for Google Assistant apps is deprecated

Since starting the Actions on Google, developers can use an Anonymous User Identity feature. Anonymous User Identity - Actions on Google document Developers can use this feature to track users. For instance, when a user uses an action, an Anonym...

Media responsesを使った長いオーディオコンテンツの提供

6月14日に、 Leon Nicholls は、 ko-KR を除く全ての Actions on Google の ロケール向けに、Media responses がサポートされたことを G+ 上でアナウンスしました。 Media Response Update: https://plus.google.com/u/0/+LeonNicholls/posts/cbATWnXx5cv SSML では、オーディオの長さに制限がありました。その長さは、 120 秒以内です。しかし、”Me...

Providing long audio content using Media responses

On July 14th, Leon Nicholls announced on G+ that Media responses are now supported for all Actions on Google locales except for ko-KR. Media Response Update: https://plus.google.com/u/0/+LeonNicholls/posts/cbATWnXx5cv We have a limitation abou...

インターネットが使えない人々にもGoogleアシスタントが利用されているインパクトの大きさ

僕以外の Assistant GDE に教えてもらった素晴らしいサービスがあるので、ちょっと紹介してみたいと思います。 今年のGoogle I/O 2018では、Googleアシスタントを利用可能なデバイスが世界には既に5億台あることがアナウンスされました。 5億台と聞くととても多い印象がありますが、本当に世界中を5億台で網羅できているかというと、残念ながら違います。 Googleアシスタントだけではなく、そもそもインターネットがまだリーチできていない地域も多く、その地域に住む人々は、 ...

actions-on-google-nodejs version 2へのマイグレーションポイント

Googleアシスタント向けアプリ開発で欠かせないものの一つに、SDKがあります。プラットフォームであるActions on Googleや DialogflowからのWebhookのリクエストとレスポンスはJSON形式なのですが、その項目数も多く、手で扱うにはなかなかしんどい ものがあります。actions-on-google-nodejsは、Webhookを受け取って必要な処理を手軽に書くことができる便利機能を数多く 提供してくれるJavaScript SDKです。ほとんどの開発者は、...

Google I/O 2018で発表されたDialogflow関連の新機能

Google I/O 2018が終わりました。いやー、非常に多くの新しいことが発表されましたね。多すぎて圧倒されていますが、 しっかりとキャッチアップしていかなければなりません。 Googleアシスタントアプリとして、特に会話型アプリを開発する際に、Dialogflowは非常に強力なツールとなります。特に、自然言語処理を Dialogflowに完全にお任せできることは、とても嬉しいことです。これにより、会話の中でユーザの意図をしっかりと判断することができる ようになります。 元々api...

Google I/O 2018で発表されたActions on Google関連の新機能

現在Google I/O 2018が開催されています。既に2日目が終わっていますが、例年このI/Oのタイミングに合わせて数多くの新しいことが登場します。 もちろん、Googleアシスタント関連でも、多くの発表がありました。 Keynoteを見ていた方は、Google Duplexでのあの「人間と機械の会話」にびっくりしたと思います。もう、人間の会話力の方が低いのでは?と 言わざるを得ないデモでしたね。下にある動画で、その会話のデモを実際に目にしてください。衝撃です。 その他にも、K...

2017-2018年の我が家のスキーシーズンが終了

2017-2018年のスキーシーズンが、4月21日で終わりました。今シーズンは、結構回数行った方かな。 NASPAスキーガーデン に2回。 舞子スノーリゾート に3回。 たんばらスキーパーク に1回。 12月は1回も行っていないので、1月から4月にかけて計6回行ったことになります。僕がインフルエンザA型に僕がかかったりしてたので、それを除くと、2、3週間に1回っていう感じのペースでした。 ポイントとしては、4歳になった娘がスキースクールデビューしたこと。 NASPA...

Google Developers ExpertとしてAssistantも担当することになりました

4月23日に、Google Developers Expert の選考プロセスを無事通過して、Assistant 担当 GDE として活動していくことになりました。 2008年に当時の Google API Expert の OpenSocial 担当として、2013年からは現行の Google Developers Expert の Web Technology 担当として活動してきました。今回の承認によって、Web Technology と、Assistant の2つの担当となり...

サンプルコードからActions on GoogleのTransactions APIを理解する

Transactions APIを使うことで、Googleアシスタントアプリに購買や予約と行った機能を組み込むことができます。 しかし、いくつかの手順、いくつかのインテント、いくつかのイベント、そしていくつかのデータ構造があるため、 Transactions APIの利用方法を理解することは難しいかも知れません。つまり、複雑なのです。 幸いなことに。Transactions APIをより簡単に理解するためのサンプルコードセットがあります。ここで、アプリにTransactions API ...

Build Actions for GDG TokyoでVUIアプリに関する話をしてきました

今年は、Googleアシスタントアプリの開発に関して、世界中で活発に様々な活動が行われています。その中でも、Build Actions for Your Community という取り組みは、世界中で同時期に行われている、非常に大きな活動です。 Build Actions for Your Community イベントサイト 「Build Actions for Your Community」イベントにご参加ください - Google Developers Blog 本当に世界の...

Transactions "Add Transactions to Your App"の日本語訳です

Transactions APIを利用して、Googleアシスタント向けアプリに対して、購買や予約などの機能を組み込むことができるようになりました。手順としては少し多めで複雑ですが、一般的なそのようなトランザクションを扱う際の組み込み方と、そう大差はありません。既に何らかのECや予約サイトなどを運営されている方は、ぜひGoogleアシスタント向けアプリを開発し、Transactions APIを使った購買、予約機能の組み込みを検討してみてください。 Actions on Googleのド...

Transactions "Overview"の日本語訳です

Googleアシスタントは、もはや多くのユーザの側にいます。Android端末をお持ちであれば、Googleアシスタントが毎日手の中にいることになりますし、Google Homeを家に置いている方々についても、常に家族の一員としてGoogleアシスタントが側にいます。そんな相棒が、商品の購入や予約をしたいと思った際にも、自然な形でサポートしてくれたら、それは素敵な未来だと思いませんか?でも、未来ではなく、もう既にやってきました。日本語環境においても、Actions on Googleが提供...

Smart Home "Testing and Deploying"の日本語訳です

Actions on Google上で登録し開発したスマートホームアプリは、もちろんテストが行われた後に、公開されることになります。テストは、一人だけで行うのではなく、複数のメンバーによって行われるかも知れません。Actions on Googleでは、公開前の複数人によるテストもサポートされています。そして、テスト項目も決められていて、スマートホームアプリの品質を開発者は一定以上に保証しなければなりません。 Actions on Googleのドキュメントにある Smart Home ...

Smart Home "Create a Smart Home App"の日本語訳です

Actions on Googleでは、スマートホームアプリを開発することができます。これは、会話によって何かユーザに価値をもたらす会話型のアプリとは開発手順が違ってきます。 Actions on Googleのドキュメントにある Smart Home - Create a Smart Home Appにて、 スマートホーム向けアプリの開発手順が説明されています。以下はその日本語訳です。 スマートホームアプリの作成 スマートホームアプリは、アシスタントの従来のアプリとは構造が異なり...

Smart Home "Overview"の日本語訳です

Googleアシスタント向けアプリとして、会話側のアプリの他に、スマートホーム向けの各種デバイスを操作することを目的とした、昔「ダイレクトアクション」と 呼んでいたアプリの形態があります。今では「スマートホームアプリ」と呼びます。 Actions on Googleのドキュメントにある Smart Home - Overviewにて、 Smart Home向けアプリの概要が説明されています。以下はその日本語訳です。 が、以下を読んでも、正直よくわからないかもしれません。流れを把握した後...

数当てゲームを支えるVUI設計と手順

Googleアシスタント向けアプリを設計する上で、VUI(Voice User Interface)の理解がとても重要になります。GUIのように数多くのUIが組み合わされて UXが決まっていくことに対して、VUIはあくまで「対話」がUXを決定します。基本的には視覚的な情報が一切ない状態で、自然言語を使った会話によって目的を 達成しなければならないため、GUIとは全く違った設計手法が必要になってきます。 以前、Googleアシスタント向けアプリに数当てゲームアプリを開発して公開しました。そ...

Account Linking "Accessing Digital Purchases"の日本語訳です

Googleアシスタント向けアプリにおいて、そのアプリマーケットが今後活性化するかどうかを決定するであろう重要な要素に、「購入」という機能をあげることができると思います。エコシステムが機能するためには、ユーザとアプリ開発者の間で利益の交換が正しく行われなければなりません。もちろん、VUI(Voice User Interface)の分野において、ユーザが何かを購入するための安全なフローは、まだ確立されていないと言って良いでしょう。しかし、他のデバイスと連携する方式であれば、安全にその機能を...

Account Linking "Implicit Flows"の日本語訳です

Googleアシスタント向けアプリにおいて、ユーザ認証は非常に重要な機能となります。特に、アシスタント向けアプリの開発者が持つサービスのアカウントとのリンクについてが重要であり、これはアカウントリンクという仕組みで実現されます。それにはOAuth 2.0のフローが適用されるため、もしOAuth 2.0についての知見があれば、スムーズにその仕組みを理解し実装することができると思います。 Actions on Googleのドキュメントにある Account Linking - Implic...

Account Linking "Implementing Account Linking"の日本語訳です

Googleアカウント向けアプリでは、Googleアシスタントを利用している際のGoogleアカウントと、アシスタント向けアプリの裏にあるサービスでのアカウントとを紐付けるための仕組みが提供されています。これは、アカウントリンクと呼ばれ、その仕組みはOAuth 2.0をベースに組み立てられています。 Actions on Googleのドキュメントにある Account Linking - Implementing Account Linkingにて、 アカウントリンクの実装方法が説明さ...

Identity "User Information"の日本語訳です

Googleアシスタント向けアプリでは、そのアプリを利用するユーザの情報を利用したくなる時があります。それは、名前や住所などです。それらを使うことで、よりパーソナライズされた機能を提供することができるようになります。 Actions on Googleのドキュメントにある Identity - User Informationにて、 Googleアシスタント向けアプリが使えるユーザ情報が説明されています。以下はその日本語訳です。 ユーザ情報 あなたのアプリにおいて、ユーザーの場所...

Account Linking "Overview"の日本語訳です

Googleアシスタント向けアプリでは、開発者が持つサービス側のアカウントと、アシスタント向けアプリを利用する際のGoogleアカウントを、互いに紐付けることをしたくなるはずです。これにより、パーソナライズがさらに加速すると共に、元々開発者が持っていたサービスをアシスタント向けアプリ経由でユーザが利用することができるようになります。このアカウントの紐付けを「アカウントリンク」と呼び、それには「シームレスなアカウントリンク」と「従来のリンクフローを使ったユーザ体験」の2つがポイントとなります...

gitで現在のブランチを破棄しつつmasterに戻るシェルスクリプトを書いた話

gitで何かコードを修正してmasterに反映するには、以下のようなことをすると思います。 git checkout -b fix_foobar コード修正 & git add ... & git commit git push origin fix_foobar GitHub上でPull Request作成 & masterにマージ ここまでで、「よし、作業終わった」と一段落を迎えるのですが、GitHub上は良くても、手元の状況は残念ながら...

小回り用の新しいスキー板を買いました

2015-16シーズンに「ATOMIC BLUESTER LC 3.0 172cm」を買って、それ以来大回り〜中回りばかり滑ってきました。スキーを始めてもう25年以上経つけど、小回りにはある程度自信あっても、大回り〜中回りは本当に苦手でした。スピードが出れば出るほど「もうどうしていいかわからない」状態になってしまうし、切り替え直後に板が谷回りしてくれずに「2段ターン」になってしまうことも多く、本当に苦手意識しかなかったです。が、しかし、ATOMIC LCに出会ってから、前よりも斜度のあるバ...

DialogflowのTraining機能は僕の日課になった

今週、Googleアシスタント向けアプリに新しいアプリを公開しました。その名も、「勉強会検索」です。 このアプリは、connpass API を使って、ユーザが指定した条件にマッチする勉強会を探して答えてくれる、 という機能を提供します。以下のような感じです。 当初考えていた条件指定 このアプリのWelcomeメッセージは、以下にしています。 「こんにちは。各地で開催される予定の勉強会について、日付や都道府県名、キーワードによってお探しいたします。条件をどうぞ。」 結構漠...

Fulfillment "Firebase Services"の日本語訳です

Googleアシスタント向けアプリを開発する際には、多くの場合フルフィルメントを準備するためにプログラミングが必要になります。フルフィルメントを開発し運用するために、Firebaseは最も手軽かつ強力な武器となります。 Actions on Googleのドキュメントにある Fulfillment - Firebase Servicesにて、 Firebaseが提供する各種機能の中でGoogleアシスタント向けアプリの実装に使える機能の概要が説明されています。以下はその日本語訳です。 ...

Conversations "Best Practices"の日本語訳です

Googleアシスタント向けアプリによってユーザに提供される会話のUIは、比較的歴史が浅く、まだまだ新しい分野です。今後使いやすい会話型UIとは何かが研究され、そして多くの開発者に広まっていくことでしょう。ただ、現時点でも、明らかに気をつけておくべきことはいくつかわかっています。 Actions on Googleのドキュメントにある Conversations - Best Practicesにて、 会話型UIにおけるベストプラクティスが説明されています。以下はその日本語訳です。 ...

僕が作ったChromeアプリを会ったこともないイギリスの開発者に移管した話

昨年末に、OneDriveとWevDAVのChromeOS向けFile System Provider実装のメンテナンスをやめますというエントリをポストしました。これは、過去に5つ作ったChromeアプリのうち2つをもうメンテナンスせずに、Chromeウェブストアからも非公開にする、つまりオワコンにしますよっていう宣言でした。ただ、OneDrive向けのChromeアプリに関しては、実はオワコンにはなっていません。現在もChromeウェブストアにて公開されています。 File Sys...

Conversations "App Exits"の日本語訳です

VUI(Voice User Interface)において、ユーザがアプリをいつでも終わることができる、ということが結構重要だったりします。 会話を終えるためのことをユーザが明確に言うこともあるでしょうし、いつの間にかユーザが何も言わなくなっていることもあるでしょう。 少なくとも、ユーザが明確に会話を終了させようとしてきた時には、それをフルフィルメントにて受け取り、適切な後処理を行うことができます。 Actions on Googleのドキュメントにある Conversations - ...

Conversations "Helpers"の日本語訳です

Googleアシスタント向けアプリを開発している中で、「あ、この情報欲しいな」と思うことがあります。それは、ユーザの氏名だったり、 住所だったりです。また、ユーザにGoogleサインインしてもらって、その結果のアクセストークンを得たいこともあるでしょう。そのような 情報を入手するために、Actions on Googleは共通的な機能を提供しています。それらを「ヘルパー(Helpers)」と呼びます。 Actions on Googleのドキュメントにある Conversations -...

Invocation and Discovery "Checklist"の日本語訳です

Googleアシスタント向けアプリを呼び出すための方法は、明示的な呼び出し(Explicit Invocation)と、暗黙的な呼び出し(Implicit Invocation) の2種類があります。「ユーザがどのようにコンタクトを取ってくるか」を十分に考えることで、これらの呼び出しに関する設計も洗練されてくるはずです。 Actions on Googleのドキュメントにある Invocation and Discovery - Checklistにて、 アプリの呼び出しと発見に関するチ...

Invocation and Discovery "Implicit Invocation"の日本語訳です

Googleアシスタント向けアプリの明示的な呼び出しには、ユーザは事前にそのアプリ名を知っていなければなりません。もちろん、既に そのアプリを利用した経験があって名前を知っていれば、アプリ名を使って直接呼び出すことができるため、非常に明確です。しかし、 ユーザがまだアプリ名を知らない際には、ユーザができることは「何をしたいのか」を表明することだけです。そこで、アシスタント向けアプリ では、「何ができるのか」を予めActions on Googleに教えておくことで、ユーザが表明した意図に対...

Invocation and Discovery "Explicit Invocation"の日本語訳です

Googleアシスタント向けアプリのアプリ名をユーザが知っている場合は、ユーザはそのアプリ名を使ってそのアプリを呼び出すことができます。 これを明示的な呼び出し(Explicit Invocation)と呼びます。その際、例えば 「オッケーグーグル、マイレシピアプリで 今日のスープレシピについて教えて 」というように、アプリに対して呼び出しと意図を同時に ユーザが伝え、そのことをアプリが受け取ることができます。こうすることで、ユーザがアプリを利用するための対話の数を削減できます。 Act...

Invocation and Discovery "Overview"の日本語訳です

Googleアシスタント向けアプリを利用するユーザにとって、それらは目に見えないものです。ユーザの目の前には、Googleアシスタントのみが 見えていて、その向こうにはどのようなアプリがいるのか、アプリのディレクトリページに行かない限りわかりません。Googleアシスタントとして 本質的なことは、アプリを発見してもらうことではなく、ユーザがやりたいこと、達成したいことを満たしてくれるアプリが適切に呼び出されるか どうか、ということです。そして、仮にユーザが特定のアプリの存在を知っていたとし...

Cloud Functionsで一度デプロイした関数を更新する方法

Google Cloud PlatformにあるCloud Functionsは非常に強力です。Node.JSベースのJavaScriptで書かれた関数をCloud Functionsにデプロイするだけで、 あら不思議、スケールするAPIのエンドポイントが出来上がってしまいます。 例えば、以下のようなコードを書いて、 exports.helloGET = function helloGET (req, res) { res.send('Hello, World!'); }; こ...

Conversations "Responses"の日本語訳です

Googleアシスタント向けアプリがGoogleアシスタントに応答する際に、Google Homeを想像すると、文章のみを応答として返して それがGoogle Homeによって発話される、となると思います。しかし、サーフェスとして音声だけでなく画面も想定されています。 つまり、アシスタント向けアプリの応答は、単純なテキストだけではなく、もっとリッチな応答も返すことができ、それはサーフェスと して画面をサポートしていれば、視覚的にリッチな応答が「表示」されるということです。 Actions...

Googleアシスタントアプリの裏側にエラーが頻発した時の挙動

昨年末に、自作のGoogleアシスタント向けアプリ「イートアンドバイト」を公開しています。簡単な3桁の数字を あてるゲームなのですが、アシスタント向けアプリの開発から審査、公開、運用を一通り体験するためには手頃な サイズでした。Google HomeやAndroidのGoogleアシスタントなどに対して「イートアンドバイトにつないで」 と話しかけることで遊べますので、ぜひ試してみてください。 さて、審査を無事通過してアシスタント向けアプリを公開した後は、Actions on Google...

Conversations "Reprompts"の日本語訳です

ユーザは気まぐれです。アプリ開発者の想定通りに会話をしてくれることは、むしろ希です。何らかの割り込みが入れば、 ユーザは会話を途中で放棄してしまうことも多々起き得ます。こういった事態にも、アシスタント向けアプリは備えておかなければ なりません。ユーザが一定時間発言をしなかった際に、アシスタント向けアプリはユーザに何度か問いかけることができます。この 問いかけのことを、再プロンプト(Reprompts)と呼びます。 Actions on Googleのドキュメントにある Conversat...

Conversations "Surface Capabilities"の日本語訳です

Googleアシスタントは、「音声のみ」「画面のみ」「音声と画面の両方」のいずれかをサポートしたデバイス上で動作することが想定されています。 これらの種別のことを「サーフェス」と呼んでいて、サーフェスが違えば、アシスタント向けアプリが応答可能なメッセージも変わってきます。 Actions on Googleのドキュメントにある Conversations - Surface Capabilitiesにて、 サーフェスの利用方法が説明されています。以下はその日本語訳です。 サーフェス...

OneDriveとWevDAVのChromeOS向けFile System Provider実装のメンテナンスをやめます

今日、ChromeOS向けに公開していたFile System Provider実装のうち、2つのメンテナンスをもう続けないと決めました。 OneDrive WebDAV 理由は、それらのアップデートをするための十分な時間を確保することができないことです。僕は全部で5つの実装を開発し、メンテナンスしてきました: Dropbox, SMB, SFTP, OneDrive and WebDAV。でも、メンテナンスを続けることは難しいです。加えて、以下のような問題もありました。 ...