はじめに
下記記事を見て、試してみたいとなったので早速やってみます。※fastlaneってどんなもの?というのはこの記事を見て下さい。
今回紹介するのはfastlaneの中でも、比較的試しやすいsnapshotとframeitについてです。
公開用のスクリーンショットを一括撮影: snapshot
snapshotは、UIAutomationのスクリプトを使って、指定したOSバージョン、言語で それぞれのスクリーンショットを撮ってくれます。
さっそくインストールしましょう、インストールは下記だけです。
1 |
$ sudo gem install snapshot |
ただ試しに実行してみた所、xctool入れろとエラーになってたので、homebrewでインストールします。
1 |
$ brew install xctool |
続いて、そもそもスクリーンショット取るアプリ無いと話にならないので、全く面白みないですが下記のような画面を持った、アプリを作りました。
1の画面をタップすると2の画面、2の画面をタップすると・・・という遷移を行うだけです。
アプリを用意したので次にUIAutomationで、自動スクリプトを作ります、スクリプトの作り方は下記を参考にして下さい。
[Xcode][Instruments] UIAutomation のテストコードの自動作成
ぽちぽちと画面を切り替えるスクリプトは下記になりました、二回しか画面遷移しないのでこれだけでした。
1 2 |
target.frontMostApp().mainWindow().buttons().firstWithName("1").tap(); target.frontMostApp().mainWindow().buttons().firstWithName("2").tap(); |
次に、ターミナルでアプリのプロジェクトディレクトリに移動して、下記コマンドを実行します。
1 |
$ snapshot init |
これによって、Snapfile、snapshot-iPad.js、snapshot.js、SnapshotHelper.jsが作成されます、利用するのはSnapfileと、snapshot.jsです。
まずはsnapshot.jsを開きます、これに先ほどのUIAutomationのスクリプトを入れて、スクリーンショットを取る場所、待ち時間等を記述します、今回は下記のようになりました、ページ遷移する度にスクリーンショットを撮影します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#import "SnapshotHelper.js" var target = UIATarget.localTarget(); var app = target.frontMostApp(); var window = app.mainWindow(); target.delay(3) captureLocalizedScreenshot("0-LandingScreen") target.frontMostApp().mainWindow().buttons().firstWithName("1").tap(); target.delay(1) captureLocalizedScreenshot("1-LandingScreen") target.frontMostApp().mainWindow().buttons().firstWithName("2").tap(); target.delay(1) captureLocalizedScreenshot("2-LandingScreen") |
次に、Snapfileをいじります、こっちは設定ファイルです、デフォルトだと、端末と言語が多いので下記のようにしました。
1 2 3 4 5 6 7 8 9 10 11 12 |
# A list of devices you want to take the screenshots from devices([ "iPhone 6", "iPhone 6 Plus", "iPhone 5", "iPhone 4s" ]) languages([ 'en-US', 'ja-JP' ]) |
これで準備完了です、プロジェクトのディレクトリ上で下記コマンドを実行することで、撮影が開始されます。
1 |
$ snapshot |
シュミレータが起動、終了を繰り返すので少しうっとおしいですが、裏でやってくれるので、 その間自分は別の作業してて問題ありません、これが終わると下記の様にスクリーンショットが作られます。(もちろんAppStoreに上げられる解像度です)
ちなみにこれは、撮影が終わるとscreenshots.htmlが出来ていて、それを閲覧した時のものです。
iPhoneのフレームに画像をさくっとはめてくれる: frameit
これは要するに画像を用意して、画像があるディレクトリでframeitを実行すると、iPhoneのフレームにはめた画像を作ってくれますよってものです、主にWebサイトなんかでアプリの紹介画像にしたり、実行イメージを見せたりするのに使えると思います。
さっそくこちらもインストールしましょう。
1 |
$ sudo gem install frameit |
実行してもエラーになります、何故か調べたら、私のマシンが最近変えたのもあって、imagemagickが入ってなかったのが原因でした、なのでまたまたhomebrewを使ってインストールします。homebrew便利!
1 |
$ brew install imagemagick |
この後再度sudo gem install frameitとやったら入りました、というわけで、先に紹介したsnapshotで撮影したスクリーンショットに対してframeitを実行してみましょう。
1 2 |
$ cd ./screenshot/ja-JP/ $ frameit |
実行するとcurlでダウンロードが開始されて、5分くらいしたあとに下記メッセージが表示されます。
1 2 3 4 5 |
---------------------------------------------------- Looks like you have no device templates installed The images can not be pre-installed due to licensing Press Enter to get started ---------------------------------------------------- |
ここでEnterを押すと、appleのiPhoneの枠psdが置いてあるページに飛ばされます、更に下記メッセージが表示され、~/.frameit/devices_frames/がFinderで開かれます。
1 2 3 4 5 6 |
---------------------------------------------------- Download the zip files for the following devices iPhone 6, iPhone 6 Plus, iPhone 5s and iPad mini 3 You only need to download the devices you want to use Press Enter when you downloaded the zip files ---------------------------------------------------- |
これは要するに、iPhone枠のテンプレートをダウンロードし終わったら、さっき開いたディレクトリに入れてEnterを押して下さいってことです、書いてある通り、「iPhone 6, iPhone 6 Plus, iPhone 5s and iPad mini 3」をここからダウンロードして解凍したディレクトリを下記のように格納しました。
入れ終わったらEnter押すと、2秒くらいではまった画像が出来ました、2回目以降はもうテンプレートがあるので、すぐはめてくれます。
最後に
多少不足があって、インストールに手間取ったものの、余計な手順も必要なくできました。
まだ、deliver、PEM、sign、produce、これらをまとめたfastlaneには手を付けていませんが、どれも手間をぐっと減らしてくれる便利な物ばかりそうなので、ぜひ覚えたいと思います。