Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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

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

86aef9515e5986c096bc398c8990992e?s=128

Shinichiro Oba

January 13, 2017
Tweet

Transcript

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

    #36 1
  2. ⾃⼰紹介 2 ⼤庭 慎⼀郎 ooba / bricklife iOSエンジニア / 株式会社メルカリ

    -メルカリJP版の⽴ち上げ -メルカリUS版の⽴ち上げ -メルカリ アッテの⽴ち上げ -メルカリUK版の⽴ち上げ ← いまここ
  3. メルカリの状況

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

    • サーバサイドエンジニアが開発しやすい環境がよい
  5. 開発拠点 5 ! " #

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

    なるべく往復を少なくしたい
  7. 効率的な開発のために

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

    Charlesの活⽤
  9. ⼿元ですぐにアプリ を実⾏できるように

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

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

  12. リポジトリからビルド 12 チェックアウトしたらすぐに実⾏できる • CocoaPodsやCarthageをいれなくても、リポジトリを チェックアウトしてXcodeで開けばすぐに実⾏できる • git submodule or

    バイナリ or コードまるごと • CIも早くなったり
  13. 開発者向け機能

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

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

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

    • 状態のリセットなど
  17. 開発者向けメニュー 17

  18. 実装の仕⽅ 18 #ifdef DEBUG - (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event { if

    (motion == UIEventSubtypeMotionShake) { // ։ൃऀ޲͚ϝχϡʔͷදࣔ } } #endif
  19. LLDB Pluginの活⽤

  20. LLDB Pluginによる出⼒整形 20 LLDB Pluginとは • デバッガに独⾃コマンドを作れる仕組み どう使っているか • APIのレスポンスが期待しているものと違うときなどに、

    サーバサイドエンジニアに通信内容を伝えるために使う
  21. よく使っているLLDB Plugin その1 21 NSArrayやNSDictionayをJSON⽂字列と して出⼒

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

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

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

  25. LLDB Pluginの作り⽅ 25 iOSエンジニアのための LLDB Plugin ⼊⾨ http://dealforest.hatenablog.com/entry/ 2016/09/02/043048 ポイント

    • Pythonで書く必要があるがPythonの知識はいらない • 実⾏部分はSwiftやObjective-Cで書ける
  26. Charlesの活⽤

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

  28. Charlesの実⾏画⾯ 28

  29. Charlesでよくやること 29 ネットワーク通信の監視 • ブレイクポイントも貼れる リクエストやレスポンスのダンプ • 正確な内容を知りたいときに レスポンスの書き換え •

    ⼀部を書き換えたり全部を差し替えたり • API側がまだ新仕様に対応していないときに
  30. Thanks!