[この記事は ソフトウェアエンジニアの Steven Robertson(最近視ているのは "St. Lucia - Before The Dive." )による YouTube Engineer and Developers Blog の記事 "VP9: Faster, better, buffer-free YouTube videos" を元に、山口が翻訳・加筆したものです。詳しくは元記事をご覧ください。]

ますます多くの人が、さらに高画質な動画を、より多くの画面で視聴するようになっているため、使用する帯域幅を増やさずに高解像度を提供できる動画フォーマットが必要になっています。そのため、私たちは YouTube 動画を VP9 でエンコードするようになりました。VP9 はオープンソースのコーデックで、他の一般的なコーデックが使用する帯域幅の半分で、ハイビジョンに加えて 4K (2160p)画質も再生できます ...
[この記事は ソフトウェアエンジニアの Steven Robertson(最近視ているのは "St. Lucia - Before The Dive." )による YouTube Engineer and Developers Blog の記事 "VP9: Faster, better, buffer-free YouTube videos" を元に、山口が翻訳・加筆したものです。詳しくは元記事をご覧ください。]

ますます多くの人が、さらに高画質な動画を、より多くの画面で視聴するようになっているため、使用する帯域幅を増やさずに高解像度を提供できる動画フォーマットが必要になっています。そのため、私たちは YouTube 動画を VP9 でエンコードするようになりました。VP9 はオープンソースのコーデックで、他の一般的なコーデックが使用する帯域幅の半分で、ハイビジョンに加えて 4K (2160p)画質も再生できます。

VP9 は現在広く使われている中で最も効率のよい映像圧縮コーデックです。昨年 1 年間だけでも、YouTube ユーザーが再生した VP9 動画は 250 億時間を超えており、そのうち数十億時間分の動画は、VP9 による帯域幅効率の向上がなければ HD 画質で再生できなかったでしょう。VP9 の再生に対応する端末も増えているため、この技術を簡単に紹介したいと思います。

VP9 の仕組み

動画の情報量は膨大です。カメラセンサーが撮影に使うフォーマットと同じフォーマットで動画を保存するとしたら、そのファイルはとてつもない大きさになります。4K RAW 動画は最大 18,000 Mbps になるでしょう。現在の動画圧縮技術では、撮影されたシーンに含まれる特徴をコード化し、その特徴の動きと変化を追跡することによって、カメラセンサーではなく人間が見るように動画を捉えます。この圧縮はカメラセンサーによる録画に比べて数百倍効率がよく、おかげでビデオストリーミングが可能になりました。

VP9 はそれまでのコーデックと基本原理は同じですが、動画再生の品質をバイト単位で高めるために、WebM チームがさまざまな改良を施して完成させました。たとえば、VP9 のエンコーダーではよりくっきりした画像の特徴が優先して処理され、VP9 コーデックでどのような画像でも鮮明でブロックノイズなく、連続再生できるように非対称変換が用いられています。

Janelle Monaé を通信速度 600Kbps で VP9 と従来の H.264 変換で視聴した場合の質の違いを次の画像で比べてみてください。


高品質な動画視聴を実現

この新しいフォーマットは、すぐに視聴できる高品質でバッファ不要の動画という目標に、すべての人を一段階近づけます。つまり、従来は YouTube でバッファなく最大 480p までの動画しか見ることができなかったインターネット接続環境でも、VP9 のおかげで滑らかな 720p の動画が見られるようになりました。

帯域幅に制限があったり、データ使用量による従量課金プランを使ったりしている人にとっても VP9 はメリットがあります。ビットレートを約半分に削減することで、再バッファしたりかける費用を増やしたりすることなく、360p の画質を視聴できるユーザーの数が劇的に増加します。

4K 動画の世界へ

(本稿の著者を含め)常によりよい画質を求める人にとって、急成長しつつある 4K 動画への世界を開く鍵が VP9 です。実際、VP9 は動画サイズが大きくなると、これまでのコーデックよりもさらに効率がよくなるため、すでに多くの YouTube 視聴者が 4K コンテンツを途切れずにストリーミングしており、その数はますます増えています。YouTube にアップロードされた 4K 動画は昨年 1 年間で 3 倍になり、VP9 のおかげで将来を見据えたストリーミングの改善を計画できるようになっています。検索フィルタを使うと 4K 動画を探すことができます。また、このおすすめプレイリストもご確認ください。

VP9 を利用できる端末

Google パートナーの各種端末メーカーのおかげで、現在では Chrome ブラウザ、Android 端末(サムスン Galaxy S6 など)、テレビやゲーム機(ソニー、LG、シャープ)などで VP9 のデコーディングがサポートされています。2015 年以降、業界全体で 20 を超えるパートナー各社が VP9 に対応する製品を発売する予定です。

自身の VP9 コンテンツを制作する詳細については、FFMpeg encoding guideAdobe Adobe Premier WebM プラグイン をご確認ください。

Posted by Yoshifumi Yamaguchi - Developer Relations Team

[この記事は Developer Programs Engineer の Kalyan Reddy による Google Apps Developer Blog の記事 "New Advanced services in Apps Script" を元に、北村が翻訳・加筆したものです。詳しくは元記事をご覧ください。]

Apps Script には、Gmail や Google ドライブなどの主なプロダクト向けのビルトインサービスが含まれています。そして最近、 アドバンス Google サービスとしてデベロッパーから要望され続けてきたその他の API を追加しています。4 月 6 日に次の 7 つのアドバンスサービスを追加しました ...
[この記事は Developer Programs Engineer の Kalyan Reddy による Google Apps Developer Blog の記事 "New Advanced services in Apps Script" を元に、北村が翻訳・加筆したものです。詳しくは元記事をご覧ください。]

Apps Script には、Gmail や Google ドライブなどの主なプロダクト向けのビルトインサービスが含まれています。そして最近、アドバンス Google サービスとしてデベロッパーから要望され続けてきたその他の API を追加しています。4 月 6 日に次の 7 つのアドバンスサービスを追加しました。
Apps Script の他のアドバンスサービスと同様に、使用前にサービスを有効にする必要があります。サービスを有効にすると、他の組み込み Apps Script サービスと同じように簡単に使うことができます。エディターはオートコンプリート機能を備えており、認証フローが自動的に処理されます。

Apps Activity のアドバンスサービスを使用して、Google ドライブにある特定のファイルを操作したユーザーのリストを取得する方法を表すサンプルを次に示します。
function getUsersActivity() {
  var fileId = 'YOUR_FILE_ID_HERE';
  var pageToken;
  var users = {};
  do {
    var result = AppsActivity.Activities.list({
      'drive.fileId': fileId,
      'source': 'drive.google.com',
      'pageToken': pageToken
    });
    var activities = result.activities;
    for (var i = 0; i < activities.length; i++) {
      var events = activities[i].singleEvents;
      for (var j = 0; j < events.length; j++) {
        var event = events[j];
        users[event.user.name] = true;
      }
    }
    pageToken = result.nextPageToken;
  } while (pageToken);
  Logger.log(Object.keys(users));
}
上記の関数では、AppsActivity.Activities.list() メソッドを用いて drive.fileIdsource といった必須パラメーターを送り、ページトークンを使ってアクティビティの全リストを取得しています。このメソッドで利用できるパラメーターの全リストについては、Apps Activity API の参照資料をご確認ください。

Posted by Eiji Kitamura - Developer Relations Team

[この記事は Games Developer Advocate の Shanee Nishry による Android Developers Blog の記事 "Game Performance: Layout Qualifiers" を元に、萩倉が翻訳・加筆したものです。詳しくは元記事をご覧ください。]

今日は OpenGL Shading Language (GLSL)を利用してゲームのパフォーマンスを最適化し、ワークフローを簡素化するベスト プラク ティスについてお伝えします。Layout Qualifiers は特にコードの確定性を高め、作業者の負荷を減らしてパフォーマンスを高めます。

簡単な頂点シェーダーに変更を加えてみましょう。

位置座標とテクスチャ座標を取得し、頂点の位置を変換し、フラグメント シェーダーにデータを渡す、基本的な頂点シェーダーの例を次に示します。
attribute vec4 vertexPosition;
attribute vec2 vertexUV;

uniform mat4 matWorldViewProjection;

varying vec2 outTexCoord;
void main()
{
  outTexCoord = vertexUV;
  gl_Position = matWorldViewProjection * vertexPosition;
}
[この記事は Games Developer Advocate の Shanee Nishry による Android Developers Blog の記事 "Game Performance: Layout Qualifiers" を元に、萩倉が翻訳・加筆したものです。詳しくは元記事をご覧ください。]

今日は OpenGL Shading Language (GLSL)を利用してゲームのパフォーマンスを最適化し、ワークフローを簡素化するベスト プラク ティスについてお伝えします。Layout Qualifiers は特にコードの確定性を高め、作業者の負荷を減らしてパフォーマンスを高めます。

簡単な頂点シェーダーに変更を加えてみましょう。

位置座標とテクスチャ座標を取得し、頂点の位置を変換し、フラグメント シェーダーにデータを渡す、基本的な頂点シェーダーの例を次に示します。
attribute vec4 vertexPosition;
attribute vec2 vertexUV;

uniform mat4 matWorldViewProjection;

varying vec2 outTexCoord;
void main()
{
  outTexCoord = vertexUV;
  gl_Position = matWorldViewProjection * vertexPosition;
}

頂点属性インデックス

画面にメッシュを描画するには、頂点バッファを作成し、頂点データ(ここでは位置座標、テクスチャ座標など)を登録する必要があります。

サンプル シェーダーで頂点データを次のように記述します。
struct Vertex
{
  Vector4 Position;
  Vector2 TexCoords;
};
これに従い、頂点シェーダーの属性を次のように定義します。
attribute vec4 vertexPosition;
attribute vec2  vertexUV;
glGetAttribLocation へのコールによって指定された名前の属性の処理が行われ、頂点データがシェーダー属性と関連づけられます。すると属性フォーマットが glVertexAttribPointer へのコールとともに記述されます。
GLint handleVertexPos = glGetAttribLocation( myShaderProgram, "vertexPosition" );
glVertexAttribPointer( handleVertexPos, 4, GL_FLOAT, GL_FALSE, 0, 0 );
GLint handleVertexUV = glGetAttribLocation( myShaderProgram, "vertexUV" );
glVertexAttribPointer( handleVertexUV, 2, GL_FLOAT, GL_FALSE, 0, 0 );
しかし、vertexPosition 属性をもつ複数のシェーダーがある場合、各シェーダーの glGetAttribLocation を呼び出すのはパフォーマンスを無駄にし、ゲームの読み込み時間が長くなります。

Layout Qualifiers を利用すると、頂点シェーダー属性の宣言を次のように変更できます。
layout(location = 0) in vec4 vertexPosition;
layout(location = 1) in vec2 vertexUV;
またそのためには、使用するシェーダーが GL ES 3.1 に対応していることをシェーダー コンパイラーに伝える必要があります。

以下のバージョン宣言を追加します。
#version 300 es
例示のシェーダーがどのようになるかを見てみましょう。変更点を太字で示します。
#version 300 es

layout(location = 0) in vec4 vertexPosition;
layout(location = 1) in vec2 vertexUV;

uniform mat4 matWorldViewProjection;
out vec2 outTexCoord;
void main()
{
  outTexCoord = vertexUV;
  gl_Position = matWorldViewProjection * vertexPosition;
}
OutTexCoord が varying 変数から out 変数に変わっていることもご確認ください。Varying キーワードはバージョン 300 es から動作が保証されなくなったため、シェーダーを機能させるには変更が必要です。

頂点属性の修飾子と #version 300 es は OpenGL ES 3.0 以降でサポートされています。デスクトップ版は OpenGL 3.3 でサポートされ、#version 330 が使用されています。

ここで位置属性が常に 0 で、テクスチャ座標が 1 になるとわかったら、glGetAttribLocationを使わずに次のようにシェーダー
フォーマットをバインドできます。
const int ATTRIB_POS = 0;
const int ATTRIB_UV   = 1;

glVertexAttribPointer( ATTRIB_POS, 4, GL_FLOAT, GL_FALSE, 0, 0 );
glVertexAttribPointer( ATTRIB_UV, 2, GL_FLOAT, GL_FALSE, 0, 0 );
この簡単な変更でパイプラインを明確にし、コードをシンプルにして、起動の際の負荷を削減できます。

Android でのパフォーマンスの詳細については、Android Performance Patterns の動画シリーズをご覧ください。

Posted by Takeshi Hagikura - Developer Relations Team

[この記事は Google Play Games team の Ben Frenkel による Android Developers Blog の記事 "Power Great Gaming with New Analytics from Play Games" を元に、荒木が翻訳・加筆したものです。詳しくは元記事をご覧ください。]

先日のゲーム デベロッパー カンファレンス(GDC)で、Google は Play Games Player Analytics を発表しました。ゲームビジネスを管理し、ゲーム内のプレイヤーの行動を把握するために役立つ新しい無料レポートです ...
[この記事は Google Play Games team の Ben Frenkel による Android Developers Blog の記事 "Power Great Gaming with New Analytics from Play Games" を元に、荒木が翻訳・加筆したものです。詳しくは元記事をご覧ください。]

先日のゲーム デベロッパー カンファレンス(GDC)で、Google は Play Games Player Analytics を発表しました。ゲームビジネスを管理し、ゲーム内のプレイヤーの行動を把握するために役立つ新しい無料レポートです。

Player Analytics はゲームをサービスとして運営するための鍵となるコンポーネントで、モバイルゲーム ビジネスを成功に導く上でますます欠かせないものになっています。成功している大規模デベロッパーをよく観察すると、次の 3 点で特に優れていることが理解できます。
  • 収益目標に向けたビジネスの管理
  • 展開しているビジネスで人気の高いところを特定し、最大限の効果を生むようなゲームのアップデートに継続して集中
  • ゲームにおけるプレイヤーの進行や消費の状況、ゲームをやめるタイミングなどについてアナリティクスを用いて把握

「プレイヤーの関わりと収益データが同時に分析され、専任スタッフのいない小規模のチームでは得られない質のデータを開発者に提供してくれます。Google Play Games Player Analytics の進化にともない、小規模な開発者がデータを根拠に自信をもってゲームに変更を加えられるようになり、それが実際の収益改善にもなります」

Kevin Pazirandeh
Zombie Highway 2 (ゾンビハイウェイ 2)の開発者
Player Analytics を用いることで、Google Play の開発者のエコシステム全体にこうした機能を提供したいと思います。スムーズで使いやすい機能を提供することで、開発者のみなさんがすばらしいゲームを創造するための貴重な時間を生み出すことができればと考えています。Zombie Highway 2 や Bombsquad の開発者をはじめとする小規模スタジオでは、Player Analytics がビジネスにおよぼすメリットと効果についてすでに気付きはじめています。

加えて、Google Play ゲームサービスと統合することで、さらに労力を費やすことなくこのアナリティクス機能を手に入れることができます。また、ほんの少し手間をかければ、Google Play ゲームサービスのイベントと統合してさらに別のレポートを使って効果を高めることもできます。ゲーム内の経済でバランスをとるために役立つ Sources and Sinks レポートなどが使用できます。

すでに Google Play ゲームサービスに統合しているゲームがあれば、すぐにGoogle Play デベロッパー コンソールで新しいレポートを確認してみてください。そうでない場合も、ゲームにほんの数行コードを追加する手間と同じくらい簡単に、Player Analytics を有効にしてGoogle Play ゲームサービスと統合できます。

収益目標に向けたビジネスの管理

日々の目標を選択し、Player Analytics における収益目標を設定します

Player Analytics では毎日のアプリ内購入による収益目標を選択し、下図のような目標と現状に関するレポートを使って目標に対する達成度を評価でき、ゲームのビジネスとしての健全性を評価するために役立てることができます。

詳細を見る

Business Drivers レポートのベンチマークを使用して人気の高い分野を特定

自分のゲームのパフォーマンスを他のゲームと比較してみたいと思ったことはありませんか。Player Analytics を使うと、同じカテゴリーの同種のゲームとあなたのゲームを比較して、あなたのゲームの状況を確認できます。

赤でハイライトされた部分はベンチマークを下回っていることを示します。矢印は評価指標が上昇したか下降したかを示します。 アイコンが表示されているセルをクリックすると、変化の背景についての詳細が表示されます。

詳細を見る

新しいユーザー コホートでプレイヤーの定着率を確認

Retention レポートでは、ゲームをインストールしてから 7 日間プレイを続けていたプレイヤーの割合を確認できます。

詳細を見る

Player Progression レポートでプレイヤーがどこで時間を費やし、苦労し、ゲームをやめているかを確認

Player Progression ファンネルは、プレイヤーのアチーブメントの数を測定することで、プレイヤーがどこで苦労し、どこでゲームからはなれたかを特定し、ゲームの内容を調整して最終的には定着率を高めるために役立てることができます。アチーブメントを追加すればするほど、レポートによる追跡が正確になります。

詳細を見る

Sources and Sinks レポートでゲーム内経済を管理

Sources and Sinks レポートは、プレイヤーがリソースを購入(獲得)する速度と使用する速度の関係を示すことで、ゲーム内経済でバランスをとるために役立てることができます。
たとえば、BombSquad を個人で開発した Eric Froemling は Sources and Sinks レポートを利用して、プレイヤーがチケットを購入する場面と使用する場面のバランスをとりました。
Player Analytics に関する Eric の経験の詳細については、Eric が最近投稿したブログで詳しく確認できます。

Sources and Sinks レポートを有効にするには、Google Play ゲームサービスのイベントを作成して統合する必要があります。イベントでプレミアム通貨の増加(獲得した金貨など)とプレミアム通貨の減少(アプリ内でのアイテム購入に使った金貨など)を追跡します。


Posted by Yuichi Araki - Developer Relations Team

[この記事は YouTube for Developers チーム、Ibrahim Ulukaya による YouTube Engineering and Developers Blog の記事 "Bye-bye, YouTube Data API v2" を元に、山口が翻訳・加筆したものです。詳しくは元記事をご覧ください。]
[この記事は YouTube for Developers チーム、Ibrahim Ulukaya による YouTube Engineering and Developers Blog の記事 "Bye-bye, YouTube Data API v2" を元に、山口が翻訳・加筆したものです。詳しくは元記事をご覧ください。]

2015/05/15 更新: 本日よりYouTube Data API v2のビデオフィードサポートビデオしか返さないようになりました。

更新: コンテンツの報告開発者向け動画検索の API のローンチにともない、 Data API v3 はただちに閉鎖予定の Data API v2 からの移行予定のすべての機能のサポートが完了します。


コメント字幕RSS プッシュ通知などの最新バージョンを含め、間もなく使用できなくなる Data API v2 から移行が予定されたほぼすべての機能が Data API v3 で使用できます。コンテンツの報告機能のみがまだ移行されていませんが、数日中に適用される予定です。新しい API では、YouTube の最新バージョンから多くの機能が移行されており、ユーザーがあらゆる画面上で最適な形で YouTube を楽しめるようになります。(訳注:翻訳時現在では YouTube API v2 の使用はできなくなっており、また更新にあるようにコンテンツの報告の機能は実装されました。)

振り返ると、2014 年 3 月に、Data API v2 が 2015 年 4 月 20 日に終了し、その後すぐに使用できなくなる旨を公表しました。移行をサポートするため、2014 年 9 月に移行ガイド提供し、v3 機能の更新情報について定期的にお伝えしてきました。


サービス終了プラン

Data API v2 をまだご使用の場合、今日からユーザーのビデオ フィード上部にビデオを表示し、今回の新規リリースでどのような影響があるかについて告知をはじめました。これ以外については、アプリは普段と変わらず機能します。
5 月のはじめには、Data API v2 動画に対して呼び出しを行うと、4 月 20 日に実装された警告動画のみが表示されるようになります。v2 API を使用しているアプリでは、警告動画以外は表示できなくなります。影響を受けるデバイスについては、youtube.com/devicesupport をご覧ください。

5 月下旬には、v2 API に対して、コメントと字幕を除く呼び出しを行うと、HTTP ステータスコード 410 Gone が表示されるようになります。gdata.youtube.com の代わりに eol.gdata.youtube.com でアプリケーションを指定して、このステータスコード表示に対するアプリケーションの動作をテストできます。すみやかにアプリを移行する必要がありますが、使用できなくなることを回避するため、2015 年 7 月末まで Data API v2 で機能し続ける予定です。


移行方法

Data API v3 で使用するため特定の機能をアップデートする方法についての最新の手順については、良くある質問や移行ガイドをご覧ください。移行ガイドでは、Data API v2 で廃止され、Data API v3 では実装されない機能の一覧を確認できます。新たに移行されるコメント、字幕、コンテンツ報告などの機能について、最新の手順も記載されています。

[この記事は SYN、SYN-ACK、ACK (Alyssa Wilk、Ryan Hamilton、Ian Swett) による Chromium Blog の記事 "A QUIC update on Google’s experimental transport" を元に、北村が翻訳・加筆したものです。詳しくは元記事をご覧ください。]

Google では昨年、最新のインターネットに対する UDP ベースのトランスポート プロトコル、 QUIC を公開しました。 それから 四半期、QUIC を使用した Google サービスへのトラフィックを徐々に増やし、規模を拡大しながら QUIC のパフォーマンスを分析してきました。現在までのところ結果は良好で、QUIC の低遅延接続確立、優れた輻輳制御や切断時の接続回復といった機能によって、TCP よりも優れたパフォーマンスを示し続けています ...
[この記事は SYN、SYN-ACK、ACK (Alyssa Wilk、Ryan Hamilton、Ian Swett) による Chromium Blog の記事 "A QUIC update on Google’s experimental transport" を元に、北村が翻訳・加筆したものです。詳しくは元記事をご覧ください。]

Google では昨年、最新のインターネットに対する UDP ベースのトランスポート プロトコル、QUIC を公開しました。 それから 四半期、QUIC を使用した Google サービスへのトラフィックを徐々に増やし、規模を拡大しながら QUIC のパフォーマンスを分析してきました。現在までのところ結果は良好で、QUIC の低遅延接続確立、優れた輻輳制御や切断時の接続回復といった機能によって、TCP よりも優れたパフォーマンスを示し続けています。

ウェブ検索などの待ち時間に影響を受けるサービスにとって、ほぼ同時に送受信接続を確立できることは最大のメリットです。これまでの標準では、ウェブ ブラウジングのセキュアな通信は TCP + TLS を使用して行うものでした。この形式では、セキュリティを確保するため、ブラウザが実際にウェブページを要求するまでにサーバーと 2 ~ 3 回の送受信を行う必要がありました。QUIC ではあらかじめクライアントから所定のサーバーと通信を行うことで送受信の回数を減らし、ウェブページ読み込みの迅速化を実現しています。データによると、実に 75% もの接続が QUIC のゼロ・ラウンドトリップ機能によって恩恵を受けることができると示されています。接続が事前に確立される Google 検索のような効率化されたサイトですら、QUIC によってページの読み込み時間が 3% ほど向上することが示されています。
QUIC ではさらに、輻輳制御と切断回復機能の向上という多大な利点があります。パケットの再送信時に、パケット シーケンス番号が再利用されることはありません。これによって不明瞭なパケット受信が発生せず、再通信タイムアウトを回避できます。結果として、接続状況が良好でない状況において QUIC は TCP よりも優れた接続を行うことができます。最も遅い 1% の接続状況においても、Google 検索ページの読み込みを大幅に削減できます。 こうしたメリットは、Youtube などの動画サービスではより顕著になります。QUIC 接続での動画視聴の際に、再バッファ時間が 30% 削減されるという報告もなされており、視聴時間が短縮されることで、繰り返し、より多くの動画を視聴できるようになっています。

現在、Chrome から Google サーバーへのおよそ半数のリクエストが QUIC で行われており、今後も QUIC のトラフィックを増やしていく方針です。最終的には QUIC を、Chrome とモバイルアプリの双方で、Google のクライアントから Google のサーバーへの通信規格のデフォルトにする予定です。インターネット標準として IETF に QUIC を正式に提案する予定ですが、その前にワイヤーフォーマットを変更したり、リファレンス実装を SPDY - QUIC から HTTP2 - QUIC に更新したりするなど、いくつかの解決すべき点があります。今後数か月で、応答確認時のオーバーヘッドを低減しサーバー側での拡張性を高め、前方誤り訂正や輻輳制御の向上、マルチパス接続のサポートの追加などに取り組む予定です。

状況を確認したり実際に試すには、コードこちらのページをご確認ください。また、proto-quic@chromium.orgにもご参加ください。一歩ずつ、インターネットを改良し続けます。

Posted by Eiji Kitamura - Developer Relations Team

[この記事は、 Google Cloud Platform Japan Blog とのクロスポストです。]

2015 年 6 月 18 日(木) 東京六本木、アカデミーヒルズにおいて、Google Cloud Platform のグローバル イベント、Next を開催することとなりました。

Next は、Google Cloud Platform にフォーカスし、Google のテクノロジーやサービスの最新情報と活用方法、そしてトレーニングを提供するイベントです。

午前中の基調講演では、Google Cloud Platform 事業責任者が来日し Google のクラウド最新情報をご紹介します。午後からはデベロッパー向けセッションと IT 担当者向けのセッションに別れ、コンテナ技術、リアルタイム モバイル開発、データ分析や運用など様々なテーマのプレゼンテーションをお届けします ...
[この記事は、 Google Cloud Platform Japan Blog とのクロスポストです。]


2015 年 6 月 18 日(木) 東京六本木、アカデミーヒルズにおいて、Google Cloud Platform のグローバル イベント、Next を開催することとなりました。

Next は、Google Cloud Platform にフォーカスし、Google のテクノロジーやサービスの最新情報と活用方法、そしてトレーニングを提供するイベントです。

午前中の基調講演では、Google Cloud Platform 事業責任者が来日し Google のクラウド最新情報をご紹介します。午後からはデベロッパー向けセッションと IT 担当者向けのセッションに別れ、コンテナ技術、リアルタイム モバイル開発、データ分析や運用など様々なテーマのプレゼンテーションをお届けします。

さらに "Hands-on Lab" として、実際に Google Cloud Platform に触れ、その場で Google スタッフに質問できるブースもご用意。

デベロッパーや IT 担当者の皆様、Google のクラウド テクノロジーがどう今のサービスやツールに活かせるのかを知りたい方、ぜひご参加ください。基調講演はライブ配信も行います。

概要
【日時】6月18日(木)11:00~17:30 (10:00 受付開始)
【会場】六本木アカデミーヒルズ
    東京都港区六本木6-10-1 六本木ヒルズ森タワー49F
【参加費】無料

【参加登録】詳細、お申し込みはこちら

皆さまのご来場をお待ちしております!

Posted by Kazunori Sato - Developer Relations Team

[この記事は Google Fun Propulsion Labs の Jon Simantov による Google Open Source Blog の記事 "We throw pie with a little help from our friends" を元に、荒木が翻訳・加筆したものです。詳しくは元記事をご覧ください。]

Fun Propulsion Labs at Google* は、ゲーム開発者向けにいくつかの新機能をリリースしました。Pie Noon (Google ...
[この記事は Google Fun Propulsion Labs の Jon Simantov による Google Open Source Blog の記事 "We throw pie with a little help from our friends" を元に、荒木が翻訳・加筆したものです。詳しくは元記事をご覧ください。]

Fun Propulsion Labs at Google* は、ゲーム開発者向けにいくつかの新機能をリリースしました。Pie Noon (Google のオープンソース Android TV ゲーム)において、ネットワーク接続されたマルチ スクリーン アクションに対応するようアップデートを行いました。さらに元のライブラリに改善を加えた、Pindrop オーディオ ライブラリや Motive アニメーション システムなどのいくつかの優れた新しいライブラリを追加しました。

Pie Noon マルチ スクリーン アクション

Android TV と、Android 携帯端末やタブレットを持っている 4 人までの友だちがいれば、今回のアップデート モードで戦略的マルチ プレイヤー ゲームを楽しめます。手元の Android 端末で、相手に知られることなく次のアクションを行えます。パイを投げるか、攻撃をブロックするか、リスクをおかして近づくか、大きいパイを待つか。ターゲットとアクションを選んで、Android TV で何が起こるか見てみましょう。
最新の Google Play Games サービスの最新バージョンから NearbyConnections API を使って、スマートフォンを Android TV に簡単に接続できます。これで Pie Noon party ゲームがターンベースの戦略ゲームに様変わりしました。Google Play から Pie Noon 最新バージョンをダウンロードしてお試しいただけます。または、公開されているソースコードを確認し、今回 FlatBuffers をどのように使って、早く、ポータブルに、帯域幅効率の良い方法でネットワークからデータをエンコードしているかをご確認ください。

Pindrop: オープンソースのゲーム オーディオ ライブラリ

Pindrop はゲーム内の音を管理する、クロス プラットフォームの C++ ライブラリです。Android、Linux、iOS、OSX のさまざまな組み合わせをサポートしています。このコードの初期バージョンは最初の Pie Noon リリースに含まれていましたが、現在は別のライブラリとして使用できますので、自身のゲームに適用できます。Pindrop では、サウンドの読み込みと解放、サウンドやリスナーの場所の確認、オーディオ チャンネルの優先順位付けなどが処理されます。

Pindrop は、複数のオープンソース テクノロジーを組み合わせ、その上に構築されています。
  • SDL Mixer は実際にオーディオを再生するバックエンドとして使用します。
  • データの読み込みとファイルの構成は、シリアライゼーション用のライブラリ FlatBuffers で処理されます。
  • 固有の演算ライブラリには MathFu を使用し、数多くの計算が内部的に処理されます。
GitHub ページから最新のオープンソース リリースをダウンロードできます。ドキュメント類は こちらで入手できます。ソースツリーにサンプル プロジェクトも含まれます。こちらのディスカッションで質問を投稿していただけます。

Motive: オープンソースのアニメーション システム

Motive アニメーション システムを使うと、静的なシーンに色合いを加え、息づかせることができます。シンプルな変数にモーションを適用することで実現します。たとえば動き続ける対象に光をあてたような効果を加える場合、Motive を使えば滑らかに、かつ動きに応じた効果で光を表現できます。

Motive では、スプライン ベースのモーションプロシージャルなモーション、どちらもサポートしています。これらのモーションは技術的に難しいものではありませんが、とても繊細です。計算の間違いが起こりやすく、指示通りに動いてはいるものの、何かが違う、ということが起こりがちです。Motive は計算を自身で行うため、そこに時間をとられることなく、どうしたら感覚的にフィットする表現を行えるかに集中することが可能になります。

Motive には拡張性があり、非常に高速です。従来のアニメーション システムよりメモリ使用も控えめで、一定しています。Dual Cubic Splines をベースにしています。Motive を、既存のフル機能アニメーション システムに対するパフォーマンスの高いバックエンド システムとして使用していただければ幸いです。

初期の段階では簡単なものを迅速に行うことに集中するため、Motive のこの初期リリースではあえて機能を限定しています。プロシージャルとスプライン ベースのアニメーションをサポートしていますが、BlenderMaya などのアニメーション パッケージからのデータ エクスポートはまだサポートしていません。Motive 1.0 はツリー、カメラ、エクストレミティなど、入門用として最適ですが、フル装備モデルではありません。 すべての FPL テクノロジーと同様、Motive はオープンソースでクロス プラットフォーム対応です。こちらもディスカッションをご確認ください。

Google の Fun Propulsion Labs とは?

Pie NoonLiquidFun PaintVoltAir などの Android ゲームや、 MathFuLiquidFunFlatBuffers といったクロス プラットフォーム ライブラリで思い出していただける方もいるかもしれません。

このチームについてさらに知りたい方は、Game ON! の新しいエピソードをご覧ください。Todd Kerpelman も出演しています。
* Fun Propulsion Labs とは、Android やその他のプラットフォームにおけるゲームの進化に特化した Google のチームです。

Posted by Yuichi Araki - Developer Relations Team

[この記事は Ian Lake、Android デベロッパー アドボケートによる Android Developers Blog の記事 "Android Support Library 22.1" を元に、萩倉が翻訳・加筆したものです。詳しくは元記事をご覧ください。]
[この記事は Ian Lake、Android デベロッパー アドボケートによる Android Developers Blog の記事 "Android Support Library 22.1" を元に、萩倉が翻訳・加筆したものです。詳しくは元記事をご覧ください。]

「最良のコードはコードがないことだ」という言葉を聞いたことがあるかもしれません。コードをまったく書かないのはお勧めしませんが、記述するなら、定型的なコードをコピーするのではなく、独自の価値をアプリに付加すべきでしょう。Android サポート ライブラリにはちょっとした工夫が施されているため、こうした価値を付加するには最適なリソースと言えます。

Android サポート ライブラリの最新リリースも例外ではなく、とても役立つコンポーネントの数々や v4 全体にわたる変更、AppCompat、Leanback、RecyclerView、パレット、Renderscript ライブラリなどを追加しています。このリリースには、新しい AppCompatActivity や AppCompatDialog から Android TV の新しい手順フローまで、わくわくする要素が数多く詰め込まれています。

サポート V4

サポート V4 ライブラリは Android サポート ライブラリのベースとして機能し、下方互換性を容易に保つことができるクラスが数多く含まれています。

DrawableCompat によって、API 4 でドローアブルによる着色が可能になります。DrawableCompat.wrap(Drawable)) でドローアブルをラップすると、setTint())、setTintList())、setTintMode()) が使えるようになります。複数色をサポートするためだけに別のドローアブルを作成して保持する必要がなくなります。

さらに、Palette の内部ロジックの一部を ColorUtils クラスで使えるようにしました。組み込みツールとして使えば、より簡単に色を扱えます。ColorUtils では、色調のコントラスト比を簡単に計算し、最小コントラスト(文字列の判読に最適)を保持する最小のアルファ値を決定します。また、色を HSL 要素に変換します。

Interpolator (補間)は、アニメーションのスピードを速めたり遅くしたり、アニメーションの変更の割合を制御するために重要なアニメーション システムです。Lollipop では android.R.interpolator にいくつかの Interpolator が追加されました。たとえば、fast_out_linear_infast_out_slow_inlinear_out_slow_in で、Authentic motion の重要な要素です。これらは FastOutLinearInInterpolatorFastOutSlowInInterpolatorLinearOutSlowInInterpolator クラスなどのサポート ライブラリから利用可能になっているため、あらゆるアニメーションのコードで使用できます。こうした組み込み Interpolator に加えて、二次、三次のベジェ曲線を造形できる PathInterpolatorCompat も作成しています。

さらに今回のリリースでは、Space ウィジェットを GridLayout ライブラリから サポート V4 に移行し、別の依存関係を作成することなく利用できるようになっています。Space ウィジェットは軽量の非表示ビューで、要素の間でギャップを作成するために使用できます。

AppCompat

AppCompat サポート ライブラリには地味でも重要な更新があります。API 7 以降のあらゆるデバイスで 1 つの統一的な Action Bar を使えるようになりました。revision 21 では、すべての API 7 以降のデバイスにマテリアル カラー パレットが導入され、ウィジェット着色、ツールバー サポートなど多くの機能が実装されています。これにより、ActionBarActivityがその名で表される以上の範囲にわたり機能するようになりました。

そこでこのリリースでは、ActionBarActivity は新しい AppCompatActivity に置き換えられます。ただし、単に名前を変更しただけではありません。AppCompat の内部ロジックが AppCompatDelegate に引き継がれています。これはあらゆる Activity に含めることができるクラスで、適切なライフサイクル メソッドの使用、統一的な同じテーマの使用、着色、などの機能が AppCompatActivity を(使用すれば簡単に始められますが)使わなくても行えます。

新しい AppCompatDelegate では、AppCompatDialog クラスを通じて、一貫したMaterial Design のダイアログへのサポートも追加しています。AlertDialog を以前使用したことがあれば、サポート ライブラリ バージョンとしてsupport.v7.app.AlertDialog が追加されたことも嬉しいニュースでしょう。同じ API で AppCompatDialog のあらゆるメリットが使えるようになります。

AppCompat を使ってウィジェットを自動的に着色する機能も、アプリのイメージを際立たせ一貫したものにするためとても便利です。それぞれ着色をサポートするように、Button を AppCompatButton に、TextView を AppCompatTextViewに置き換えるなどにより、レイアウトの装飾時に自動的に着色が行われます。今回のリリースではこの着色可能なウィジェットが広く使用できるようになり、サポートされているウィジェットの一部でサブクラスが必要なことがあっても、自動着色機能を使い続けることができます。

現時点で、着色可能なウィジェットには以下のものがあります。
  • AppCompatAutoCompleteTextView
  • AppCompatButton
  • AppCompatCheckBox
  • AppCompatCheckedTextView
  • AppCompatEditText
  • AppCompatMultiAutoCompleteTextView
  • AppCompatRadioButton
  • AppCompatRatingBar
  • AppCompatSpinner
  • AppCompatTextView

Lollipop では、android:theme XML 属性を使ってビューごとにテーマを上書きできます。明色のアクティビティ上に暗色のアクションバーを表示するときなどに非常に便利です。AppCompat では、以前の app:theme に代わり、ツールバーのandroid:theme が使えるようになります。また、API 11 以降のデバイスですべてのビューをサポートする android:themeが導入されます。

AppCompat を使ったことがなくても、簡単に始められますのでお試しください。ユーザーに一貫したデザインを届けましょう。


Leanback

Android TV アプリに数々のベスト プラクティスを提供する Leanback ライブラリを使うと、新しい手順案内機能が提供され、TV の可視性を高める必要がなくなります。
クラスやテーマがまとめられ、複数の手順があるプロセスの構築に使用できます。左側にガイドビューが、右側にアクションの一覧が表示され、Android TV で特に見栄えがします。Theme.Leanback.GuidedStep の親としてテーマを通じてカスタマイズできます。さらに多くのカスタマイズが必要な場合は、GuidanceStylist や GuidedActionsStylist を通じてカスタマイズすることも可能です。

また、多くのバグ修正、パフォーマンスの改善、ライブラリ全体の質の向上などが実装されています。Leanback がユーザーに対しても開発者に対してもより良いものになることが目標です。

RecyclerView

バグ修正に加えて、このリリースでは新しい SortedList データ構造が追加されました。このコレクションではカスタム オブジェクトの並べ替えリストを容易に保つことができ、RecyclerView.Adapter を通じてデータが変更されるため変更イベントが正しく送信されます。RecyclerView によって提供される、アニメーションに追加、削除、移動、変更された項目が保たれます。

さらに、SortedList はバッチ変更もサポートしています。1 つの操作セットをアダプターに送るだけで、多くの項目が同時に変更され、操作性が最適になります。

Palette

画像から色を抽出する際に Palette を使っているユーザーには、今回のリリースによって質を低下させることなく速度が 6 ~ 8 倍に向上することは朗報でしょう。

Palette は今回のリリースで、Builder パターンを使ってインスタンス化されるようになります。Palette.generate(Bitmap)や同等のものを直接呼び出す代わりに Palette.from(Bitmap)) を使って Palette.Builder を取得するようになります。generate() や generateAsync() を呼び出して色の Swatch を取得する前に、任意で色の最大数を変更し、Palette に対して実行される画像の最大サイズを設定できます。

Renderscript

Renderscript によって大量の演算が可能になります。サポート ライブラリ バージョンでは、Script Intrinsic という名の事前定義された数多くのスクリプトが API 8 以降のすべてのデバイスで使用できます。このリリースでは、本来の Renderscript の機能が使えるかどうかを判断する検出アルゴリズムが改善され、あらゆるデバイスで信頼性とパフォーマンスが向上します。最速で最も信頼性の高い実装が常に選択されるようになります。さらに次の 2 つの Intrinsic が追加されます。ScriptIntrinsicHistogram と ScriptIntrinsicResize、コレクションが 10 個になります。

SDKは今すぐ入手可能

Android サポート ライブラリを使い始めるには、今が最適です。Android SDK Manager から Android サポート ライブラリと Android サポート リポジトリをダウンロードして、すぐに開発を始めましょう。

Android サポート ライブラリや利用可能な API の詳細については、Android デベロッパー サイトの サポート ライブラリ セクションをご覧ください。


Posted by Takeshi Hagikura - Developer Relations Team