はじめに
Android Studioも他のモダンなIDE同様プラグインによる拡張機構を持ちます。標準機能の説明ばかりも飽きてきたので、
プラグインを利用する心構え
予期せぬエラーが起こる確率が増えます。最悪、
Android Studioのプラグインについて
プラグインのインストールは
Android Studioの元になったIntelliJ IDEA、
プラグインの数はそれなりに多いですが、
プラグインサイトではIDE別にプラグインが分類されていますが、
もう少し内情を説明すると、
Android Studioは実質、
プラグインの格納先
プラグインのインストールに先立ち、
- <AS_
CONFIG> /plugins
- プラグインをインストールすると、
このディレクトリにその実体が格納されます。Macの場合は <HOME>/Library/
です。Application Support/ AndroidStudioPreview - なにもプラグインをインストールしていない状態では、
このディレクトリ自体が存在していません。
プラグイン格納先はもうひとつあります。それは、
<AS_
INSTALL> /plugins
このディレクトリと先ほどのディレクトリの違いはプラグインをアンインストールできるかどうかです<AS_
)
プラグインのインストール
では実際にAndroid Studioへプラグインをインストールしてみましょう。
インストール方法(オンライン)
オンライン――インターネットに接続している環境でインストールする場合は
この2つのボタンの意味は次の通りですが、
- 「Install JetBrains plugin...」
ボタン - プラグインサイトで公開しているプラグインのうち、
提供元 (Vendor) が JetBrains のものだけを表示します。それ以外のリストアップする条件は 「Browse repositories...」 ボタンのものと同じです。 - 「Browse repositories...」
ボタン - プラグインサイトで公開しているプラグインを一覧表示します。リストアップされるプラグインは、
Android Studio限定のもので最新のバージョンのみに絞り込まれています。
わざわざ2つに分ける必要も無いと思いますが、
インストールしたいプラグインを見つけたらなら、
モダンなIDEとしては信じられないと思いますが、
インストール方法(オフライン)
つづいてオフラインでプラグインをインストールする方法についてです。そもそも、
- インターネットに接続していない
- 何かしら不幸な都合でAndroid Studioがインターネットに接続していない場合、
プラグインサイトからのオンラインインストールはできません。 - しかたがないので、
インターネットに接続できる環境で、 プラグインサイトから該当プラグインをダウンロードしておき、 それをCD-RなりUSBメモリなりに移してAndroid Studioにインストールします。 - プラグインの最新版ではなく、
昔のバージョンを使いたい - Android Studioのプラグインマネージャ
(「Browse Repositores」 ダイアログ) にリストアップしているプラグインは、 どれも最新のバージョンのものばかりです。 - 新しいバージョンをすぐ使ってみたい気持ちもありますが、
使っているAndroid Studioの組合せによっては最新だと動かない時がままあります。それに、 新しいバージョンになり機能が変わった/ 無くなったなどで 「前のがよかった」 と思うこともあるでしょう。 - プラグインの古いバージョンをインストールするには、
直接プラグインサイトからダウンロードしてオフラインインストールする必要があります。
プラグインサイトなどから入手したプラグインファイル<AS_
に配置しているだけです<AS_
にプラグインファイルを置いてもよいです。
こちらもプラグインのインストールが済んだら、
アンインストール方法
プラグインのアンインストールは2通りあります。
- プラグインを無効にする
- プラグインの適用のみをOFFにします。プラグイン本体は削除されません。無効にしたプラグインはAndroid Studioにロードすらされないので、
無効にしていても悪影響を及ぼすようなプラグインはありません。 - Android Studioに標準で付属しているプラグインは有効/
無効しか設定できません。 - プラグインをアンインストールする
- プラグイン本体を物理的に削除します。削除の対象になるのは
<AS_
にインストールしたプラグイン本体のみで、CONFIG>/plugins そのプラグインが生成した作業ディレクトリや設定ファイルは消えずに残ります。 - 気になると思いますが、
設定ファイルや作業ディレクトリが残っても何か悪さをしたという経験はありません。
プラグインの無効化は
プラグインの無効化やアンインストールもAndroid Studioの再起動が必要です。
プラグインの探し方
良いプラグインとは、
- ダウンロード数
(Downloads) が多く - よく更新されており
(Date) - 評価
(Rating) が高い
プラグインサイトにはそれぞれのトップ10しか表示されていないので
あとはプラグインサイトに直接おもむき、
プラグインサイトのIDE別の分類もあまり参考にはなりません。元々、
以下、
- 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 Idea や ADB 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をよく使うので、 もしかしたら役にたつプラグインがあるかもしれません。
おすすめプラグイン
という大仰な見出しを付けておいて何ですが、
そうは言っても身もフタもないので、
- 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のコードフォーマットと全く同じにしたい場合の最終兵器です。
プラグインの仕組み
「たかだかプラグインを使うだけで、
なにより
となると、
- エディタ拡張系ならば、
あたらしいコマンドやメニューが追加される - ツールサポート系ならば、
メニューバーやツールバーに新しい項目が追加される - フレームワークサポート系ならば、
実行構成に新しい項目が追加される - 言語系ならば、
あたらしいファセットやシンタックスハイライト定義などが追加される - etc...
これ以外にツールウィンドウが追加されたり
慣れてくるとある程度予測が付くのですが、
「Preferences / Keymap」
プラグインによっては、
さらにもう一歩踏み込むと、
<AS_
を調べるとわかりますが、
そして、META-INF/
がプラグインのメタ情報になります。
このファイルを覗くことで、
プラグインを開発するには
残念ながらAndroid Studioではプラグインの開発はできません。Android Studioに限らずIntelliJベースのIDEのプラグインはIntelliJ IDEAでしか開発できません。理由は単純で実装言語がJavaだからです
プラグイン開発だけなら無償のCommunity Editionでも可能です。興味があるなら是非にと言いたいところなのですが、
- IntelliJ IDEA Plugin Development
- Open API and Plugin Development
- GrepCode / com.
jetbrains / intellij-idea
また手前味噌ですが、
過去にはプラグイン開発SDKが提供されており、
ある程度プラグインの仕組みがわかってくると、
まとめ
Android Studioも他のIDEと同じようにプラグイン機構をもち、
慣れないうちは、
そうは言ってもプラグイン拡張は熱病みたいなものなので、