はじめに
さまざまなバリエーションが存在するツールウィンドウですが、今回は最もお世話になる「Projectツールウィンドウ」を中心に、いくつか代表的なものの使い方を説明します。
ツールウィンドウこぼれ話
Eclipseのビューに比べるとAndroid Studioのツールウィンドウはいささかぞんざいです。そもそもどれだけのツールウィンドウがあるのか知る術がありません。
一応、メニューバーの「View → Tool Windows」にツールウィンドウの一覧が出ていますが、そこにあるのがすべてではありません。
図1 メニューバーのツールウィンドウ一覧
例えば「パス内の検索("Find in Path ") 」を実行して初めて表示される「Findツールウィンドウ」などがそうです。
図2 「 Findツールウィンドウ」
傾向としては初期状態で表示されていないツールウィンドウは、ツールボタンごと非表示にすることができます。より具体的に言うと、ツールウィンドウ内のツールバーに「×」アイコンがあるものが非表示にできるツールウィンドウとなります。
[コラム]ウェルカム画面について
こぼれ話ついでに語る機会の少ないウェルカム画面について補足しておきます。
図3 ウェルカム画面
普通に使っているとメニューバーの「File → Close Project」でプロジェクトを閉じない限りお目にかかる機会は少ないと思います。とは言え、Android Studioを起動するたびに前回開いたプロジェクトを開き直されるのも軽くストレスですよね。「 Preferences / General」で「Reopen last project on startup 」をOFFにすると常にウェルカム画面が表示されるようになります。
図4 「 Preferences / General」で常にウェルカム画面を表示する設定
ちなみにウェルカム画面の「Recent Projects」ですが、要らない項目はDELキー(MacだとFn+deleteキー)で削除できます。ただ、ここのエリア、シングルクリックで選択&実行してしまうので、マウスオーバーかカーソルキーで選択して削除しないといけないので正直、操作性悪いです。
図5 Recent Projectsの削除(クリックすると動きがわかります)
いまいち使い勝手が悪いのですが、筆者はAndroid Studioを立ち上げるたびに前回開いていたプロジェクトを自動的に読み込み直すのを好ましく思っていないので、常にウェルカム画面を表示するようにしています。
Projectツールウィンドウ
このツールウィンドウは Project(<PROJECT_HOME>
)の内容を表しており、プロジェクトを構成するファイルの操作を主に行います。Eclipseの「パッケージエクスプローラ・ビュー」に近いですが、ほぼファイルシステムそのものを表示しているため「ナビゲーター・ビュー」相当と言った方が適切かと思います。
図6 「 Projectツールウィンドウ」
「Projectツールウィンドウ」に表示されるアイコンの意味については第5回の表 を参考にしてください。「 Projectツールウィンドウ」は基本的にファイラ(ExplorerやFinder)で見ているものと同じものが表示されますが、一部のファイルやディレクトリは表示されません。それは「Project Structure / Modules / Sources」で「Execluded」に指定したものと「Preferences / File Types」の「Ignore files and folders 」に指定したたものです。これらのファイルやディレクトリは「除外ファイル」としてマークされ、Android Studioからは「存在しないもの」と扱われます。
Android Studioはプロジェクト管理下にあるファイルのインデックスを作成して、さまざまな処理に用います。そして、そのインデックス作成処理は軽い処理ではありません(かつ、かなりのディスク容量を食います) 。Android Studioの起動時にインデックス作成処理が走り「またはじまった」とお茶を飲みに行かれる方もいると思います。このインデックスの対象を減らす意味でも「除外ファイル」はとても重要です。
「除外ファイル」に指定したファイルやディレクトリをAndroid Studioから操作することはほぼ不可能です。例外的に「Commanderツールウィンドウ」から参照できますが、この件についてはあとで補足します。
「Projectツールウィンドウ」はEclipseの「ナビゲーター・ビュー」相当と言いましたが、ソースパス配下については「パッケージエクスプローラ・ビュー」的な表示になります。
図7 「 Projectツールウィンドウ」からみたソースパス
ここの表示方法もオプションで変更可能です。表示切り替えのメニューは「Projectツールウィンドウ」のタイトルバーでコンテキストメニューを表示するか、タイトルバー右端の歯車アイコンをクリックするかです(クリックするタイトルバーの場所によって、コンテキストメニューの内容が若干変わります) 。
Flatten Packages
パッケージの表示を「フラット」表示にします。同様の表示方法がEclipseにもありますね。
Hide Empty Middle Packages
中間に位置する(末端では無い)パッケージで、中身が空のパッケージの表示を省略します。
Abbreviate Qualified Package Names
パッケージの修飾子(上位のパッケージ)を省略表記します。
Show Members
クラスやインターフェイスの中身も表示します。これを有効にすると「Structureツールウィンドウ」( Eclipseの「アウトライン・ビュー」相当)は無用になります。
説明だけでピンとこないものは実際に試してみましょう。気に入る表示方法があると良いですね。
図8 「 Projectツールウィンドウ」のソースパスの表示切り替え(クリックすると動きがわかります)
エディタとの同期
「Projectツールウィンドウ」の歯車アイコンにある
Autoscroll to Source
Autoscroll from Source
についてです。それぞれ単独にON/OFFができます。
図9 Autoscroll to Source/Autoscroll from Source
「Autoscroll to Source」は「Projectツールウィンドウ」でポイントしたファイルを即座にエディタへ表示する機能で、「 Autoscroll from Source」は逆にエディタで開いたファイルを即座に「Projectツールウィンドウ」にポイントする機能です。
図10 Autoscroll to Source/Autoscroll from Sourceの動作例(クリックすると動きがわかります)
多量のファイルを管理しているプロジェクトで、ファイルがどこにあるのか見失わないようにするための機能だと思いますが、正直鬱陶しいので筆者はOFFにしています。このあたりは好みの問題ですので、Android Studioにもこのような機能があることは覚えておいて損は無いでしょう。特に「Autoscroll to Source」は他のツールウィンドウでも見かけることがあります。ちなみに 図11 のようなアイコンで表現されてますので、頭の片隅にでもしまっておいて下さい。
図11 Autoscroll to Sourceのアイコン(Findツールウィンドウより)
オートスクロールは鬱陶しいけれど、大量のファイルがあって場所を見失うことはよくあります。そんな時は「Projectツールウィンドウ」の照準みたいなアイコン(Scroll from Source)が便利です。
図12 Scroll from Source(クリックすると動きがわかります)
Projectツールウィンドウでのファイル操作
「Projectツールウィンドウ」は一種のファイラであるため、
ファイルやディレクトリの作成
移動やコピー
リネームや削除
検索・置換や比較
といった主立ったファイル操作が可能です。
新規作成
ファイルやディレクトリの作成については第3回 で説明したとおり、作りたい場所を指定し、コンテキストメニューの「New」( またはメニューバーの「File → New...」を実行します。
移動やコピー
コンテキストメニューの「Cut」「 Copy」「 Paste」駆使するか、ドラッグ&ドロップによる操作で行います。一丁前にCtrlキーを押しながらドロップすると移動ではなく、コピーになるという配慮もしています(当然ながら、Javaのソースコードをドラッグ&ドロップで操作した場合は、リファクタリング扱いとなります) 。「 Projectツールウィンドウ」内での操作のみならず、OSのファイラ(ExplorerやFinder)ともドラッグ&ドロップでファイルのやりとりもできます。
図13 「 Projectツールウィンドウ」とのドラッグ&ドロップ操作(クリックすると動きがわかります)
ベースとなったIntelliJの話ですが「Projectツールウィンドウ」がドラッグ&ドロップ操作をサポートしたり、OSのファイラと連係できるようになったのは、ここ最近の話です。そのためかドラッグ&ドロップ操作に統一感はなく「Projectツールウィンドウ」以外の「ツールウィンドウ」や異なる「ツールウィンドウ」をまたいだドラッグ&ドロップ操作はできたり・できなかったりとムラがあります。全体的にドラッグ&ドロップ操作の反応も良く無いので「オマケ的な機能」と見ておいたほうが無難です。
リネームと削除
リネームについては、コンテキストメニューを一見してもそれっぽい項目はありません。どこで行うかと言うと「Refactor → Rename」で行います。ピンと来ないかも知れませんが、Javaファイルに限らず、プロジェクト配下のファイルやディレクトリのリネームはすべてRenameリファクタリングで行います。
図14 Renameリファクタリングでリネーム
同じ理屈は先ほどの「移動やコピー」にも言えて、「 Projectツールウィンドウ」がドラッグ&ドロップでそれっぽく振る舞っているだけで、本筋(?)はMoveリファクタリングやCopyリファクタリングをしているだけです。
削除は、コンテキストメニュー直下に「Delete」があり、そこで行います。削除はちょっと変わっていて、選択した対象がディレクトリなのかファイルなのかによって次に表示されるダイアログが異なります。
図15 ディレクトリを削除しようとしたとき
図16 ファイルを削除しようとしたとき
ディレクトリを削除するときは「Undoできないかもよ」と脅されます。ファイルを削除するときはSafe Deleteリファクタリング扱いになるため「Safe Delete」ダイアログが表示されます。この時「Safe delete (with usage search)」にチェックを付けなければ、単純な削除として処理されます。
チェックしたときのSafe Deleteについては、リファクタリングの説明のときにあらためて紹介します。
その他ファイル操作
検索・置換や比較については、おいおい説明します。それ以外にちょっとユニークな操作を紹介します。
主にエディタ上で使うコマンドなのですが、対象のドキュメントを参照する"Quick Documentation "と定義を参照する"Quick Definition "は「Projectツールウィンドウ」上でも使うことができます。
ポップアップするサブウィンドウは対象をカーソルキーで 移動している間は表示したままになるため、うまく使うとMacのQuick Look風に扱うことができます(残念なことにマウスでポイントし直すと、ポップアップが消えるので、再度コマンドを実行しなければなりません) 。
図17 「 Projectツールウィンドウ」でドキュメントや定義を参照する(クリックすると動きがわかります)
特に"Quick Definition "はちょっとしたプレビューになるため地味ながら便利に使っています。
地味続きでもうひとつ。「 Projectツールウィンドウ」上で「Copy」した対象は、そのまま「Paste」するとコピー扱いになりますがエディタ上にペーストするとコピーしたファイル名がペーストされます。ペースト先はAndroid Studio以外のエディタでも同様です。
コンテキストメニューの「Copy Path」でコピーするとファイル名ではなく、そのファイルの絶対パス がコピーされます。まあ、何というか地味ながらも便利な機能なんです。
図18 ファイル名や絶対パスをコピペする(クリックすると動きがわかります)
「Projectツールウィンドウ」に限らず、ほかのツールウィンドウでも表示している対象を「テキスト」としてコピペできるものがあります。
同じく地味な機能なのですが「Projectツールウィンドウ」内のコンテキストメニューに「Reveal in Finder」( Windowsだと「Show in Explorer」 、Linuxだと何でしょう?)という項目があり、実行するとそのとき選択したファイルやディレクトリを表示したOSのファイラが開きます。
図19 「 Reveal in Finder」を実行してFinderを開く(クリックすると動きがわかります)
そう頻繁に使うわけではありませんが、まあまあ便利です。
ビューの切り替え
地味地味自慢が続きますが「Projectツールウィンドウ」はいくつかのビューを持っており、ビューを切り替える事でEclipseの「パッケージエクスプローラ・ビュー」相当の表示もできます。
図20 「 Projectツールウィンドウ」のビュー切り替え
普通に使う分には「Project」ビューで十分です。とても地味で目立たないインターフェイスなので「こんな事もできたなぁ」と覚えておいて下さい。
余談ですが「Projectツールウィンドウ」以外にもビューを持つ「ツールウィンドウ」があり、その表現方法は「Projectツールウィンドウ」風のドロップダウンリストと、タブで表示する方法の2通りがあります。その切り替えは「ツールウィンドウ」のコンテキストメニューにある「Show Views as Tabs 」で行います。
図21 「 Projectツールウィンドウ」と「TODOツールウィンドウ」
「Projectツールウィンドウ」のビューのうち「Scopes」と区切られている部分ですが、名前から察しがつくようにある限定条件に応じたビューになります。
Project Files
プロジェクト全体のビューです。Moduleが階層的にならずフラットに表示されるため、気持ちEclipseのパッケージエクスプローラっぽいです。
Problems
問題のあるファイルのみを表示します。問題とは主にシンタックスエラーなどでProjectツールウィンドウ上、赤の波線で表示されているファイルのみを表示します。
All
「Project Files」との違いがわかりませんでした。
Production
プロジェクトの内プロダクションコードのみを表示します。
Tests
プロジェクトの内テストコードのみを表示します。テストフォルダを指定していないプロジェクトの場合、何も表示されません。
筆者はほとんど「Project」ビューで済ますので、これらのビューのお世話になったことはほぼありません。たまに「Testsビューが便利かな?」と思う程度です。
このビューの真の売りは「Scopes」を自分で定義できることです。「 Scopes」はプロジェクトごとに定義できる設定項目で「Preferences / Scopes」で設定します。この設定方法が分かりづらいため大っぴらに自慢できないのですが、うまく工夫することで「layoutだけ表示するビュー」や「画像ファイルだけ表示するビュー」などを作ることができます。
図22 「 Preferences / Scopes」
この「Scopes」は「Projectツールウィンドウ」以外でも使うことができます。機会があればもう少し詳しく説明します。
図23 独自定義したScopesのビュー
[コラム]スピードサーチについて
「Projectツールウィンドウ」に限らず、いくつかのツールウィンドウやダイアログで共通の操作なのですが、おもむろにキーをタイプすると「Search for:」というツールチップのような枠が表示され簡易的な検索モードに入ります。これを「スピードサーチ」と呼びます。
図24 スピードサーチ
この検索はヒットした対象の次や前に移動することはできないため、対象を特定するよりカーソル移動の手間をある程度はぶく程度の機能と割り切った方が良いです。一応、検索文字列は頭からヒットしなくても良いし、ワイルドカード(*)も使えるようです。
コツをつかむと、心持ち効率よく操作できるので「こんなのあったな」程度に覚えておいてください。
その他のツールウィンドウ
主に常時表示されているツールウィンドウについて簡単に説明します。
Structureツールウィンドウ
「Projectツールウィンドウ」の「Show Member」のおかげで日陰者扱いされた感がありますが、いわゆる構造ビューです。スペースの都合なのかデフォルトではツールバーが非表示になっていますが、個人的にはツールバーが表示されているほうが使い勝手がよいです。
図25 ツールバーの表示指定
ツールバーアイコンそれぞれの機能は表1 の通りです。
図26 「 Structureツールウィンドウ」のツールバー
表1 「 Structureツールウィンドウ」のツールバーの機能
No. 機能
(1) 並び替え(左から可視性による並び替えとアルファベット順による並び替え)
(2) 定義場所(クラスやインターフェイス)によるグループ化
(3) (JavaBeans仕様に基づく)プロパティの表示
(4) フィールドの表示
(5) publicではない要素の表示
(6) すべての先祖(extends元やimplements元)を表示
(7) 匿名クラスの表示
(8) 要素をすべて展開する/すべてたたみ込む
(9) オートスクロール(左から"Autoscroll to Source"と"Autoscroll from Source")
IntelliJの時はJavaBeans仕様にもとづいてプロパティを表示してくれたのに感動したものですが、Android開発でJavaBeansの比重がどれほどなのか分からないので、そのありがたみも評価しかねています。
なお対象クラスの型階層は、"Type Hierarchy "コマンドで表示する「Hierarchyツールウィンドウ」のほうが正確です。
Build Variantsツールウィンドウ
これは(今のところ)Android Studio固有のツールウィンドウです。ビルドに用いているGradle(のAndroid Gradle Plugin )の機能で、同じプロジェクトから複数のバージョンのプロダクトをビルドすることができるようです。
筆者自身、詳しいところは分かっていないので結果だけ説明します。build.gradle
にビルドの種別を指定できるBuild Types とProduct Flavors を記述できます(Build TypesとProduct Flavorsを足してBuild Variants と呼ぶようです) 。
この「Build Variantsツールウィンドウ」は、ビルドで採用するBuild Variantsを指定します。デフォルトでは「debug」と「release」の2つが用意されていますが、build.gradle
を書き換えることで、それ以外のBuild Variantsが選択できるようになります。
図27 「 Build Variantsツールウィンドウ」
このツールウィンドウもGradleのビルドシステム同様、発展途上的な感じを受けます。たとえば「Build Variantsを指定しない(全部ビルド) 」はどうやって指示するんでしょうね……。
TODOツールウィンドウ
ソースコード中に記述したTODOコメントを一覧表示する、イマドキのIDEにはよくある機能です。こちらにもオートスクロール(Autoscroll to Source)があるのですが、ツールウィンドウ内でのプレビュー(Preview Source)ができるので、オートスクロールはOFFにしておく事をお勧めします。
図28 「 TODOツールウィンドウ」
ツールバーの「Filter → Edit Filters」からTODOコメントのルールを指定できます。この画面は「Preferences / TODO」と同じものです(TODOコメントの設定は「IDE Settings」に属するため、プロジェクト設定として共有されません) 。
[コラム]ヘルプはどこにある
至る所に「Help」ボタンやツールバーがありますが、Android Studioはまだヘルプが準備されていないため「Help」ボタンを押しても何の反応もありません。そのため、TODOコメントのルールを追加しようにも記法(Patterns)がわからず困ることが多いと思います(前述したScopesも同様) 。
公式リリースまでにはヘルプが準備されると思いますが、それまでの間はIntelliJのWebヘルプ で代用するしかなさそうです。
IntelliJもAndroid Studioも元は同じなのでヘルプも同じものになると思うのですが、IntelliJ(JetBrains)とAndroid Studio(Groogle)とで何か取り決めでもあったのでしょうかね?
ちなみに、TODO設定とScopes設定のヘルプは以下の通りです。
それ以外のツールウィンドウ
「Favaritesツールウィンドウ」「 Androidツールウィンドウ」などまだ紹介していないものもありますが、これらは必要に応じておいおい説明していきます。念のために説明しておきますが「Maven Projectsツールウィンドウ」はAndroid Studioにとって意味の無いツールウィンドウだと思います。なにせビルドシステムはGradleですし。
「Mavenプラグインごと無効化しても良いのかな?」とも思いましたが、ライブラリのダウンロード機能などGradleプラグインと連携している可能性もあるので、邪魔かとは思いますがしばらくこのままにしておきましょう。
次回の予告
次回からはエディタの説明を行います。エディタはAndroid Studioのキモなので数回に分けて説明する予定です。
[コラム]「Commanderツールウィンドウ」について
Android Studioの右端に居座っている「Commanderツールウィンドウ」ですが、開いてみると分かるとおり、どこかで見たことのあるような古典的2画面ファイラです。
図29 「 Commanderツールウィンドウ」
昔話で恐縮ですが、10年以上前の初期のIntelliJの「Projectツールウィンドウ」はファイル操作がほとんどできず、その代替として「Commanderツールウィンドウ」を用意していました。その後「Projectツールウィンドウ」は機能を増やしていき、いっぱしのファイラ並の操作ができるようになったのですが「Commanderツールウィンドウ」は10年前から何の機能改善もしていません。
普通にOSのファイラを使った方が便利なので、筆者自身もIntelliJの初期のころから使ったことがありません。どうして、Android Studioでこれを有効にしているのか疑問が残ります。覚えても得するほど高機能ではありませんので、邪魔だなと思ったら以下の手順で無効にしておきましょう。
図30 Commanderプラグインの無効化(クリックすると動きがわかります)
「Preferences / Plugins」を開き「Commander」のチェックを外すだけです。プラグインの有効・無効を切り替えると、Android Studioは「Restart Android Studio to activate changes in plugins?(再起動するか?) 」と聞いてくるので再起動しましょう。