お久しぶりです。
乙女ゲーム開発チームの国平です。
今回は、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 して最新版に更新して利用するのが良いでしょう。
$ cd /home/ohoflight/emlauncher $ git stash $ git pull origin master $ git stash pop`
データベースの更新
バージョンアップによって一部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文を発行してユーザ登録を行います。
INSERT INTO `emlauncher`.`user_pass` VALUES ('YOUR_MAILADDRESS', '');
このようにして、メールアドレスの登録を行った後、EMLauncherにブラウザでアクセスして、ログイン画面を開きます。
Loginボタンの横に「forget password」というリンクがあるので、そこからパスワードリセット画面を開いて、先ほど登録したメールアドレスを入力します。
「送信」ボタンを押すと、パスワードの再設定URLが埋め込まれたメールが届くので、パスワードを設定してください。
パスワードの設定ができれば、改めてログイン画面に進んで、メールアドレスとパスワードでログインすることができます。
EMLauncherRegister
ユーザを追加するたびに、MySQLに接続してInsert文を発行するのは面倒なので、EMLauncherのユーザ登録を行うツールを開発しました。
本当は、EMLauncher上で登録画面を作るなどして、PullRequestを送れればよかったのですが、残念ながら私はPHPは読めるものの、ロクにかけないので、EMLauncherとは別のアプリケーションとしてRubyで実装しました。
EMLauncherRegister Kuchitama Tech Note | EMLauncherのユーザ登録システムを公開しました
READMEにしたがって、インストールし起動しておけば、ブラウザでメールアドレスの登録画面を開くことができます。
メールアドレスを入力すれば、データベースにアドレスが登録されて、EMLauncherからパスワードのリセットメールが届くので、パスワードを設定することができます。
おわりに
今回の記事では、EMLauncherの導入について、環境構築周りについてまとめました。 EMLauncherは非常にシンプルで使いやすくまとまっています。 次回の記事では、アプリのデプロイから配布について、Jenkinsとの連携など、フリューでのやり方についてご紹介しようと思っています。