heihei blog

Write once, recall anytime. 📝

Android SDK内部のソースコードを読む際に役立つ(かもしれない)ツールやウェブサイト7選

f:id:shaunkawano:20180113171624p:plain

Androidアプリ開発をしていると、「Android SDKソースコードを読みたい」、と思うことがしばしばあります。

  • 思わぬバグに出くわしてしまったが調べても調べても原因がつかめない
  • (例えば)ViewPagerなどのAndroidが提供しているViewコンポーネントの動きを独自に変えたい(スクロールの際のアニメーションスピードを変更したい)

といった場合などです。(もちろん上記以外にもあるかと思います。)

本記事では、Android SDK内部のソースコードを読む際に役立つ(かもしれない)ツール群について、shibuya.apk#21にて5分LT枠で発表した内容を元に紹介しています。

shibuya-apk.connpass.com

shibuya.apkでのスライドは本記事下部に埋め込み追加しております。尚、本記事で紹介するツールやウェブサイトは下記です:

  • SDK Manager(Android Studio)
  • Git at Google - android Git repositories
  • GitHub - ASOP Mirror repositories
  • GrepCode
  • OpenGrok(Developer Collaboration Project)
  • AndroidSDKSearchExtension
  • SdkSearch

ここから、1つずつ雑に紹介していきます。

SDK Manager(Android Studio)

SDK Managerとは、Android開発において重要なSDK関連のツールやコンポーネントなどをインストールしたりアップデートするためのものです。Android Studioでは、下記画像のボタンを押下することで起動できます。

f:id:shaunkawano:20180113171555p:plain

SDK Managerを利用することで、SDK Platformのパッケージをインストールすることができます。パッケージインストール後は、Android Studio上でAndroid Platformのクラス名やメソッド名からコードジャンプすることができるようになります。コードジャンプすることで、内部実装はもちろん、各クラスやメソッドの詳細についてのドキュメントレベルのコメントなどをAndroid Studio上で確認できるようになります。Androidアプリ開発を仕事にしているエンジニアは、日々このツールを活用しているのではないでしょうか。

SDK Managerについての公式ドキュメントはこちらのようです: IDE および SDK ツールの更新 | Android Studio

Git at Google - android Git repositories

android Git repositories - Git at Google

Googleが管理している、androidソースコードのgitレポジトリ一覧です。Google Gitと記されているとおり、GoogleがGitを用いて独自管理しています。(GitHub上で管理されているAndroidソースコードについては次に紹介しています。)

たとえばplatform/frameworks/base - Git at GoogleではAndroidフレームワークのクラス群などのソースコードを閲覧できます。

GitHub - ASOP Mirror repositories

github.com

Git at Google - android Git repositoriesのGitHub上のミラープロジェクトです。

使い慣れているGitHub上でソースコードを読みたい!という方はこちらを利用すると良いかもしれません。先程のplatform/frameworks/baseのレポジトリはこちらです:

github.com

また、下記のような活用方法も便利そうですね!

GrepCode

GrepCodeとは、Javaのプロジェクトやソースコードを検索したり、indexされているプロジェクト内にて、特定のクラスやメソッドがどこで利用されているか等を見つけることが出来るウェブサイトです。Indexされているプロジェクトには、JDK, Maven-Central, java.netなどがあるようです。(理由はわからないですが、ぱっと見た感じではAPI level 23以上のソースコードがないようです? どなたか詳しい方おりましたらご教授いただけると幸いですm(__)m)

grepcode.com

OpenGrok(Developer Collaboration Project)

github.com

Oracle社が提供しているソースコード検索、クロスリファレンスをするためのツールです。一般的な使い方としては、Tomcatのようなサーブレットコンテナを用いてローカル上で動かすようです。しかし、Developer Collaboration Projectとよばれる有志のプロジェクトによって、このOpenGrokを使ったソースコード検索サービスがインターネット上に公開されて、そちらを利用することもできます。Oreoのソースコードも検索可能になっています。

sites.google.com

AndroidSDKSearchExtension

github.com

Androidソースコード検索や閲覧を容易にするためのChrome拡張機能です。

インストール後、Chromeのアドレスバーに ad と打ち込み tab を押下すると、アドレスバーの左にAndroid SDK Searchという文字が表示されます。そこから、たとえばVeiwPagerと打ち込みEnterを押下することで、developer.android.com上のViewPagerのドキュメントページに遷移することができます。

さらに、拡張機能によってdeveloper.android.comのタイトル下部にview sourceというボタンが設置されます。このボタンを押下することで、対象クラスのソースコードのページに遷移することができます。

f:id:shaunkawano:20180113180021p:plain

遷移先ソースコードのページは標準で二種類用意されていて(android.googlesource.com / github.com)、拡張機能の「オプション」画面にて変更することができます。

f:id:shaunkawano:20180113180259p:plain

SdkSearch

github.com

最後は、Jake氏によるSdkSearchというAndroidアプリです。プロジェクトをcloneしDebugビルドをすることで通常のアプリとして利用することができます。 アプリは、検索バーと結果を一覧表示するのみのシンプルなもので、検索結果に引っかかるAndroid SDKの内容をタイル形式で一覧表示してくれます。 検索結果の要素をタップすることでdeveloper.android.comのドキュメントページに遷移し、「More Options」アイコンを押下することで、シェアやソースコードのページに遷移することができます。このアプリを利用することで、たとえば電車の中で「( ゚д゚)ハッ!今すぐViewPagerのソースコードが読みたい!」と思ったとしても、文字通りすぐにソースコードを読むことができるでしょう..!

また、このアプリはkotlin-coroutineやkotshi, room, sqlbright, sqldelightなどモダンなライブラリを活用して作られていて、実装コード自体をしっかり読むことで勉強になることもありそうだと感じています。Jake氏さすが〜。

最後に

shibuya.apkでの発表資料は下記です。

今回紹介したツールやウェブサイト以外にもAndroid SDKソースコードを読む上で便利なもの、よくやることなどありましたらご連絡いただけると幸いです!

以上です!