はじめに
この記事はand factory.inc Advent Calendar 2023 11日目の記事です。
andfactoryでiOSエンジニアとして従事しています。
今回はiOSアプリ開発にサクッとDanger+SwiftLintを追加、移行する方法を書きます。
Danger Swift
Danger Swiftを使用すると、開発チームはより一貫したコーディング標準を維持し、コードレビューの時間を節約し、品質の高いソフトウェアをより迅速に提供することが可能になります。
今回は以下の条件のソースコードが対象で、かつ変更も少なく、すぐできる方法です。
- iOSアプリをSwiftで書いているソースコード
- GitHub使ってる
- 時間ないので、ひとまず簡単に入れたい、移行したい
- 軽量に運用したい
まずはGitHub Actionsを作成
当初楽に自作しようとして以下の問題にぶち当たりました。
- gemとmacOSの環境でやっていましたが、GutHub ActionsだとmacOSの倍率高い
- gemとubuntuでやろうとしていちいちSwiftLintをビルドしないといけない
なんかスマートにできる方法ないかと探していたら下記のDocker Imageを見つけました。メンテナンスもされている。ありがとう
これだけでいいです*
name: Danger
on:
pull_request:
branches:
- '**'
- '!master'
jobs:
danger:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Danger
uses: 417-72KI/danger-swiftlint@v5.9 # Xcode15系
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Dangerfile.swift
上記のDocker Imageの都合上、Swiftで書く必要がありますが、iOSエンジニアとしてはその方がしっくりくるかと。
import Danger
import Foundation
let danger = Danger()
// swiftlint
SwiftLint.lint(inline: true, configFile: ".swiftlint.yml")
完成
これだけで完成です。
特にキャッシュとかも考慮せずとも、1分強とかで終わりますので、最高です。
弊社のiOSチームはプロダクト横断してレビューを行ったり、複数プロダクトで実装しているエンジニアしています。
なので、あまりプロダクト間でブレがあるとしんどいので、Dangerfileにいろいろルールを追記してチームで共通化を図っています。
明日のAdvent Calenderもお楽しみに。