お久しぶりです。
乙女ゲーム開発チームの国平です。

今回は、Android/iOSのテストアプリの社内共有のためにEMLauncherを導入したので、 そのレポートを投稿します。

EMLauncherとは

EMLauncherはKLabさんがOSSとして公開されているAndroid/iOSのベータアプリ配信ツールです。 同種のツールにはTestFlightやDeployGateなどがあります。 詳細については、KLabさんの公式情報を参照ください。

KLab ニュースリリース: http://www.klab.com/jp/press/140304.html GitHub: https://github.com/KLab/emlauncher

導入の経緯

もともとは

もともとフリューでは、AndroidアプリとiOSアプリで分けて管理・インストールを行っていました。

Androidアプリ

Androidアプリについては、Jenkinsでビルドが完了したらapkファイルをAWSにデプロイして、そこからDLしてプレイするというように配布していました。 セキュリティ的には、apkのダウンロードURLに対して、nginxの設定でIP制限を掛けて社内のwifiアクセスポイントからのみDL出来るようにして、実機に流し込みをしていました。

iOSアプリ

また、iOSアプリについては、JenkinsでビルドしたipaファイルをJenkinsからDLしてローカルPCに保存し、iTunes経由で実機に流し込んでいました。

問題点

しかし、この方法ではAndroid・iOSでインストール手順が異なりますし、特にiOSのインストールは一度ローカルPCにapkをダウンロードするなど手順が面倒という問題がありました。
特に、フリューの乙女ゲームも着々とタイトルが増えてきて、関係者の人数も増えてきたので、手軽にテストアプリを配布できる仕組みが必要になってきました。

そこでEMLauncher

そこで何か方法がないかと検討を始めたタイミングで、EMLauncherがOSS化し、さらに、KLabさんの社内での運用などをヒアリングする機会に恵まれたので、フリューでも導入することになりました。

環境構築

EMLauncherをもっとも簡単に利用するには、公開されているAMIを元にEC2インスタンスを立ち上げるのが非常に楽です。
DSAS 開発者の部屋| Android/iOS向けテストアプリ配信ツール 「EMLauncher」を公開しました
特に、アクセスが集中したり、マシンリソースを必要とするようなことはないので、フリューではt1.microで運用しています。 この点は、KLabさんでも同様だそうです。

バージョンアップ

ただ、AMIに載ってるEMLauncherのバージョンが古かったりするので、EMLauncherのソースフォルダ /home/ohoflight/emlauncher に移動して、git pull して最新版に更新して利用するのが良いでしょう。

データベースの更新

バージョンアップによって一部MySQLのテーブル定義なども変更になっています。
テーブルの追加や変更のSQLは /home/ohoflight/emlauncher/data/sql/ においてあります。 alter_XXXX.sqlのようなファイルをMySQLに流し込んでやれば、EMLauncherのバージョンにあった状態にDBを更新することができます。

AMIを利用しない場合

用意されているAMIを利用しない場合は、READMEにしたがって環境構築を行う必要があります。 また、README以外にも、こちらの記事も非常に参考になります。

Qiita| EMLauncherをVagrant/CentOS環境で試してみる(未完成)

注意が必要かもしれないのは、PHPのバージョンが5.3以上である必要がある点です。 なんらかの事情で古いOSを利用される場合には注意してください。

ユーザ登録

EMLauncherはユーザの認証に、Googleアカウントを利用するか、メールアドレスとパスワードを登録して認証するかを選択することができます。 KLabさんでは、Googleアカウントを利用しているようなのですが、フリューではメールアドレスとパスワードを利用してユーザ認証を行っています。

よくよく設定ファイルなどを読むと、ちゃんと使い方が書いてあるのですが、ユーザ認証にメールアドレスとパスワードを設定する場合に、そもそもユーザ登録はどうしたらいいのか…という問題があると思います。 EMLauncherではユーザ登録の画面などは用意されていないので、MySQLで直接下記のようなinsert文を発行してユーザ登録を行います。

このようにして、メールアドレスの登録を行った後、EMLauncherにブラウザでアクセスして、ログイン画面を開きます。
Loginボタンの横に「forget password」というリンクがあるので、そこからパスワードリセット画面を開いて、先ほど登録したメールアドレスを入力します。
「送信」ボタンを押すと、パスワードの再設定URLが埋め込まれたメールが届くので、パスワードを設定してください。

パスワードの設定ができれば、改めてログイン画面に進んで、メールアドレスとパスワードでログインすることができます。

EMLauncherRegister

ユーザを追加するたびに、MySQLに接続してInsert文を発行するのは面倒なので、EMLauncherのユーザ登録を行うツールを開発しました。
本当は、EMLauncher上で登録画面を作るなどして、PullRequestを送れればよかったのですが、残念ながら私はPHPは読めるものの、ロクにかけないので、EMLauncherとは別のアプリケーションとしてRubyで実装しました。

EMLauncherRegister Kuchitama Tech Note | EMLauncherのユーザ登録システムを公開しました

READMEにしたがって、インストールし起動しておけば、ブラウザでメールアドレスの登録画面を開くことができます。
メールアドレスを入力すれば、データベースにアドレスが登録されて、EMLauncherからパスワードのリセットメールが届くので、パスワードを設定することができます。

おわりに

今回の記事では、EMLauncherの導入について、環境構築周りについてまとめました。 EMLauncherは非常にシンプルで使いやすくまとまっています。 次回の記事では、アプリのデプロイから配布について、Jenkinsとの連携など、フリューでのやり方についてご紹介しようと思っています。