androidこんにちは、GANMA!の開発を行っているtakezawa(@to4iki)です。今回は、fastlaneの紹介と導入方法・簡易的な使用例を紹介します。ブログ内で使用しているサンプルコードは公開しているので良かったら参考にしてみて下さい。appsfastlaneは主にiOS/Androidアプリのビルド、テスト、デプロイを行うためのRuby製のタスクランナーであり、アプリ開発の様々なフローにおける自動化をサポートしてくれます。Twitter傘下のFabricに取り込まれており、また幾つかのCIサービスにも標準搭載されるなど今とても勢いのあるツールです。lanefastlaneではアクションと呼ばれる機能(タスクコマンド)を組み合わせたレーンにおいて自動化を実現します。主なアクションをfastlane/READMEから抜粋しました。docsにて確認できます。Slackへの通知など痒いところに手が届くようなアクションも用意されているので、組み合わせの幅も広がりますね。導入faslaneをinstallしてみましょう(ここから先はiOSプロジェクトを例に説明します)。versionを固定するためにBundlerを使用し、Gemfileに依存を定義。1.102.0セットアッププロジェクトのルートでinitコマンドを実行し、雛形の設定ファイルを作成します。Connectへのログイン情報など幾つかの質問を答えます(Androidプロジェクトの場合も同様にGooglePlayの情報を入力します)。Developerに関する情報が記載されているファイルが作成されます。雛形で生成されたFastfileをベースに少しだけいじってみます(RubyのDSLを書いていきます)。listで現在のレーンの一覧が見れます。Slackに成功/失敗を通知するだけのシンプルなフローを定義してみます。"https://hooks.slack.com/services/#{your_webhook_url_path}"Slackのwebhookurlはconf.yamlファイルを作成しそちらに定義。実運用の際はローカルで実行した場合にもSlackに通知が飛ぶのはやり過ぎなので、CI環境下で実行した場合にのみ結果を通知するよう設定した方が良いでしょう。scanendでは、実行してみます。test成功/失敗の件数が整形された状態で表示されました。CI上でfastlene経由のテスト実行を試してみます。Sharedチェックボックスをオン)。pushのタイミングでfastlane経由のテストが走るようになりました。他にも、xcov用のアクションを組み合わせればカバレッジの計測ができるので良かったら試してみてください。カスタムアクション用意されたアクションの呼び出しだけではなく、独自のアクション定義も可能です。次のコマンドを実行しカスタムアクションの雛形を生成します。new_action現在時刻を標準出力するだけのsampleアクションを書いてみましょう。endend./fastlane/actions/配下のファイルはfastlane実行時にロードされ、既存のアクションと同様に使用出来ます。sampleendより具体的な実装例はfirefox-ios-build-tools/fastlane/actionsなどを参考にして見て下さい。プロジェクト固有の設定/処理などはカスタムアクションを作成し、レーンで使い回すといった使い方が出来そうですね。プラグインfastlaneにはプラグイン機構が存在します。試しに、Xcodeのグループに合わせてファイル/ディレクトリ構造を同期してくれるsynxをアクションとして提供しているプラグインをinstallしてみます。fastlane-plugin-synx実行すると、gemfileライクな依存解決用のファイルを自動生成してくれます。installで自動的にプラグインもinstallされます。File.exist?(plugins_path)これで、レーンからsynxアクションを呼び出すことが出来るようになりました。synxendsnapshot次にfastlaneが提供するスクリーンショット作成用のアクションを試してみます。fastlane/snapshotXCUITextを利用してスクリーンショットを撮るので、プロジェクトにUITests用のビルドターゲットを新設しておきましょう。下記コマンドで、どのデバイス/言語をターゲットにしたスナップショットを撮影するか指定するための設定ファイル(Snapfile)の雛形を作成します。listを実行して確認が出来ます。検証用にiPhone6sの日本語環境下のみをターゲットにします。"ja-JP"])自動生成されたSnapshotHelper.swiftはUITestsのターゲットに含めます。あとは、UITests中の任意のタイミングでsetupSnapshot関数を呼び出しましょう。run実行後はscreenshots/screenshots.htmlがブラウザで開かれ、スクリーンショットを一覧出来ます。レーンとして定義も可能です。Connectのメタデータ更新などリリースフローの自動化を始めとする実践的なfastlaneの使い方は試せていませんので、参考資料を貼らせて頂きます。iOSアプリ開発に必要な証明書とプロファイルをGitHubのリポジトリで一括管理するiOSアプリ申請を驚くほど簡単に!fastlaneではじめる自動化入門まとめfastlaneの紹介と簡単な使い方を紹介しました。リリースフローの自動化もそうですが、オレオレシェルスクリプトによる車輪の再開発を防げる、属人化しがちなビルドやテストなどの実行をfastlane内だけで完結することで保守性が高くなります。FastlaneFLINTERSでは新しい仲間を募集しています!FLINTERS社員のインタビュー記事はこちら!最高のパフォーマンスを発揮するには余裕があることが大事。3年で辞めようと思って入社した会社が13年も続いている話FLINTERSの夏休みが充実しすぎてる件について。実装...お疲れさまです。中途2年目の堀越です。アクセスキーを安全にあけましておめでとうございます。APIっぽいものを作るはじめまして。今年中途入社しました関と申します。11はてなブログをはじめよう!septeni-originalさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。