自動化に対する取り組み

こんにちは。システム部の大澤です。 普段は北米版あすけんの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したとき

Danger

  • Dangerとは
    • CIで実行して、Pull Requestのコードを解析して、ルールに合わせて、コメントをしてくれるツールです。
    • danger/danger
  • 主なルール
    • WIPがついている
    • Pull Requestにアサイン済みかのチェック
    • Merge可能か
    • ファイルがソートされているか
    • 作業内容に合わせて、GitHubのlabelを付与する
    • スペルミスがないかどうか
      • こちらは後ほど詳しく記載します
    • すべてパスするとLGTM画像が投稿される
  • 導入するとレビューで細かい指摘をしなくなり、本質的な部分を集中して、レビューすることができるようになりました。

f:id:techaskeninc:20210728151411p:plain

git-pr-release

  • x-motemen/git-pr-release
  • masterへマージする際にどの機能をマージしようとしているか一覧で把握できます。
  • Pull Reqeustのsummaryにリストで表示されます。
  • リグレッションテスト時に優先的にチェックする箇所を把握しやすくなった。
  • GitHubのリリースノート作成時にこのリストをそのまま再利用することもできます。

f:id:techaskeninc:20210728151506p:plain

cspell

  • streetsidesoftware/cspell
  • スペルミスをチェックするツールです。
  • 自分だけではスペルミスをすべて発見するのは難しいです。ツールを導入し、レビュー時にスペルミスをチェックする必要がほぼなくなりました。
  • Dangerと一緒に使うことでPull Reqeust時に気がつくことができる。
  • 導入段階ですでにコードにあるスペルミスを直すのが大変でした😅

App Store Connectの審査状況の通知

  • 審査状況の通知はメールやApp Store Connectのアプリで受け取ることができますがチームのメンバー全員がその環境を設定するのは大変です。
  • こちらの記事を参考に導入しましたiOSアプリの審査状況変更を、Slackに自動通知する(GAS + Slack Webhook)
  • 申請、リジェクト、リリースの通知を自動でSlackに投稿するので審査状況のチェックという作業がなくなりました。

f:id:techaskeninc:20210728151557p:plain

意識したこと

  • 導入段階で他のプロジェクトでもすぐに導入できる形にしておく。
    • ドキュメントは最小限にして、インストールや実行コマンドは手順をスクリプトにしておく。その結果、手軽に試すことができ、新しく関わる人に説明する時間を削減できる。
    • Makefileシェルスクリプトを活用して、よく使うコマンドはまとめた。
  • とりあえず試してみる。
    • 試してみて、必要だとわかることが多くありました。 実際に導入してみましたが、活用されず、廃止されたものもあります。

今後やってみたいこと

  • 今後は、Swaggerのようなドキュメントからコードを自動で生成するツールなどを導入して、実装コストの削減をやっていきたいです。その仕組みをiOS以外にも展開していきたいです。

まとめ

入社して、約1年でやってみたことをまとめてみました。一度導入してしまえば、長期的に作業時間の削減に貢献します。 さらに、iOS開発だけでなく、他の開発でも使えるものを積極的に導入できました。 まだ、自動化できる作業は残っているので今後も挑戦していきたいです。 askenでは、一緒に働いてくれるiOSエンジニアを募集しています。少しでも興味を持っていただけたら、ぜひ採用情報をご確認ください。