>100 Views
January 13, 17
スライド概要
potatotips #36の発表資料です
https://potatotips.connpass.com/event/46832/
SwiftとLEGOとBluetooth LEが好きなプログラマ
サーバサイドエンジニアと 効率よく開発するために やっていること ⼤庭 慎⼀郎 iOSエンジニア / メルカリ 2017/1/13 potatotips #36 1
⾃⼰紹介 ⼤庭 慎⼀郎 ooba / bricklife iOSエンジニア / 株式会社メルカリ - メルカリJP版の⽴ち上げ - メルカリUS版の⽴ち上げ - メルカリ アッテの⽴ち上げ - メルカリUK版の⽴ち上げ ← いまここ 2
メルカリの状況
メルカリのエンジニアの数 クライアントサイド(iOS) • 今⽉で7⼈になりました! サーバサイド • 60⼈くらい?? 正直何⼈いるかわからない… 圧倒的にサーバサイドのほうが多い • 4 サーバサイドエンジニアが開発しやすい環境がよい
開発拠点 # 5 ! "
3拠点ある問題点 エンジニアは各拠点に点在している • JPが⼀番多い 各拠点間の時差が7〜9時間ある • 業務時間内でお互いに起きている時間が少ない やりとりの往復に時間がかかりすぎる • 6 なるべく往復を少なくしたい
効率的な開発のために
効率的に開発するためにやっていること 1. ⼿元ですぐにアプリを実⾏できる環境 2. 開発者向け機能の拡充 3. LLDB Pluginの活⽤ 4. Charlesの活⽤ 8
⼿元ですぐにアプリ を実⾏できるように
サーバサイドにアプリを使ってもらう⽅法 1. DeployGateやTestFlightによる配布 2. リポジトリからビルド 10
アプリの配布 開発環境アプリはDeployGateで配布 • Enterprise • パスワード付きの匿名配布 本番環境アプリはTestFlightも使う • 11 プッシュ通知の確認などはTestFlight必須
リポジトリからビルド チェックアウトしたらすぐに実⾏できる • CocoaPodsやCarthageをいれなくても、リポジトリを チェックアウトしてXcodeで開けばすぐに実⾏できる 12 • git submodule or バイナリ or コードまるごと • CIも早くなったり
開発者向け機能
本番環境アプリと開発環境アプリ 本番環境アプリと開発環境アプリの違い 14 • APIサーバなどの向き先 • アイコンとデザイン • 開発者向け機能
本番環境アプリと開発環境アプリ 15
開発者向けメニュー 開発版だけに⼊っている • 本体を振ると出てくる できること 16 • サーバの切り替え • 内部状態の確認 • 状態のリセットなど
開発者向けメニュー 17
実装の仕⽅ #ifdef DEBUG - (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event { if (motion == UIEventSubtypeMotionShake) { // 開発者向けメニューの表示 } } #endif 18
LLDB Pluginの活⽤
LLDB Pluginによる出⼒整形 LLDB Pluginとは • デバッガに独⾃コマンドを作れる仕組み どう使っているか • APIのレスポンスが期待しているものと違うときなどに、 サーバサイドエンジニアに通信内容を伝えるために使う 20
よく使っているLLDB Plugin その1 NSArrayやNSDictionayをJSON⽂字列と して出⼒ 21
よく使っているLLDB Plugin その2 NSURLRequestのインスタンスをcurlコマ ンドとして出⼒ 22
jsonコマンドのコード 23 https://gist.github.com/bricklife/1f6bff179cf5bda5b99638afc25b248a
curlコマンドのコード 24 https://gist.github.com/bricklife/080533e6855c7aef2319baeac60d2b8e
LLDB Pluginの作り⽅ iOSエンジニアのための LLDB Plugin ⼊⾨ http://dealforest.hatenablog.com/entry/ 2016/09/02/043048 ポイント 25 • Pythonで書く必要があるがPythonの知識はいらない • 実⾏部分はSwiftやObjective-Cで書ける
Charlesの活⽤
Charlesとは 27 • みんな⼤好きネットワークプロキシ・デバッグアプリ • HTTPS対応!
Charlesの実⾏画⾯ 28
Charlesでよくやること ネットワーク通信の監視 • ブレイクポイントも貼れる リクエストやレスポンスのダンプ • 正確な内容を知りたいときに レスポンスの書き換え 29 • ⼀部を書き換えたり全部を差し替えたり • API側がまだ新仕様に対応していないときに
Thanks!