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

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

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

プラグインの探し方

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

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

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

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

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

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

プラグインサイトの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のコードフォーマットと全く同じにしたい場合の最終兵器です。

言語系プラグインを使う時の注意事項

元になったIntelliJが多言語サポートしている事もあって,Android StudioでもJava以外の言語でAndroid開発をしてみたいと思っている人たちがそれなりに居るようです。未知の世界にチャレンジしてみることはとても素晴らしい事だと思いますが,イノベータもしくはアーリーアダプタの自覚無しに手を出すとガッカリしかしないので,その辺は覚悟の上で臨んでください。

言語系プラグインとAndroid Studioは,ビルドシステム部分に致命的とも言える相性の悪さを持ちます。平たく言えば,Gradle Androidプラグインと連携できる言語のみが,Android Studioでも(比較的)ソツなく使える,という事です。ScalaKotlinなどの言語系プラグインは,もともとIntelliJ用に提供されており,IntelliJのビルドシステムに乗っかってビルドを実行します。しかし,Android Studioの場合,ビルド自体はGradle(Gradle Androidプラグイン)に委ねるため,Gradleがその言語を認識できなければビルドできません。

たとえばKotlinなどは,Gradle Androidプラグインに対応したGradle用のプラグインも提供しているので,比較的マトモに動きます。

個人的には,Android StudioやGradle Androidプラグインすら未だ開発中で安定しているとは言い難い状況なので,単に「Javaが嫌い」程度の理由で多言語に挑戦するのはあまり得なやり方だとは思っていません。身も蓋もありませんが,そこまでJava以外で開発したいなら,IntelliJを使うことをオススメします(こちらはGradleを使わないで済むので⁠⁠。

覚えておいて欲しいことは「Android StudioでJava以外の言語を用いる場合,Android Studioに該当言語のプラグインを入れる 他に,ビルドスクリプトbuild.gradleにもその言語の利用を宣言しなければならない」という事です。

著者プロフィール

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

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

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

Twitter: @masanobuimai