Skip to content

miraikeitai2020/michisirube_camp_iOS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 

Repository files navigation

未知しるべiOS班の開発合宿

michisirube_camp_iOS

ゆかりがんばれ!!!!!!
当たって砕けろ!!!!!
分量多くてすまん!!!!

ブランチの切り方

  • gitフロー

    • https://qiita.com/KosukeSone/items/514dd24828b485c69a05
    • masterブランチ、developブランチにはpushしない!!
    • 原則として、developからfeatureブランチを切る
    • とりあえず、masterブランチ、developブランチ、featureブランチは覚えてほしい
    • 随時、developにマージする
    • masterにマージするタイミングは、アプリ完成時(1つの不具合もない状態、warningも極力解消する)
    • 余裕があれば、俺がプルリクレビューするよー
  • githubフロー

開発で気をつけること

  1. アーキテクチャはMVP(Model View Presenter)
  2. APIの仕様を調べよう
  3. Postmanを使いながら、サーバからのレスポンスを確認する
  4. 1storyboardに1ViewController(鉄則)
  5. storyboardとViewControllerを紐付け(これ忘れるとViewが表示されない)
  6. APIはModelで叩くといいよ(人によってはPresenterでやることも)
  7. ModelとPresenterでは import UIKit 禁止(Viewを管理するのはViewControllerだけ)
  8. まあ、分からんことあったら調べてね
  9. ViewControllerにベタがきはやめよう(ファイル分け)
  10. pushした後はプルリクを出す
  11. Xcode上でグループを作ると見やすい
  12. デバッグには、print文とかブレイクポイントを使うといいよ
  13. ブレイクポイントに関しては、「あれ?このメソッド呼ばれてなくね??」とか「この行のこのコード実行されてなくね??」とか思った時に使うといいよ(ブレイクポイントつけた箇所が呼ばれるとビルド時にその箇所でプログラムが止まる)
  14. デフォルトのViewControllerとMain.storyboardは消して、自分で新たに作り直して開発するのが定石(開発チームによっては、Main.storyboardは残すこともある)
  15. xcodeprojファイルは、ファイル追加しただけでコンフリクトを起こす厄介なやつ(そのためにXcodegenを使ってgitの追跡対象から外して、ビルド時にxcodeprojファイルを生成させる)

開発の流れ

  1. プロジェクトを作って、CocoaPodsを導入する(xcodeprojではなくて、workspaceで作業をする)
  2. できたらXcodegenを使ってほしいところ(こいつ使うとxcodeprojファイルのコンフリクトを防げる)
  3. まず、UIを構成する(storyboardでもコードでもおk)
  4. View、Presenter、Modelのグループを作る
  5. storyboardとViewControllerを紐付け
  6. MapKitをインポートして地図を表示する
  7. Alamofireを使ってAPIを叩き、レンポンスをコンソールに表示する(URLSettionでもいいけど、めんどいよ)
  8. Modelの中のAF.requestメソッド内でjsonを解析する
  9. Modelの情報をPresenterにぶん投げる
  10. Presenterでは、Viewが扱いやすいように情報を整形する(Modelから情報が取れているか確かめたり、キャストしたり)
  11. Viewでは、Presenterから貰った情報をそのまま表示する(Labelに反映するとか、TableViewに反映するとか)

Alamofireはこうやって使うといいよ

  • この辺は比較的難しいけど、うまくできた時は快感
  • キーワード
    • 非同期
    • クロージャ
    • ハンドラ
AF.request(requestURL, method: .get, encoding: JSONEncoding.default).response { response in
  // この中にコード書く
  // jsonをパース(JSONDecoderを使ってゴニョゴニョする)
}

About

未知しるべ開発合宿

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published