はじめに
あなたは開発スタート時に毎回新しいXcodeプロジェクトを作っていませんか?
過去のプロジェクトから使ってもいいヤツらを 「Add Files to」していませんか?
xcconfigやcarthageの設定を毎回行っていませんか?
そうです、まさに私のことです。
というわけで、開発初期のスピードを加速させるべく
Cookiecutter というPythonのツールを利用して コマンド一発
で
iOSプロジェクトを作成している例があったので真似してみることにしました。
クイックスタート
サンプルとしてCleanArchitectureでの開発用テンプレートを作成してみました。
https://github.com/SatoshiN303/iOS-Blueprints-CleanArchitecture
$ brew install cookiecutter
$ cookiecutter https://github.com/SatoshiN303/iOS-Blueprints-CleanArchitecture.git
上記のコマンドを叩くと 「アプリ名」 「会社名」 「バンドルID」が聞かれます。
それぞれを入力するとプロジェクト作成完了です。
生成されるサンプルプロジェクトについて
- bootstrap.sh
- .xcconfig (debug/adhoc/release)
- CocoaPods Settings
- Carthage Setting
- no Main.storyboard
- DependencyInjection SampleCode
- Github's Repositry search process SampleCode
テンプレートの基本的な内容として上記を設定してみました。
普段通りに実装したものをCookiecutterテンプレートとして転用できるのは便利です。
ちなみに開発時には削除することになりますが
GitHubAPIを叩いて画面に表示するサンプルコードを追加しています。
理由としてCleanArchitectureで誰が何の責務を持っているか把握する為になります。
Cookiecutterについて
主に機械学習向けのPythonパッケージやDjango等の
プロジェクトテンプレートを作成することができるツールです。
cookiecutter-template を確認すると様々なテンプレートが公開されています。
まずは Forkして カスタマイズするのも有かなと思います。
Android向けやiOS向けもそれなりにありました。
ちなみにローカルでも利用可能でした。
# Create project in the current working directory, from the local
# cookiecutter-pypackage/ template
$ cookiecutter cookiecutter-pypackage/
補足: Xcodeのプロジェクトテンプレートを使わなかった理由
Xcodeのオレオレプロジェクトテンプレート作成も試みたのですが
以下の理由で色々と面倒だったので cookiecutter を使う感じになりました。
- TemplateInfo.plist をガッツリ弄るのが億劫
- xcconfig とか BuildSettingsも設定したい
Xcodeの自作プロジェクトテンプレートに詳しい方などいらっしゃいましたら
コメント頂けると幸いでございます🙇♂️
今後やりたいこと
- 再利用できるものはEmbedded Framework化した上でテンプレートに含める
- 他のアーキテクチャも作りたい
- テンプレートプロジェクト自体をCIで回してテンプレートの形骸化を防ぎたい
- シェルスクリプト使ってAWS Amplifyも合わせて設定する
まとめ
Cookiecutter向けに自分好みのテンプレートを作って開発初期スピードを加速させよう