16
11

More than 3 years have passed since last update.

Cookiecutterを使って爆速でiOSプロジェクトを作成する

Posted at

cookiecutter_medium.png

はじめに

あなたは開発スタート時に毎回新しい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」が聞かれます。
それぞれを入力するとプロジェクト作成完了です。
スクリーンショット 2020-10-14 18.35.49.png

生成されるサンプルプロジェクトについて

  • bootstrap.sh
  • .xcconfig (debug/adhoc/release)
  • CocoaPods Settings
  • Carthage Setting
  • no Main.storyboard
  • DependencyInjection SampleCode
  • Github's Repositry search process SampleCode

テンプレートの基本的な内容として上記を設定してみました。
普段通りに実装したものをCookiecutterテンプレートとして転用できるのは便利です。

ちなみに開発時には削除することになりますが
GitHubAPIを叩いて画面に表示するサンプルコードを追加しています。
理由としてCleanArchitectureで誰が何の責務を持っているか把握する為になります。
スクリーンショット 2020-10-15 0.03.10.png

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向けに自分好みのテンプレートを作って開発初期スピードを加速させよう

参考

16
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
11