Android Studio最速入門~効率的にコーディングするための使い方

第43回プラグインについて

はじめに

Android Studioも他のモダンなIDE同様プラグインによる拡張機構を持ちます。標準機能の説明ばかりも飽きてきたので、今回はプラグインを用いた機能拡張を紹介します。

プラグインを利用する心構え

予期せぬエラーが起こる確率が増えます。最悪、Android Studioが起動しなくなりますので、その覚悟を持って挑みましょう。プラグインがどこにインストールされるのかといった内部の仕組みをある程度理解していれば、Android Studioが起動しなくなっても、あわてずさわがずプラグインを除去できますので、その辺の基礎知識は押さえておきましょう。

Android Studioのプラグインについて

プラグインのインストールは「Preferences / Plugins」から行います。方法は2通りで、インターネットから直接ダウンロードする方法と、ダウンロード済みのプラグインファイルを直接Android Studioにインストールする方法があります。詳しいインストール手順は次節で説明しますので、まずはプラグインがどこに公開されているかを説明します。

Android Studioの元になったIntelliJ IDEA、およびその派生IDEを提供しているJetBrains社が公開しているプラグインサイトにプラグインが集約されています。

図1 JetBrainsが提供しているプラグインサイト
図1

プラグインの数はそれなりに多いですが、Eclipseほどプラグイン開発が盛んに行われていないため、いわゆる野良プラグインはほとんど存在しておらず、このプラグインサイトにあるのがすべてだと思って差し支えありません。Android Studioのプラグインマネージャもこのサイトを指し示しています。

プラグインサイトではIDE別にプラグインが分類されていますが、その分類ははっきり言ってテキトウです。大抵のプラグインは、IntelliJ IDEA Ultimate Edition向けに作られているのがほとんどです。

もう少し内情を説明すると、IntelliJベースのIDEにはプラグイン開発用のAPI(OpenAPI)が提供されており、プラグインがそのAPIしか使ってなければIntelliJ以外のIDEでも動き、Ultimate Edition固有のAPIを使っていれば他のIDEでは動かない、という仕組みです(他にもPHPに依存していればPhpStorm専用、などと判定されます⁠⁠。一応、プラグインのメタ情報にそれを表明する箇所があるのですが、プラグインによってはOpenAPIだけではなくIntelliJ本体のAPIを利用しているものもあり、あくまで参考情報でしかありません。

Android Studioは実質、IntelliJ IDEA Community Editionと同等のため、Android Studio対応と銘打ってない他のプラグインも動く可能性が高いです。

プラグインの格納先

プラグインのインストールに先立ち、Android Studioのプラグインがどこに格納されているのか説明しておきます。プラグインは、次のセクションで紹介するプラグインマネージャを介して、以下のディレクトリにインストールされます。

<AS_CONFIG>/plugins
プラグインをインストールすると、このディレクトリにその実体が格納されます。Macの場合は <HOME>/Library/Application Support/AndroidStudioPreview です。
なにもプラグインをインストールしていない状態では、このディレクトリ自体が存在していません。

プラグイン格納先はもうひとつあります。それは、Android Studioに標準で入っているプラグインの格納先で、次のディレクトリになります。

<AS_INSTALL>/plugins

このディレクトリと先ほどのディレクトリの違いはプラグインをアンインストールできるかどうかです(Android Studio標準プラグインはアンインストールできません⁠⁠。具体的な例では「Preferences / Plugins」にリストアップしているプラグイン一覧のうち「Bundled」になっているのが、このディレクトリにあるプラグインたちで、⁠Custom」になっているのが先ほどのディレクトリ<AS_CONFIG>/pluginsにあるプラグイン、というわけです。

図2 標準プラグインとそれ以外の区別
図2

プラグインのインストール

では実際にAndroid Studioへプラグインをインストールしてみましょう。

インストール方法(オンライン)

オンライン――インターネットに接続している環境でインストールする場合は「Preferences / Plugins」設定画面の「Install JetBrains plugin...」ボタンか「Browse repositories...」ボタンのいずれかを押して表示される「Browse Repositores」ダイアログからインストールします。

図3 ⁠Preferences / Plugins」設定画面
図3

この2つのボタンの意味は次の通りですが、どちらも同じプラグインサイトを参照しています。

「Install JetBrains plugin...」ボタン
プラグインサイトで公開しているプラグインのうち、提供元(Vendor)JetBrains のものだけを表示します。それ以外のリストアップする条件は「Browse repositories...」ボタンのものと同じです。
「Browse repositories...」ボタン
プラグインサイトで公開しているプラグインを一覧表示します。リストアップされるプラグインは、Android Studio限定のもので最新のバージョンのみに絞り込まれています。

わざわざ2つに分ける必要も無いと思いますが、JetBrains純正プラグインもそれなりに数があるから、こうしたのでしょう(元からこうなっていたわけではありません⁠⁠。⁠Browse Repositores」ダイアログの見方は図4のとおりです。

図4 ⁠Browse Repositores」ダイアログ
図4

インストールしたいプラグインを見つけたらなら、それを選択してツールバーまたはコンテキストメニューから Download and Install」を実行します。その後「Preferences / Plugins」設定画面の「OK」ボタン、または「Apply」ボタンを押すとAndroid Studioの再起動を促してきます。

図5 プラグインを有効にするにはAndroid Studioの再起動が必要
図5

モダンなIDEとしては信じられないと思いますが、Android Studioは動的にプラグインをインストールしたり、アンインストールすることができません。必ずAndroid Studioの再起動を伴います。

インストール方法(オフライン)

つづいてオフラインでプラグインをインストールする方法についてです。そもそも、どんなときにオフラインインストールが必要になるかというと、だいたい次の2つのケースが考えられます。

インターネットに接続していない
何かしら不幸な都合でAndroid Studioがインターネットに接続していない場合、プラグインサイトからのオンラインインストールはできません。
しかたがないので、インターネットに接続できる環境で、プラグインサイトから該当プラグインをダウンロードしておき、それをCD-RなりUSBメモリなりに移してAndroid Studioにインストールします。
プラグインの最新版ではなく、昔のバージョンを使いたい
Android Studioのプラグインマネージャ(⁠⁠Browse Repositores」ダイアログ)にリストアップしているプラグインは、どれも最新のバージョンのものばかりです。
新しいバージョンをすぐ使ってみたい気持ちもありますが、使っているAndroid Studioの組合せによっては最新だと動かない時がままあります。それに、新しいバージョンになり機能が変わった/無くなったなどで「前のがよかった」と思うこともあるでしょう。
プラグインの古いバージョンをインストールするには、直接プラグインサイトからダウンロードしてオフラインインストールする必要があります。

プラグインサイトなどから入手したプラグインファイル(JarファイルかZipファイルのいずれか)「Preferences / Plugins」設定画面にある「Install plugin from disk...」からインストールします。やっていることはプラグインファイルを先ほど紹介した <AS_CONFIG>/plugins に配置しているだけです(Jarファイルはそのままコピー、Zipファイルは展開して配置⁠⁠。極論を言うと、このボタンを介さずに直接 <AS_CONFIG>/plugins にプラグインファイルを置いてもよいです。

こちらもプラグインのインストールが済んだら、Android Studioを再起動します。

アンインストール方法

プラグインのアンインストールは2通りあります。

プラグインを無効にする
プラグインの適用のみをOFFにします。プラグイン本体は削除されません。無効にしたプラグインはAndroid Studioにロードすらされないので、無効にしていても悪影響を及ぼすようなプラグインはありません。
Android Studioに標準で付属しているプラグインは有効/無効しか設定できません。
プラグインをアンインストールする
プラグイン本体を物理的に削除します。削除の対象になるのは <AS_CONFIG>/plugins にインストールしたプラグイン本体のみで、そのプラグインが生成した作業ディレクトリや設定ファイルは消えずに残ります。
気になると思いますが、設定ファイルや作業ディレクトリが残っても何か悪さをしたという経験はありません。

プラグインの無効化は「Preferences / Plugins」にリストアップしている「導入済みプラグイン一覧」の先頭にあるチェックボックスをOFFにするだけです。アンインストールは、インストールと同じように対象とするプラグインを選択して、コンテキストメニューまたはツールバーから Uninstall」を実行します。でも、このアイコン、どう見ても「アップロード」にしか見えませんよね。

プラグインの無効化やアンインストールもAndroid Studioの再起動が必要です。

プラグインの探し方

良いプラグインとは、だいたい次の条件を複数持っているものを指します。

  • ダウンロード数(Downloads)が多く
  • よく更新されており(Date)
  • 評価(Rating)が高い

プラグインサイトにはそれぞれのトップ10しか表示されていないので「Browse Repositores」ダイアログの各カラムを使って並び替えして当たりを付けるのが一番効率的です。

図11 プラグインサイトのAndroid Studioトップページ
図11

あとはプラグインサイトに直接おもむき、カテゴリ別にしらみつぶしに調べるしか方法はありません。プラグインサイトにすべて集約されていますが、正直いって探しやすくないです。

プラグインサイトのIDE別の分類もあまり参考にはなりません。元々、このサイトはIntelliJ IDEAのしかもUltimate Edition専用で、派生IDEが増えるたびにIDE別の分類を作っていっただけに分類自体の信憑性が高くありません。よって信用がおけるのはIntelliJだけで、それ以外は大らかな気持ちで「これ使えたらラッキーかも」というスタンスで望んだ方がストレスが少ないです。

以下、プラグインのカテゴリについて簡単に紹介します。このカテゴリもプラグインを登録するときに任意に作成できるので、⁠まあ、こんなものか」程度のアテにしてください。

Build
ビルドツールに関するプラグインです。ビルドシステムをGradleにがっつり握られているAndroid Studioには無縁なカテゴリです。
Code Editing
コード編集に関するプラグインが集まっています。エディタに不満がある場合、ここを探すと良いのが見つかるかも知れません。機能拡張としては比較的無難なカテゴリのため、他のIDE(特にIntelliJ)のプラグインも動く可能性が高いです。
Code tools
「Code Editing」と何が違うんだ?と思えるカテゴリなのですが、比較的コード生成系のプラグインが集まっています。Android開発に特化したものもいつくかあります。
Custom Languages
いわゆる言語系プラグインです。さまざまな言語をサポートするプラグインが集まっています。単にシンタックスハイライトをするものから、コード補完やコンパイル、実行なども含めた完全な言語サポートをするものまで様々です。JetBrains謹製プラグインが多いのも、このカテゴリの特徴です。
サポートしている言語は実に多彩で「おお、こんな言語まで!」と興奮すること請け合いなのですが、ダウンロードする前に、深呼吸をして落ち着いてください。残念なことに大抵はAndroid Studioで使えません(理由は後述します⁠⁠。
CVS
後のほうに「VCS Integration」があるのに、なぜCSVだけ?と思わずにいられませんが、このプラグインサイトも歴史が長いので、昔のカテゴリが未だに現存しています。恐ろしいことに、まだ現役で2013年に更新されています。
Database
データベースに関するプラグインです。どれも歴史のあるプラグインですが、主にサポートしているデータベースはOracleやMySQLのため、Android開発でどれだけ役に立つのか?というと疑問が残ります。Android開発者としては、SQLiteサポートが欲しいと思いますが、残念ながらそれは、IntelliJ IDEA Ultimate Editionだけの機能です。
Editor
これも「Code Editing」と微妙に被っているカテゴリです。むしろ「Code Editing」「Code tools」もすべてここに集約してしまえば良いのにと常々思います。筆者にとって欠かすことのできないIdeaVIMは、ここに属します。
Folder
主にファイルダイアログに関するプラグインが集まっています。といってもAndroid Studioには1つだけ、一番多いIntelliJ IDEAでも3つで、どれも大したものではありません。
Formatting
コードフォーマットに関するプラグインです。個人的には EditorConfig がここにあるのが疑問でなりません。
Framework integration
各種フレームワークをサポートするプラグインです。とは言え、主にWeb系フレームワークばかりで、Android開発に特化したAndroid Studioで役に立つようなプラグインは皆無です。
Fun Stuff
「おもしろ」プラグインです。が、何が「おもしろ」なのかはよくわかりません。⁠Misc(その他⁠⁠」と被ってます。実用性より遊び心優先なプラグインが多いです。
Inspection
コード検査に関するプラグインです。モノによってはAndroid Studioのインスペクション項目を追加するプラグインもあります。
Intention
インテンション("Quick Fix")に関するプラグインです。
J2ee
サーバサイドJavaに関するプラグインです。ここにある Winstoneプラグイン は、筆者が作ったものです。IntelliJ IDEA Community Editionならいざ知らずAndroid StudioでサーバサイドJava開発をする機会はかなり少ないと思うので、このカテゴリもほぼ無意味です。
JavaScript
JavaScriptサポートに関するプラグインです。先ほどの「J2ee」同様、完全に紛れ込み系でAndroid Studioにとっては無意味なカテゴリです。
Maven 2
Mavenサポートに関するプラグインです。実を言えばAndroid StudioはMavenプロジェクトを扱えるのですが、わざわざこのヘンのプラグインを入れてがんばるくらいなら、初めからIntelliJを使っていた方がよいでしょう。
Menu Components
メニューの拡張に関するプラグインです。といっても、このカテゴリ自体かなりマイナーな部類でほとんどと言って良いほど該当するプラグインがありません。提供している機能もかなりニッチなものばかりです。
Misc
「その他」のプラグインです。このプラグインサイトはかなり細かくカテゴリわけされているのですが、それでも「その他」に置くしかなったプラグインたちです。別の見方をすると「とりあえず、ここに置いといた」的なプラグインとも言えるため、ごったに状態で節操がないです。
筆者の感覚では「半分くらいはAndroid Studioでも動きそうな無難なプラグイン、もう半分はニッチすぎてAndroid Studioで使えるのかどうかわからないプラグイン」てところです。Androidの高速エミュレータ Genymotion も、このカテゴリに属しています。
Modeling and CASE Tools
モデラーやCASEツールに関するプラグインです。特定の人たちに非常にときめくキーワードなだけに、罪深いカテゴリだと思います。今のところ提供してあるのは PlantUML integration ひとつだけです。
同じカテゴリでも「IntelliJ IDEA」に切り替えると、ぐんとその数が増します。それ故に「もしかしたら、Android Studioでも動くかな……」と期待も膨らむでしょうが、悪い事は言わないのでIntelliJで試しましょう。
MPS
JetBrainsの言語開発用IDEであるMPS (Meta Programing System) をIntelliJのプラグイン化したものです。これも、MPSに興味があるならIntelliJで試しましょう。
Navigation
ナビゲーション、主にエディタ上でのジャンプに関するプラグインです。これも比較的「無難な」プラグインのため、Android Studioでもちゃんと動く確率が高いです。それなりに数もありますが、あわせて歴史も長いので、中にはすでにAndroid Studio本体が提供している機能もあります。
Obfuscation
「難読化」とでも訳せばよいのでしょうか。凄まじくニッチなプラグインです。Android Studio――と言うより、Gradle Androidプラグインは、Gradleで難読化も行うように作られているので、このカテゴリ自体が不要です。
OS Integration
これもウッカリ紛れ込んだ系のカテゴリでしょうか。OSネイティブな機能と結びつけてエディタやIDEの機能を拡張するプラグインです。その特性上、とても不安定なプラグインが多いです。
Plugin Development
プラグイン開発に関するプラグインです。そもそもAndroid Studioのプラグインは、Android Studioでは開発できません。ただ、詳しくは後述しますが LivePlugin は、それなりに便利なので知ってて損は無いです。
Refactoring
リファクタリングに関するプラグインです。Android Studio標準のリファクタリングだけで十分に強力なので、このカテゴリのプラグインを頼ったことはないです。
Search and replace
検索、置換に関するプラグインです。実際に属しているプラグインはSyncEdit 2 しかありません。これが「検索・置換系か?」というと素直に頷けない思いがあります。
ちなみに、SyncEdit2 は Sublimt Textのようなマルチカーソルを実現するプラグインです(だいぶ独特な動きをします⁠⁠。
TeamWork
チーム開発支援用のプラグインです。これも比較的無難なプラグインが揃っていますが、それと同じくらい「そんなに便利かな?」というプラグインばかりです。そんな中でもreVuは比較的面白いほうです。
Tools Integration
ツール連携用プラグインです。これも無難なプラグインたちですが、連携するツールに依存するため、そこで縛りが発生します。Android開発の場合、ADB IdeaADB Uninstall は、そこそこ便利なプラグインになると思います。
Macユーザなら Dash も便利でしょう。ただし、なぜかここにあるLombok Pluginはオススメしません。Lombokのようなビルドに深く関わるツールは、Android Studioでは動かないと思ってかかったほうが良いです(Lombokが使いたいならIntelliJを使いましょう⁠⁠。
UI
ユーザインターフェイスに関するプラグインです。どちらかというと、これこそ「Fun Stuff」に該当するのでは?と思うプラグインばかりです。中でもユニークなのは、Android Studioのアイコンを昔のIntelliJ IDEA11風にもどすIdea 11 Icon Pack です。
Unit Testing
ユニットテストに関するプラグインです。とは言え、Android Studioの「Androidモジュール」ではほぼ動かないものと思って間違いないです。よく見るとJavaだけではなくJavaScriptやPHPなどの他の言語のユニットテストサポートも含まれています(当然、Android Studioでは動きません⁠⁠。
VCS Integration
バージョン管理システムと連携するためのプラグインです。第23回から第35回にかけてバージョン管理システムについて紹介しましたが、そこで紹介したGit, Mercuiral(hg), Subversion(svn)以外のバージョン管理システムと連携したい場合、ここから該当するプラグインをインストールします。
Viewer
ビューカテゴリといっても、今のところOSGiに関するプラグインがひとつしかありません。当然のようにAndroid Studioには無縁なプラグインです。
Web
Web開発に関するプラグインです。ヘンに期待させますが、ここのプラグインを入れたからと言って、Android StudioでWeb開発ができるようにはなりません。
XML
XML操作に関するプラグインです。比較的地味目なものばかりですが、Android開発ではXMLをよく使うので、もしかしたら役にたつプラグインがあるかもしれません。

おすすめプラグイン

という大仰な見出しを付けておいて何ですが、実はありません。Android Studioを初めとするIntelliJベースのIDEは「全部入り」を魅力のひとつとしているため、いわゆるキラープラグインというのがほとんどありません。筆者の場合、宗教的理由で IdeaVIM のみ常用していますが、それ以外のプラグインはどれも長続きしませんでした。

そうは言っても身もフタもないので、いくつか面白そうなプラグインを紹介します。常用するかどうかは、みなさん次第です。

ADB Idea
Android StudioからADBを操作できるようになります。第38回第39回の原稿執筆時はお世話になりました。
Copy on steroids
ソースコードをシンタックスハイライト情報付き(Rich Text format)でクリップボードにコピーします。
CodeGlance
エディタの右端にSublime Textのminimap風のアウトライン表示を追加します。
Scratch
EmacsのScratchバッファのようなメモエリアを提供します。
Eclipse Code Formatter
"Reformat Code..."の代わりに、Eclipseを使ってコードフォーマットを実行します。どうしてもEclipseのコードフォーマットと全く同じにしたい場合の最終兵器です。

プラグインの仕組み

「たかだかプラグインを使うだけで、こんな事まで知ってないといけないのか?」と思うところはありますが、プラグインは誰でもが公開できるため、その品質もまばらです。利用者にとって一番困るのが「使い方の説明が一定していない」事で、結果的に使う側もある程度プラグインの仕組みを知っていないと試すこともできないケースがままあります。

なにより「目的としているプラグインをインストールすると何を得られるか」を知る必要があります。一番望ましいのはプラグインに説明やヘルプがついていることですが、多くのプラグインは開発途中であったり、そこまで手が回らないなどの理由で説明がおろそかになっています。

となると、ある程度どこがどう変わるか利用者が予想するしかありません。Android Studioのプラグインの拡張ポイントは多彩で、実にいろんな機能を拡張することができます。たとえば、以下のような拡張がほどこされます。

  • エディタ拡張系ならば、あたらしいコマンドやメニューが追加される
  • ツールサポート系ならば、メニューバーやツールバーに新しい項目が追加される
  • フレームワークサポート系ならば、実行構成に新しい項目が追加される
  • 言語系ならば、あたらしいファセットやシンタックスハイライト定義などが追加される
  • etc...

これ以外にツールウィンドウが追加されたり「Preferences」に専用の項目が追加されたり、実にさまざまです。見えづらいところでは、プラグインによっては専用の設定ファイルを持つものもあります。

慣れてくるとある程度予測が付くのですが、そこに至るまで数多くの経験を積まないといけないので、ひとつ手っ取り早い方法を紹介します。プラグインに寄るところは大きいのですが、大抵のプラグインは何かしら新しいコマンドを追加します。説明やヘルプが不足していて、追加されたコマンドがナニモノかわからない場合「Preferences / Keymap」で確認することができます。

図12 ⁠Preferences / Keymap」設定画面
図12

「Preferences / Keymap」「Plug-ins」カテゴリにはプラグイン別に提供しているコマンドがリストアップしているので、インストールしたプラグインがどんなコマンドを提供しているかわからない時はまずここを確認するようにしましょう(中にはコマンドを提供していないプラグインもあります⁠⁠。

プラグインによっては、コマンドに割り当てているショートカットキーが、Android Studioのものとバッティングして動かないものもあるので、そのような場合もこの画面でショートカットキーを割り当てなおして使えるようにします。

さらにもう一歩踏み込むと、プラグインのメタ情報からプラグインの使い方を調べるという方法があります。

<AS_CONFIG>/pluginsを調べるとわかりますが、Android Studioのプラグインは突き詰めるとJarファイルで提供されます。

図13 <AS_CONFIG>/pluginsの例
図13
※選択しているJarファイルがプラグインの本体

そして、そのJarファイル中に含まれているMETA-INF/plugins.xmlがプラグインのメタ情報になります。

図14 プラグインのメタ情報
図14

このファイルを覗くことで、コマンドだけでなく、どこのメニューに登録されたのか、設定画面を持つのか、などのより詳しい情報を知ることができます。メタ情報の詳細については、以下のリンクを参照してください。

プラグインを開発するには

残念ながらAndroid Studioではプラグインの開発はできません。Android Studioに限らずIntelliJベースのIDEのプラグインはIntelliJ IDEAでしか開発できません。理由は単純で実装言語がJavaだからです(いずれphpでもプラグイン開発はできるようになるそうです⁠⁠。

プラグイン開発だけなら無償のCommunity Editionでも可能です。興味があるなら是非にと言いたいところなのですが、プラグイン開発に関する情報は決して多くはありません。日本語になると、ほぼ皆無と言えるでしょう。

また手前味噌ですが、筆者が過去にプラグイン開発で調べていたメモが役に立つと思います(若干、内容が古いです⁠⁠。

過去にはプラグイン開発SDKが提供されており、サンプルコードやOpenAPIのJavadocなどすぐ入手できたのですが、IntelliJのCommunity Editionがオープンソース化したのに伴い、プラグイン開発SDKは廃止しました。その代わりがCommunity Editionそのものです。ある意味、すべてが含まれているのですが、非常に巨大であるため全貌を把握するのが大変で、個人的には昔のほうが開発しやすかったと哀しく思っています。

ある程度プラグインの仕組みがわかってくると、先ほど紹介したLivePluginが便利になってきます。このプラグインは、本来ならAndroid Studioのプラグインとして開発しなければならない機能をスニペット的に記述し、その場で実行するプラグインです。詳しい使い方は以下のURLを参照してください。

まとめ

Android Studioも他のIDEと同じようにプラグイン機構をもち、それなりの数のプラグインがありますが、Android Studioそのものの機能が充実しているため、プラグインでゴテゴテにする事は稀です。

慣れないうちは、あれもこれもとプラグインを試したくなりますが、本当に必要なプラグインは2~3個になると思います。その背景としては、Android StudioやIntelliJが新機能の取り込みに積極的であることが挙げられます。過去にも人気のあったプラグインが標準のプラグインに格上げされる事が何度かありました。

そうは言ってもプラグイン拡張は熱病みたいなものなので、気になる以上はあれもこれも試してみるしかありませんよね。プラグイン入れてAndroid Studioが立ち上がらなくなっても本稿の手順でアンインストールすれば大丈夫です。臆せず試してみましょう。

おすすめ記事

記事・ニュース一覧