モバイルファースト室の@tomorrowkey です。
adb-pecoというスクリプトを作ったので紹介します。 https://github.com/tomorrowkey/adb-peco
不親切なadbの挙動
CookpadではAndroidアプリの開発にGenymotionを使っています。 普段はGenymotionだけを立ち上げて開発しているのですが、時折不具合報告を受けてAndroidデバイスを接続することがあります。 ひとまずlogcatを見ようとしたり、shellを起動してディレクトリ構造を見たりするのですが、こういうエラーが発生します。
Genymotionとデバイスの2つが接続されているので、adbがどちらに接続するのか分からずエラーを返します。 このエラーを見る度にデバイスIDをコピーしてオプションに追加しなければなりません。
$ adb devices List of devices attached xxxxxxxxxxxxxxxx device 192.168.0.0:5555 device $ adb -s xxxxxxxxxxxxxxxx shell
すごく面倒です。
peco を利用した解決法
最近 peco というツールが流行っているので、これを使ってadbを使いやすくできないかと考えました。
そして完成したのがadb-peco です。
adb-pecoはadb
の代わりにadbp
を使います。
デバイスが2台以上接続された状態で先ほどと同じコマンドを実行するとpecoを使いデバイスを選択することができます。
コマンドを実行した後に選択するだけなので、すごく楽になりました。
もちろんデバイスが1つだけの時には選択する画面は表示されないので、普段から使うコマンドをadb
からadbp
に置き換えることができます。
JakeWhartonが作ったlogcatを見やすくするツールの pidcat でも、同じくデバイスを選択できるようにpidcatp
というコマンドも作りました。
コマンドを置き換える
adbp
はadb
と比べるとタイピングしやすくはありません。
両手で打たなければならないし、1日に何度も打つコマンドなので一文字多く打つコストはバカにできません。
そこでadbコマンドを置き換えるテクニックを紹介します。
といってもただのaliasを設定するだけですが、新しいコマンドを覚えなくてもいいのでとても便利です。
コマンドシェルにbashを使っている場合は~/.bashrc
に以下を書き足します。
alias adb='adbp' alias pidcat='pidcatp'
他のコマンドでadb-pecoを使いたい場合
他のコマンドでadb-pecoを使いたい場合もaliasを使うことで解決できます。
たとえばfacebookが開発している fb-adb でadb-pecoを使いたときには以下のように.bashrc
に書きます。
alias fb-adb='adb_peco.sh fb-adb'
adb-pecoの本体はadb_peco.sh
というスクリプトなので、それに引数としてコマンドを渡せば使えるようになります。
まとめ
日々ちょっとずつストレスがたまることを自動化やスクリプトで簡単にすることで、開発がすごく楽になっていくと思います!ぜひadb-pecoを使ってください!