├── LICENSE ├── README.md ├── iOSAppDevelopmentPreparationList.md └── 新規iOSアプリ実装前に決めることリスト.md /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Yoshikuni Kato 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # iOS App Development Preparation List 2 | 3 | This is a list for new iOS app development preparation. 4 | 5 | - [iOS App Development Preparation List](./iOSAppDevelopmentPreparationList.md) 6 | - [新規iOSアプリ実装前に決めることリスト(日本語)](./新規iOSアプリ実装前に決めることリスト.md) 7 | 8 | ## Presentation 9 | 10 | - [「新規アプリの設計」を設計する @俺コン 2017/10/02](https://speakerdeck.com/yoching/xin-gui-apurifalseshe-ji-woshe-ji-suru) 11 | -------------------------------------------------------------------------------- /iOSAppDevelopmentPreparationList.md: -------------------------------------------------------------------------------- 1 | # iOS app development preparation list 2 | 3 | ## Premises 4 | 5 | ### Project characters 6 | (scope / development duration / constraints / differences from general projects) 7 | 8 | ### Product characters 9 | (technologies to use / framework / OS / devices) 10 | 11 | ### Motivations of each developer 12 | (want to do / popular technologies / improvements from previous projects) 13 | 14 | 15 | ## Things to decide 16 | 17 | ### Development methods 18 | 19 | - GitHubFlow 20 | - Code reviewing 21 | - Pair programming 22 | - Scrum 23 | - Test Driven Development 24 | - ... 25 | 26 | ### Tools to manage tasks 27 | 28 | - spreadsheet 29 | - zenhub 30 | - trello 31 | - github issue 32 | - Kanban 33 | - ... 34 | 35 | ### Development tools 36 | 37 | #### Library management 38 | 39 | - CocoaPods 40 | - Carthage 41 | - (Swift Package Manager) 42 | 43 | #### Resource management 44 | 45 | - SwiftGen 46 | - R.swift 47 | - L.swift 48 | - ... 49 | 50 | #### Version management 51 | 52 | - github 53 | - gitlab 54 | - bitbucket 55 | - ... 56 | 57 | #### Coding support 58 | 59 | - swiftlint 60 | - ... 61 | 62 | #### UI development 63 | 64 | - Reveal 65 | - PaintCode 66 | - CoreAnimator / QuartzCode 67 | - Tweak 68 | - ... 69 | 70 | #### UITest 71 | 72 | - appium 73 | - KIF 74 | - ... 75 | 76 | #### CI 77 | 78 | - CircleCI 79 | - bitrise 80 | - Jenkins 81 | - fastlane 82 | - ... 83 | 84 | #### CD 85 | 86 | - Fabric 87 | - DeployGate 88 | - TestFlight 89 | - ... 90 | 91 | 92 | ### Libraries 93 | 94 | cf.) [awesome-swift](https://github.com/matteocrippa/awesome-swift), [awesome-ios](https://github.com/vsouza/awesome-ios) 95 | 96 | #### Test 97 | 98 | - Quick / Nimble 99 | - SwiftCheck 100 | - ... 101 | 102 | #### Stub / Mock 103 | 104 | - OHHTTPStubs 105 | - Mockingjay 106 | - ... 107 | 108 | #### Database 109 | 110 | - CoreData 111 | - Realm 112 | - ... 113 | 114 | #### UserDefaults 115 | 116 | - SwiftyUserDefaults 117 | 118 | #### Network 119 | 120 | - Alamofire 121 | - APIKit 122 | - ... 123 | 124 | #### Image fetch management 125 | 126 | - Kingfisher 127 | - Nuke 128 | - ... 129 | 130 | #### Localization support 131 | 132 | - SwiftGen 133 | - ... 134 | 135 | #### App Routing 136 | 137 | - Coordinator Pattern (without library) 138 | - Compass 139 | - ... 140 | 141 | #### JSON encoder / decoder 142 | 143 | (swift4 Codable protocol will be enough) 144 | 145 | #### DI container 146 | 147 | - swinject 148 | - ... 149 | 150 | #### Functional Reactive Programming 151 | 152 | - ReactiveSwift / ReactiveCocoa 153 | - RxSwift / RxCocoa 154 | - ReSwift 155 | - ... 156 | 157 | #### Analytics / Crash management 158 | 159 | - Firebase 160 | - Crashlytics 161 | - Google Analytics 162 | - ... 163 | 164 | #### Push notification 165 | 166 | - Firebase 167 | - Amazon SNS 168 | - ... 169 | 170 | #### UI implementation 171 | 172 | - POP 173 | - ... 174 | 175 | 176 | ### Architecture / Design Patterns 177 | 178 | - MVVM 179 | - MVC 180 | - MVP 181 | - VIPER 182 | - Clean Architecture 183 | - Redux 184 | - ReactorKit (Library/Framework) 185 | - RIBs 186 | - MVC+ViewState 187 | - ModelAdapter-ViewBinder 188 | - Elm 189 | - ... 190 | 191 | ### Framework division 192 | 193 | - by repositories 194 | - by targets 195 | - no division 196 | 197 | ### Coding guidelines 198 | 199 | - Swift API Design Guideline 200 | - Wantedly coding guidelines 201 | - GitHub 202 | - Ray Wenderlich 203 | 204 | ### Styles to write 205 | 206 | - how to use storyboard 207 | - how to manage colors / fonts 208 | - how to manage TableView / CollectionViewのDataSource 209 | - how much to write tests 210 | - ... 211 | 212 | ### Apps to reference 213 | -------------------------------------------------------------------------------- /新規iOSアプリ実装前に決めることリスト.md: -------------------------------------------------------------------------------- 1 | # 新規iOSアプリ実装前に決めることリスト 2 | 3 | ## 前提 4 | 5 | ### プロジェクトの性質 6 | (規模、期間、運用の有無、注力する点、制約、一般的なプロジェクトとの違いなど) 7 | 8 | ### プロダクトの性質 9 | (使う技術、Framework、対応OS、対応端末) 10 | 11 | ### 開発者のモチベーション 12 | (やりたいこと、最近の流行、前のプロジェクトの反省点) 13 | 14 | 15 | ## 決めること 16 | 17 | ### 開発手法 18 | 19 | - GitHubFlow 20 | - コードレビュー 21 | - ペアプログラミング 22 | - スクラム 23 | - テスト駆動開発(TDD) 24 | - ... 25 | 26 | ### タスク管理ツール 27 | 28 | - spreadsheet 29 | - zenhub 30 | - trello 31 | - github issue 32 | - カンバン 33 | - ... 34 | 35 | ### 開発ツール 36 | 37 | #### ライブラリ管理 38 | 39 | - CocoaPods 40 | - Carthage 41 | - (Swift Package Manager) 42 | 43 | #### リソース管理 44 | 45 | - SwiftGen 46 | - R.swift 47 | - L.swift 48 | - ... 49 | 50 | #### バージョン管理 51 | 52 | - github 53 | - gitlab 54 | - bitbucket 55 | - ... 56 | 57 | #### コーディング支援 58 | 59 | - swiftlint 60 | - ... 61 | 62 | #### UI開発 63 | 64 | - Reveal 65 | - PaintCode 66 | - CoreAnimator / QuartzCode 67 | - Tweak 68 | - ... 69 | 70 | #### UITest 71 | 72 | - appium 73 | - KIF 74 | - ... 75 | 76 | #### CI 77 | 78 | - CircleCI 79 | - bitrise 80 | - Jenkins 81 | - fastlane 82 | - ... 83 | 84 | #### CD 85 | 86 | - Fabric 87 | - DeployGate 88 | - TestFlight 89 | - ... 90 | 91 | 92 | ### ライブラリ 93 | 94 | ※ [awesome-swift](https://github.com/matteocrippa/awesome-swift)や [awesome-ios](https://github.com/vsouza/awesome-ios)などに種類別にまとまってたりするので、それを眺めるのがオススメです。 95 | 96 | #### テスト 97 | 98 | - Quick / Nimble 99 | - SwiftCheck 100 | - ... 101 | 102 | #### Stub / Mock 103 | 104 | - OHHTTPStubs 105 | - Mockingjay 106 | - ... 107 | 108 | #### Database 109 | 110 | - CoreData 111 | - Realm 112 | - ... 113 | 114 | #### UserDefaults 115 | 116 | - SwiftyUserDefaults 117 | 118 | #### 通信 119 | 120 | - Alamofire 121 | - APIKit 122 | - ... 123 | 124 | #### 画像読み込み 125 | 126 | - Kingfisher 127 | - Nuke 128 | - ... 129 | 130 | #### 多言語化対応 131 | 132 | - SwiftGen 133 | - ... 134 | 135 | #### ルーティング 136 | 137 | - Coordinator Pattern (without library) 138 | - Compass 139 | - ... 140 | 141 | #### JSONエンコーダー・デコーダー 142 | 143 | ※ swift4では必要なくなる? 144 | 145 | #### DIコンテナ 146 | 147 | - swinject 148 | - ... 149 | 150 | #### FRP 151 | 152 | - ReactiveSwift / ReactiveCocoa 153 | - RxSwift / RxCocoa 154 | - ReSwift 155 | - ... 156 | 157 | #### 計測・クラッシュ管理 158 | 159 | - Firebase 160 | - Crashlytics 161 | - Google Analytics 162 | - ... 163 | 164 | #### PUSH通知 165 | 166 | - Firebase 167 | - Amazon SNS 168 | - ... 169 | 170 | #### UI実装 171 | 172 | - POP 173 | - ... 174 | 175 | 176 | ### アーキテクチャ / デザインパターン 177 | 178 | - MVVM 179 | - MVC 180 | - MVP 181 | - VIPER 182 | - Clean Architecture 183 | - Redux 184 | - ReactorKit (Library/Framework) 185 | - RIBs 186 | - MVC+ViewState 187 | - ModelAdapter-ViewBinder 188 | - Elm 189 | - ... 190 | 191 | ### フレームワークの分割 192 | 193 | - リポジトリから分割 194 | - targetで分割 195 | - 分割しない 196 | 197 | ### コーディング規約 198 | 199 | - Swift API Design Guideline 200 | - Wantedlyコーディング規約 201 | - GitHub 202 | - Ray Wenderlich 203 | 204 | ### やりたい書き方 205 | 206 | - storyboardの使い方 207 | - 色やフォント等の管理 208 | - TabieView/CollectionViewのDataSourceの実装方法 209 | - テストをどれくらい書くか 210 | - ... 211 | 212 | ### 参考にするアプリ 213 | --------------------------------------------------------------------------------