Firebase無しでGoogle ML Kitを試す

未来環境ラボの中口です。衝撃です。衝撃。去る5月11日に、毎年様々な技術が発表されるGoogleのイベント、Google I/O 2018にて、Google ML Kitが発表されました。何が衝撃かって、その簡単さです。ML KitはGoogleが提供する機械学習フレームワーク(TensorFlow)や機械学習クラウドサービスをAndroid端末で使うためのSDKで、非常に簡単に機械学習アプリを作ることができます。

本来はFirebaseというクラウドサービスと連携して使うことが想定されていますが、オフラインのみでも動作します。早速サンプルを動作させてみましょう。

Android Studioのインストール

Android用のSDKなので、Android Studioが必要です。最新版をダウンロード、インストールして下さい。

GitHubからサンプルをクローン

Android Studioを起動し、起動画面で[Check out project from Version Control] → [GitHub]を選んで下さい。

サンプルのURLは下記です。

Clone後は様々なサンプルプロジェクトが見えている状態で、他のプロジェクトがビルドに失敗することもあるので、ML Kitだけにしましょう。[File]→[Open]と選択して、quickstart-androidディレクトリ内の、mlkitディレクトリを開いて下さい。

google-services.jsonの作成

mlkitをビルドするには、google-services.jsonというファイルが必要です。mlkitはGoogle Firebaseというサービスの利用を前提としていて、プロジェクトをビルドする際にもFirebaseから取得した設定ファイルがあるか、その内容が正しいかが検証されます。ただし端末上で動作する機能を利用するだけの場合は、下記のファイルを用意すればOKです。mlkitプロジェクトのappディレクトリ内に、google-services.jsonという名前でファイルを作成し、下記内容をペーストして保存して下さい。

{
  "project_info": {
    "project_number": "",
    "firebase_url": "",
    "project_id": "",
    "storage_bucket": ""
  },
  "client": [{
      "client_info": {
        "mobilesdk_app_id": "1:1:android:1",
        "android_client_info": {
          "package_name": "com.google.firebase.samples.apps.mlkit"
        }
      },
      "oauth_client": [],
      "api_key": [{
          "current_key": ""
      }],
      "services": {}
  }],
  "configuration_version": "1"
}

起動!

ではアプリを起動しましょう。PCにスマホを接続し、IDEの上の方にある、緑色の再生ボタンを押して下さい。起動すると、次のような画面が表示されます。

上のLivePreviewActivityが、カメラ映像をリアルタイムで識別するデモです。これを選びます。すると認識画面が表示されます。画面下部の、フォルダのようなアイコンをタップすると、背面カメラか前面カメラ化を切り替えられます。その横の文字列をタップすると、認識モードを切り替えられます。Face Detectionにすると、顔認識が試せます。

うまく動作しています。(写真はフレッシュマンキャンプ2018の記事から)

Google ML Kitは非常に手軽に試せるSDKです。モデルの差し替えや、Googleのクラウドサービスを使うこともできるので、いろいろと遊べそうです。

comments

ランダムなデータを生成する JSON API

未来環境ラボの坂本です。

2014年に作成した Random Data Web API というものを最近改修しました。
ランダムなデータを生成するための JSON Web API です。
以下のデータを生成できます。

  • アルファベット
  • アルファベットと数字
  • バイト列
    • 16進数形式、Base64 形式
  • UUID (GUID)
  • 時刻順の ID
    • 現在の時刻をもとに、並べ替え可能な GUID を生成
    • SQL Server の uniqueidentifier 型にも対応

という感じで、内容自体はとくに変哲のない API です。
時刻順の ID は少し珍しいかもしれませんが。
また、仕様が記述されたヘルプページ、および jQuery を利用したテストページが付属しています。

Test Page

さて、どちらかというとここからが本題です。
サービスとして公開されているタイプのよくある Web API は、利用する開発者からするとすぐに利用できてとても便利ですが、提供者側の意向でサービスが終了するという問題点があります。
例えば最近では、Google の URL 短縮サービス「goo.gl」が終了予定と発表されました
無償・有償を問わずサービスが永久に提供されるとは限らないため、なるべく自身のアプリをそれに依存させず、自身でサービスを運用することが望ましいでしょう。

そこでこの Web API では、ソースコードをオープンソース ライセンスのもとで提供し、それを利用する開発者自身がサービスをホストすることを想定します。
例えば Azure Web App などの PaaS (Platform as a Service) を利用すれば GitHub から直接ビルドおよびデプロイができるため、簡単な手順でサービスの運用を開始させることができます。

詳細の方法については Azure Web App にデプロイする手順にまとめてあります。
この場合はさらに継続的デプロイが構成され、
設定したリポジトリが更新されれば Azure Web App も自動的に更新されます。

Deployment Option

また、この Web API の技術的な特徴としては、以下が挙げられます。

  • ASP.NET Web API
    • .NET プラットフォームでは、これで JSON Web API を作れます
  • ASP.NET Web API Help Page
    • ソースコード内のコメントからヘルプページを自動生成
  • ASP.NET Web API Cross-Origin Support
    • CORS (Cross-Origin Resource Sharing)
  • HTTPS 必須化

ヘルプページの多言語対応については、ブラウザーの翻訳機能を利用すれば何とか読めると思います。

Help Translation

今後もこのような Web API やライブラリを制作していくつもりです。
KCG の学生の皆さんは、プロジェクト演習などで活用してみてはいかがでしょうか。

バージョン情報

  • .NET Framework 4.5
  • ASP.NET Web API 5.2.3
  • ASP.NET Web API Help Page 5.2.3
  • ASP.NET Web API Cross-Origin Support 5.2.3
  • Blaze 1.1.10

参照

comments