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

第8回Android Studioのキホンのキ ─Projectツールウィンドウについて

はじめに

さまざまなバリエーションが存在するツールウィンドウですが、今回は最もお世話になる「Projectツールウィンドウ」を中心に、いくつか代表的なものの使い方を説明します。

ツールウィンドウこぼれ話

Eclipseのビューに比べるとAndroid Studioのツールウィンドウはいささかぞんざいです。そもそもどれだけのツールウィンドウがあるのか知る術がありません。

一応、メニューバーの「View → Tool Windows」にツールウィンドウの一覧が出ていますが、そこにあるのがすべてではありません。

図1 メニューバーのツールウィンドウ一覧
図1

例えば「パス内の検索("Find in Path"⁠⁠」を実行して初めて表示される「Findツールウィンドウ」などがそうです。

図2 ⁠Findツールウィンドウ」
図2

傾向としては初期状態で表示されていないツールウィンドウは、ツールボタンごと非表示にすることができます。より具体的に言うと、ツールウィンドウ内のツールバーに「×」アイコンがあるものが非表示にできるツールウィンドウとなります。

Projectツールウィンドウ

このツールウィンドウは Project<PROJECT_HOME>の内容を表しており、プロジェクトを構成するファイルの操作を主に行います。Eclipseの「パッケージエクスプローラ・ビュー」に近いですが、ほぼファイルシステムそのものを表示しているため「ナビゲーター・ビュー」相当と言った方が適切かと思います。

図6 ⁠Projectツールウィンドウ」
図6

「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ツールウィンドウ」からみたソースパス
図7

ここの表示方法もオプションで変更可能です。表示切り替えのメニューは「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
図9

「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ツールウィンドウより)
図11

オートスクロールは鬱陶しいけれど、大量のファイルがあって場所を見失うことはよくあります。そんな時は「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リファクタリングでリネーム
図14

同じ理屈は先ほどの「移動やコピー」にも言えて、⁠Projectツールウィンドウ」がドラッグ&ドロップでそれっぽく振る舞っているだけで、本筋(?)はMoveリファクタリングやCopyリファクタリングをしているだけです。

削除は、コンテキストメニュー直下に「Delete」があり、そこで行います。削除はちょっと変わっていて、選択した対象がディレクトリなのかファイルなのかによって次に表示されるダイアログが異なります。

図15 ディレクトリを削除しようとしたとき
図15
図16 ファイルを削除しようとしたとき
図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ツールウィンドウ」のビュー切り替え
図20

普通に使う分には「Project」ビューで十分です。とても地味で目立たないインターフェイスなので「こんな事もできたなぁ」と覚えておいて下さい。

余談ですが「Projectツールウィンドウ」以外にもビューを持つ「ツールウィンドウ」があり、その表現方法は「Projectツールウィンドウ」風のドロップダウンリストと、タブで表示する方法の2通りがあります。その切り替えは「ツールウィンドウ」のコンテキストメニューにあるShow Views as Tabsで行います。

図21 ⁠Projectツールウィンドウ」「TODOツールウィンドウ」
図21

「Projectツールウィンドウ」のビューのうち「Scopes」と区切られている部分ですが、名前から察しがつくようにある限定条件に応じたビューになります。

  • Project Files
    • プロジェクト全体のビューです。Moduleが階層的にならずフラットに表示されるため、気持ちEclipseのパッケージエクスプローラっぽいです。
  • Problems
    • 問題のあるファイルのみを表示します。問題とは主にシンタックスエラーなどでProjectツールウィンドウ上、赤の波線で表示されているファイルのみを表示します。
  • All
    • 「Project Files」との違いがわかりませんでした。
  • Production
    • プロジェクトの内プロダクションコードのみを表示します。
  • Tests
    • プロジェクトの内テストコードのみを表示します。テストフォルダを指定していないプロジェクトの場合、何も表示されません。

筆者はほとんど「Project」ビューで済ますので、これらのビューのお世話になったことはほぼありません。たまに「Testsビューが便利かな?」と思う程度です。

このビューの真の売りは「Scopes」を自分で定義できることです。⁠Scopes」はプロジェクトごとに定義できる設定項目で「Preferences / Scopes」で設定します。この設定方法が分かりづらいため大っぴらに自慢できないのですが、うまく工夫することで「layoutだけ表示するビュー」「画像ファイルだけ表示するビュー」などを作ることができます。

図22 ⁠Preferences / Scopes」
図22

この「Scopes」「Projectツールウィンドウ」以外でも使うことができます。機会があればもう少し詳しく説明します。

図23 独自定義したScopesのビュー
図23

その他のツールウィンドウ

主に常時表示されているツールウィンドウについて簡単に説明します。

Structureツールウィンドウ

「Projectツールウィンドウ」「Show Member」のおかげで日陰者扱いされた感がありますが、いわゆる構造ビューです。スペースの都合なのかデフォルトではツールバーが非表示になっていますが、個人的にはツールバーが表示されているほうが使い勝手がよいです。

図25 ツールバーの表示指定
図25

ツールバーアイコンそれぞれの機能は表1の通りです。

図26 ⁠Structureツールウィンドウ」のツールバー
図26
表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 TypesProduct Flavorsを記述できます(Build TypesとProduct Flavorsを足してBuild Variantsと呼ぶようです⁠⁠。

この「Build Variantsツールウィンドウ」は、ビルドで採用するBuild Variantsを指定します。デフォルトでは「debug」「release」の2つが用意されていますが、build.gradleを書き換えることで、それ以外のBuild Variantsが選択できるようになります。

図27 ⁠Build Variantsツールウィンドウ」
図27

このツールウィンドウもGradleのビルドシステム同様、発展途上的な感じを受けます。たとえば「Build Variantsを指定しない(全部ビルド⁠⁠」はどうやって指示するんでしょうね……。

TODOツールウィンドウ

ソースコード中に記述したTODOコメントを一覧表示する、イマドキのIDEにはよくある機能です。こちらにもオートスクロール(Autoscroll to Source)があるのですが、ツールウィンドウ内でのプレビュー(Preview Source)ができるので、オートスクロールはOFFにしておく事をお勧めします。

図28 ⁠TODOツールウィンドウ」
図28

ツールバーの「Filter → Edit Filters」からTODOコメントのルールを指定できます。この画面は「Preferences / TODO」と同じものです(TODOコメントの設定は「IDE Settings」に属するため、プロジェクト設定として共有されません⁠⁠。

それ以外のツールウィンドウ

「Favaritesツールウィンドウ」⁠Androidツールウィンドウ」などまだ紹介していないものもありますが、これらは必要に応じておいおい説明していきます。念のために説明しておきますが「Maven Projectsツールウィンドウ」はAndroid Studioにとって意味の無いツールウィンドウだと思います。なにせビルドシステムはGradleですし。

「Mavenプラグインごと無効化しても良いのかな?」とも思いましたが、ライブラリのダウンロード機能などGradleプラグインと連携している可能性もあるので、邪魔かとは思いますがしばらくこのままにしておきましょう。

次回の予告

次回からはエディタの説明を行います。エディタはAndroid Studioのキモなので数回に分けて説明する予定です。

おすすめ記事

記事・ニュース一覧