[go: nahoru, domu]

この記事はデベロッパー アドボケート、Charles Maxson による Google Developers Blog の記事 "Add dialogs and slash commands to your Google Workspace Chat bots" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

独自のカスタム Google Chat ボットの開発は、ユーザーやチームが直接、または Chat で共同作業するコンテキストの中で、ソリューションやサービスと連携できる優れた方法です。具体的には、Chat ボットをグループの会話で使ってワークフローを効率化したり、ディスカッションの流れの中で操作をサポートしたり、リアルタイムに情報や通知を提供したりできます。Chat ボットはダイレクト メッセージでも利用できます。これは、ワークフローや個人の生産性を最適化する新たな方法で、プロジェクトのタスクを管理する、活動時間を報告するなどの用途があります。ボットのユースケースは多岐にわたるため、時間とともに増え続けている Chat ユーザーに対して一貫してアプローチでき、ユーザーが作業やチャットをしている場所で直接活用できます。

カスタム Chat ボットの具体的なユースケースが決まった後、非常に重要なことは、ボット自身をどう設計するかです。直感的で使いやすいボットは利用される可能性が高く、忠実なフォロワーの増加にもつながります。スムーズでないもの、親しみにくいもの、わかりにくく使い方が複雑なものは、たとえバックエンドが優れていたとしても、「ユーザーを惹きつける」ツールになる可能性は低くなります。エンゲージメントが高く、なくてはならない Google Chat ボットの作成を支援するため、Chat ボット フレームワークに 2 つの機能を追加しました。これにより、これまで以上に高度なボット体験を構築できるようになります。

Google Chat ボットにスラッシュ コマンドを(再)導入する

Chat ボットのユーザビリティを強化するために活用できる最初の新機能が、スラッシュ コマンドです。数か月前にリリースされたスラッシュ コマンドを使用すれば、ボットの主な機能を見つけて実行するための視覚的なガイドをユーザーに提供し、ユーザーが Chat ボットとやり取りする方法を簡素化できます。スラッシュ コマンドの導入前に作成されたボットでは、ユーザーはボットが提供する機能を学習してから、ボットを呼び出してコマンドを正しく入力し、実行する必要がありました。しかしスラッシュ コマンドの登場により、ユーザーは Chat ボットをすばやく最大限に活用できるようになりました。

ユーザーがメッセージ行に “/” と入力するだけで、そのルームやダイレクト メッセージでボットによって提供されているすべての機能が一覧表示され、目的の機能を選択して実行できます。スラッシュ コマンドは、スタンドアロンで呼び出したり(例 : /help)、パラメータとしてテキストを追加したりできます(例 : /new_task review project doc)。このパラメータは、機能が呼び出されたときに処理できます。ボット コマンドをさらに見つけやすくするため、ユーザーが / 以降を入力すると、スラッシュ コマンドのリストがそれに一致するもので絞り込まれます(例 : "/h" と入力すると、H で始まるすべてのコマンドを表示)。ルームにたくさんのボットが追加され、スラッシュ コマンドを利用できるボットが増えると、この機能は便利になります。さらに、スラッシュ コマンドの UI には各コマンドの説明(最大 50 文字)が直接表示されるため、学習しなくても簡単に推測できます。

Google Chat の slashbot の実装例

デベロッパーとして、スラッシュ コマンドは簡単に実装でき、優れたボット体験を提供するうえで欠かせないものだと言えるでしょう。実際、すでに Google Chat ボットを構築してデプロイしているなら、ボットのアップデート リリースでスラッシュ コマンドを含めるように変更する作業は、十分すぎるほど価値があります。

Chat ボットにスラッシュ コマンドを追加するには、Hangouts Chat API 設定ページ(例 : https://console.cloud.google.com/apis/api/chat.googleapis.com/hangouts-chat?project=<?yourprojectname?>)でコマンドを登録する必要があります。スラッシュ コマンドのセクションがあり、そこでユーザーに表示する名前と説明、そして重要なコマンド ID の一意の識別子(1-1000 の整数)を設定できます。この識別子は、後ほどコードでイベントを処理する際に必要になります。

スラッシュ コマンドの編集例

ユーザーがスラッシュ コマンドを使ってボットを呼び出すと、ボットに送信されるメッセージに slashCommand フィールドが追加され、ボットがスラッシュ コマンドによって呼び出されたことがわかります。なお、ユーザーが / コマンドを使わずに @ メンションによって名前で直接ボットを呼び出せる点は変わりません。これは違いを見分けるうえで役立ちます。メッセージには、呼び出されたコマンドに対応する commandId も含まれます。これはボットの設定ページで指定した内容に基づいているため、ユーザーが実行をリクエストしたコマンドはそこから識別できます。さらに、メッセージにはイベントに関するアノテーションも含まれます。ユーザーが引数を指定した場合は、コマンド テキスト自体を解析した結果である argumentText も含まれます。

{
  ...
  "message": {
    "slashCommand": {
      "commandId": 4
    },
    "annotations": [
      {
        "length": 6,
        "slashCommand": {
          "type": "INVOKE",
          "commandId": 4,
          "bot": {
            "type": "BOT",
            "displayName": "Slashbot"
          },
          "commandName": "/debug"
        },
        "type": "SLASH_COMMAND"
      }
    ],
    ...
    "argumentText": " show code",
    "text": "/debug show code",
    ...
}

次に示す簡単な例では、ユーザーがスラッシュ コマンドを起動したかどうかを判断し、そうであればコマンド ID からリクエストされたコマンドを判別して実行しています。

function onMessage(event) {

  if (event.message.slashCommand) {

    switch (event.message.slashCommand.commandId) {
      case 1: // Command Id 1
        return { 'text': 'You called commandId 1' }

      case 2: // Command Id 2
        return { 'text': 'You called commandId 2' }

      case 3: // Help
        return { 'text': 'You asked for help'  }

    }
  }
}

Google Chat ボットにダイアログを導入する

2 つ目の Google Chat ボットの新機能は、ダイアログです。これは Chat ボット フレームワークに導入されたまったく新しい機能で、信頼できる構造化された方法で入力やパラメータを取得するユーザー インターフェースの開発を可能にします。これにより、ユーザーがボットのコマンドを入力するプロセスを簡素化、効率化できるので、ボットのユーザビリティが大きく前進します。ダイアログを使うと、ユーザーは視覚的に入力を促されます。これは、自然言語の入力でボットのコマンドをラップし、ボットが解読できる正しい構文が入力されることを期待する方法とは異なります。

デベロッパーは、ユーザーに指定してもらう必要があるコマンドの入力に対して、正確に動作するように目的を絞り込んだ UI を設計できます。引数を解析してユーザーの意図を論理的に推測する必要はありません。つまり、ダイアログは Chat ボットが対処できるソリューションのパターンとユースケースの種類を大きく拡張します。そのため、ユーザーにもデベロッパーにも、真に高度で実りある体験を実現できます。

Slashbot プロジェクト通知

内部的には、Chat ボットのダイアログは前述のスラッシュ コマンドと既存の Google Workspace アドオンの Card フレームワークを組み合わせて利用し、ダイアログの作成と処理をしています。この機能を使うには、ダイアログを起動するスラッシュ コマンドを作成し、次に示すように、スラッシュ コマンド設定プロセスで [Slash command triggers a dialog] の設定を true に指定します。

[Slash command triggers a dialog] 設定を有効化する例

[Slash Command to trigger a dialog] を設定すると、それが呼び出されたときに onMessage イベントが送信される点は変わりませんが、そこにダイアログのリクエストを表す新しい詳細情報が追加されます。このイベントを処理するには、先ほどの例の非ダイアログのスラッシュ コマンドと commandId を使い、switch でユーザーがリクエストしたコマンドを判別します。

ダイアログに実際に描画する要素を設計する際は、Google Workspace アドオンCard ベース フレームワークを使います。新世代の Google Workspace アドオンを構築したことがある方なら、この部分はおなじみであるはずです。ウィジェットを作成し、ヘッダーやセクションを追加し、イベントなどを作成します。実は、Chat ボットでアドオン UI を再利用したり共有したりすることもできます。ただし現在は、ボットで利用できるのは軽量な一部の要素である点に注意してください。Cards を使うことで、ボット用に一貫性のある最新のユーザー インターフェースを構築でき、タグや CSS の管理など、低レベルの詳細に悩む必要はなくなります。Cards の詳細はこちらをご覧ください。アドオンや Chat ボットでさらに簡単に Cards ベースのインターフェースを作成できるように、GWAO Card Builder ツールも導入しました。これを使うと、ドラッグアンドドロップのビジュアル デザイナーで開発作業を加速できます。

Cards のウィジェットができたら、呼び出されたときにそれをダイアログとして表示するために、次に示すスタブのように、action_response で DIALOG タイプを指定する必要があります。

{
  "action_response": {
  "type": "DIALOG",
  "dialog_action": {
    "dialog": {
      "body": {
        "sections": [
          {
           "widgets": [
             {
               "textInput": {
                 "label": "Email",
                 "type": "SINGLE_LINE",
                 "name": "fieldEmail",
                 "hintText": "Add others using a comma separator",
...

これで動作するダイアログができるので、あとはダイアログを表示した後のユーザー イベントを処理するだけです。ここでも、アドオンで Cards を扱う際のイベント処理と同じ方法を使います。ボットは、DialogEventType が SUBMIT_DIALOG に設定された CARD_CLICKED タイプのイベントを受け取ります。actionMethodName 値から、ユーザーがリクエストを処理するためにクリックした要素がわかります。下の例では、'assign' です。レスポンスには、ダイアログから返されたユーザー指定の入力である詳細情報 formInputs が含まれているので、それをソリューションのニーズに応じて処理します。

{ dialogEventType: 'SUBMIT_DIALOG',
  type: 'CARD_CLICKED',
  action: { actionMethodName: 'assign' },
  ...
  common: 
   { hostApp: 'CHAT',
     formInputs: 
      { 'whotochoose-dropdown': [Object],
        whotochoose: [Object],
        email: [Object] },
     invokedFunction: 'assign' },
  isDialogEvent: true }

ボットがタスクの処理を終えると、2 つの方法のどちらかでユーザーに応答できます。1 つ目の方法は、単純な確認応答(OK)のレスポンスです。これにより、アクションが正常に処理されてダイアログが閉じられたことを伝えます。

{
    "action_response": {
      "type": "DIALOG",
      "dialog_action": {
        "action_status": "OK",
...

もう 1 つの方法は、別のダイアログによる応答です。新しいダイアログや変更したダイアログでフォローアップできるので、複雑な入力シナリオや条件付きの入力シナリオに便利です。これは、ActionResponse で最初にダイアログ カードを使ってダイアログを呼び出したときと同じように実現します。

{
  "action_response": {
  "type": "DIALOG",
  "dialog_action": {
    "dialog": {
...

次のステップ

Google Workspace Chat ボットの構築を始めたい方や、スラッシュ コマンドやダイアログを既存の Chat ボットに追加したい方は、以下のリソースをご覧ください。


Reviewed by Eiji Kitamura - Developer Relations Team

この記事は Chrome OS リリース TPM リード、Marina Kazatcker による Chromium Blog の記事 "Changes to Chrome OS’s release cycle" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

先日、2021 年第 3 四半期の Chrome 94 から、新しいマイルストーンが 4 週間ごとにリリースされることをお知らせしました。さらに今回は、Chrome OS のリリース スケジュールを調整する計画についてお知らせします。

Chrome OS の重要な柱であるセキュリティ、安定性、スピード、シンプルさを維持しつつ、ユーザーに早く新機能を提供するため、第 4 四半期の M96 より、Chrome OS の安定版チャンネルは 4 週間周期に移行します。また、企業や教育機関のユーザー向けに、Chrome OS では M96 までに、アップデート周期が 6 か月の新しいチャンネルも導入します。詳しい情報は、近日中にお知らせします。

Chrome が 4 週間ごとのリリースに移行する M94 と、M96 の間のギャップを埋めるため、Chrome OS は M95 をスキップします(マイルストーン個別の詳細については、更新版の Chrome スケジュール ページをご覧ください)。

次の 10 年を見据えた今回の変更は、ユーザーの作業をサポートし、さらに便利で安全な体験を提供し続けるために必要な進化を Chrome OS にもたらすものです。

Reviewed by Eiji Kitamura - Developer Relations Team


この記事は Google Maps Platform チームによる Google Cloud Blog の記事 "Google Maps Platform JavaScript API and Promises" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。


四半期毎のリリースで更新された Maps JavaScript API のバージョン 3.45 並びに、Weekly リリースの最新バージョンにおいても、非同期メソッドの既存のコールバック パターンに加えて、Promise もサポートされるようになりました。Promise は便利な構文による複雑さの軽減や深く入れ子になったコールバックの排除など、多くの利点をもたらします。今回の Promise の追加は、TypeScript のサポートMaps JavaScript API の動的な読み込みといった、Maps JavaScript API で最新の JavaScript プログラミング手法やパターンをサポートするうえでの、大きな取り組みの一環となります。 


以下の例で示すように、Promise の便利な機能の一つである、async / await を使用することができます。この機能を利用すると、API 呼び出しが成功せず、Promise が拒否された場合に例外が発生します。


const app = async () => {

  const elevationService = google.maps.ElevationService();

  const locations = [{lat: 27.986065, lng:86.922623}];

 

  const response = await 

elevationService.getElevationForLocation({locations});

  console.log(response.results);

};

 

app();


次のパターンは、Promise オブジェクトの then、catch、finally メソッドを使用するもので、エラー処理を改善します。ここでは、catch メソッドが明示されていて、catch なしで Promise が拒否された場合には、未処理の promise 拒否イベントがグローバル スコープに送信されます。

const elevationService = google.maps.ElevationService();

const locations = [{lat: 27.986065, lng:86.922623}];

 

const promise = 

elevationService.getElevationForLocation({locations});

 

promise

    .then((response) => {

      console.log(response.results);

    })

    .catch((error) => {

      console.log(error);

    });

    .finally(() => {

      console.log('done');

    });

最後に、以下の例は、既存のコールバック パターンの使用法を示しています。今後、新しい非同期メソッドは Promise のみをサポートする可能性がありますが、コールバックは引き続きサポートされる予定です。

const elevationService = google.maps.ElevationService();

const locations = [{lat: 27.986065, lng:86.922623}];

 

const callback = (results, status) => {

  if (status === 'OK') {

    console.log(results);

  } else {

    // このケースを処理する

  }

};

 

elevationService.getElevationForLocation({locations}, 

callback);


Promise をサポートしている機能の一覧については、Maps JavaScript API の Promise のドキュメントをご覧ください。こちらの内容は、今後の機能拡張に合わせて更新されますので、定期的に確認することをおすすめします。

Google Maps Platform に関する詳しい情報はこちらをご覧ください。ご質問やフィードバックはページ右上の「お問い合わせ」より承っております。


Posted by 丸山 智康 (Tomoyasu Maruyama) - Developer Relations Engineer 

この記事は Wally BrillJessica Dene Earley-Cha による Google Developers Blog の記事 "Recommended strategies and best practices for designing and developing games and stories on Google Assistant" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

コインを集めるピンク色の車のイラスト

インタラクティブ描画キャンバスのリリース以来、特に昨年は、スマート ディスプレイの Google アシスタントに対応したすばらしいストーリーやゲームを作るデベロッパーを支援しています。その過程で、何がうまくいき、何がうまくいかないかについて、多くのことを学びました。このようなインタラクティブな音声体験を構築するのは、まだ比較的新しい試みです。そこで、私たちが学んだことを共有し、アシスタントに対応した、次のすばらしいゲームやストーリー体験を作る際の参考にしていただければと思います。

これから、インタラクティブなゲームやストーリーの設計や開発を行う際に注意すべき 3 つの重要なポイントを紹介します。以下の 3 点は、たくさんの教訓の中から選択しました(本投稿の最後には 10 以上の教訓へのリンクがありますので、お楽しみに)。これらは、Action Builder / SDK の機能を利用するもので、従来の音声のみによる会話のデザインとは微妙に異なっています。

1. テキスト読み上げ(TTS)を簡潔にする

テキスト読み上げ、つまりコンピュータで生成する声は、ここ数年で飛躍的に改善されてきましたが、完璧ではありません。ユーザーテストを通して、ユーザー(とりわけ 子ども)は長い TTS メッセージを聞くのを好まないことがわかりました。もちろん、減らすべきではないコンテンツ(インタラクティブなストーリーなど)もあります。しかし、ゲームのセリフは簡潔にしましょう。可能な場合は、音声よりも視覚によるメディアを活用します。TTS が終わるまで待たせるのではなく、ユーザーが文字を読みながら早送りできるように、画面にスキップボタンを付けることを検討します。多くの場合、TTS と画面のテキストは同じ内容でなくても構いません。たとえば、TTS が「よくできました!次の問題に移りましょう。大きな赤い犬の名前は?」と話す間に、画面のテキストには「大きな赤い犬の名前は?」とだけ表示してもいいでしょう。

実装

応答の音声とテキストのセクションで表現を変えることができるシンプル レスポンスを使って、オーディオと画面で異なるプロンプトを提供できます。Actions Builder でこれを行うには、node クライアント ライブラリまたは JSON レスポンスを使います。次のコードサンプルは、先ほどの例の実装方法を示しています。

candidates:
  - first_simple:
      variants:
        - speech: Great job! Let's move to the next question. What's the name of the big red dog?
          text: What is the name of the big red dog?

注 : Actions Builder の YAML での実装

app.handle('yourHandlerName', conv => {
  conv.add(new Simple({
    speech: 'Great job! Let\'s move to the next question. What's the name of the big red dog?',
    text: 'What is the name of the big red dog?'
  }));
});

注 : node クライアント ライブラリでの実装

2. 初回ユーザーとリピーターの両方を考慮する

頻繁に利用するユーザーは、同じ手順を何度も聞く必要はありません。リピーター向けの操作を最適化しましょう。ユーザーが初めて利用する場合は、その背景まですべて説明するようにします。また同じアクションを使う場合は「お帰りなさい」メッセージでそれがわかるようにして、説明は短くします。3~4 回目以上のユーザーであることがわかる場合は、できる限り簡潔にします。

短い説明の例を示します。

  • 初めてのユーザーへの説明 :「指定された文字から作ることができる単語を話してください。準備はできましたか?」
  • リピーターの場合 :「ごちゃまぜの文字から単語を作ってください。よろしいですか?」
  • さらに頻繁に使うユーザーの場合 : 「プレイの準備はできましたか?」

実装

HTTP リクエストの User オブジェクトlastSeenTime プロパティを確認できます。lastSeenTime プロパティは、そのユーザーが最後にインタラクションを行った時間を表すタイムスタンプです。初めてアクションを使うユーザーの場合、このフィールドは省略されます。これはタイムスタンプなので、最後のインタラクションが 3 か月以上前か、3 週間以上前か、3 日以上前かによって、メッセージを変えることができます。次に示すのは、短いデフォルトのメッセージの例です。lastSeenTime プロパティがない場合、つまりユーザーが 初めて このアクションを使う場合は、詳細を含む長いメッセージに更新します。

app.handle('greetingInstructions', conv => {
  let message = 'Make up words from the jumbled letters. Ready?';
  if (!conv.user.lastSeenTime) {
    message = 'Just say words you can make from the letters provided. Are you ready to begin?';
  }
  conv.add(message);
});

注 : node クライアント ライブラリでの実装

3. 強く推奨されるインテントをサポートする

一般的に使われているインテントで、音声アプリを操作する基本的なコマンドを提供することで、ユーザー エクスペリエンスを大幅に向上させることができます。アクションでこのようなインテントをサポートしていない場合、ユーザーは不満に感じるかもしれません。このようなインテントは、音声ユーザー インターフェースの基本構造となり、ユーザーがアクションを操作する際に役立ちます。

  • 終了

    アクションを閉じる。

  • 繰り返し / もう一度言う

    ユーザーがいつでも簡単に直前の内容を聞き直せるようにする。

  • もう一度プレイする

    ユーザーがお気に入りの体験をもう一度繰り返せるようにする。

  • ヘルプ

    困っている可能性があるユーザーに、詳しく説明する。アクションの種類によっては、コンテキストに応じた内容にする。デフォルトでは、ヘルプ メッセージが再生されたあと、ユーザーがゲームを離れた場所に戻る。

  • 一時停止、再開

    ゲームが一時停止したことを視覚的に表示し、視覚と音声の両方で再開する選択肢を提供する。

  • スキップ

    次の選択肢まで移動する。

  • ホーム / メニュー

    アクションのホームまたはメインメニューに移動する。視覚的なアフォーダンスを持たせるとよい。この機能がサポートされていても、視覚的な手がかりがないと、ユーザーが音声で操作できることを知るのは難しい。

  • 戻る

    インタラクティブ ストーリーで前のページに戻る。

実装

Actions Builder と Actions SDK は、上記のいくつかのユースケースに対応するシステム インテントをサポートしています。 これには、Google がサポートするトレーニング フレーズが含まれています。

  • 終了 -> actions.intent.CANCEL このインテントは、ユーザーが会話の途中で「終了したい」と話すなど、アクションを終了する場合に対応します。
  • 繰り返し / もう一度言う -> actions.intent.REPEAT このインテントは、ユーザーがアクションを繰り返すよう頼んだ場合に対応します。

その他のインテントは、ユーザー インテントを作成することで実現できます。これは、グローバル(どのシーンでも利用可能)にすることも、特定のシーンに追加することもできます。始める際に参考になるさまざまなプロジェクトの例を示します。

これでおわかりいただけたはずです。ユーザーが何度も使ってみたくなる、驚くほどインタラクティブなゲームやストーリー体験を作るために、覚えておくべき 3 つの提案でした。すべての推奨事項は、教訓のページからご覧いただけます。

お読みいただき、ありがとうございました!意見や質問を共有したい方は、Reddit の r/GoogleAssistantDev からお願いします。

Twitter で @ActionsOnGoogle をフォローして最新情報を受け取り、#AoGDevs を付けてツイートして、皆さんが作っているものについて教えてください。皆さんのアプリのリリースを楽しみにしています。



Reviewed by Johan Euphrosine - Developer Relations team 

Google IO での新アシスタント ツールのヘッダー

この記事は Rebecca Nathenson (Google Assistant Developer Platform プロダクト ディレクター ) による Google Developers Blog の記事 "New for I/O: Assistant tools and features for Android apps and Smart Displays" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

今回の I/O では、Android アプリに Google アシスタントをさらに簡単に導入し、スマート ディスプレイでエンゲージメントを高めるコンテンツを作成するために役立つ、新しいプロダクトを発表しました。

新しい Android API でアシスタント開発が簡単に

App Actions を使うと、Android アプリに Google アシスタントを簡単に導入し、乗りものの予約からソーシャル メディア投稿まで、あらゆるユーザーの要求に応えることができます。MyFitnessPal や Twitter などの企業は、すでに App Actions を使い、声だけでユーザーの要求に応えています。Android Studio では、組み込みインテントをアプリの特定の機能や操作にマッピングすることで、App Actions を有効化できます。以下で紹介するのは、音声クエリや提案によって、ユーザーが簡単にコンテンツを操作できる新しい方法です。


Capabilities でアシスタントの組み込みインテントのサポートを強化

Capabilities は、新しいフレームワーク API で、現在ベータ版として利用できます。これを使うと、組み込みインテントで定義されている共通タスクのサポートが可能となります。インテントのカタログにある組み込みリクエストを活用すると、アプリ内の特定のアクティビティを直接開く方法をユーザーに提供できます。

たとえば、Yahoo Finance アプリでは、Capabilities を使ってユーザーが「OK Google, Yahoo Finance で Verizon の株価を見せて」と言うだけで Verizon の株価ページを直接開けるようになっています。同じように、Snapchat ユーザーも、「OK Google, スニーカーのスナップを送って」と話すだけでフィルタを追加して友達に送ることができます。


Android 12 のショートカットでアプリを見つけやすく

アプリ ショートカットは、Android で一般的なタスクを自動化する方法として、すでによく使われています。Android 12 の新しいショートカット用 API のおかげで、アプリがサポートしているすべてのアシスタントへの要求が見つけやすくなりました。Android ショートカットを作成すれば、自動的にアシスタント ショートカット ギャラリーに表示されるので、ユーザーは「OK Google、ショートカット」と言うだけで、個人の音声コマンドをアプリに設定できます。

アシスタントからのショートカットが表示されている 3 台のスマートフォン

Google アシスタントは皆さんのアプリを使うように促すよう、関連するショートカットも提案できます。たとえば、eBay アプリを使うと、ユーザーの画面に「入札を表示」ショートカットを作成する提案が表示されます。

さらに、Google Shortcuts Integration ライブラリも公開しました。これを使うと、Shortcuts Jetpack モジュールによってプッシュされたショートカットを特定し、関連する音声クエリをアシスタントで管理できるようになります。Google アシスタントが関連するショートカットをユーザーに提案してくれるので、皆さんのアプリを使ってもらえるようになります。


ウィジェットを使ってアシスタントから即座に回答や更新を受け取る(近日公開)

Android 12 の改善により、Capabilities API を使って特定の組み込みインテントをウィジェットにマッピングすることで、ウィジェットでコンテンツをすぐに見つけられるようになります。また、今後は車の運転に最適化されたウィジェットを Android Auto でも簡単に使えるようにする予定です。この方法でアシスタントを組み込むと、同じウィジェットで単発の回答、すばやい更新、複数ステップのインタラクションを実現できます。

たとえば、Dunkin のウィジェット実装では、「OK Google、Dunkin で再注文して」と話しかけると、以前に注文したドリンクを選んで再注文できます。Strava のウィジェットでは、「OK Google、Strava でマイルをチェック」と話しかけると、1 週間の走行距離をトラッキングし、ロック画面に表示できます。

1 週間の走行距離を表示する Strava ウィジェット
スマート ディスプレイで高品質な会話型アクションを構築する

昨年は、Actions BuilderActions SDK、そしてデベロッパーとユーザー双方のエクスペリエンスを改善する新しい組み込みインテントなど、スマート ディスプレイ向けのアシスタント プラットフォームに数多くの改善を加えました。ここでお知らせするのは、スマート ディスプレイの会話型アクションをさらに充実させるため、近日中にロールアウトされる改善点です。


デベロッパー エクスペリエンスを改善する新機能

インタラクティブ描画キャンバスは、HTML、CSS、JavaScript などのウェブのテクノロジーを使って、タッチや音声でコントロールするアシスタント用のゲームやストーリーを構築する際に役立ちます。CoolGames、Zynga、GC Turbo などの企業は、すでに描画キャンバスを使ってスマート ディスプレイ用ゲームを構築しています

この機能をリリースしてから、ウェブコードでコアロジックを実装する方がシンプルで高速だというすばらしいフィードバックをデベロッパーからいただいています。これを実現するため、近日中に Interactive Canvas API からテキスト読み上げ(TTS)、自然言語理解(NLU)、ストレージ API にアクセスできるようにして、デベロッパーがクライアント側コードからこれらの機能をトリガーできるようにします。この API により、経験豊富なウェブ デベロッパーがおなじみの開発フローを利用して、さらに応答性の高い描画キャンバス アクションを作れるようになります。

また、アクションをリリースする選択肢も増やす予定です。近日中に、Actions Console で段階的リリースを管理できるようにします。たとえば、ある国で最初にリリースしてから後でさらに拡大したり、一部のユーザーにだけリリースしてから徐々にロールアウトしたりできるようになります。


スマート ディスプレイでのユーザー エクスペリエンスの改善

スマート ディスプレイで視覚表現を強化する改善も行われています。たとえば、固定ヘッダーを削除してデバイスの全画面を活用することで、ユーザーに臨場感あふれる体験を提供できます。

インタラクティブ描画キャンバスによってスマート ディスプレイでタッチ インターフェースのカスタマイズが可能になる前は、デバイスの画面のどこかをタップして TTS の再生を停止する簡単な方法を提供していました。しかし、スマート ディスプレイでマルチモーダルなエクスペリエンスが増えるにつれて、ユーザーがディスプレイをタップしている間も TTS の再生を継続することが重要になるユースケースが登場しています。そこで、アクションで TTS を継続できるようにするオプションを近日中に提供する予定です。

さらに、Media API を更新して長時間のメディア セッションをサポートしています。これにより、特定の時間から再生を開始する、以前のセッションが停止したところから再開する、メディアの再生状況に応じて会話に応答する、といったことができるようになります。


音声による取引が簡単に

皆様が Google のプラットフォームでビジネスを構築するために必要なツールを用意することがいかに重要であるかは理解しています。昨年 10 月、シームレスな音声ベースとディスプレイベースの収益化機能を簡単に追加できるようにすることをお知らせしました。オンデバイス CVC とクレジット カードの入力が、まもなくスマート ディスプレイで利用できるようになります。この 2 つの機能によって、オンデバイス取引がはるかに簡単になり、ユーザーをモバイル デバイスにリダイレクトする必要がなくなります。

これらの新機能を活用して、モバイルでも自宅でも、エンゲージメントの高い体験を構築し、多くのユーザーに簡単に使っていただけることを期待しています。YouTube の Google I/O でテクニカル セッションやワークショップなどを確認し、早速 App Actions会話型アクションを始めましょう!


Reviewed by Johan Euphrosine - Developer Relations team 

この記事は  Sundar Pichai による Google The Keyword Blog の記事 "Being helpful in moments that matter" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

 
今年、Google I/O デベロッパー カンファレンスを再び開催できたことを嬉しく思います。5 月 18 日の朝(日本時間 5 月 19 日早朝)、マウンテンビューのキャンパスに車を停めると、日常に戻ったような感覚を覚えました。もちろん、デベロッパー コミュニティの皆さんと対面でお会いしていないので以前と同じとは言えません。新型コロナウイルス感染症(COVID-19)は、この 1 年、グローバル コミュニティ全体に多大な影響を及ぼし、今もなお、大きな被害を与えています。ブラジル、そして私の母国であるインドでは、現在もパンデミックの中でも最も困難な時期を迎えています。Google は、COVID-19 の影響を受けたすべての人に思いを馳せ、前途に良い日が訪れることを願っています。

この 1 年で多くのことが見えてきました。その中で Google は、世界中の情報を整理し、世界中の人々がアクセスできて使えるようにするというミッションに、新たな目標が加わりました。私たちは、「すべての人にとって、より役立つ Google になる」というたった 1 つの目標を掲げ、このミッションへの取り組みを続けています。つまり、大事な場面で人々の役に立ち、すべての人に知識、成功、健康、幸福を高めるためのツールを提供するということです。

大事な場面で役に立つこと
Google Classroom が昨年 1 億 5,000 万人の学生と教師によるバーチャル学習を支援したように、大規模で役に立つこともあれば、小さな支援を積み重ねることで、すべての人に対して大きな変化をもたらすこともあります。たとえば、Google マップでは、より安全な経路を提案する機能をリリースしました。Google マップに組み込まれたこの AI による機能で、急ブレーキをかける可能性が高い経路や天気、交通状況を特定できます。この機能で、リスクを年間 1 億件ほど減らすことを目標としています。

働き方の未来を再定義する
私たちが支援できる最も大きいことの 1 つは、働き方の未来を再定義することです。この 1 年で、Google は前例のない方法を取り入れながら働き方が変わるのを見てきました。オフィスはキッチンのカウンターになり、ペットが同僚になりました。Google をはじめ、多くの企業は、再びオフィスで働けるようになったとしても、引き続き柔軟な働き方を続けることになるでしょう。そんな状況の中、コラボレーション ツールがこれまでになく重要になっています。そこで、5 月 19 日(現地時間 5 月 18 日)、Google は、Google Workspace でより豊かなコラボレーションを可能にする新しい スマートキャンバスを発表しました。 

Google Meet に統合された smart canvas


信頼できる次世代の AI
Google は、翻訳、画像、音声など、AI の中でも最も困難な分野に注力し、過去 22 年間で目覚ましい進歩を遂げてきました。その結果、アシスタントの通訳モードを使って別の言語で相手に話しかけたり、Google フォトで大切な思い出を振り返ったり、Google レンズを使って難しい数学の問題を解いたりすることが可能になり、Google の製品全体が改善されてきました。
また、AI を活用して自然言語を処理するコンピューターの能力を飛躍的に向上させ、何十億におよぶユーザーの検索体験を改善しました。しかし、コンピュータが理解できないこともあります。それは、言語が果てしなく複雑だからです。私たちは、言語を使って物語を語ったり、冗談を言ったり、アイデアを共有したりしますが、その中には私たちが人生の中で学んだ概念が織り込まれています。豊かさと柔軟性があるからこそ、言語は人類にとって最大のツールである反面、コンピュータサイエンスにとっては最大のチャレンジでもあるのです。
5 月 19 日、自然言語理解に関する最新の研究 LaMDA について発表しました。LaMDA は、対話アプリケーション用の言語モデルです。LaMDA はオープンドメインで、どんなトピックでも会話できるように設計されています。例えば、LaMDA は冥王星についてかなりのことを理解しています。生徒が宇宙のことをもっと知りたいと思ったときに、冥王星のことを聞けば、モデルが適切な答えを返してくれるので、より楽しく、興味を持って学習することができます。また、生徒が「紙飛行機の上手な作り方」など、別の話題に切り替えても、LaMDA は再教育をすることなく会話を続けることができます。
このように、LaMDA は情報やコンピュータをより身近で使いやすいものにすることができると考えています(詳細については、こちらをご覧ください)。 
Google は、長年にわたって言語モデルの研究・開発を行ってきました。LaMDA に関しても、公平性、正確性、安全性、そしてプライバシーに関する非常に高い基準を満たし、Google の AI 原則に従って一貫して開発するよう注力しています。この会話機能を Google アシスタント、Google 検索、Google Workspace などの製品にいずれ組み込むことを楽しみにしています。また、デベロッパーの皆さんやパートナー企業へこの機能を提供する方法も検討しています。
LaMDA は、自然な会話を実現する大きな一歩ですが、まだテキストに対する訓練しか行われていません。人が誰かとコミュニケーションをとるときは、画像、テキスト、音声、動画を使います。そのため、さまざまな種類の情報を使って自然に質問ができるようなマルチモダール モデル(MUM)を開発する必要があります。MUM を使って Google に「美しい山並みを見ながら走れるルートを見つけて」と話しかければ、日帰りのドライブ旅行を計画できます。これは、検索機能の操作をより自然かつ直感的な方法で行えるようにするための取り組みの一例です。
コンピューティングの限界に挑む
翻訳、画像認識、そして音声認識は、LaMDA や MUM のような複雑なモデルの基盤を築きました。Google のコンピューティング インフラストラクチャは、このような進歩を促進して維持する手段であり、Google のカスタムビルドの機械学習プロセスである TPU はその大きな部分を占めています。

5 月 19 日、Google は、次世代の TPU である TPU v4 を発表しました。この TPU は、前世代の 2 倍以上の速度を持つ v4 チップを搭載しています。1 つのポッドで 1 エクサフロップ以上の性能を発揮することができ、これは 1,000 万台のノート PC の計算能力を合わせたものに相当します。これは、Google が今までに開発した最速のシステムであり、当社にとって歴史的な出来事です。これまでは、1 エクサフロップを達成するためには、カスタム スーパーコンピュータを構築する必要がありました。また、間もなく数十台のTPU v4 ポッドがデータセンターに設置され、その多くが 90% 以上のカーボンフリーエネルギーで運用される予定です。これらのポッドは、今年後半には Google Cloud を利用するユーザーに提供される予定です。


左:TPU v4 チップトレイ、右:オクラホマ データ センターの TPU v4 ポッド 


このように急速なイノベーションペースを目の当たりにできることはとてもエキサイティングなことです。将来を見据えると、従来のコンピューティングでは合理的な時間で問題を解決できないタイプの問題があります。そのような場合には、量子コンピューティングがそれを支援します。量子コンピューティングのマイルストーンを達成したことは非常に大きな成果でしたが、長い旅はまだ始まったばかりです。Google は、次の大きなマイルストーンである、「エラー訂正が可能な量子コンピュータの構築」に向けて引き続き取り組んでいます。これを達成すれば、バッテリー効率の向上、より持続可能なエネルギーの創出、創薬の向上が実現します。その実現に向けて、最先端の Quantum AI campus を新たに開設し、Google 初の量子データセンターと量子プロセッサ チップ 製造施設を備えました。



新施設 Quantum AI campus の内部

Google でより安全に
Google は、Google の製品は安全であってこそ役立つものであると考えています。そして、コンピュータ サイエンスと AI の進歩は、製品をより良いものにしていくための手段です。Google は、世界中のどの企業よりもマルウェア、フィッシング詐欺、スパム メッセージ、潜在的なサイバー攻撃をブロックすることで、ユーザーの安全性を確保しています。
また、データの最小化に注力することで、より少ないデータでより多くのことができるようにしています。私は 2 年前の I/O で、自動削除機能を発表しました。これは、ユーザーのアクティビティ データが自動的かつ継続的に削除されるよう促すものです。それ以来、自動削除機能は、すべての新しい Google アカウントでデフォルト設定になっています。現在では、ユーザーから早期削除の申し出がない限り、アクティビティ データは 18 カ月後に自動的に削除されます。今では、20 億アカウント以上が対象になっています。
Google の全製品が次の 3 つの重要な原則に従っています。第一に、世界で最も先進的なセキュリティインフラを持つ Google の製品は、デフォルトで安全に保護されています。第二に、 責任あるデータ慣行を厳守し、Google が構築するすべての製品は設計上プライベートになっています。そして第三に、ユーザーが自分でコントロールできるようにプライバシーとセキュリティの設定を使いやすくしています。


長期的な研究:Project Starline
この 1 年にわたり、テレビ会議を使うことにより、家族や友人と連絡を取り合ったり、勉強や仕事を進められたことは素晴らしいことです。ですが、誰かと同じ場所で一緒にいることの代わりにはなりません。数年前、Google では、テクノロジーの可能性を模索するため、Project Starline と呼ばれるプロジェクトに着手しました。このプロジェクトでは、高解像度カメラと特注の深度センサーを使用して、複数の視点から姿形をキャプチャし、それらを融合して、非常に繊細なリアルタイムの 3D モデルを作ります。生成されたデータを送信するには毎秒数ギガビットが必要となり、既存のネットワークを介してこのサイズの画像を送信するために、データを100分の1以下にする新しい圧縮・ストリーミング アルゴリズムを開発しました。さらに、実際に相手が目の前に座っているかのように見える画期的なライトフィールド ディスプレイも開発しました。極めて高度なテクノロジーではありますが、ユーザーはそれを意識することなく、最も大事なこと(一緒にいるように見える相手とのコミュニケーション)に集中することができます。 
Google のオフィスで何千時間もかけてテストを実施しており、これまで得られている素晴らしい結果に期待を寄せています。また、主要な企業パートナーからも期待されており、Google では、医療やメディア分野のパートナーに協力を仰ぎ、すでに初期のフィードバックを得ています。リモート コラボレーションの限界を押し広げることで、私たちは一連のコミュニケーション製品の品質を向上させる技術的な進歩を遂げることができました。今後さらに詳しくお伝えできることを楽しみにしています。



Project Starline を介して相手と会話が可能に


複雑なサステナビリティの課題を解決する
もうひとつの研究分野は、サステナビリティを推進することです。サステナビリティは、20年以上前から当社の主要課題となっています。2007 年には、大手企業として初めてカーボン ニュートラルを達成しました。また、2017 年には消費電力の 100% を再生可能エネルギーでまかなう最初の企業になり、以降、それを持続しています。昨年、Google は、カーボン レガシー全体を排除しました。 
Google の次の目標は、2030 年までにカーボンフリー エネルギーを達成するという、これまでで最も野心的なものとなっています。これは、現在の取り組み方から大幅に変更することを意味し、量子コンピューターと同じくらいのムーンショット目標です。カーボンフリーエネルギーをすべてのオフィスで確保し、それを 24 時間 365 日運用できるようにするまで、解決するべき困難な問題もあります。
昨年発表したカーボン・インテリジェント・コンピューティング・プラットフォームをベースに、Google は間もなく、データセンター・ネットワーク内の時間と場所の両方でカーボン・インテリジェントによる負荷シフトを実施する最初の企業になる予定です。来年の今頃には、非生産的なコンピューティングの 3 分 の 1 以上を、カーボンフリーのエネルギーをより多く利用できる時間帯や場所にシフトする予定です。また、来年からネバダ州のデータセンターを皮切りに、地熱発電をより多くの場所で提供するために、新しい掘削技術や光ファイバセンシングへのクラウド AI の応用に取り組んでいきます。
このような投資は、24 時間 365 日体制のカーボンフリー エネルギーを達成するために不可欠で、カリフォルニア州のマウンテンビューでも行われています。Google は、最高のサステナビリティ基準に基づいて新しいキャンパスを建設中です。完成したら、この建物には、今までに類を見ない、銀に輝く龍の鱗のような 9 万枚のソーラーパネルが設置されることになり、約 7 メガワットの発電が可能になります。また、北米最大の地熱発電システムが設置され、建物を冬は暖かく、夏は涼しくすることができます。この取り組みが実現することを目の当たりにできることは、大変素晴らしいことだと思っています。


左:マウンテンビューの新しい Charleston East キャンパス。右:龍の鱗のようなソーラーパネルの模型。


テクノロジーの祝典
I/O は単なるテクノロジーの発展を祝う場ではありません。それを使い、開発する人の祭典でもあります。今日、バーチャルで参加した世界中の何百万人ものエンジニアの皆さんもその一人です。この 1 年、私たちは人々がテクノロジーを非常に素晴らしい方法で利用するのを目の当たりにしてきました。極めて困難な状況の中で、健康と安全を維持し、学習して成長し、繋がり合い、他者を助けるために。このような状況を体験し、私たちはこれまで以上に、大事な場面に役立つことを心がけていきます。
来年の I/O で皆さんに直接お会いできることを楽しみにしています。それまで、ご自愛ください。

Reviewed by Takuo Suzuki - Developer Relations Team and Hidenori Fujii - Google Play Developer Marketing APAC

この記事は Devin Chasanoff による Google Ads Developer Blog の記事 "Announcing the Google Ads Query Language Query Validator" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

この度、Google Ads Query Language(GAQL)のクエリ バリデータをリリースします。これにより、ブラウザを使ってデベロッパー ドキュメント サイトで GAQL クエリを直接検証できるようになります。この新しいツールは、効率的なワークフローを実現できるインタラクティブ GAQL クエリビルダーに組み込まれています。

新しいクエリ バリデータを使うには、直接クエリ バリデータ ページにアクセスするか、任意のリソースのクエリビルダー ページで [Enter or edit a query] ボタンをクリックします。



クエリ バリデータによるクエリの検証が成功した後、[Continue Editing in Query Builder] ボタンをクリックすると、インタラクティブ クエリビルダーを使ってクエリの編集を続けることができます。





クエリ バリデータは、無効なクエリのエラーについてのフィードバックも提供します。




さらに、クエリビルダーで作成したクエリを、クエリ バリデータを使って手動で編集や検証することもできます。これをするには、クエリビルダーでクエリを作成してから [Enter or Edit a Query] ボタンをクリックします。





新しいクエリ バリデータを使う際は、ページの右上に表示されている [Send feedback] ボタンをクリックして、お気軽にフィードバックをお送りください。

ご質問やさらにサポートが必要なことがありましたら、フォーラムまたは googleadsapi-support@google.com までご連絡ください。



Reviewed by Thanet Knack Praneenararat - Ads Developer Relations Team