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
ドキュメントから adbコマンドの仕組みを読み解く
Search
みっちゃん
March 20, 2024
Programming
1
350
ドキュメントから adbコマンドの仕組みを読み解く
[International Women's Day 2024 in Kyoto](
https://gdgkyoto.connpass.com/event/311024/)での登壇
みっちゃん
March 20, 2024
Tweet
Share
More Decks by みっちゃん
See All by みっちゃん
Do you use git worktree?
mitchan
0
85
Android値受け渡し大全 〜 設計を制する者が「渡す」を制す 〜
mitchan
1
6.7k
2024年にチャレンジしたことを振り返るぞ
mitchan
0
280
DroidKaigi初めて登壇したレポ
mitchan
1
210
実践!難読化ガイド
mitchan
0
3.6k
「実践!難読化ガイド」事前予告編
mitchan
0
290
画面遷移 〜iOSとAndroid〜
mitchan
0
340
パソコン音痴な私がモバイル開発界隈でぬくぬく成長している理由
mitchan
0
540
2024年は難読化と仲良くなりたい
mitchan
0
400
Other Decks in Programming
See All in Programming
Denoのセキュリティに関する仕組みの紹介 (toranoana.deno #23)
uki00a
0
250
AI 駆動開発ライフサイクル(AI-DLC):ソフトウェアエンジニアリングの再構築 / AI-DLC Introduction
kanamasa
11
5.6k
Combinatorial Interview Problems with Backtracking Solutions - From Imperative Procedural Programming to Declarative Functional Programming - Part 2
philipschwarz
PRO
0
140
KIKI_MBSD Cybersecurity Challenges 2025
ikema
0
1.2k
インターン生でもAuth0で認証基盤刷新が出来るのか
taku271
0
170
TerraformとStrands AgentsでAmazon Bedrock AgentCoreのSSO認証付きエージェントを量産しよう!
neruneruo
4
2.5k
ZJIT: The Ruby 4 JIT Compiler / Ruby Release 30th Anniversary Party
k0kubun
1
380
CSC307 Lecture 01
javiergs
PRO
0
670
re:Invent 2025 のイケてるサービスを紹介する
maroon1st
0
170
AtCoder Conference 2025「LLM時代のAHC」
imjk
2
680
副作用をどこに置くか問題:オブジェクト指向で整理する設計判断ツリー
koxya
1
490
【卒業研究】会話ログ分析によるユーザーごとの関心に応じた話題提案手法
momok47
0
170
Featured
See All Featured
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
49
Balancing Empowerment & Direction
lara
5
850
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.3k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.1k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
140
Are puppies a ranking factor?
jonoalderson
0
2.6k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Making the Leap to Tech Lead
cromwellryan
135
9.7k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
340
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
190
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
89
New Earth Scene 8
popppiees
1
1.4k
Transcript
ドキュメントから adbコマンドの仕組みを読み解く 登壇者:STORES 決済 Androidチーム みっちゃん 1
自己紹介 名前:みっちゃん 所属:STORES 決済 Androidチーム ナワバリ:おおさか X(Twitter): @mimimi_engineer 2
公式ドキュメントを読んでみましょう。 adbコマンドってなに 3
adbコマンドってなに adbというコマンドを通して Androidデバイスに色々させることができるよ!
adbコマンドでできること アプリインストール アプリのファイル(APK)をインストールすることができる サッと手元でインストールして確認したい時に便利
adbコマンドでできること 文字入力 例えばメールアドレス入力欄を実装し、その動作確認を行いたい場合 毎回デバイスにメールアドレスを打ち込むのは面倒 このコマンドを叩くと、デバイス上で文字入力を再現してくれる
adbコマンドでできること 充電・給電状態を制御できる デバイスの充電が20%以下になった時アラートダイアログを出す などの機能の動作確認を行いたい時に便利
adbコマンドでできること 充電・給電状態を制御できる 給電していない状態もコマンドで再現させることができる
adbコマンドでできること 充電・給電状態を制御できる 色々いじって楽しくなっちゃったあとは元に戻しておきましょう
adbコマンドの仕組み ざっくり登場人物を把握しよう
adbコマンドの仕組み ざっくり登場人物を把握しよう
adbコマンドの仕組み ざっくり登場人物を把握しよう • 開発マシン:adbコマンドを実行するパソコンのこと • コマンドライン・ターミナル:adbコマンドをかくところ、開発マシン上にある • デバイス:実機Android端末やエミュレータのこと • クライアント:コマンドをサーバーに送信するやつ、開発マシン上にある
• サーバー:クライアントから送られてきたadbコマンドを各デバイス上のデーモンに送る • デーモン:開発マシンから送られてきたコマンドをデバイス上で実行するためにあるやつ
None
一旦このざっくりとした登場人物と流れを 頭に入れた状態で、さらに詳しく adbの動作原理にdeep diveしてみましょう!
TCP/IP通信 結論からいうと、adbコマンドの仕組みの正体は TCP/IP通信 です。 TCP/IPはネットワーク通信の規格の一つ • データの送り元と送り先それぞれにポートが必要 • サービスによって使うポート番号が決まっている
データの送り元と送り先それぞれにポートが必要 ポート: 通信によって送られてきたデータが ネットワークからコンピュータにお邪魔する際に通るドアのようなもの ポート番号: ドア(ポート)はコンピュータの中にいっぱいある 各ドアには ポート番号 という番号が与えられていて、 通信相手となるコンピュータを一意に識別するためにある
サービスによって使うポート番号が決まっている 例えば、、 http通信の場合は80番のポート, httpsの場合は443番のポート, sshの場合は22番のポート TCP/IPの中でもさらにどのサービスを使った通信なのかによって 使用されるポート番号は決まっている。
How adb worksを読み解いていく adbの仕組みはTCP/IPであることを念頭におきつつ ドキュメントのHow adb worksを読んでいく!!
How adb worksを読み解いていく
How adb worksを読み解いていく adbの通信の場合、サーバは 5037番のポートを使うと決まっている!
How adb worksを読み解いていく adbコマンドによって起動されたクライアントは 5037番のポートが他の誰かに使われてないかな〜と確認し 誰も使ってなかったらadbサーバを起動するよ!
How adb worksを読み解いていく
How adb worksを読み解いていく 5037番のポートがadbコマンドを送る対象となる 全ての実機デバイスやエミュレータを一意に認識できるように それぞれの実機デバイスやエミュレータに 固有のポート番号が割り当てられるよ!
How adb worksを読み解いていく 特にエミュレータの場合は 5555番から5585番の範囲で奇数番号のポートを使って 識別すると決まっているよ!!
How adb worksを読み解いていく デバイスを全てポート番号によって区別・認識することで 特定のデバイスにのみadbコマンドを送信するということができる
adbコマンド自体は実はデバイス上で実行されていない ドキュメントの冒頭を改めて読み直してみる
adbコマンド自体は実はデバイス上で実行されていない 超意訳すると、 adbコマンドはshellコマンドに変換されてデバイス上で実行されるんだぜ と言っている
本当かよ?
adbコマンド自体は実はデバイス上で実行されていない? ステータスバーを隠して全画面表示にするコマンド ステータスバーというのは充電とかwi-fiとかBluetoothのマークが表示されているところ
adbコマンド自体は実はデバイス上で実行されていない? このコマンドにshellと入っているのがわかりますね。
adbコマンド自体は実はデバイス上で実行されていない? 「ステータスバーを隠せ」という内容のshellコマンドを実行してくださいと adbサーバーにお願いするコマンド つまり、、 サーバーがadbコマンドを受け取り、shellコマンドに変換してデバイスに送る 送られてきたshellコマンドをデバイス内のデーモンが受け取り実行
もう一度全体をみる
まとめ • adbコマンドの仕組みの原理はTCP/IP通信 • adbコマンドがadbサーバーにてshellコマンドに変換される • shellコマンドがデバイス上のデーモンで実行されることで色々実現できてる
おわり