サーバサイドエンジニアと効率よく開発するためにやっていること

>100 Views

January 13, 17

スライド概要

potatotips #36の発表資料です
https://potatotips.connpass.com/event/46832/

profile-image

SwiftとLEGOとBluetooth LEが好きなプログラマ

シェア

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

サーバサイドエンジニアと 効率よく開発するために やっていること ⼤庭 慎⼀郎 iOSエンジニア / メルカリ 2017/1/13 potatotips #36 1

2.

⾃⼰紹介 ⼤庭 慎⼀郎 ooba / bricklife iOSエンジニア / 株式会社メルカリ - メルカリJP版の⽴ち上げ - メルカリUS版の⽴ち上げ - メルカリ アッテの⽴ち上げ - メルカリUK版の⽴ち上げ ← いまここ 2

3.

メルカリの状況

4.

メルカリのエンジニアの数 クライアントサイド(iOS) • 今⽉で7⼈になりました! サーバサイド • 60⼈くらい?? 正直何⼈いるかわからない… 圧倒的にサーバサイドのほうが多い • 4 サーバサイドエンジニアが開発しやすい環境がよい

5.

開発拠点 # 5 ! "

6.

3拠点ある問題点 エンジニアは各拠点に点在している • JPが⼀番多い 各拠点間の時差が7〜9時間ある • 業務時間内でお互いに起きている時間が少ない やりとりの往復に時間がかかりすぎる • 6 なるべく往復を少なくしたい

7.

効率的な開発のために

8.

効率的に開発するためにやっていること 1. ⼿元ですぐにアプリを実⾏できる環境 2. 開発者向け機能の拡充 3. LLDB Pluginの活⽤ 4. Charlesの活⽤ 8

9.

⼿元ですぐにアプリ を実⾏できるように

10.

サーバサイドにアプリを使ってもらう⽅法 1. DeployGateやTestFlightによる配布 2. リポジトリからビルド 10

11.

アプリの配布 開発環境アプリはDeployGateで配布 • Enterprise • パスワード付きの匿名配布 本番環境アプリはTestFlightも使う • 11 プッシュ通知の確認などはTestFlight必須

12.

リポジトリからビルド チェックアウトしたらすぐに実⾏できる • CocoaPodsやCarthageをいれなくても、リポジトリを チェックアウトしてXcodeで開けばすぐに実⾏できる 12 • git submodule or バイナリ or コードまるごと • CIも早くなったり

13.

開発者向け機能

14.

本番環境アプリと開発環境アプリ 本番環境アプリと開発環境アプリの違い 14 • APIサーバなどの向き先 • アイコンとデザイン • 開発者向け機能

15.

本番環境アプリと開発環境アプリ 15

16.

開発者向けメニュー 開発版だけに⼊っている • 本体を振ると出てくる できること 16 • サーバの切り替え • 内部状態の確認 • 状態のリセットなど

17.

開発者向けメニュー 17

18.

実装の仕⽅ #ifdef DEBUG - (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event { if (motion == UIEventSubtypeMotionShake) { // 開発者向けメニューの表示 } } #endif 18

19.

LLDB Pluginの活⽤

20.

LLDB Pluginによる出⼒整形 LLDB Pluginとは • デバッガに独⾃コマンドを作れる仕組み どう使っているか • APIのレスポンスが期待しているものと違うときなどに、 サーバサイドエンジニアに通信内容を伝えるために使う 20

21.

よく使っているLLDB Plugin その1 NSArrayやNSDictionayをJSON⽂字列と して出⼒ 21

22.

よく使っているLLDB Plugin その2 NSURLRequestのインスタンスをcurlコマ ンドとして出⼒ 22

23.

jsonコマンドのコード 23 https://gist.github.com/bricklife/1f6bff179cf5bda5b99638afc25b248a

24.

curlコマンドのコード 24 https://gist.github.com/bricklife/080533e6855c7aef2319baeac60d2b8e

25.

LLDB Pluginの作り⽅ iOSエンジニアのための LLDB Plugin ⼊⾨ http://dealforest.hatenablog.com/entry/ 2016/09/02/043048 ポイント 25 • Pythonで書く必要があるがPythonの知識はいらない • 実⾏部分はSwiftやObjective-Cで書ける

26.

Charlesの活⽤

27.

Charlesとは 27 • みんな⼤好きネットワークプロキシ・デバッグアプリ • HTTPS対応!

28.

Charlesの実⾏画⾯ 28

29.

Charlesでよくやること ネットワーク通信の監視 • ブレイクポイントも貼れる リクエストやレスポンスのダンプ • 正確な内容を知りたいときに レスポンスの書き換え 29 • ⼀部を書き換えたり全部を差し替えたり • API側がまだ新仕様に対応していないときに

30.

Thanks!