こんにちは。システム部の大澤です。 普段は北米版あすけんのiOSアプリを開発しています。
昨年の9月に入社して、もうすぐ、1年経とうしています。 iOSアプリの開発を担当し、1日の中でもたくさんの作業をしています。 その中で日々の作業の一部を自動化してきました。 その取り組みについてまとめました。 今回はとくにiOS開発以外にも活用できそうなものを中心にしました。
CI環境の整備
- Bitriseを積極的に活用しました。
- 毎回手動で作業するのは大変なので何度も作業するものはCIに任せました。
主な実行タスク
Task | Trigger |
---|---|
ライブラリのアップデート | 毎週火曜日の朝に1度、実行している |
Dangerの実行 | Pull Reqeustにpushしたとき |
Unit Testの実行 | Pull Reqeustにpushしたとき |
git-pr-releaseを実行する | developにマージしたとき |
ライブラリのライセンスの更新チェック | developにマージしたとき |
Staging環境用のバイナリをアップロード | developへpushしたとき |
本番用のバイナリをApp Store Connectへアップロード | masterにpushしたとき |
- 詳しくは2021のBUGs (Bitrise User Groups) で弊社、佐藤が紹介しています。
Danger
- Dangerとは
- CIで実行して、Pull Requestのコードを解析して、ルールに合わせて、コメントをしてくれるツールです。
- danger/danger
- 主なルール
- WIPがついている
- Pull Requestにアサイン済みかのチェック
- Merge可能か
- ファイルがソートされているか
- スクリプトを使って、ソートして、差分があるかどうかチェックしている。
- WebKit/Tools/Scripts/sort-Xcode-project-file
- 作業内容に合わせて、GitHubのlabelを付与する
- Pull Requestのタイトルにプレフィックスを付与して判定している。
- スペルミスがないかどうか
- こちらは後ほど詳しく記載します
- すべてパスするとLGTM画像が投稿される
- 導入するとレビューで細かい指摘をしなくなり、本質的な部分を集中して、レビューすることができるようになりました。
git-pr-release
- x-motemen/git-pr-release
- masterへマージする際にどの機能をマージしようとしているか一覧で把握できます。
- Pull Reqeustのsummaryにリストで表示されます。
- リグレッションテスト時に優先的にチェックする箇所を把握しやすくなった。
- GitHubのリリースノート作成時にこのリストをそのまま再利用することもできます。
cspell
- streetsidesoftware/cspell
- スペルミスをチェックするツールです。
- 自分だけではスペルミスをすべて発見するのは難しいです。ツールを導入し、レビュー時にスペルミスをチェックする必要がほぼなくなりました。
- Dangerと一緒に使うことでPull Reqeust時に気がつくことができる。
- 導入段階ですでにコードにあるスペルミスを直すのが大変でした😅
App Store Connectの審査状況の通知
- 審査状況の通知はメールやApp Store Connectのアプリで受け取ることができますがチームのメンバー全員がその環境を設定するのは大変です。
- こちらの記事を参考に導入しましたiOSアプリの審査状況変更を、Slackに自動通知する(GAS + Slack Webhook)
- 申請、リジェクト、リリースの通知を自動でSlackに投稿するので審査状況のチェックという作業がなくなりました。
意識したこと
- 導入段階で他のプロジェクトでもすぐに導入できる形にしておく。
- とりあえず試してみる。
- 試してみて、必要だとわかることが多くありました。 実際に導入してみましたが、活用されず、廃止されたものもあります。
今後やってみたいこと
- 今後は、Swaggerのようなドキュメントからコードを自動で生成するツールなどを導入して、実装コストの削減をやっていきたいです。その仕組みをiOS以外にも展開していきたいです。
まとめ
入社して、約1年でやってみたことをまとめてみました。一度導入してしまえば、長期的に作業時間の削減に貢献します。 さらに、iOS開発だけでなく、他の開発でも使えるものを積極的に導入できました。 まだ、自動化できる作業は残っているので今後も挑戦していきたいです。 askenでは、一緒に働いてくれるiOSエンジニアを募集しています。少しでも興味を持っていただけたら、ぜひ採用情報をご確認ください。