Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
サーバサイドエンジニアと効率よく開発するためにやっていること
Search
Shinichiro Oba
January 13, 2017
Programming
8
2k
サーバサイドエンジニアと効率よく開発するためにやっていること
potatotips #36の発表資料です
https://potatotips.connpass.com/event/46832/
Shinichiro Oba
January 13, 2017
Tweet
Share
More Decks by Shinichiro Oba
See All by Shinichiro Oba
アッテ開発の技術:Swift と RxSwift
bricklife
19
17k
RxSwiftのobserveOnとsubscribeOnを理解する
bricklife
20
7.2k
Swift 2.0でRxSwift、ReactKit、ReactiveCocoaを使ってみた
bricklife
10
4.8k
ReactiveCocoaのゆるい紹介とメルカリでの活用事例
bricklife
3
3.6k
Apple Pay対応のやりかた
bricklife
1
25k
iOS版グローバル対応の罠と技
bricklife
8
24k
Other Decks in Programming
See All in Programming
The Shape of a Service Object
inem
0
520
意外とフォントが大事だった話 / Font Issues on Internationalization
fumi23
0
110
Developer Joy == Developer Productivity (really!)
hollycummins
1
210
LangGraphでのHuman-in-the-Loopの実装
os1ma
3
1.1k
はじめてみよう量子プログラミング
itokoichi01
0
210
Crafting Cross-Platform Adventures: Building a Game Engine with Kotlin Multiplatform
dwursteisen
0
120
What you can do with Ruby on WebAssembly
kateinoigakukun
0
170
GraphQL あるいは React における自律的なデータ取得について
quramy
11
3k
Findy - エンジニア向け会社紹介 / Findy Letter for Engineers
findyinc
4
90k
Some more adventure of Happy Eyeballs
coe401_
2
190
React + TextAliveでカッコいいLyric Applicatioinを作ろう!!
tosuri13
0
400
Prompt Cachingは本当に効果的なのか検証してみた.pdf
ttnyt8701
0
530
Featured
See All Featured
How To Stay Up To Date on Web Technology
chriscoyier
786
250k
A better future with KSS
kneath
235
17k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
363
22k
Ruby is Unlike a Banana
tanoku
96
11k
Visualization
eitanlees
142
15k
Producing Creativity
orderedlist
PRO
340
39k
Practical Orchestrator
shlominoach
185
10k
Unsuck your backbone
ammeep
667
57k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.3k
Statistics for Hackers
jakevdp
794
220k
Intergalactic Javascript Robots from Outer Space
tanoku
268
26k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
354
29k
Transcript
サーバサイドエンジニアと 効率よく開発するために やっていること ⼤庭 慎⼀郎 iOSエンジニア / メルカリ 2017/1/13 potatotips
#36 1
⾃⼰紹介 2 ⼤庭 慎⼀郎 ooba / bricklife iOSエンジニア / 株式会社メルカリ
-メルカリJP版の⽴ち上げ -メルカリUS版の⽴ち上げ -メルカリ アッテの⽴ち上げ -メルカリUK版の⽴ち上げ ← いまここ
メルカリの状況
メルカリのエンジニアの数 4 クライアントサイド(iOS) • 今⽉で7⼈になりました! サーバサイド • 60⼈くらい?? 正直何⼈いるかわからない… 圧倒的にサーバサイドのほうが多い
• サーバサイドエンジニアが開発しやすい環境がよい
開発拠点 5 ! " #
3拠点ある問題点 6 エンジニアは各拠点に点在している • JPが⼀番多い 各拠点間の時差が7〜9時間ある • 業務時間内でお互いに起きている時間が少ない やりとりの往復に時間がかかりすぎる •
なるべく往復を少なくしたい
効率的な開発のために
効率的に開発するためにやっていること 8 1. ⼿元ですぐにアプリを実⾏できる環境 2. 開発者向け機能の拡充 3. LLDB Pluginの活⽤ 4.
Charlesの活⽤
⼿元ですぐにアプリ を実⾏できるように
サーバサイドにアプリを使ってもらう⽅法 10 1. DeployGateやTestFlightによる配布 2. リポジトリからビルド
アプリの配布 11 開発環境アプリはDeployGateで配布 • Enterprise • パスワード付きの匿名配布 本番環境アプリはTestFlightも使う • プッシュ通知の確認などはTestFlight必須
リポジトリからビルド 12 チェックアウトしたらすぐに実⾏できる • CocoaPodsやCarthageをいれなくても、リポジトリを チェックアウトしてXcodeで開けばすぐに実⾏できる • git submodule or
バイナリ or コードまるごと • CIも早くなったり
開発者向け機能
本番環境アプリと開発環境アプリ 14 本番環境アプリと開発環境アプリの違い • APIサーバなどの向き先 • アイコンとデザイン • 開発者向け機能
本番環境アプリと開発環境アプリ 15
開発者向けメニュー 16 開発版だけに⼊っている • 本体を振ると出てくる できること • サーバの切り替え • 内部状態の確認
• 状態のリセットなど
開発者向けメニュー 17
実装の仕⽅ 18 #ifdef DEBUG - (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event { if
(motion == UIEventSubtypeMotionShake) { // ։ൃऀ͚ϝχϡʔͷදࣔ } } #endif
LLDB Pluginの活⽤
LLDB Pluginによる出⼒整形 20 LLDB Pluginとは • デバッガに独⾃コマンドを作れる仕組み どう使っているか • APIのレスポンスが期待しているものと違うときなどに、
サーバサイドエンジニアに通信内容を伝えるために使う
よく使っているLLDB Plugin その1 21 NSArrayやNSDictionayをJSON⽂字列と して出⼒
よく使っているLLDB Plugin その2 22 NSURLRequestのインスタンスをcurlコマ ンドとして出⼒
jsonコマンドのコード 23 https://gist.github.com/bricklife/1f6bff179cf5bda5b99638afc25b248a
curlコマンドのコード 24 https://gist.github.com/bricklife/080533e6855c7aef2319baeac60d2b8e
LLDB Pluginの作り⽅ 25 iOSエンジニアのための LLDB Plugin ⼊⾨ http://dealforest.hatenablog.com/entry/ 2016/09/02/043048 ポイント
• Pythonで書く必要があるがPythonの知識はいらない • 実⾏部分はSwiftやObjective-Cで書ける
Charlesの活⽤
Charlesとは 27 • みんな⼤好きネットワークプロキシ・デバッグアプリ • HTTPS対応!
Charlesの実⾏画⾯ 28
Charlesでよくやること 29 ネットワーク通信の監視 • ブレイクポイントも貼れる リクエストやレスポンスのダンプ • 正確な内容を知りたいときに レスポンスの書き換え •
⼀部を書き換えたり全部を差し替えたり • API側がまだ新仕様に対応していないときに
Thanks!