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