potatotips #36 (iOS/Android開発Tips共有会)
Clean Architecture用の開発ツールを作ったお話
自己紹介
名前: 廣瀬 雄大
職種: iOS Engineer
http://github.com/bannzai
http://qiita.com/bannzai
https://www.facebook.com/yudai.owa
ta.hirose
本題
# (iOSの) Clean Architecture用の開発ツールKuriを作っ
たので紹介します。
https://github.com/bannzai/Kuri
前置き: Clean Architecture の特徴
# レイヤーごとに役割・責務を分離したArchitecture
## メリット
- ビジネスロジックが明確になる
- フレームワークに依存しない
- UIに依存しない
- Data Storeに依存しない
- テストの容易性
## デメリット
- コード量が多くなる
### 詳細はこちら
[まだMVC,MVP,MVVMで消耗してるの? iOS Clean Architectureについて]
http://qiita.com/koutalou/items/07a4f9cf51a2d13e4cdc
Clean Architecture用の開発ツールを作ったお話
Clean Architecture用の開発ツールを作ったお話
実際ちょっと書いてみよう
e.g User情報が表示されている画面を作る。
まずはAPI経由で情報を取得(fetch)する
struct UserEntity …
struct UserDataStoreImpl: UserDataStore {
func fetch(done: (UserEntity -> Void)) {
… // Fetch from Web API
}
}
struct UserRepositoryImpl: UserRepository {
let dataStore: UserDataStore
func fetch(done: (UserEntity -> Void)) {
dataStore.fetch(done)
}
}
struct UserUseCaseImpl: UserUseCase {
let translator: UserTranslator
func fetch(done: (UserModel -> Void)) {
repository.fetch {
done(translator.translate($0))
}
}
}
struct UserModel …
struct UserTranslatorImpl: UserTranslator …
class UserPresenterImpl: UserPresenter …
class UserViewController: UserView …
Clean Architecture用の開発ツールを作ったお話
# しばらく書いてみての気づき
- やっぱり書く量が多い
- ファイルいっぱいNewするの辛い。
- 細かく分割されることにより同じような処理を書くことが多い
。
Presenter → DataStoreまでEntityに対する
CRUDの処理が多い
Repository → Translator(Entity) → Model
ちょっと考えた
- 同じような処理を書くことが多い
→ テンプレ化してコードジェネレートしちゃおう。
→ これで書く量も減る。
- ファイルいっぱいNewするの辛い
→ 役割ごとにファイルを作ろう。
→ ついでにXcodeプロジェクトにもimportするようにしよう。
作った → Kuri
Kuriの特徴
- コマンド一発で各レイヤーのファイル・コードを生成してくれる。さらにXcodeプロジェクトに
自動でmport
- 生成するコードはフォーマットに沿ったテンプレートを用意することでプロジェクトの特徴によ
って変更可能。
- yaml ファイルにいくつか設定項目を用意してあり、プロジェクトの特徴によって変更可能
- 必要なレイヤーだけgenerateすることも可能。 ` -s or -i `詳しくはREADME見てね
- 導入簡単
~~~
$ brew tap bannzai/homebrew-Kuri
$ brew install kuri
$ cd PROJECT_ROOT_DIR
$ kuri setup
$ ls
KuriTemplate Kuri.yml … ← yamlファイルとテンプレートができる。
導入終了
~~~
ちょっとだけデモ
今後とか
いくつかissueにあげているのですが、
https://github.com/bannzai/Kuri/issues
- CRUDインターフェースを動的に切り替えてgenerateする
- 複数テンプレート用意できるようにする
- Rename and Remove 機能
とかとか対応していきたいです。
終わりに
READMEにより詳細な情報を記載してあります。
Qiitaにも使い方を簡単に書いてあるのでそちらも参考にしてください
[まだiOS Clean Architecture で消耗してるの? 爆速開発ツールを作ったの
でご紹介]
http://qiita.com/bannzai/items/6e8add18b15af235a19f
CleanArchitectureに困っている方・興味がある方は一度試してみてはみて
くれると嬉しいです。
Kuriいいねと思ったら実際に触っていただいて
PR, issue, Star⭐️等いただけたら嬉しいです。
ご静聴ありがとうございました!

More Related Content

PDF
Bot Builder V4 SDK + QnA Maker / LUIS
PPTX
Wantedlyのテスト事情
PPTX
Visual Studio App CenterでGitHubのIssue発行を自動化しよう
PDF
Android Lintを覚えてベテラン開発者に追いつこう #ndsmeetup
PDF
Android再入門 〜Eclipseのことは忘れろ〜
PDF
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
PDF
Fundamentals of Swift & Redux (ReduxとSwiftの組み合わせ)
PDF
cocos2d-x で PlugAir を 使えるようにしてみた
Bot Builder V4 SDK + QnA Maker / LUIS
Wantedlyのテスト事情
Visual Studio App CenterでGitHubのIssue発行を自動化しよう
Android Lintを覚えてベテラン開発者に追いつこう #ndsmeetup
Android再入門 〜Eclipseのことは忘れろ〜
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
Fundamentals of Swift & Redux (ReduxとSwiftの組み合わせ)
cocos2d-x で PlugAir を 使えるようにしてみた

What's hot (20)

PPTX
ちょっと丁寧にgitを説明する
PDF
Githubのご紹介
PPTX
LINEにおける GitHub Enterpriseの活用事例と LINE Notifyについて
PDF
もう一度Kotlinの話をしよう #ndsmeetup4
PDF
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
PPTX
MicrosoftのサービスでさくっとBot開発!
PDF
Approach of Prototyping for making Application User Interface about iOS
PPTX
使い倒そう Visual Studio Code! ~クラウド連携や遠隔ペアプロ、  もちろん Git も便利に~
PPTX
使い倒そう Visual Studio Code!!! ~ここからはじめる基本のキ~
PDF
チーム開発にSwiftLintを導入してみた・詳細版
PDF
既存プロジェクトにSwiftLintを導入した話
PDF
ROS JAPAN Users Group Meetup 04
PDF
iPhoneアプリ無料勉強会 vol2
PPT
How to make a cutting wiring board by desktop CNC
PDF
Remote Development with Visual Studio Code & A clean dev env, working every ...
PPTX
Visual Studio Code で快適開発生活 -拡張を作って公開しよう-
PPTX
GitHub, the way to simple use. That's it.
PDF
UIbuilderを使ったフロントエンド開発
PDF
チャットボット開発を取り巻く環境と Cogbot コミュニティ
PDF
Introduction of FPGA
ちょっと丁寧にgitを説明する
Githubのご紹介
LINEにおける GitHub Enterpriseの活用事例と LINE Notifyについて
もう一度Kotlinの話をしよう #ndsmeetup4
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
MicrosoftのサービスでさくっとBot開発!
Approach of Prototyping for making Application User Interface about iOS
使い倒そう Visual Studio Code! ~クラウド連携や遠隔ペアプロ、  もちろん Git も便利に~
使い倒そう Visual Studio Code!!! ~ここからはじめる基本のキ~
チーム開発にSwiftLintを導入してみた・詳細版
既存プロジェクトにSwiftLintを導入した話
ROS JAPAN Users Group Meetup 04
iPhoneアプリ無料勉強会 vol2
How to make a cutting wiring board by desktop CNC
Remote Development with Visual Studio Code & A clean dev env, working every ...
Visual Studio Code で快適開発生活 -拡張を作って公開しよう-
GitHub, the way to simple use. That's it.
UIbuilderを使ったフロントエンド開発
チャットボット開発を取り巻く環境と Cogbot コミュニティ
Introduction of FPGA
Ad

Similar to Clean Architecture用の開発ツールを作ったお話 (20)

PDF
大規模フロントエンドのクリーンアーキテクチャ化 ~ 年間売上1,000億円企業モノタロウの取組み ~
PPTX
Clean architecture 紹介
PPTX
世界一わかりやすいClean Architecture - DroidKaigiバージョン
PDF
クリーンアーキテクチャを試してみた
PDF
Androidアプリ開発にクリーンアーキテクチャを取り入れよう
PDF
Android cleanarchitecture
PDF
オープンソースエコシステム #demodaytokyo
PDF
クリーンアーキテクチャ学んでみた
PDF
Androidアプリ開発にクリーンアーキテクチャを取り入れよう (OSS編)
PPTX
世界一わかりやすいClean Architecture
PDF
Java クライント実装におけるAPIスタイル頂上決戦! 野良REST vs GraphQL vs OData vs OpenAPI (Swagger)
PDF
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
PDF
ソフトウェアパターン概論およびパターンを活用したアーキテクチャ設計
PDF
設計について学ぼう (1).pdf
PDF
デザインにもこだわったUIの事始め (Episode1)
PDF
ライブラリやView構造を有効活用して iOSアプリのUIをオシャレにするワザ紹介
PPTX
世界一わかりやすいClean Architecture release-preview
KEY
1.29.user,user,user
PDF
第ⅱ部:Clean architecture 構成要素から始めよ
PDF
第ⅴ部:clean architecture アーキテクチャ Part1
大規模フロントエンドのクリーンアーキテクチャ化 ~ 年間売上1,000億円企業モノタロウの取組み ~
Clean architecture 紹介
世界一わかりやすいClean Architecture - DroidKaigiバージョン
クリーンアーキテクチャを試してみた
Androidアプリ開発にクリーンアーキテクチャを取り入れよう
Android cleanarchitecture
オープンソースエコシステム #demodaytokyo
クリーンアーキテクチャ学んでみた
Androidアプリ開発にクリーンアーキテクチャを取り入れよう (OSS編)
世界一わかりやすいClean Architecture
Java クライント実装におけるAPIスタイル頂上決戦! 野良REST vs GraphQL vs OData vs OpenAPI (Swagger)
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
ソフトウェアパターン概論およびパターンを活用したアーキテクチャ設計
設計について学ぼう (1).pdf
デザインにもこだわったUIの事始め (Episode1)
ライブラリやView構造を有効活用して iOSアプリのUIをオシャレにするワザ紹介
世界一わかりやすいClean Architecture release-preview
1.29.user,user,user
第ⅱ部:Clean architecture 構成要素から始めよ
第ⅴ部:clean architecture アーキテクチャ Part1
Ad

Clean Architecture用の開発ツールを作ったお話