5.1さらうどん

@giginetの技術ブログ。ゲーム開発、iOS開発、その他いろいろ

fastlaneを使ってiOSアプリをブラウザから爆速確認できるようにした

今週のOSS活動

github.com

この度、fastlaneに新しいアクションを追加して送ったところマージされました。

9月ぐらいに思いついて、コードは大分前に書き上げていたのだけど、テストを書くのが面倒で2ヶ月ぐらい放置した後、重い腰を上げてPRをこしらえた。

他のアクションに比べて気合を入れてテストを書いたら、中の人からめっちゃ賞賛されて嬉しい。

f:id:gigi-net:20151113211658p:plain

fastlaneって何?

fastlane.tools

fastlaneはiOS用のタスクツールで、開発環境の構築やビルドを始めとし、面倒な証明書の更新やβ版配信、iTunes Storeへのサブミットなど、iOS開発に必要なタスクを自動化することができます。

特徴として挙げられるのは、様々な操作が「アクション」として定義されており、 予め用意されたアクションを宣言的に記述するだけで、簡単にiOSアプリ開発用の便利バッチを作成することができる点。

最近注目されていて、Twitterに買収され、Fabricに組み込まれたのも話題になりました。

詳しくは以下の記事を読むと良いかもしれない。

iOSアプリの継続的デリバリーに便利なfastlaneのご紹介 - Qiita

何を作ったの?

今回はこのfastlaneの1アクションとして、Appetize.ioというサービスにバイナリをアップロードする仕組みを実装してみた。

Appetize.io

Appetize.ioは、iOS/Androidのアプリをアップロードすると、謎の技術によりサーバー上でシミュレーターが走り、ブラウザ上でシミュレーターを実行できるサービス。

例えばこんな感じ。

これらを組み合わせることで、iOSアプリの継続的デリバリーが実現されて、最高という感じになった。

どうやって使うの

fastaneを使うには、FastfileというファイルにRuby DSLを記述します。今回のAppetizeアクションは以下のような感じで使える。

lane :appetize do
  xcbuild
  sh ['zip', '-r', '-X', "../app.zip", '../build/*/*.app'].join(" ")
  # upload any way
  appetize(
    api_token: 'yourapitoken',
    url: url,
    private_key: 'yourprivatekey'
  )
  slack(
    message: "new build available #{lane_context[SharedValues::APPETIZE_APP_URL]}"
  )
end

こんな感じで一度定義しておくと、

$ fastlane appetize

あとはコマンド一発でバイナリがブラウザ上で動くようになって嬉しい。fastlaneのSlackアクションなどを使えば、URLをそのまま通知することもできる。

注意する点として、Appetizeに直接バイナリをアップロードすることができず、アプリのパッケージをZIP圧縮して他のサーバーに上げ、そのURLをAppetizeに登録するという仕組みになっていること。

fastlaneにはS3やGitHubリリースにアップロードするアクションがあるので、好きなところに上げればそのまま埋め込める。

その一方で、ZIP圧縮するアクションなどが用意されていなくて、直接shellを叩く必要があってどうにか解決したい。

まとめ

なかなかニッチな感じですが、爆速でiOSアプリのプレビューがブラウザでできるようになったので、どうぞご利用ください。

PRを送った時に、コメントに自動的にシミュレーターをembedする、みたいなことができるようになって夢が広がるかも知れない。

太古の昔は、1台ずつケーブルを繋いで暖かみのある手動ビルドをしていたのに、今やDeployGateやTestFlightがデファクトスタンダードとなり、将来的には端末にインストールするのすら時代遅れになるような感じがします。ゲームとかを動かすにはまだ厳しい感じですが、いろいろと興味深い分野です。

宣伝

爆速デリバリーできるアプリがない方は、ぜひこの本でゲームを作って爆速デリバリーしましょう。

積読消化+開発合宿をしたら大失敗だった話

photo by EYLC

積読消化合宿というのをやりました - miyohide's blog

この記事に憧れて「週末は温泉に行って開発したり積読を消化するぞ!!!」という気概で10/30 ~ 11/1にかけて箱根に行ってきました。

最高の環境で温泉に浸って、美味しいものを食べながら仲間達と読書と開発に励めば、それは目覚ましい成果が出るに違いありません。

この会の目的

以下の積ん読を消化しようと張りきって持って行きました。特に「すごいHaskell」に関しては3年ぐらい途中まで読んでは放置の繰り返しなので、今回こそ読了するぞ!という気持ちで挑みました。

また、書きかけのコードなども大量にあり、「生産性を高めて最高の進捗を出すぞ!!!」という気概でした。

進捗

行ってみて

強い意思を持って目的を達成するのは難しい。

そして温泉に入ると無限に酒が飲みたくなるし、 酒が入ると眠くなるしで読書どころではなかった。

一応、申し訳程度に読書したり、知人の仕事を手伝ったり、PRを送ったり、ブログ書いたり、コードリーディングをしたり、といった作業はできたが、行く前に想像していた作業予定量を遙かに下回る進捗だった。

また、上のツイートで紹介している高級なとろろは以下のお店だ。

箱根のランチ名所 自然薯料理 山薬(やまぐすり)

今回食べたのは2300円のランチだが、さらに金を積むことで「至高の昼ご飯」にグレードアップすることができ、こんなものを食べたら、本を読む気力など一瞬にして消え失せてしまう。

まとめ

  • 仲の良い人と行ってはいけない
  • 酒を飲んではいけない
  • 温泉に入ると酒が飲みたくなるから温泉に入ってはいけない
  • 温泉に入った後に寝てはいけない
  • 美味い物を食うと酒が飲みたくなるから食ってはいけない
  • そもそも温泉で進捗が出るなんて考えてはいけない

読書合宿へ行く方は

こちらの本を是非ご持参ください

「watch OS2でゲーム開発した話」というセッションをしました

www.youtube.com

久しぶりにブログ書くかー、みたいな気概になったので書くことにする。

iOS 9 週連続 Bootcamp!5週目 MapKitとwatchOS2でゲーム開発!! - dots. [ドッツ]

iOS9について何か話してー、とふわっと頼まれて、とはいってもiOS9の新機能でおもしろいネタなんて持っていなかったので、ちょっと興味のあることを調べていたら、上の動画にあるようなApple Watchで動くブロック崩しができた。

承認の声

まとめ

全く需要不明だったけど、意外と評判が良かった。

想像以上に準備に時間がかかりまくって、無償でやるの厳しいと思ったけど、 勉強会駆動開発もできたし、健全に承認も得られてたし、プレゼンスを高める意味でも良いと思う。

宣伝

ゲーム作りについてもっと知りたい方は是非こちらの本も併せてどうぞ。