lasciva blog

開発して得た知見やwebビジネスのストック

Souzoh iOS Talk

こちらに参加してきたまとめです。

mercari.connpass.com

  1. Move Fast iOS Development @motokiee
  2. メルカリアッテのRxSwift実装ガイド @parakeety
  3. Project開始後に導入するAssetsの自動共有 @yudoufu
  4. RxSwift4をチラ見する @tarunon
  5. メルカリアッテを支えるオートマトン @orakaro

Move Fast iOS Development @motokiee

speakerdeck.com

メルカリのvalue
  • Go bold
  • all for one
  • be professional
  • move fast
souzohの歴史
  • 1年前はアッテだけ
  • メゾンズ、カウルもリリース
  • iOSのチーム体制
    • アッテ2名
    • カウル2名
    • メゾンズ1名
    • 新PJ1名
  • カウル
    • 1ヶ月に1度ぐらい大きめの新機能追加
    • 少ない人数でなぜ最大のアウトプットが出せるか
  • 高速開発を支えているもの
  • 数多くトライする
    • Firebase Function
  • 技術知識の共有
    • swift wednesday
      • 毎日の夕会を効率化して週一にするため
      • コードレビューではカバーできないところ
    • 各PJの課題、近況が見えなくなってきた
    • 技術共有に加えて近況報告
  • Wikiを書く文化
    • 職種限らず
  • まとめ
    • 環境変化にMoveFastに対応する
    • iOS同士のつながりを大事にしている
    • プロダクトへのアウトプット、共有の意味でのアウトプット

メルカリアッテのRxSwift実装ガイド @parakeety

自己紹介・発表概要
  • メルカリアッテ担当
  • アッテ
    • RxSwift
    • 色々試行錯誤しながた実装方針を模索
    • ある程度固まってきた
  • 実装ガイドの一部を紹介
    • ViewModelの実装ガイド
    • ErrorHandling
  • アーキテクチャ
    • Model + View + ViewController + ViewModel
    • VCをスリムにしてテスタブルにするために、ViewModeに処理を集約
    • VCとVMは1:1
ViewModelの実装ガイド
  1. ViewModelへのinputはViewModelのinitializerで全て渡す
    • ストリーム(tableViewの下までいったときのストリームとか)
  2. ViewModelからのoutputはViewModelのpropertyとして定義
  3. ViewModelへのinputもoutputはDriverを使う
    • observableに値が流れてくるのが先か、subscribeが先かで意図しない動き
    • subscribeのタイミングや順番を気にしなくてもいいように、subscribeしたときにreplayさせるようにする
ErrorHandling
  • サーバリクエストを投げて、エラーハンドリングするのはあるある
  • しかし、observableにerrorが流れるとobservableが終了してしまう
  • そこで正常系とエラーのstreamを分割

Project開始後に導入するAssetsの自動共有 @yudoufu

自己紹介
  • カウル立ち上げ
  • iOS中心にチーム内のトラブルシュート
背景
  • カウルで行ったBPW(Be Proffesional Week)の成果
    • BPD(2日間で中長期的な技術改善、4半期に一回)
    • 今回はまとめて、ガツンと1週間取り組んだ
    • Assets共有
旧来のやりかた
  • スケッチからPDF、Xcode
  • 受け渡し、反映がBlocking
  • 受け渡しされたアイコンの状態管理が大変
  • iOSDCの関連発表
改善後
  • スケッチからpushして、CIでcontents.json作成してそれをgithubにpush
  • Travis上でsketchの書き出し
  • iOS側に追加する際にContents.jsonを生成
  • 直接コミットせず、PRの形にする
  • PDFが全部差分出る問題
    • Macに起因
    • 差分を正確に把握して、除外処理
      • SVGを同時に書き出して、そちらの差分を元に変更をチェック
      • iOSリポジトリ側へはPDFのみPR送る
      • SVGよりもpngのほうが良い
      • SVGはスケッチのバージョンを含むので差分が出てしまう
プロジェクトへの組み込みのハマりどころ
  • 自動化するタイミングで整えたいあるある
  • 変更の対象表をつくり、Project内で一括置換
  • Assets中をごりっと整理
  • Travisのタイミング
    • リポジトリへのPRを出す」という処理があることを念頭に置く
      • PRをトリガーにしていると余計なBuildが走りがち
まとめ
  • BPWでAsets自動化したよ
  • pngで差分見よう
  • 取り込みは日程を決めて進めるとスムーズに

RxSwift4をチラ見する @tarunon

自己紹介
  • tarunon
  • 9月から上京
  • Splatoon2
  • RxSwiftをちょっとだけかいてます
  • 今の業務ではReactiveCocoa
RxSwift4
  • 差分は1万行ぐらい:Github
  • Obserbvable
    • enumerated
    • first
    • withIndexはdeprecatedに
  • Signal
    • No Replay Driver
  • Relay
    • No error subject
    • VariableはDeprecated
    • PublishRelay
  • Binder
    • UIBindingObserver withput Target
  • New DelegateProxy
  • One More thing
    • PR送ってね

メルカリアッテを支えるオートマトン @orakaro

speakerdeck.com

アッテが取り組んでいること
オートマトン