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

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

この記事を読むのに必要な時間:およそ 10 分

プラグインの仕組み

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

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

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

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

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

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

図12 ⁠Preferences / Keymap」設定画面

図12 「Preferences / Keymap」設定画面

「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のバージョン(ビルドナンバー)と照らし合わせて,プラグインが利用可能かどうかを判定しています。

具体的に言うと,メタ情報の <idea-version>「適用バージョン」に相当し,このバージョン以上since-build⁠,このバージョン以下until-buildをそれぞれ属性値として指定します。

リスト1 META-INF/plugins.xml の <idea-version> の例

<idea-version since-build="107.105"/>

勘の良い人はもう気付いていると思いますが,この情報がプラグインサイトに出ている「Since Build」「Until Build」です。

図15 プラグインサイトのScalaプラグインの例

図15 プラグインサイトのScalaプラグインの例

Android StudioのビルドナンバーはAbout画面で確認することができます。

図16 Android StudioのAbout画面

図16 Android StudioのAbout画面

Android Studioのプラグインマネージャ(⁠⁠Browse Repositores」ダイアログ)にリストアップされるプラグインは,この情報を照らし合わせてインストール可能と判断したものだけに絞り込まれているのです。

ちなみに,このメタ情報<idea-version>ですが,どのバージョンでの利用を許可するかはプラグインの開発者が決めます。そのため,とても恣意的です。 <idea-version>を細かく指定しているものもあれば,まったく指定していないものもあります。

傾向としてはJetBrainsが提供しているプラグイン(特に言語系プラグイン)が適用バージョンを細かく指定しています。ご存じの通りAndroid Studioのバージョンは頻繁に上がっていきます。たとえば,v0.4.5から0.4.6にあがった程度でいきなりプラグインが動かなくなるか?と言うと,そんなことは滅多にありません。単にメタ情報で縛られているだけで,この情報を書き換えると平気で動く場合が多いです。といってもホントに動かないケースもあるので,そのあたりは自己責任の範疇でお願いします。

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

残念ながら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が立ち上がらなくなっても本稿の手順でアンインストールすれば大丈夫です。臆せず試してみましょう。

著者プロフィール

今井勝信(いまいまさのぶ)

システムエンジニア。日本ユニシス株式会社所属。仙台在住。

Android開発はまったくやったことがないけれどIntelliJ IDEAが大好き。

Twitter: @masanobuimai