Furyu
[フリュー公式]

Tech Blog

フリュー株式会社の技術ブログです

2015年11月25日

morioka

watchbuildでiTunes Connect処理中を快適に過ごす

こんにちは。 コンテンツメディア事業部で主にピクトリンクアプリを開発している盛岡です。

初めての連続ブログ投稿です。

突然ですが最近の悩み事として、iTunes Connectが利用者にやさしくないってことがありました。今回は、それがうまく解決したので紹介します。

やさしくない?

iOSアプリを公開する場合には、ざっくりと以下のような手順を踏むことになります。

  1. iTunes Connectにて新規リリースバージョンの登録
  2. iOSアプリを実装・ビルド
  3. ビルドしたiOSアプリのアーカイブをiTunes Connectへアップロード
  4. iTunes Connectからレビュー対象ビルドを選択しレビュー申請

この中のステップ3〜4の間で、iTunes Connect側で対象ビルドを選択できず「処理中」というステータスになることがあります。

以前は10分程度で完了していたのですが、最近だと平均2時間… ひどい時だと半日待ちという状況があります。

またTIPSとしてiTuens Connectを表示しているブラウザを変えてみるとか、再度ビルドアーカイブをアップしたら行けた!みたいな報告があったり、iOSアプリ開発における”闇”な感じが漂っているこのごろです。

fastlaneとwatchbuild

世界中みんな困っているらしく、以前にも少し触れたfastlaneというプロジェクトにて”iTunes Connect処理中待ち確認ツール”そのものずばりが公開されているようです。それが「watchbuild」です。

  • fastlane

https://github.com/fastlane

fastlaneについてもう少し説明しておくと、「Continuous Delivery for iOS Apps」を達成するための、iOSアプリのリリースにまつわる工数削減やコマンドラインツール化を提供するプロジェクトです。 最近Twitter Fabricに組み込まれましたね。

その中でwatchbuildはコマンドラインツールとして提供されており、上記の処理待ち状態の確認作業を代行してくれます。

早速使ってみる

以下のgithubプロジェクトでソースコードとインストール方法など提供されています。

https://github.com/fastlane/watchbuild

基本的には上記URLどおりにインストールするだけです。 Ruby gemsがインストールされていればうまく行くはずです。

早速実行した結果を見てみましょう。

iOSアプリのidentifierとiTunes Connectのログインアカウントを指定して実行します。初回実行時にiTunes Connectのログインパスワードが聞かれます。

上記実行結果を見てもらうと分かると思いますが、数十秒おきにループしてくれてますね。処理中が完了すると、”Successfully finished processign the build”と出力されて完了する感じです。

今回は117分間もがんばってもらってました。偉い!

まとめ

エンジニアにとって改善活動を行うことは重要ですが、思わぬところで時間を取られている場合の対応については見逃しがちでした。

今回は世界中の誰しもが困っていることだったので、解決してくれる人が居たので助かりました。今後については、似たような待ち作業が発生した時にただ待つだけではなく、自分でソフトウェアを書いて解決した方が良さそうなパターンもあるのだなと勉強になりました。

みなさんも良いエンジニアライフをお過ごしください。


2014年09月5日

いしはら

Chromeで文字が消える現象に遭遇したとき

こんにちは いしはらです

ある日、いつも通り仕事を開始しようとChromeを起動したところ
なんと!黒の文字がまったく表示されない現象に遭遇しました

このとおりサイボウズにログインすらできない状態に…。
SS

検索してもなかなか解決方法が出てこず
一度アンインストールしてもPCを再起動しても直らず!
このままでは仕事が出来ない…
困り果てた結果、Chromeに問題を報告。
わりと早くに回避策が返答が来ました。

下記の方法で解決できますので、遭遇されたかたは参考にしてください。

  1. Chromeを立ち上げる。
  2. アドレスバーにchrome://flags#disable-direct-writeを入力する。
  3. [DirectWrite を無効にする]という項目の[有効にする]をクリックする。
    ([有効にする]をクリックすると DirectWrite が無効になります。DirectWriteが無効になると背景が白になりますのでご確認ください。)
  4. 画面下の [今すぐ再起動] を選択する。 文字が正しく表示される。
  5. 文字が正しく表示される。

2014年07月16日

kunihira

EMLauncher導入記 その1

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

今回は、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との連携など、フリューでのやり方についてご紹介しようと思っています。