Google は、世界中のコンテンツ提供者、テクノロジー企業との議論をもとに、Accelerated Mobile Pages(AMP)というオープンソース プロジェクトを 2015 年 10 月に公表しました。これは、モバイル ウェブの表示を飛躍的に向上させることを目指すプロジェクトです。Google は、動画、アニメーション、美しいグラフィックス表現をそなえたウェブページが、スマートな広告とうまく共存しつつ、瞬時に表示されるようにしたいと考えています。また、同じコードが複数のプラットフォームやデバイスで動作することで、ユーザーが利用しているのがスマートフォン、タブレット、その他のモバイル端末のいずれであってもコンテンツが瞬時に表示されるようにしたいと考えています。


本日、AMP 導入ガイドの日本語版 PDF を公開しました。技術資料等も順次公開しており、安定版の仕様書などは AMP プロジェクトの公式ページ内でご参照いただけます。また、GitHub のレポジトリ では最新版の実装や提案中の機能を確認できますし、問題がある場合にはこちらのイシュー トラッカーよりご報告ください。オープンソース プロジェクトですので、ソース コードを直接ご提供いただく Pull Request も歓迎しています。


現在、AMP には New York Times や BBC をはじめとするパートナーが世界的に参加を表明しており、日本でも、朝日新聞、産経新聞、日刊スポーツ、毎日新聞、株式会社イード、マイナビニュース、BLOGOS をはじめとする多くのメディアやコンテンツ提供者が AMP への対応を準備しています。また、Ameba や LINE を含むサービスが、サービス内のコンテンツ ページを AMP に対応させる他、外部ウェブページへのリンク時に AMP 版が存在する場合は、AMP 版にリンクするなどの対応を予定しています。一方 Google では、先日 Inside Search ブログ(英語)でもお伝えしたように、Google の検索結果から AMP ページが表示されるようになります。


AMP プロジェクトは、すべての人にとってモバイル ウェブの体験をより速く、優れたものにすることを目指しています。このオープンなプロジェクトが、情報が自由に流通していくための一助となることを期待しています。関係者のみなさまのご理解とご協力をお願いいたします。


Posted by Google AMPチーム

Drive API によって Apps Script と連携できる一般的な開発ツール

Apps Script プロジェクト ライフサイクルのベスト プラクティス

プロジェクトのインポートとエクスポート ページの情報に加えて、いくつかの考慮すべき点があります。
  • ローカル ファイル セットがマスターです。ローカルでファイルの追加、削除、または名前の変更を行う場合、リンクされたツールによる次のアップロード時に Apps Script プロジェクトがローカル ファイル セットが自動的に反映されます。
  • ローカル ファイルには任意の名前を付けることができます。プロジェクトへのアップロード前のファイル ステージング タスクで、クライアント側の ".js" や ".css" に ".html" を追加する必要があります。上記で言及したツールでは、アップロードのためにステージングする ".js" ファイルを、Apps Script サーバー スクリプト ファイル(エディタの ".gs")として処理します。HtmlService によってアクセスする「クライアント」コードとしてステージングする、あらゆる ".html" ファイルを処理します。つまり、JavaScript として ".js" 拡張子を付けたサーバー スクリプトを開発し、ローカルのツールで JavaScript 構文が認識されるようにすることができます。開発中に、クライアント側のコード(つまり、HtmlService によって処理する必要があるコード)を ".html"、".js"、または ".css" にして、エディタで正しい構文が強調表示され、検証されるようにすることが可能です。

編集機能に加えて、スクリプト エディタ以外での作業によって実現する最大の改善点は、1 つの Apps Script プロジェクトでの作業に限定されなくなることです。各自の Apps Script プロジェクトに対して作業を行う個々のデベロッパーがチームとして共同作業を行うことが大幅に容易になり、テスト、ユーザーによる受け入れ、本番稼働バージョンのプロセスやセキュリティが向上することにより、容易に制御できるようになります。その他の通常のプロジェクト プラクティスとの整合性を保つだけではなく、Apps Script ならではの複数環境でのアプローチを利用する方法がいくつかあります。



このアプローチを使用する場合、考慮すべき 3 つのベスト プラクティスがあります。

  • 「ローカル」での開発のために固有の構成値を使用する。
  • スタンドアロンで実行できるテスト方法を構築する。
  • 開発とテストの依存関係を含める。

ベスト プラクティス:「ローカル」での開発のために固有の構成値を使用する

デバッグとテストのために、デベロッパーがローカルな値をインジェクトできるようにする基本構成クラスの簡単な例を示すサンプルがあります。この場合、デベロッパーが Apps Script に Drive API へのアクセスのために完全なスコープが必要であることを示すアノテーション @NotOnlyCurrentDocも追加しています。このプロジェクトでは、「本番稼働」の展開にアノテーション @OnlyCurrentDoc があるため、OAuth のスコープがドキュメント、スプレッドシート、またはフォームのアドオンとして実行されるスクリプトに関連するドキュメントに制限されることになります。標準ファイル パターンをソース プロジェクトの「ignore」ファイルに追加する場合、デベロッパー独自のファイルが実際のコードベースに組み込まれることはありません。

プロジェクトにとっての利点 ― 本番環境で OAuth のスコープをより厳密に制限でき、開発中のデベロッパーのアクセス範囲が広がります。また、デベロッパーは各自の開発作業をサポートする個人的な構成設定を保持できます。

ベスト プラクティス:スタンドアロンで実行できるテスト方法を構築する

現時点では、自動的にテストをトリガーする方法はありませんが、プロジェクトの特定の機能を検証するユニット テストを作成することはできます。また、テストに特定の構成値を指定することもできます。繰り返しになりますが、これらのファイルは本番稼働の展開に組み入れるべきではありません。Apps Script Execution API を使用して、テストランナーからこれらのテストを実行することもできます。

プロジェクトにとっての利点 -テスト機能を作成して、本番稼働の Apps Script ファイルから切り離しておくことができます。これによって、本番稼働の Apps Script プロジェクトが簡素化され、本番稼働のユーザーに必要となる正しい OAuth のスコープが維持されます。

ベスト プラクティス:開発とテストの依存関係を含める。

スプレッドシートやドキュメントのアドオンを開発する場合、SpreadsheetApp に「アクティブな」アイテムを用意します。ただし、開発やテストの実行中は「アクティブな」コンテキストなしで Apps Script を実行できます。このモードで開発する必要がある場合、動作モードを決定できるメソッドに、現在アクティブになっているアイテムを取得するための呼び出しをラップできます。これにより、開発やテストのインスタンスで、テストに使用する「アクティブな」ドキュメントの ID をインジェクトできますが、実際のコンテキストで実行する場合、getActive* の結果に委譲します。

プロジェクトにとっての利点 - 最終的な展開の状況が、一般的にはデバッグ時に利用できないソースに依存する場合でも、最適なユニット テスト方法をプロジェクトに統合できます。

まとめ

現在では、独自の開発ツールやソース管理ツールを使用するという選択肢があります。ウェブ アプリやアドオンとして公開する場合や、高度なサービスを構成する場合など、アプリケーションのライフサイクルで Apps Script エディタを使用する必要はありますが、いま紹介した手順を実行することによって Apps Script プラットフォームの機能を最大限に利用することができます。Google デベロッパー サイトで Apps Script を参照して、Apps Script 開発の詳細情報とサンプルを取得してください。

コマンドラインで python ツールを使用してチームの構築プロセスを実現する場合、Joe Stump の python-gas-cli を参照してください。ここでパッケージ情報を参照したりGitHub レポジトリで使用方法を参照したりできます。

最後に、この投稿に関連する参照先へのリンクをご紹介します。


Posted by Yoshifumi Yamaguchi - Developer Relations Team



Posted by Eiji Kitamura - Google Play Team


Google Play と Apple ストアを合わせると 310 万以上のアプリが存在しているので、ユーザーが新しいアプリを探すときに、あなたのアプリがいつも表示され、目立つようにする必要があります。第 2 部では、Google のモバイル ソリューション コンサルタントである Jason Rosenblum が、ユーザーを魅了するための推奨事項を投稿します。どうぞ、お楽しみに。

  • prod/java フォルダに運用コードに使用するクラスを作成するか、main/java からクラスを移動します。このクラスが main/java フォルダには含まれていないことを確認します。
  • mock/java フォルダに同じクラスを(厳密に同じクラスおよびファイル名で)作成しますが、テスト用には異なる(フェイク)実装を用意します。
  • Android Studio の [Build Variants] ウィンドウでインストールするバリアント、またはテストに使用するバリアントを選択します。バリアントは、フレーバーとビルドタイプの組み合わせです。
  • 注:Gradle でフレーバーを追加すると、タスク名が変更されます。ここでは installDebug ではなく、installProdDebug または installMockDebug を選択する必要があります。

    テストを実行する

    プロダクト フレーバーとモック フレーバーを構成してモック実装の準備が完了したら、次の Gradle タスクを使用して、テストを実行する方法を選択できます。


    このメソッドを使用して挿入クラスを実装する方法については Android テスト コードラボをご覧ください。これらの実装の 1 つは実際のデータを提供するプロダクトであり、もう 1 つは隔離されたテストの実行にフェイクデータを使用するフェイク依存関係を提供するモックです。

    閉じられた環境が適切に設定できたらビルドプロセスに柔軟性をさらにもたせ、アプリのさまざまなコンポーネントを交換できるようにするため、ディメンションを追加してもよいでしょう。上記の方法はシンプルなプロジェクトに適していますが、より複雑な状況では学習のための時間を確保し、依存性の注入フレームワークをプロジェクトに追加することをお勧めします。

    Posted by Yuichi Araki - Developer Relations Team
    Share on Twitter Share on Facebook

    Android 上の Chrome 48 の通知アクション

    最大の接続速度を検出する

    モバイル端末のユーザーは高品質 WiFi から 2G に至るまでのあらゆるネットワークを介してインターネットに接続しており、適切なモバイル エクスペリエンスを設計することが難しくなっています。Chrome 48 (Android 版のみ)からは、NetworkInformation.downlinkMax を使用して端末の最大帯域幅を検出できるため、接続速度に適したサイズのリソースを配信できるようになります。NetworkInformation.onChange イベント ハンドラを使えば、接続品質の変化に対応することも可能です。

    今回のリリースに追加されたその他の機能


    細かな変更



    Posted by Eiji Kitamura - Developer Relations Team
    Share on Twitter Share on Facebook

    左:拡大
    右:ウィンドウのサイズ変更


    ファイルのドラッグ&ドロップ


    電話コントロール


    バッテリー コントロール

    今後も多くの機能を追加し続ける予定です。新機能を追加した際にはお知らせします。

    今後の予定とセットアップ

    将来のバージョンの Android Studio では、より多くの API レベルのサポート、センサーの追加などの機能の実現を予定していますのでご期待ください。新しいエミュレータが搭載された Android Studio は、現在、Android Studio Canary チャンネルおよびツールのプレビュー チャンネルで利用できます。

    新しい Android エミュレータのプレビュー版を設定する方法を参照するには、ここをクリックしてください。

    お客様のフィードバックをお待ちしています。Google+ で Android Studio 開発チームにお送りください。


    Posted by Yuichi Araki - Developer Relations Team
    Share on Twitter Share on Facebook



    ガベージ コレクション タスク(赤色)をアイドル時間(青色)にスケジュールする。


    スマートなガベージ コレクションを行うと遅延と途切れが減少し、3D アニメーションやゲームがスムーズに動作します。タスク スケジューラが V8 に統合されたことにより、ゲームプレイとレンダリングに対してさらに高いフレームレートが一貫してもたらされます。Chrome 41 から Chrome 46 までの間に、WebGL グラフィックのスムーズなレンダリングを計測する 3D ベンチマーク OORT Online のスコアが最大で 33% 増加しました。このスコアは、現在のデスクトップ コンピュータの最高スコア 10,000 ポイントをわずかに下回るだけです。




    新しいシステムのメモリ消費量の低減は、ブラウザが数分間またはそれ以上アイドル状態になった場合、特に明白です。たとえば、Gmail タブが 2 分 30 秒の間未使用のままであると、 以前のバージョンに比較して Chrome 45 ではメモリ消費量が 最大で 45% 低減します。

    よりスムーズで高速なブラウジング エクスペリエンスをユーザーに提供することに加え、これらの変更によってデベロッパーはさらに強力なアプリケーションと優れたグラフィックを使用して Chrome の限界を押し広げることが可能となります。今後の V8 の最適化にご期待ください。また、新しい V8 ブログガベージ コレクションのタイミングに関する詳細 をご覧ください。

    Posted by Eiji Kitamura - Developer Relations Team
    Share on Twitter Share on Facebook


    Remote Display プラグインを使用したゲーム

    すでにいくつかのパートナー企業は Unity 用 Remote Display プラグインを使用した楽しいゲーム アプリを提供しており、近日中にさらに多くのゲーム アプリがリリースされる予定です。

    Monopoly Here & Now(国内未発表)は、従来の Monopoly ゲームの最新バージョンです。このゲームでは、世界で最も象徴的な都市や名所を訪れながら世界中を旅して、パスポート スタンプを集めます。パスポートをスタンプで埋めたプレイヤーが勝者となります。これは家族全員で楽しめるひと味違ったゲームです。

    また、戦略ゲームの Risk(国内未発表)は、友人に対戦を申し込み、自分の軍隊を編成し、世界を征服する、というゲームです。従来の世界地図に加えて、さらに 2 つのテーマ マップが用意されました。

    これらのゲームは、携帯電話やタブレットの機能を利用するゲームの魅力的な世界をテレビに映し出せることを証明しています。

    ゲームに Remote Display プラグインを追加する

    GitHub または Unity Asset Store から Unity 用 Remote Display プラグインをダウンロードできます。既存の Unity ゲームがある場合は、Remote Display パッケージをインポートし、シーンに CastRemoteDisplayManager プレハブを追加します。次に、ローカル ディスプレイとリモート ディスプレイ用のカメラをセットアップし、CastRemoteDisplayManager で構成します。

    ユーザーが Google Cast デバイスを選択できるように UI に [Cast] ボタンを表示するには、シーンに CastDefaultUI プレハブを追加します。

    これで、アプリをビルドして実行する準備が完了しました。Cast デバイスに接続すると、テレビにリモート カメラ ビューが表示されます。

    マルチスクリーンのユーザー エクスペリエンスをサポートするためのゲームの操作方法を考慮する必要があります。モバイル デバイス センサーを使用して、モーションやタッチによる画面上のアクションを操作する抽象コントロールを作成できます。あるいは、プレイヤーがデバイス上の何かをタッチして画面上の何か他のものを制御する仮想コントロールを作成することもできます。

    視覚的なデザインについては、プレイヤーの視点を常に移動させないようにして、疲労感を与えないことが重要です。Google Cast UX チームは、Cast 対応のゲームで一貫性のある予測可能なユーザー エクスペリエンスを実現する方法について説明する Google Cast ゲームの UX ガイドラインを作成しています。

    デベロッパー向けリソース

    Google の Unity 公式プラグインの詳細については、ここを参照してください。Unity 用 Remote Display プラグインの使用方法の詳細については、デベロッパー向けドキュメントコードラボを参照してください。また、Unity Asset Store と GitHub に UX 対応の Unity サンプル ゲームを公開しています。G+ コミュニティに参加して、Google Cast に関するデペロッパーとしての経験を共有してください。

    Posted by Yoshifumi Yamaguchi - Developer Relations Team
    Share on Twitter Share on Facebook

    こちらのドキュメントに掲載している API のプロパティや定数を変更することで、ボタンをカスタマイズすることもできます。

    ブランディングのガイドラインはこちらを参照してください。さまざまなタイプのボタンをご利用いただけるよう、ボタン画像は PNG、SVG、EPS などの形式で、解像度も数種類用意しています。ボタンのローカライズにこれらのファイルを利用することもできますが、アプリのスタイルに合わせてボタンのデザインを変更する場合は、前述のガイドラインを参照してください。

    この記事では、アプリの Android 側の処理のみを説明しています。アプリにはサーバー側の処理も含まれることが多く、そこでも認証情報を安全に扱いたいのではないでしょうか。

    次回の投稿では、Google Sign-In でログインする場合のサーバー側のシナリオ、たとえば独自のサーバーに認証情報を安全に渡す方法や、パーミッションとユーザーから送信された認証情報を使用して Google Drive など Google のバックエンド サービスを利用する方法を説明します。

    Posted by Eiji Kitamura - Developer Relations Team
    Share on Twitter Share on Facebook

    Android Studio プロジェクトで Instant Run を有効にする

    通常どおり Run を選択すると Android Studio は通常のコンパイル、パッケージング、インストールの各ステップを実行し、アプリをデバイスまたはエミュレータで実行します。ソースコードやリソースの編集後、Run をもう一度押すと、変更内容が実行中のアプリに直接デプロイされます。
    Android Studio での Instant Run の新しい Run アクションと Stop アクション

    Instant Run の詳しいガイドとセットアップについては、こちら をクリックするとご確認いただけます。

    GPU Profiler

    OpenGL ES Android コードも Android Studio の GPU Profiler によって簡単に作成できるようになりました。このツールはまだ初期段階のプレビューですが、アプリが OpenGL ES コードを実行する際に、GL ステートと GL コマンドの詳細を表示する機能をはじめ、セッション全体の記録や GL フレームバッファによるウォークスルー、テクスチャー機能など、強力な機能を備えています。
    Android Studio の GPU Profiler

    GPU Profiler を利用するには、Android Studio SDK Manager から GPU Debugging Tools パッケージをダウンロードしておく必要があります。GPU Profiler の詳細と、プロファイリング向けにAndroid アプリのプロジェクトをセットアップする方法については、こちらをクリックするとご確認いただけます。


    Android Studio 2.0 は Android Studio 先行リリース チャンネルからすぐに入手できます。上記の新しい機能をお使いになった感想などを、Google+ から Android Studio 開発チームにお送りください。

    Posted by Eiji Kitamura - Developer Relations Team
    Share on Twitter Share on Facebook