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
Hiroshi Kurokawa
January 15, 2015
Technology
1.7k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
アプリに開発者モードを用意する
Hiroshi Kurokawa
January 15, 2015
More Decks by Hiroshi Kurokawa
See All by Hiroshi Kurokawa
ART of Q
hkurokawa
3
1.2k
Chasing TransactionTooLargeException in The Wild
hkurokawa
0
540
Code Review as a Collaborative Journey
hkurokawa
3
1.1k
Room 2.1
hkurokawa
2
970
Introduction to Q#
hkurokawa
0
140
Surviving a discontinuous world
hkurokawa
1
3.1k
Making onActivityResult More Easy
hkurokawa
1
420
RxJava実践入門
hkurokawa
2
690
How to start a podcast
hkurokawa
1
450
Other Decks in Technology
See All in Technology
【Oracle AI Spotlight ウェビナー】AWSか、Azureか、Google Cloudか。その議論にオラクルを含める意義。
oracle4engineer
PRO
2
240
プロダクト思考 × 基盤思考を AIで実現する Compound Engineering
tkc66buzz
1
270
Bet AI Day 2026丨バクラク Autopilot、業務システムの再設計
layerx
PRO
2
1.5k
データエンジニアの困りごとをDevinと一緒に解消する
10xinc
2
840
現場に行くだけでは足りない——プロダクトエンジニアが業務の流れを捉える観点と、その鍛え方
takumiengineering
0
300
20260903 Tokyo Jazug Night #62 | Azure エンジニアよ、 その環境は本当にセキュアか?
olivia_0707
1
620
PdMをやめて、 "プロダクトビルダー"という 働き方に変えました / PdM to Product Builder
shikichee
2
720
データエンジニアリングワークショップ:Auto LoaderとSparkで学ぶデータパイプライン構築
databricksjapan
PRO
0
190
全員がプロダクトへ向き合う組織を持続成長させるために——組織づくりのフライホイールと4象限 / The Flywheel Model and Four Quadrants for Organizational Design
hiro_torii
3
860
AI時代におけるプロダクト横断勉強会の設計
zozotech
PRO
0
160
KAEN Company Deck
kaen
PRO
0
320
「重なり」は迎える側がつくる ― 人もAIエージェントも歓迎するプロダクトエンジニアリング ―
go0517go
PRO
0
260
Featured
See All Featured
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
520
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
450
The Pragmatic Product Professional
lauravandoore
37
7.4k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
710
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
Git: the NoSQL Database
bkeepers
PRO
432
67k
GitHub's CSS Performance
jonrohan
1033
470k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
Music & Morning Musume
bryan
47
7.4k
sira's awesome portfolio website redesign presentation
elsirapls
0
400
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Amusing Abliteration
ianozsvald
1
290
Transcript
アプリに開発者モー ドを用意する 2015-01-15 Potatotips #13 黒川 洋 / @hydrakecat
こんなことはないですか ( その1) 開発者「 サー バー に◦◦ というログが送信されるのを確 認してください」 テスター「
どうやって確認すれば良いのですか?」 開発者「」 開発者「A/B 対象のユー ザー の場合は UI が◦◦ になって いることを確認してください」 テスター「 どうやったら対象ユー ザー になれますか?」 開発者「」( 新規登録を20 回くらいやれば...)
こんなことはないですか ( その2) 社内ユー ザー「 電車の中で使っていたら、 変な挙動が」 開発者「 すみませんすみません。 スクリー
ンショットと かありますか?」 社内ユー ザー「 ないです。 再現もできませんでした。」 開発者「」 開発者( 移動中)「 あ、 クラッシュした。」 開発者「 ログ見たいけれど、 手元にマシンがない。 家に 着くまで待つか。」 開発者「」( ログが流れてしまったときの顔)
開発者モー ドとは 開発/ テストに特化した機能を有効にした状態。 リリー スビル ドには含まれない。 たとえば、 以下のような操作を可能にす る。
ユー ザーID やトー クンなどの詳細情報の表示 A/B フラグなど本来はユー ザー が変更できない設定の変更 サー バー からのレスポンスの書き換え ログの取得/ 表示
例: デバッグオプション 通常時 開発者モー ド時
開発者モー ドの必要性 開発時 いちいちリモー トデバッグしたりコー ドを変更して、 サー バー のレスポンスを書き換えなくて済む 通常はユー
ザー に見せない情報を表示するので、 デバッグ しやすい テスト時 サー バー 側を変更したり複雑なプロキシの設定をせずにテ ストが可能 ⇒ テストを依頼しやすい ログなどの情報が取れるので、 デバッグが容易
開発者モー ドの注意点 開発用のコー ドがプロダクションに入らないようにする 実際のレスポンスとダミー レスポンスが乖離しないように ダミー レスポンスでのテストを信用しすぎない ⇒ mitmproxy
といったプロキシも併用する
実装方法 (Android Studio) Android Studio の flavor を使うと便利 以下は、testflight という
flavor を定義しているところ
フラグの切り替え SharedPreferences で管理 サー バー レスポンスを書き換えるようなものは、 後述のダ ミー レスポンスと併用する方が良い
詳細情報の表示 ユー ザー ID や、 トー クンなどデバッグに便利な情報 ダイナミックな情報を表示するときの工夫 トー ストの利用
印( マー ク) を付ける
ログの表示 Timber を使って、 ロー カルファイルにログを書き込む java.util.logger を使うと、 ログファイルサイズに上限を設け られる メソッド名を出したい場合は、
自分でスタックトレー スか ら取り出す必要がある @Override public void e(Throwable t, String message, Object... args) { final StackTraceElement[] stackTrace = new Throwable().getStackTrace(); final StackTraceElement e = stackTrace[5]; logger.logp(level, e.getClassName(), e.getMethodName(), String.format(message, args), t);
ダミー レスポンス Retrofit を使っているなら、Mock Client を使うと楽 API からファイルパスへのマッピングをしておく 例: GET
http://<hostname>/a/b ⇒ a/b/get.json private static class MockClient implements Client { ... @Override public Response execute(Request request) throws IOException { String path = "dummy/platform" + uri.getPath() + "/" + request.getMethod().toLowerCase() + ".json";
今後やりたいこと スクリー ンショット + ログファイル + 設定のダンプを一発 で取れるようにする 録画 ログレベルの制御