heihei blog

Blog icon by Unsplash https://unsplash.com/@virussinside

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

f:id:shaunkawano:20180113171624p:plain

Android SDKのソースコードを読みたい

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

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

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

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

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

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

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

Android Code Search

f:id:shoheikawano:20210123094211p:plain※2020/06/16更新 もはやこれ一つが全て感があります。

https://cs.android.com/

  • Android
  • Androidx
  • Android Studio

それぞれのソースコードを、ファイル名やクラス名等軸で検索できます。 リリース前の最新のソースコードもこちらに反映されているので、こちらを使えば大半の最新コードは確認できるかと思われます。

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 Tools の更新  |  Android デベロッパー  |  Android Developers

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

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

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のソースコードを読む上で便利なもの、よくやることなどありましたらご連絡いただけると幸いです!

以上です!