はじめに
コード生成に必要な主要コマンドはほぼ説明したので、おさらいも兼ねてケース別に整理しておきます。
エディタの話とはズレるのですが、説明する機会を逸しそうなので、番外編としていろいろな比較についても紹介します。
新しいクラスやファイルの作成
第3回 でも紹介していますが、メニューバーの「File → New...」でJavaを選択して作成します。Javaを選択した時のダイアログでクラスなのかインターフェイスなのかを選択できますが、生成したコードのキーワードが「class/interface/enum/etc..」になるだけなので、それほど意味はないです。とりあえずクラスを生成してあとでキーワードを変えるだけでも十分です。
図1 「 File → New」によるクラスの作成
クラス名の入力フィールドにはパッケージ名から指定する事もできます(存在しないパッケージの場合、そのパッケージも作成します) 。
作成するクラスやインターフェイスのひな形は第12回 で紹介した「Preferences / File and Code Templates」の「Templatesタブ」で定義します。
図2 クラスやインターフェイスのひな形の定義箇所
EclipseやNetBeansのような「Javaクラス作成ウィザード」のようなものはありません。筆者は、気軽にクラスやファイルを作成できるため、このインターフェイスを気に入っています。
既存のクラスやインターフェイスから新しいクラスを作成する
クラスやインターフェイスの宣言文にカーソルを当て "Show Intention Actions " を実行すると、サブクラスや実装クラスを作成できます。
図3 サブクラスや実装クラスを作成する
この仕組みは第13回 で紹介したとおりです。
既存のクラスからテストクラスを作成する
詳細は次回説明しますが、テストを作りたいクラスをエディタで開き、メニューバーの「Navigate → Test」で表示するポップアップから「Create New Test...」を選びます。
またはサブクラス作成と同様に "Show Intention Actions " から「Create Test」を実行します。ただ選択できるテストケースが「GroovyTest」「 JUnit3」「 JUnit4」しかないので、Android開発でどれほど役に立つのかは疑問が残ります。
図4 テストクラスの作成(クリックすると動きがわかります)
どちらにしてもプロジェクトにテストフォルダが設定されていることが前提条件となります。Eclipseを使っている人向けに一言で説明すると「Android StudioにはQuick JUnit 相当の機能が含まれています」ということです。
メソッドのオーバライド、実装を作成する
幾通りかあります。
メニューバーの「Code → Generate...」で「Override Methods...」を選ぶ。
図5 「 Code → Generate...」でメソッドのオーバライド(クリックすると動きがわかります)
メニューバーの「Code → Override Methods...」や「Code → Implement Methods...」を選ぶ。
図6 「 Code → Override Methods...」でメソッドのオーバライド(クリックすると動きがわかります)
コードの「extends
」や「implements
」に指定している抽象クラスやインターフェイスにカーソルを当てて "Show Intention Actions " から「Implement Methods」を実行する(抽象クラスやインターフェイスのようにメソッドの実装が強制されている場合のみ、メニュー項目が出てきます)。
図7 「 implements」に指定しているインターフェイスからメソッドを実装(クリックすると動きがわかります)
コード補完(Basic補完)の選択候補からオーバライドするメソッドや実装するメソッドを選択する。
図8 コード補完からメソッドを実装したりオーバライドする(クリックすると動きがわかります)
どれを使うかは好みや慣れですが「Code → Generate...」や「Override Methods.../Implement Methods...」の時だけJavadoc生成の考慮があります。
オーバライドしたり実装したりするメソッドのひな形は、先ほど紹介したクラスやインターフェイスと同じく「Preferences / File and Code Templates」の「Codesタブ」で定義します。
図9 オーバライドや実装するメソッドのひな形の定義箇所
それぞれのひな形の定義場所を以下に示します。ひな形の定義は「メソッドの中身(Method Body) 」だけで、Javadocコメントのひな形は定義するところがありません。
Implemented Method Body
実装メソッドのひな形
Overridden Method Body
オーバライドしたメソッドのひな形
New Method Body
新規作成したメソッドのひな形(詳しくは後述します)
未定義状態のソースコードからクラスやメソッドを作成する
存在しないクラスやメソッドをあえてソースコードに記述し、そこに指摘されたインテンションメニューから対象を作成する方法です。
たとえばクラスの場合、図10 のように宣言部(左辺)と生成部(右辺)とでインテンションの項目が異なります。
図10 ソースコードからクラスやインターフェイスを生成する
メソッド作成のインテンションは図11 のとおりです。
図11 ソースコードからメソッドを生成する
クラスやインターフェイスの場合、図12 のようなダイアログにて「どこに生成するのか?」と問い合わせてきますが、メソッドについてはこれと言った問い合わせなく生成を実行します。
図12 クラス生成時のダイアログ
この方法で生成するクラスやインターフェイス、メソッドは生成前のソースコードの文脈を考慮してある程度の型を推測して生成します。
番外編:いろいろな比較
前回 の「クリップボードと比較」で比較機能について触れましたが、むしろ比較の本領は「Projectツールウィンドウ」でこそ発揮されます。今後の連載でも紹介する機会を逸しそうなので、番外編として紹介しておきます。
現在のエディタと比較
「Projectツールウィンドウ」上で1つだけ ファイルを選んだ状態で「View → Compare File with Editor」を実行すると、そのファイルとカレント表示しているエディタとを比較します。
図13 "Compare File with Editor"の例(クリックすると動きがわかります)
2つのファイルを比較
「Projectツールウィンドウ」上で2つのファイルを選択した状態で「View → Compare Two Files」を実行します。
「Projectツールウィンドウ」で複数のファイルを選択する方法ですが、OSのファイラ同様、CtrlキーやSHIFTキーとマウスクリックのコンビネーションで行います。
ファイルが離れている場合は、Ctrlキーを押しながらマウスで対象をクリックする(Macの場合はcmdキー) 。
隣接するファイルならば、SHIFTキーを押しながらマウスで対象をクリックする
3つ以上ファイルを選択していたり、ファイルとディレクトリを選択していると "Compare Two Files "コマンド自体が表示されません(こちらも、先ほど同様コンテキストメニューからも実行できます) 。
ちなみに、同種の対象同士であればディレクトリやアーカイブファイルとの比較も可能です。ディレクトリやアーカイブの比較はコンテキストメニューからのみ実行できます(メニューバーの「View」メニューには登場しません) 。
ファイルとファイル
ディレクトリとディレクトリ
アーカイブファイルとアーカイブファイル
"Compare Archives "で比較(実際は"Compare Directories "と変わりなし) 。
図14 いろいろな比較
意外かも知れませんが、画像ファイル同士の比較もできます。と言っても並べて表示されるだけですが……。
図15 画像ファイル同士の比較(クリックすると動きがわかります)
外部のディレクトリと比較
「Projectツールウィンドウ」上でディレクトリやアーカイブファイルを1つだけ 選択しているときだけコンテキストメニューから"Compare Directory with... "や"Compare Archive File with... "を実行できます。
図16 外部のディレクトリと比較(クリックすると動きがわかります)
このコマンドを実行すると 図17 のようなファイルダイアログが表示されるので、そこから比較対象を決定します。
図17 「 Select Path」ダイアログ
このダイアログ、下の方をよーく見ると「Drag and drop a file into the space above to quickly locate it in the tree.」と書いています。要するに、
選択したいファイル(やディレクトリ)をここにドラッグ&ドロップしなさい
という意味です。実際に試してみたのが 図18 になります。この機能、とても便利なので覚えておくと得する事が多いです。
図18 「 Select Path」ダイアログにディレクトリをドラッグ&ドロップする(クリックすると動きがわかります)
話を元に戻します。"Compare Directory with... "や"Compare Archive File with... "はあるのに、"Compare File with..."は存在しません。そのため、ファイルについてはプロジェクト管轄外のファイルと比較できないようにみえます。
というのは引っかけ(?)で、先ほども説明したとおり、エディタエリアにプロジェクト外のファイルをドラッグ&ドロップすれば、そのファイルを編集することができます。これを逆手にとって、プロジェクト管轄外のファイルを開き/「 Projectツールウィンドウ」で比較したいファイルを選び/"Compare File with Editor "を実行、することで目的を達せます。
最後のは若干苦し紛れなところもありますが、このように特別なdiffツールを使わずとも大抵の比較処理を行うことができます。一見万能のように見えますが、さすがにプロジェクト管轄外のディレクトリ同士を比較する事はできません。
[コラム]ついでの話:Mac版のファイルダイアログについて
先ほどの「Select Path」ダイアログに関係する話ですが、Mac版のAndroid Studioでは一部のファイル操作ではOSのファイルダイアログが表示されます(わかりやすい例だと「File → Open...」かウェルカム画面の「Open Project」がそうです) 。
筆者は長いことMacを使っているのですが、MacのファイルダイアログでもAndroid Studioの「Select Path」ダイアログのようにファイル(やディレクトリ)をドラッグ&ドロップして、その場所に移動することができる事をつい最近知りました。
図19 Mac版Android Studioの「Open Project」( クリックすると動きがわかります)
これはこれで便利ではあるのですが、Windows版Android Studioと併用していたりすると、Mac版でもOSネイティブではないファイルダイアログを使いたいと思うことがままあります(Macのファイルダイアログでは見に行けないパスやファイルなどがあるため) 。
第12回 で紹介した隠しオプション("Registry "コマンド)で、Mac版Android StudioでもOSネイティブではなくAndroid Studio独自のファイルダイアログを使うようにできます。
図20 「 Registry」ダイアログ
設定すべき項目は以下のとおりです。
ide.mac.file.chooser.native
OFFにすると、MacのOSネイティブのファイルダイアログではなく、Android Studio独自のファイルダイアログを使うようになります。個人的には、ここをOFFにすることをオススメします。
ide.mac.file.chooser.show.hidden.files
ファイルダイアログに隠しファイルを表示するかどうかを指定します(ONで表示する) 。MacのOSネイティブのファイルダイアログを使っている場合のみ有効です。
Android Studio独自のファイルダイアログの場合、隠しファイルを表示するにはダイアログのツールバーの「 」をONにします。
図21 Mac版でもAndroid Studio独自のファイルダイアログを使う(クリックすると動きがわかります)
どうでも良い話でしたが、せっかくなので紹介しました。お暇でしたら、お好みの方を使ってみてください。
次回の予告
次回はエディタの移動機能を中心に、さまざなま目的の場所へ効率よくジャンプする方法を紹介します。