[go: nahoru, domu]

[この記事は Shanee Nishry による Android Developers Blog の記事 "Game Performance: Vertex Array Objects" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。]

以前、頂点レイアウト修飾子を使用して、OpenGL アプリケーションのパフォーマンスと決定性を向上させる方法をご案内しました。この投稿では、オブジェクト描画に際し、パフォーマンスを向上し、よりクリーンなコードを生成できる便利なテクニックをもう 1 つご紹介します。

頂点バッファのバインド

画面上に描画する前に、該当する頂点シェーダー属性に頂点データ(例、ポジション、法線、テクスチャ座標)をバインドする必要があります。それには、頂点バッファをバインドし、全体の頂点属性を有効にして、glVertexAttribPointer でバッファのレイアウトを記述します。

描画処理は以下のようになります。
const GLuint ATTRIBUTE_LOCATION_POSITIONS   = 0;
const GLuint ATTRIBUTE_LOCATION_TEXTUREUV = 1;
const GLuint ATTRIBUTE_LOCATION_NORMALS     = 2;
// Bind shader program, uniforms and textures
// ...
// Bind the vertex buffer
glBindBuffer( GL_ARRAY_BUFFER, vertex_buffer_object );
// Set the vertex attributes
glEnableVertexAttribArray( ATTRIBUTE_LOCATION_POSITIONS );
glVertexAttribPointer( ATTRIBUTE_LOCATION_POSITIONS, 3, GL_FLOAT, GL_FALSE, 32, 0 );

glEnableVertexAttribArray( ATTRIBUTE_LOCATION_TEXTUREUV );
glVertexAttribPointer( ATTRIBUTE_LOCATION_TEXTUREUV, 2, GL_FLOAT, GL_FALSE, 32, 12 );

glEnableVertexAttribArray( ATTRIBUTE_LOCATION_NORMALS );
glVertexAttribPointer( ATTRIBUTE_LOCATION_NORMALS, 3, GL_FLOAT, GL_FALSE, 32, 20 );
// Draw elements
glDrawElements( GL_TRIANGLES, count, GL_UNSIGNED_SHORT, 0 );
このコードは、あまり好ましいものではありません。それにはいくつかの理由があります。1 つめの理由は、描画の前に正しい属性を有効または無効にして、頂点バッファのレイアウトをキャッシュに格納する必要があることです。つまり、ほとんど意味のないタスクのために、ハードコーディングかデータ保管のいずれかを実行しなければなりません。

2 つめの理由はパフォーマンスです。有効化する属性を個別にドライバーに伝えなければならず、これは最適とはいえません。この情報をプリコンパイルしておいて、一括して引き渡すのが最善策です。

最後に、これは純粋に見た目の問題ですが、長いボイラプレートコードによって描画処理が雑然としてしまうということが挙げられます。これは、できるならば避けたいところです。

このコードが好ましくないと思われる理由は他にもありますレイアウト修飾子を活用している点は素晴らしいのですが、このコードではすでに OpenGL ES 3 以上を使用しているため、 ジオメトリのインスタンス化 も使用すればさらに良くなるでしょう。単一の描画処理に多くのインスタンスをメッシュのようにバッチさせることで、パフォーマンスを確実に強化できます。

では、上記のコードをどのように改善できるのでしょうか。

頂点配列オブジェクト(Vertex Array Objects: VAO)

OpenGL ES 3 またはそれ以上を使用している場合、頂点属性の状態を保管するために頂点配列オブジェクト(VAO)を使用します。

VAO を使用することにより、繰り返して使用される頂点の説明フォーマットがドライバーにコンパイルされます。加えて、glVertexAttribPointer で必要とされる頂点フォーマットのキャッシュ格納が不要となり、また、描画ごとのボイラプレートコードを減らすことができます。

頂点配列オブジェクトの作成

最初に VAO を作成する必要があります。頂点バッファ オブジェクトに沿ってメッシュごとに作成すると、以下のようになります。
const GLuint ATTRIBUTE_LOCATION_POSITIONS   = 0;
const GLuint ATTRIBUTE_LOCATION_TEXTUREUV = 1;
const GLuint ATTRIBUTE_LOCATION_NORMALS     = 2;
// Bind the vertex buffer object
glBindBuffer( GL_ARRAY_BUFFER, vertex_buffer_object );
// Create a VAO
GLuint vao;
glGenVertexArrays( 1, &vao );
glBindVertexArray( vao );
// Set the vertex attributes as usual
glEnableVertexAttribArray( ATTRIBUTE_LOCATION_POSITIONS );
glVertexAttribPointer( ATTRIBUTE_LOCATION_POSITIONS, 3, GL_FLOAT, GL_FALSE, 32, 0 );

glEnableVertexAttribArray( ATTRIBUTE_LOCATION_TEXTUREUV );
glVertexAttribPointer( ATTRIBUTE_LOCATION_TEXTUREUV, 2, GL_FLOAT, GL_FALSE, 32, 12 );

glEnableVertexAttribArray( ATTRIBUTE_LOCATION_NORMALS );
glVertexAttribPointer( ATTRIBUTE_LOCATION_NORMALS, 3, GL_FLOAT, GL_FALSE, 32, 20 );
// Unbind the VAO to avoid accidentally overwriting the state
// Skip this if you are confident your code will not do so
glBindVertexArray( 0 );
以下の追加部分を除いて、前のコード セクションに類似していることに気づかれるでしょう。
// Create a vertex array object
GLuint vao;
glGenVertexArrays( 1, &vao );
glBindVertexArray( vao );
これらの行で VAO を作成し、バインドしています。この後の glEnableVertexAttribArrayglVertexAttribPointer コールはすべて今バインドされている VAO に記録されます。手順としては新たに生成された VAO を使用すればいいだけなので、描画ごとの手続きは大いに簡素化されます。

頂点配列オブジェクトの使用

このメッシュを使用して次に描画をする際は、glBindVertexArray を使用して VAO をバインドするのみで、
// Bind shader program, uniforms and textures
// ...
// Bind Vertex Array Object
glBindVertexArray( vao );
// Draw elements
glDrawElements( GL_TRIANGLES, count, GL_UNSIGNED_SHORT, 0 );
頂点属性の経由は不要になります。これにより、コードはよりシンプルに、フレームごとのコールは短く、効果的になり、ドライバーによるバインドが最適化されることでパフォーマンスも向上します。

glBindBuffer は呼び出されていないことにお気づきでしょうか。これは、VAO により glBindBuffer コール自体が記録されることはないものの、VAO が記録されている間の glVertexAttribPointer の呼び出しが、現在バインドされているバッファを参照しているからです。

ゲーム パフォーマンスを改善する方法をさらにお知りになりたい場合は、ゲーム パフォーマンスに関する記事のシリーズをご覧ください。Android でビルドしている場合、Android のパフォーマンス パターンもご参考にしてください。


Posted by Ryuichi Hoshi - Developer Relations Team

Fablic は、堀井 翔太氏と 竹渓 潤氏が設立した日本のスタートアップです。主に女性をターゲットにしたフリマアプリFRIL を開発し、アプリを通じて個人間で簡単に洋服を売買できるようにしました。

Fablic の創業者達と同社エンジニアの浅野 慧氏、デザイナーの山口 有由希氏へのインタビューから、マテリアル デザインの実装と Android Studio を使用することで、いかにユーザー エンゲージメントが向上し、利用者数が 30% 増える結果となったのかについて、参考になるヒントをご紹介します。



またGoogle Play デベロッパー コンソールの機能を最大限に活用してアプリを公開し、ユーザー数の拡大やユーザー エンゲージメントの向上を実現する方法についてもご紹介しています。

Posted by Takuo Suzuki - Developer Relations Team

[この記事は Lucas Garron、Chris Palmer、Chrome セキュリティ チームによる Online Security Blog の記事 "Simplifying the Page Security Icon in Chrome" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。]

ウェブサイトではセキュリティのために HTTPS がよく使用されますが、小さなエラーが発生することもあります。これまで Chrome ではこのようなセキュリティ状態をあらわすため、アドレス バーのページセキュリティ アイコンに黄色い「三角形の警告」バッジを表示してきました。

Chrome 46 以降は、「HTTPS における小さなエラー」状態をあらわす際、HTTP ページと同様のアイコンが使用されます。
変更の理由:
  1. HTTP ページのアイコンを使用することで、セキュリティの状態がさらに分かりやすくなります。
  2. 知っておくべきセキュリティ状態の種類が少なくなります。

混在コンテンツ(Mixed Content)に関する警告の非表示

HTTP 画像など特定の混在コンテンツを含む HTTPS ページが主に変更の対象となります。

サイト運営者が直面する課題: HTTP サイトから HTTPS に移行することで混在コンテンツが発生します。これは長期的に見ると望ましくないものの、移行のデバッグには不可欠です。移行中のサイトの安全性は完全とは言えませんが、以前に比べて低下することはまずありません。

黄色い「三角形の警告」バッジを非表示にすると、このような移行期間中は混在コンテンツのあるページに関する警告が表示されなくなります。サイト運営者には、一刻も早い HTTPS への切り替えをおすすめします。

セキュリティ状態の種類を減少

Chrome におけるセキュリティ状態の種類が、4 つから 3 つになります。

ウェブページのセキュリティ状態を正確に表示することと、多数のセキュリティの状態や詳細情報をユーザーを混乱させないこと。この 2 つを適切に両立させる必要があります。HTTP ページアイコンと、この黄色の「三角形の警告」バッジが判別しにくいということが分かったため、この 2 つの状態のセキュリティ上の違いについて、強調しないほうがよいと判断しました。デベロッパーや関心をお持ちのユーザーは、URL が「https://」で始まっているかどうかで違いを区別できます。

将来的にはほとんどのウェブサイトが安全となることを願っており、アイコンの種類を安全かそうでないかの 2 つに集約できるよう計画を進めています。今回の発表はその計画の成功に向けての小さな 1 歩です。


Posted by Eiji Kitamura - Developer Relations Team

[この記事は Saurabh Gupta、Google Apps Script プロダクト マネージャーによる Google Apps Developers Blog の記事 "Google Apps Script: An update to HtmlService" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。]

2014 年 12 月に発表した HtmlService 向けの iframe の sandbox モードにより、アプリケーションのユーザー インターフェース(User Interface: UI)のスピードは向上しました。また、クライアント上で多様な JS ライブラリを使用できるようになりました。それ以降、iframe の sandbox モードの改善を継続的に進め、その結果として、Firefox のサポート、ファイルのアップロード、トップ ナビゲーションのサポート、Google Picker API のサポート改善を含む多くの新機能を追加してきました。iframe の sandobox はより高速な UI を提供し、NATIVE と EMULATED モードよりも性能が高いため、今後は iframe の sandbox モードをご利用ください。

今後、HtmlService の EMULATED モードと NATIVE モードは推奨されません。スクリプトの移行に十分な時間を確保するため、数か月かけて段階的に EMULATED モードと NATIVE モードを廃止していく予定です。

この移行を支援するため migration guide(移行ガイド)が提供されています。変更が必要になるのは、移行ガイドに記載されている機能を使用している場合のみであり、多くのスクリプトでは変更は不要です。移行ガイドでは、互換性が保証されない変更についてもいくつか紹介しています。iframe の sandbox モードへの切り替えによる動作不良を確実に防止するため、HtmlService を使用するスクリプトはすべて見直しを実施してください。

今後の予定は以下のとおりです。

2015 年 11 月NATIVE モードが明確に指定されていない限り 新しい スクリプトすべてに対して、iframe の sandbox モードがデフォルトとして使用されます。たとえば既存スクリプトを複製する場合、sandbox モードに NATIVE を明確に設定しない限り、新しいスクリプトでは iframe の sandbox モードが使用されます。

2015 年 12 月、 (正確な日付は Sunset Schedule をご覧ください)、EMULATED モードの廃止。EMULATED モードを明確に指定しているスクリプトでは iframe の sandbox モードがデフォルトになります。

2016 年 4 月 28 日、 スクリプト内で NATIVE モードを明確に指定していない限り、 すべての スクリプトのデフォルトは iframe の sandbox になります。たとえばスクリプトにモードが指定されていない場合、NATIVE モードが使用されていたとしても iframe の sandbox モードへ切り替えられます。UI が iframe の sandbox モードで正常に動作することを確認してください。

2016 年 6 月 30 日、 NATIVE モードの廃止。NATIVE モードを明確に指定しているスクリプトでは iframe の sandbox モードがデフォルトになります。

ご不便に思われることもあるかもしれませんが、段階的に廃止を実施することで移行プロセスの負担を減少できると考えています。デベロッパーのみなさまが Google Apps Script を使用して優れたアプリを制作できるよう、斬新で安全な環境を提供することが私たちの目標です。

Posted by Eiji Kitamura - Developer Relations Team

[この記事は Takeshi Hagikura、Yuichi Araki、デベロッパー プログラム エンジニアによる Android Developers Blog の記事 "New in Android Samples: Authenticating to remote servers using the Fingerprint API" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。]

以前のブログ投稿で発表されたように、Android 6.0 Marshmallow がユーザー向けに一般公開されました。これまでも、デベロッパーが使用できる新機能を主な対象として、サンプル の更新を行ってきましたが、先日 AsymmetricFingerprintDialog というクライアント / サーバー環境で、指紋リーダー(Nexus Imprint など)を認証に使用する方法について紹介する新たなサンプルをリリースしました。

このサンプルの詳しい仕組みや、Android M プレビュー発表時にリリースした FingerprintDialog サンプルとの違いについて説明します。

対称鍵と非対称鍵

Android Fingerprint API は、指紋情報を端末上のハードウェアで保護された領域に保存し、ユーザーのプライバシーを保護します。これによって外部からの悪質な攻撃を防ぎ、信頼性の低いアプリケーションからでも読み取られることがないのでユーザーが安全に指紋認証を行うことを保証できます。
またアプリケーション デベロッパー向けにAndroid の保護機能が提供され、機密性の高いデータやリソースにアクセスする前に、ユーザーが登録された指紋の持ち主であることを保証できます。これによってオフライン データとオンライン通信の両方のセキュリティ を暗号化レベルで高めることができ、アプリケーションが改ざんされたとしてもデータやリソースを保護できます。

指紋リーダ搭載の端末では暗号に使用される鍵はハードウェアで保護された領域に保存されます。暗号に使用される鍵のタイプは、アプリケーションの用途に応じてデベロッパーが選択できます。
  • 対称鍵: パスワードのように、ローカル データを暗号化できます。この鍵は、データベースやオフライン ファイルに安全にアクセスしたい場合に適しています。
  • 非対称鍵: 公開鍵と秘密鍵からなる鍵のペアです。公開鍵はインターネットで安全に送信され、リモート サーバーに保存できます。公開鍵を使って署名認証ができるように、秘密鍵は後からデータ署名に使用できます。署名済みのデータを改ざんすることはできず、データ作成者を明確に特定できます。このように、非対称鍵はネットワークのログインやオンライン処理の認証に使用できます。同様に、秘密鍵によってのみデータを復号化できるように、公開鍵をデータの暗号化に使用することもできます。

このサンプルでは、オンライン購入の認証時に非対称鍵を使用する方法について説明します。対称鍵の使用については、以前に公開された FingerprintDialog のサンプルを参照してください。

以下は、非対称鍵を使用した場合に Android アプリ、ユーザー、バックエンドがどのように連携するかを図で示したものです。

1. 設定: 非対称鍵のペアの作成

まず、次のように非対称鍵のペアを作成します。
KeyPairGenerator.getInstance(KeyProperties.KEY_ALGORITHM_EC, "AndroidKeyStore");
keyPairGenerator.initialize(
        new KeyGenParameterSpec.Builder(KEY_NAME,
                KeyProperties.PURPOSE_SIGN)
                .setDigests(KeyProperties.DIGEST_SHA256)
                .setAlgorithmParameterSpec(new ECGenParameterSpec("secp256r1"))
                .setUserAuthenticationRequired(true)
                .build());
keyPairGenerator.generateKeyPair();
.setUserAuthenticationRequired(true) に注目してください。このメソッドを呼ぶことにより、秘密鍵を使用する前に、登録した指紋の認証を強制できるようになります。

次に作成した秘密鍵と公開鍵を以下のように取得します。
KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
keyStore.load(null);
PublicKey publicKey =
        keyStore.getCertificate(MainActivity.KEY_NAME).getPublicKey();
KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
keyStore.load(null);
PrivateKey key = (PrivateKey) keyStore.getKey(KEY_NAME, null);

2. 登録: サーバーへの公開鍵の登録

次に、公開鍵をバックエンドに送信し、その後のユーザの購入がユーザーによって承認されていること(この公開鍵に対応する秘密鍵によって署名されていること)をバックエンドが確認する必要があります。このサンプルでは、公開鍵の送信を模擬的に再現するためにバックエンド実装を端末上で動作する模擬コードを使用していますが、実際には公開鍵をネットワーク経由で送信する必要があります。
boolean enroll(String userId, String password, PublicKey publicKey);

3. 認証: 指紋による署名処理

商品購入などでユーザーが処理を認証できるように、指紋センサーへのタッチを促すプロンプトを表示します。
続いて、次のように指紋の読み込みを開始します。

Signature.getInstance("SHA256withECDSA");
KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
keyStore.load(null);
PrivateKey key = (PrivateKey) keyStore.getKey(KEY_NAME, null);
signature.initSign(key);
CryptoObject cryptObject = new FingerprintManager.CryptoObject(signature);
CancellationSignal cancellationSignal = new CancellationSignal();
FingerprintManager fingerprintManager =
        context.getSystemService(FingerprintManager.class);
fingerprintManager.authenticate(cryptoObject, cancellationSignal, 0, this, null);

4. 最終処理: バックエンドへのデータ送信と照合

認証が成功したら、次のように署名済みのデータ(このサンプルでは、購入処理の内容)をバックエンドに送信します。
Signature signature = cryptoObject.getSignature();
// Include a client nonce in the transaction so that the nonce is also signed 
// by the private key and the backend can verify that the same nonce can't be used 
// to prevent replay attacks.
Transaction transaction = new Transaction("user", 1, new SecureRandom().nextLong());
try {
    signature.update(transaction.toByteArray());
    byte[] sigBytes = signature.sign();
    // Send the transaction and signedTransaction to the dummy backend
    if (mStoreBackend.verify(transaction, sigBytes)) {
        mActivity.onPurchased(sigBytes);
        dismiss();
    } else {
        mActivity.onPurchaseFailed();
        dismiss();
    }
} catch (SignatureException e) {
    throw new RuntimeException(e);
}

最後に、ステップ 2 で登録した公開鍵を使用し、バックエンドにある署名済みデータと照合します。
@Override
public boolean verify(Transaction transaction, byte[] transactionSignature) {
    try {
        if (mReceivedTransactions.contains(transaction)) {
            // It verifies the equality of the transaction including the client nonce
            // So attackers can't do replay attacks.
            return false;
        }
        mReceivedTransactions.add(transaction);
        PublicKey publicKey = mPublicKeys.get(transaction.getUserId());
        Signature verificationFunction = Signature.getInstance("SHA256withECDSA");
        verificationFunction.initVerify(publicKey);
        verificationFunction.update(transaction.toByteArray());
        if (verificationFunction.verify(transactionSignature)) {
            // Transaction is verified with the public key associated with the user
            // Do some post purchase processing in the server
            return true;
        }
    } catch (NoSuchAlgorithmException | InvalidKeyException | SignatureException e) {
        // In a real world, better to send some error message to the user
    }
    return false;
}

ステップ 1 で述べたとおり、秘密鍵を使用する前にユーザー認証が毎回必要であるため、この時点でユーザー自身の指紋が正しく認証されているとみなすことができます。バックエンドで購入後の処理を実行し、ユーザーに処理が成功したことを通知しましょう。

その他の更新されたサンプル

その他に、 Android for Work API に関連する Marshmallow で更新された機能についてサンプルを更新しました。




  • AppRestrictionEnforcerAppRestrictionSchema のサンプルは、Android 5.0 Lollipop の Android for Work API の一部として アプリ制限機能導入時にリリースされました。AppRestrictionEnforcer は、プロファイル オーナーとして他のアプリに制限を設定する方法について説明しています。AppRestrictionSchema は、AppRestrictionEnforcer で制御できるいくつかの制限を定義しています。この更新は、Android 6.0 で追加導入された 2 つの制限タイプの使用方法について説明しています。

  • 更新されたサンプルがデベロッパーの皆様のお役に立てればと思います。サンプルについてのご質問は、GitHub ページ で Issue を登録するか、Pull Request を送っていただくようお願い致します。


    Posted by Takeshi Hagikura - Developer Relations Team

    gfm_fall.png

    Google for Mobile は、Google が主催するモバイルサービス・コンテンツ提供事業者の皆様をサポートするためのイベントです。招待制の本イベントでは、アプリビジネスにおける『Develop』『Engage』『Earn』それぞれのステージで成功するためのコツを学ぶことができます。

    当日は、ゲストスピーカーや Google エキスパートによる豊富なセッションで、さまざまな視座より Google の最新技術ならびに最新情報を発信いたします。 以下、本イベントの魅力と見どころです。

    イベント概要
    【イベント名】 Google for Mobile
    【日程】 2015 年 12 月 9 日(水)
    【時間】 開場: 9:30 開演: 10:00
    【住所】 〒 220-0012 神奈川県横浜市西区みなとみらい 1-1-1
    【アクセス】 みなとみらい線「みなとみらい駅」より徒歩 10 分


    イベントの詳細はこちら

    基調講演後のブレイクアウト セッションでは、モバイル アプリ開発にお役立ていただける下記のようなセッションを予定しています。


    • 25 種類以上のセッション からご参加されるセッションをお選びいただけます。
    • ゲストスピーカー がグローバルなベストプラクティスを紹介します。
    • プロダクト体験エリア で Google の最新テクノロジーを体験できます。
    • ランチ をご用意しております。
    • セッション後のハッピーアワー で Google メンバーや他社の開発者と交流していただけます。

    ※セミナーの内容は、予告なく変更させていただく可能性があります。ご了承ください。

    参加お申し込み方法
    参加をご希望される方は、こちらのイベントサイトよりお申し込みください。

    • フォームへのご登録はご参加を確約するのものではありません。
    • 参加枠確保のご連絡をメールにて別途お送りいたします。
    • 1 社につき最大 5 名様までご参加いただけます。
    • お席に限りがございますので、お早めにご登録ください。


    開発者のみなさんの参加をお待ちしております





    デベロッパーの皆さまが開発した Google のテクノロジーを活用した作品を展示する Google HackFair Tokyo の展示作品が決まりました。 写真をご提供いただいた作品から順にご紹介します。

    展示の見学を希望される方へ


    作品をご覧になりたい方はこちらの見学申し込みフォームよりご登録ください。

    展示作品応募期間を延長します


    展示スペースを調整した結果、さらに多くの作品を展示できることとなりました。
    ついては、作品応募の期間を 11 月 23 日(月)まで延長します。

    Google HackFair ではすでに公開済みの作品も展示可能です。作品の展示を希望される方はこちらのページの「展示の申し込み」よりご応募ください。 (作品応募の受付は終了しました。)

    [Update 2015 年 12 月 3 日]

    展示作品一覧に 7 作品を追加しました。
    セッションのタイムテーブルも追加しました。

    [Update 2015 年 12 月 1 日]

    展示作品一覧を更新しました。

    展示作品


    作品名: 3 目並べ(機械学習)
    展示者: Springwater
    概要:
    • 3 目並べ(機械学習):強化学習で強くなったプレーヤと対戦できます
    • 自己組織化写像の動画化:コホネン SOM の自己組織化過程を動画化しました
    • Android 端末から制御するガジェット:ドロイド君が動きます 他
    作品名: X Sound
    展示者: rilakkuma3xjapan (池田友洋)
    概要: X Sound は Web Audio API、Web MIDI API、 WebRTC など Chrome をフルに活用した Web アプリケーションです。 サウンドの生成、 ワンショットオーディオの再生、楽曲の再生はもちろんのこと、10 種類以上のエフェクターや波形描画、録音、セッション機能などを搭載しています。また、オーディオインターフェースからの入力や、MIDI 入力も可能となっています。


    作品名: 受付ペパさん
    展示者: Wachuu 合同会社
    概要: 最高の受付システム。Google Apps, Google Calendar との連携を可能にしたことにより、アポイント管理から会議室管理まですることができる受付ペパさん。
     「田中様ですね。山本が首を長くしてお待ちしておりました!ただいま呼び出しますね!少々お待ちください。」
    「ペパさん!空いてる会議室ある?」ー>「第三会議室が空いてるよッ!」
    貴方の会社に受付嬢ならぬ、受付ペパさんがくるのも時間の問題かも!



    作品名: シャンパンタワー
    展示者: Saltylab.jp
    概要: 7 色にグラスの色が変化するシャンパンタワーです。スマートフォンから色をコントロールし、様々な色の表情を作り出すことができます。
    幻想的な光を楽しんでいただけたらと思います!



    作品名: ペッパーソナル・トレーナー
    展示者: BOB (野村有加・太田悠)
    概要: 彼はあなたの個人トレーナー。あなたの運動量や健康状態を把握し、運動不足な時は Pepper のセンサーを使った運動を提案します。運動量・健康状態の測定は Fitbit と連携することで実現しています。
    1 人では怠けてしまうあなたでも Pepper が目標達成をサポートします!



    作品名: VR でリアル体験レースジョッキー
    展示者: LeapMotion Developers JP
    概要: LeapMotion と Raspberry Piでダービーロボ、Arduino でロデオボーイを動かしつつ、Web カメラとスマートフォンを活用した VR によってリアリティのある競馬のジョッキーを没入体験していただきます。Cardboard で楽しむこともできます。



    作品名: ぷろとろいど君
    展示者: eegoziila
    概要: Android の専用アプリに声をかけると歩いたりします。
    また搭載された WebCam からはスマホから2眼で見ることができ Cardboard で VR 的にロボットの光景を楽しむことができます。



    作品名: Android スマホでリモコン ちっちゃい LEGO モーター れごも
    展示者: ちっちゃいものくらぶ
    概要: LEGO で組んだメカに「れごも」をエンジンとして載せて、Androidから操縦!Android から Bluetooth で 2 モーターと 3LED をコントロール。 2×4 ポッチ LEGO ブロックサイズに、ギアモータ 2 個、コントローラ、充電池を詰込み、アプリは Appinventor2 で記述、ソース、オブジェクトや回路図はウエブ公開中
    作品名: Web サイトで動かす電子デバイス
    展示者: @ryoyakawai、@tadfmac
    概要: Chrome に実装されている Web MIDI API を使い、楽器のみならず電子デバイスも制御してしまおうという趣旨の展示です。今回の電子デバイスとは主に Arduino を使った電子工作物が対象です。また、Web サイトを作る感覚で、アルゴリズムを実装できてしまうツール(Web-Arduino)の展示も行います。
    作品名: 3D Radio Spectrum Viewer
    展示者: TT@北海道
    概要: USB ワンセグチューナで作った Radio Spectrum Viewer です。ダイナミックに変化する電波の形を、3D で鑑賞できます。ぐるぐる回して、時間軸と周波数軸の動きを両面から観察してみてください。 ChromeApp として動作しています。
    使用ライブラリ:Chrome Radio Receiver Extension、Three.js、jsfft
    作品名: DARTS MAP
    展示者: 田島真悟
    概要: DARTS MAP は、スマートフォンとパソコンがあるだけで世界中を飛び回る体験ができるコンテンツです。Google が提供する Street View を、スマートフォンの加速度センサとコンパス機能を使って直感的にコントロールできるようにしました。今まではマウスやタッチ操作で触っていた Street View も、操作方法をガラリと変えることで、全く違った体験になるでしょう。
    作品名: voice recognition robot (Delon kun) powered by Android phone
    展示者: 今岡通博
    概要: 2009 年に生まれたドロンくんは、まだクラウド・ロボティクスという言葉がなかった時代にそのコンセプトを具現化したものでした。音声認識の様な多大なコンピューターリソースを必要な機能をインターネットで接続可能な Google 音声認識サービスを利用することで、手に乗る大きさで音声認識ロボットを実現しています。また Android デバイスを外部機器と制御する安価な手段がなかった時代に DTMF を用いることでそれを実現しています。
    作品名: Pirouette (ピルエット)
    展示者: 有限会社アドリブ kabayan
    概要: Pirouette(ピルエット)は Android タブレットを使い、360 度あらゆる方向から同じ画面を見ることができる回転型ディスプレイです。
    作品名: きらきライト
    展示者: 飯島幸太 (@carcon999)
    概要: 今の季節に最適!夜が待ち遠しくなるイルミネーションコントローラ『きらきライト』を展示します。LED を使った演出を試してみたい自作派のあなたにピッタリのガジェットです。今回それを利用した応用例を多数展示します。実際に触れられる展示を考えておりますので、この機会にぜひお立ち寄りください。世相ブラ(トリンプヒロイン戦士ブラ)にも採用されたバーサライトも展示します。近日クラウドファンディング予定。


    作品名: Android-USB 赤外線アダプタ いちごあめ、WebRTC Gateway
    展示者: tnoho
    概要: ■いちごあめ:
    Android の USB ホスト機能を用いて、赤外線通信機能の無い Android 端末で赤外線通信搭載のフィーチャーフォンなどとの赤外線通信を可能とする自作アダプタ。 赤外線リモコンとしても機能する。
    ■WebRTC Gateway:
    Chromium の一部である WebRTC Native Client を Raspberry Pi 2 で動くようにした、動画送信デバイス。


    作品名: きらりんりん
    展示者: ほえん
    概要: 今年ももう師走ですね。
    寒くなってきましたが、師走の楽しみと言えば、やはりクリスマスです。
    きらりんりんは、ちょっと変わったクリスマスツリーです。Android 携帯で、イルミネーションを操作できます! イルミネーションのキラキラを、携帯電話のリンリンで操作するのできらりんりんです。みなさん、よろしくね!
    作品名: どこでもコンパニオン
    展示者: 大阪ペッパー友の会
    概要: 独りカラオケの時に、ペッパーがコンパニオンとなってくれるアプリです。ペッ パー同士が繋がって、カラオケシーンを盛り上げてくれて、ユーザーの人間も ペッパーの繋がりの輪の中には入っていきたくなります。YouTube ライブ配信によって遠方の友人/家族とも繫がれるので、ペッパーが同伴者というだけではな く、自分にとって大切なヒトとも一緒になれるという意味で「どこでもコンパニオン」という名前を付けました。
    作品名: Maestoro --スマートメトロノームシステム--
    展示者: AID 白鳥、binary lab 大谷
    概要: ドラムパターンと照明の点灯タイミングを CSV ファイルから入力。
    従来、音でしかタイミングを合わせられなかったメトロノームに光など、様々な要素を付与!ドラムマシン、照明管理システムとしても使える!
    Sphero スマートトイ(ボール型ラジコン)が独特(笑)のライブパフォーマンスをしてくれます。
    作品名: pepper ホームラン競争
    展示者: プロトコーポレーション R&D ラボ
    概要: Pepper が投げる!君が打つ!
    どこまで遠くにボールを飛ばせるか!?
    ホームラン競争に挑戦!!





    作品名: つぶ田くん
    展示者: 小林 豊(GDG信州)
    概要: 田んぼや畑の様子を定点観測してくれる IoT デバイスです。撮影したカメラ画像や気温・湿度をツイッターで呟いてくれます。設定は Google スプレットシート上で行うので、いつでも設定が可能です。
    作品名: ボクスケ VR
    展示者: 株式会社カブク
    概要: 3D プリントできるドット絵アプリ「ボクスケ」を Google Cardboard 対応にしました。3D プリンタで作成した専用コントローラを使用して仮想空間内での 3D おえかきをお楽しみください。
    作品名: 言葉の色
    展示者: 氏田雄介
    概要: Google 先生、「愛」はどんな色ですか?
    「言葉の色」は、「Google が言葉に対してどんな色を思い浮かべるのか?」を明らかにする試みです。 Google 画像検索の結果から画像を非表示にすると、画像の特徴的な色だけが表示されることを利用しています。
    例えば、「海」と「空」の青色を見比べたりできるだけではなく、「愛」と「恋」や「戦争」と「平和」など形のないものの色を見たりすることもできます。
    作品名: Ping - a feeling sonar
    展示者: TAKETOSHI KAMADA - omoroki
    KENICHI NAOE - zukan
    概要: Ping(ピング)は同じ気持ちの人を探すための iOS アプリです。
    今の気持ち、思いつきの言葉を 4 文字の制限内で発信してみると、同じことばを発信している人が出てきます。距離で絞ることもできます。 同じ人と何回か共振すると、その人が登録してるものが少しずつ見られるように なります。
    何を発信したかは、同じことを発信した人にしか知られません。
    今の気持ちやフリーワードで自由に探索してみてください。


    作品名: Kenzan-Go(盲ろう者のために作られた、Android の統合アクセシビリティサービス)
    展示者: ヘレンケラーシステムプロジェクト
    概要: Kenzan-Go とは、ヘレンケラーが飼っていた日本の秋田犬の名前です。
    Android には視覚障害者のために Talkback という仕組みがありますが、Kenzan-Go はさらに耳も聞こえない障害を持たれた方(盲ろう者)のために作られた、Android の統合アクセシビリティサービスです。


    作品名: Google Spread Sheet と IoT 用オープンプラットフォーム「Lazurite」で温度・湿度・気圧をモニタリング
    展示者: ラピスセミコンダクタ株式会社 新規事業開拓プロジェクト
    概要: 電池で動く超消費電力マイコンボード Lazurite Sub-GHzに温度・湿度・気圧センサーを接続して、920MHz の無線でセンサーの値を送信します。
    Raspberry Pi で 920MHz 無線を受信できるようにしたゲートウェイで、センサーの値を受信して、Google スプレッドシートにデータを保存することで、簡単な IoT システムを実現しました。作り方やソフトウエアは、ブログにて公開中です。


    作品名: LiveNote
    展示者: Tam
    概要: Google Drive の RealTime API を用い、筆跡情報を共有することによって、複数の人の間でリアルタイムに共同でメモが書ける Web アプリケーションです。
    Google Drive を利用しているので、ブラウザさえあればどこからでも参照でき、細かな共有設定も可能となっています。


    作品名: BlocklyDuino Editor
    展示者: 岡田裕行
    概要: Scratch のようにブロックを組み合わせることで Arduino をプログラミングできるエディタです。エディタには、オンライン版と Chrome アプリ版があり、このうち Chrome アプリ版は Arduino IDE の外部エディタとして機能します。また、サンプルサイト(Let's Make Arduino!)と連動しており、サンプルコードをエディタに簡単に展開することができます。


    作品名: RasPi bot を Google クラウドでかしこくしてみた
    展示者: Google Inc 佐藤一憲
    概要: GoPiGo という Raspberry Pi 搭載のボットに、Google Cloud Platform の新しいサービスを組み合わせて、ちょっと賢くしてみました。


    作品名: FakeRift、taovisor、PocketVR
    展示者: 日本 Android の会 VR 部・金沢支部
    概要:  日本 Android の会 VR 部と金沢支部は、Android 端末を使い、誰もが安価に使える Cardboard 互換のカジュアル VR ゴーグルを開発してます。臨場感マシマシの 100 均パーツで作るタブレット向けの"FakeRift"、眼鏡をかけてもOK で個人にフィットした最適な VR 体験を提供する"taovisor"、カードサイズで持ち運び簡単な"PocketVR"、是非体験してみてください。また、 Android を使って VR アプリの作成を行うハンズオンを全国各地で開催しています。


    作品名: てきめんラジコン
    展示者: てきめん
    概要: Android から Arduino で作ったクローラー(キャタピラ)のおもちゃを操作します。
    外側はただのおもちゃですが、Android で制御することによって、声で指示できたり、細かい命令を送ったり、まるで高度な"アンドロイド"のように動きます!


    作品名: g の天秤
    展示者: 中田裕士(電化美術)
    概要: g の天秤はネットワーク連動のインスタレーションアートです。
    天秤の左右の皿に液晶ディスプレイが載っています。それぞれの画面には一定時間ごとに、8 か国語の中からランダムに選ばれる人間の評価に関わることばと、そのことばの Google での検索ヒット数が表示されます。
    都度リアルタイムに取得される検索ヒット数 1 件を 1 グラムに見立て、ことばの重みをフィジカルな天秤の傾きによって視覚化します。


    作品名: AGRA Light
    展示者: Abidarma Inc. / Spline Design Hub
    概要: AGRA Light は Android で制御できる家庭用のムービングライトです。ライトの向きや照度を簡単にコントロールできます。
    2016 年早々にクラウドファンディングに出品予定です。




    作品名: Android 音声で LED パネル
    展示者: 有限会社 シー・エス・ディー やましょう
    概要: アンドロイド端末に話しかけることにより、その言葉が LED パネルに表示されます。
    音声入力を使用し、簡単に LED パネルに表示できます。




    作品名: Android で音声合成 IC を動かす
    展示者: 有限会社 シー・エス・ディー
    概要: アンドロイド端末より、Arduino 基板の USB-232C 変換機能と音声合成 IC を用いて音声を発生させています。
    これは弊社製の UNI232C 通信コンポーネントを使用する事で、232C 変換 IC のメーカーを気にすることなくアプリケーションソフトが作成できる一例です。




    作品名: クラウド レコーディングカメラ Safie
    展示者: セーフィー株式会社
    概要: カメラがネットにつながって、クラウドに 24 時間 HD の動画を録画します。
    スマートフォンから、いつでも・どこからでも、リアルタイムの映像と過去の映像を手軽に行き来することができる、そんなサービスを提供しています。





    セッションタイムテーブル


    時間 講演者 タイトル 概要
    14:00 - 14:15 河野悦昌 モバイルピザ窯 DELive Raspberry Pi を使ってピザを焼こう! どこでも簡単に組み立てられる石窯を開発。ssh でログインしてヒーターのプログラム。Android でモニターなど自由自在!
    4:20 - 14:35 田島真悟 DARTS MAP DARTS MAP は、スマートフォンとパソコンがあるだけで世界中を飛び回る体験ができるコンテンツです。Google が提供する Street View を、スマートフォンの加速度センサとコンパス機能を使って直感的にコントロールできるようにしました。今まではマウスやタッチ操作で触っていた Street View も、操作方法をガラリと変えることで、全く違った体験になるでしょう。
    14:40 - 14:55 てきめん てきめんラジコン Android から Arduino で作ったクローラー(キャタピラ)のおもちゃを操作します。 外側はただのおもちゃですが、Android で制御することによって、声で指示できたり、細かい命令を送ったり、まるで高度な"アンドロイド"のように動きます!
    15:00 - 15:15 BOB (野村有加・太田悠) ペッパーソナル・トレーナー 彼はあなたの個人トレーナー。あなたの運動量や健康状態を把握し、運動不足な時は Pepper のセンサーを使った運動を提案します。運動量・健康状態の測定は Fitbit と連携することで実現しています。
    1 人では怠けてしまうあなたでも Pepper が目標達成をサポートします!
    (Pepper App Challenge 2015 Winter ベストライフスタイル賞 受賞作品)
    5:20 - 15:35 日本 Android の会 金沢支部・VR 部 きんねこ カジュアル VR にボタンとポジショントラッキングを追加する案 日本 Android の会 VR 部と金沢支部は、Android 端末を使い、誰もが安価に使える Cardboard 互換のカジュアル VR ゴーグルを開発してます。臨場感マシマシの 100 均パーツで作るタブレット向けの"FakeRift"、眼鏡をかけても OK で個人にフィットした最適な VR 体験を提供する"taovisor"、カードサイズで持ち運び簡単な"PocketVR"、是非体験してみてください。また、Android を使って VR アプリの作成を行うハンズオンを全国各地で開催しています。次期バージョンとして、jagovisor を開発していますが、そこで改善する予定の2つの機能について説明します。
    15:40 - 15:55 今岡通博 音声認識ロボット・ドロンくん 2009 年に生まれたドロンくんはまだクラウド・ロボティクスという言葉がなかった時代にそのコンセプトを具現化したものでした。音声認識の様な多大なコンピューターリソースを必要な機能をインターネットで接続可能な Google 音声認識サービスを利用することで、手に乗る大きさで音声認識ロボットを実現しています。また Android デバイスを外部機器と制御する安価な手段がなかった時代に DTMF を用いることでそれを実現しています。
    6:00 - 16:15 @ryoyakawai, @tadfmac Web サイトで動かす電子デバイス Chrome に実装されている Web MIDI API を使い、楽器のみならず電子デバイスも制御してしまおうという趣旨の展示です。今回の電子デバイスとは主に Arduino を使った電子工作物が対象です。また、Web サイトを作る感覚で、アルゴリズムを実装できてしまうツール(Web-Arduino)の展示も行います。
    16:20 - 16:35 氏田雄介 言葉の色 【 Google 先生、「愛」はどんな色ですか?】
    「言葉の色」は、「Google が言葉に対してどんな色を思い浮かべるのか?」を明らかにする試みです。
    Google 画像検索の結果から画像を非表示にすると、画像の特徴的な色だけが表示されることを利用しています。
    例えば、「海」と「空」の青色を見比べたりできるだけではなく、「愛」と「恋」や「戦争」と「平和」など形のないものの色を見たりすることもできます。
    16:40 - 16:55 岡田裕行 BlocklyDuino Editor Scratch のようにブロックを組み合わせることで Arduino をプログラミングできるエディタです。エディタには、オンライン版と Chrome アプリ版があり、このうち Chrome アプリ版は Arduino IDE の外部エディタとして機能します。また、サンプルサイト(Let's Make Arduino!)と連動しており、サンプルコードをエディタに簡単に展開することができます。
    17:00 - 17:15 株式会社カブク あんどうやすし ボクスケ - ゆきてかえりしウェブアプリ 3D プリントできるドット絵アプリ「ボクスケ」を実験的に Google Cardboard 対応にしました。その目指したところと利用した技術について簡単に話します。あとデモ。あ、あと人材募集も。
    17:20 - 17:35 セーフィー株式会社 クラウド レコーディングカメラ Safie カメラがネットにつながって、クラウドに 24 時間HDの動画を録画する。
    スマートフォンから、いつでも・どこからでも、リアルタイムの映像と過去の映像を手軽に行き来することができる、そんなサービスを提供しています。
    7:40 - 17:55 Google Inc 佐藤一憲 RasPi botを Google クラウドでかしこくしてみた GoPiGo という Raspberry Pi 搭載のボットに、Google Cloud Platform の新しいサービスを組み合わせて、ちょっと賢くしてみました。

    【開催概要】

    日時: 2015 年 12 月 6 日(日) 13:00 - 18:00
         ※展示者は 11:00 に集合。13:00 まで各自で展示準備を行います
    会場: 3331 Arts Chiyoda 体育館 東京都千代田区外神田 6 丁目 11 - 14
    主催:グーグル株式会社
    会費:無料


    【展示物の条件と応募方法】

    展示条件:
    • Google のテクノロジーを活用したガジェットやデバイス、サービスであること
    • 原則として車両を使用せずに持ち運びが可能なものであること
    • 展示スペースが 90 cm x 45 cm で収まること ※ドローンや移動するロボット、大型展示物などは別途相談
    • 可燃物などの危険物を利用していないこと
    • 個人、法人は問いません
    応募方法:
    • 11 月 23 日までに、こちらの応募フォームで必要事項をご記入ください
    • 展示作品の選考については一切回答いたしません
    その他:
    • 展示について必要な経費(地方からの参加など)についてはご相談ください
    • 不明な点は応募フォームの「その他」の自由記述欄に記載ください



    Posted by Takuo Suzuki - Developer Relations Team