一つで詳細は下記の記事に載っています。ArchitectureそれをiOS開発に適用させるために参考になる記事を挙げます。各レイヤーごとに役割と責任を分離するために必然的にファイル数・コード量が多くなってしまうのが欠点として挙げられます。コード量が多くなることで記述する時間・ファイルを作成する時間がその分割かれます。その問題を解決するライブラリKuriを開発したのでご紹介します。Architecture用に開発したCLIツールです。Projectにディレクトリ、ファイルをimportしてくれます。柔軟にジェネレートするディレクトリやプロジェクト、その内容を変更できる仕組みを設けています。この記事ではその方法を説明していきます。導入まず導入の説明をします。Kuriはgithub上に公開されていますそして一番新しくリリースされたバージョンのzipをダウンロードしてください。https://github.com/bannzai/Kuri/releasesあとは展開したファイルをPATHが通っている場所に移動しましょう。これでkuriコマンドをターミナル等のCLIで使う準備は終わりです。setupKuriの機能を使うために準備するものがあります。ディレクトリこの二つがコードジェネレートするときに必要です。これらを用意するコマンドがKuriには備わっています。実際にプロジェクトがあるディレクトリに作業ディレクトリを移してください。YourProjectUITests環境によって異なりますが上記のようにlsをしたらYourProject.xcodeprojがあるディレクトリです。setupとコマンドを実行してください。YourProjectUITests以上でKuri.ymlとKuriTemplateの作成が完了しました。generateさて本機能であるgenerateコマンドについて見ていきます。YourProject.xcodeprojなにやらいっぱい作られたみたいですね。実際にXcodeを開いてファイルインスペクターを見るとKuriディレクトリができてその下にファイルができていると思います。XXXでXXXをprefixとしたファイルが一気にgenerateされ、えさらにXcodeプロジェクトにimportされていることが確認できたと思います。応用ここではKuriに用意されたgenerateコマンドの柔軟性について少し触れたいと思います。前提としてsetupコマンドで用意した二つのものの解説をします。Kuri.ymlはgenerateするための設定が記述されています。具体的にはどのプロジェクトのどのターゲットをどのパスにファイルを作成するかを決めるための情報が記載されています。KuriTemplateにはファイルをgenerateするためのテンプレートがSwiftで書かれています。今回はテンプレートの方に着目しましょう。KuriTemplate/Implement/Repository/Repository.swiftの定義はこうなっています。}}これと先ほどgenerateされたKuriDemo/Kuri/Repository/KuriRepositoryImpl.swiftと比較してみましょう。}}形が似ていますね。KuriRepositoryImpl.swiftはKuriTemplate/Implement/Repository/Repository.swiftを基にして(テンプレートとして)作られています。XXXコマンドから編集した内容が反映されます。__DATASTORE__と言う文字列があります。XXXDataStoreへと置きかわる変数の役割を果たしています。以上のことを知っておけばテンプレート編集できます。この機能を使用して自分のプロジェクトにあったテンプレを作成することが可能です。締め以上でKuriの紹介を終わります。詳細なことはgithub上のDocumentsフォルダやREADEMEに記載されているのでそちらをごらんくださいhttps://github.com/bannzai/Kuri/https://github.com/bannzai/Kuri/tree/master/Documentsgenerateに関してもいくつかオプションが用意されているのでこちらを使うことで開発がよりスムーズになると思います。