トレタ開発者ブログスマートフォン用の表示で見るトレタ開発者ブログ飲食店向け予約/顧客台帳サービス「トレタ」、超直前予約アプリ「トレタnow」を開発・提供するスタートアップ企業です。1日目の記事になります。こんにちは、昨日に引き続き開発部の堀見です。購読ボタンを押してウォッチしてください🙏ということで、初日は筆者からiOSネタを投下します。最近多くのiOS開発現場ではfastlaneでリリース作業が自動化されていると思います。トレタでも去年からfastlaneを導入済みで、ブランチをmasterにマージするとCIでアーカイブ作成・iTunesConnectにバイナリをアップできるようになっています。これによりリリース作業の負担軽減や、作業の属人性が減らせました。日々のiOS開発ではまだまだ作業効率化の余地があると思います。今回は筆者がよく非エンジニア等のチームメンバーから依頼される、ちょっとした作業をfastlaneを使って自動化してみました。iOSエンジニアであればお願いされた経験があるものが多いと思います。ProfileにUDIDを追加する弊社ではベータ版アプリを社員にはIn-house、社外の協力会社様向けにはAd-Hocビルドで配布しています。Portalに追加するという作業が発生します。一瞬で終わる作業ですが、大抵ログインセッションが切れていてポータルに再ログイン、ポータルTOPからDevice追加画面に進み(ページ遷移が多い!)、デバイス名とUDIDを入力してようやく終了。・・・と思いきや、provisioningにデバイスIDを追加しないと意味がありません。いうか、これをよく忘れてビルドをアップし、インストールできませんと言われて気づくことが割とあります...。意外と時間がかかってしまう作業です。そこで以下のようなlaneを用意し、コマンド一発でデバイス追加とprovisioningの更新を行えるようにしました。endendブラウザをポチポチ操作していれば数分はかかりますが、これなら10秒程度で終わります。udid:デバイスのUDIDの形式で送ってもらうようお願いしておけば、依頼が来て即ターミナルにコピペ・コマンドを叩いて終了です。ベータ配布済みのアプリのProvisioningを新しいものに差し替えたいベータ版配布サービスで既に配布しているAd-Hocアプリに、利用できるユーザを追加したいというケースもよくあります。前述のデバイス追加とProvisioningの更新をやっていれば新しいビルドをアップするだけで解決するんですが、長いビルド時間を待つのは億劫だし、同じビルド番号のアプリが配布サイト上に重複していくのも嫌な感じです。普段は既にアップしているipaを手元にダウンロードして、Provisioningを入れ替え、アップし直すという地味な作業をやっています。これもfastlaneからコマンド一発で行えるようにしました。ベータ配布サービスからアップ済みのipaをダウンロードしてきます。弊社ではHockeyAppを使っているので、download_hockey_ipaというActionを作りました。ビルド番号などを指定したらAPI経由でipaをダウンロードしてくるシンプルなものですが、地味に行数が長いので詳しくはGistで。download_hockey_ipa.rbダウンロードが完了したらsighで最新のProvisioningをダウンロードし、resignでipaの中身を差し替え、再度hockeyでipaをアップします。ダウンロード以降はfastlaneに含まれているアクションを組み合わせて完結しました。'replace')endhockeyアクションはデフォルトだと新規のビルドとしてipaをアップしますが、strategy:'replace'オプションを加えておくとHockey上にある同じ番号のビルドを置き換えてくれるようです。最新のLocalizationを適用した確認用アプリを用意する弊社のアプリは英語圏にもサービス展開しており、通常の機能開発と並行してローカライズも行っています。言語リソースはCrowdinで管理していて、翻訳が完了したらxliff形式で訳語データをダウンロード、コードにimportするという流れです。これもまたブラウザからファイルを取ってきてimportして...とやっていると地味に時間がかかるので、コマンド一発で解決します。Crowdinから言語リソースをダウンロードしてきます。OneSkyなどはfastlane-plugin-oneskyを使えば済むようですが、Crowdinは無かったので自前でActionを用意。こちらも長いのでGistを参照↓download_crowdin_resource.rb続いてCrowdinからダウンロードしたxliffをプロジェクトにインポートします。xcodebuildコマンドをシェルで叩いてもいいんですが、fastlane-plugin-localizationを使うと簡潔に書けそうなのでこちらを使います。最終的なlaneはこんな感じ。laneに書いて、betaビルドのlaneから必要に応じて呼び出し、Hockeyにバイナリアップするようにしています。hockeyendまとめfastlaneを使って日々の作業を地味に自動化する方法を紹介しました。一つ一つは些細な作業ですが、意外と自分の時間が削られてしまうし、「後でいいや」と後回しにすればチームメンバーを待たせてしまいます。した小さな効率化もエンジニアの責務としてやるべきだなと思いました。fastlaneはもはやリリース自動化ツールではなく、アプリエンジニアが日々こなすあらゆる仕事の量を軽減し、生産性を高めてくれるツールになっている印象です。fastlane/AvailablePluginsにもあるように有志で開発されたプラグインもどんどん充実してきているので、今後さらなる効率化が図れそうです。芹沢でPageRankについて調べてみたです。pushでサーバを構築する2018年あけましておめでとうございます。2017に参加してきましたiOSエンジニアの高です。対応しましたiOSエンジニアの高(@y_koh)です。»トレタ開発者ブログ飲食店向け予約/顧客台帳サービス「トレタ」、超直前予約アプリ「トレタnow」の開発メンバーによるブログです。Blogスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。