Intellij IDEA初心者が、I/Oのセッションを見直してAndroid Studioの便利な使い方を研究してみました
Intellij IDEAの強力な補完機能やリファクタリング機能で、ユーザーに効率の良い開発環境を提供するのがAndoird Studioなわけですが、Intellij IDEAを使ったことがなくて、全然使いこなせていないなと思いましたので、せめてデモの中で紹介された機能くらいは研究してみようと、もう一度細かくセッションを見直してみました。
コードエディタ
quick fix
行やリテラルに応じて様々なsuggestをしてくれる機能。コマンド+Enterで発動する。
hogehoge();
例えば、こんな未定義のメソッドを呼ぶコードを書いたところでquick fixでCreate Method...を選ぶと、
private void hogehoge() {
}
こんな風に空のメソッド本体がささっと作られます。ちょっとしたことなんだけどありがたいです。
また、
View hw = findViewById(R.id.HelloWorld);
この状態から Viewを TextViewに打ち直して
TextView hw = findViewById(R.id.HelloWorld);
これでquick fixをみると、TextViewにcastするか、hwをViewに変えるかがsuggestされる。castを選ぶと
TextView viewById = (TextView) findViewById(R.id.HelloWorld);
になるという素晴らしさ。今まで手入力やコピペしてたのはなんだったんだろうと思える程。
Complete Current Statement
Edit->Complete Current Statement (シフト+ コマンド + Enter)で構文を補完してくれる機能
if (atIO2013)
この状態で シフト+コマンド+Enterを押すと
if (atIO2013) {
}
こうなる。さらにquick fixで atIO2013をlocal変数や、メソッドの仮引数、メンバ変数の宣言を追加してくれたりもします。
Extract String Resouce
デモではやりませんでしたが、直打ちした文字列をquick fixでリソースとしてstring.xmlに自動で追加できたりもします。
hw.setText("Hello I/O 2013!");
この文字列の上で quick fix の Extract String Resouceを選んで 適宜idを決めてやると、
hw.setText(getString(R.string.hello_io));
こんな風になります。
Completion
補完機能。Basic(Ctrl + Space)とSmart Type(Shirt + Ctrl + Space)とある。SmartTypeの方は厳密な候補がでてくるとからしいけど、まぁどっちでもよかったり。
Unwrap / Remove
外側の ブロックを除去してくれる機能 (Shift+コマンド+fn+delete)
if (hoge){
hogehoge;
}
みたいなコードで、Unwrapで if...を選ぶと、
hogehoge;
だけにしてくれる。余談ですが、このデモの際にメソッドの仮引数をquick fixでremoveしたら、呼び出し元の実引数も同時に削除されていたのには驚き。
Inspection
Width用の変数を間違えてHeight用のメソッドに渡した時のような、うっかりミスを警告してくれる機能。文法的にはおかしくないけれど、変数名とかの意味的にちょっとおかしい時にでてくるっぽい。
TextView hw = (TextView) findViewById(R.id.main_text);
int maxWidth = hw.getMaxWidth();
hw.setMinHeight(maxWidth);
setMinHeightで引数が間違っていないか?と報告してくれる。
コードエディタ内でのアイコンの縮小表示
hoge.setSmallIcon(R.drawable.hogehoge);
などと書かれた行では欄外にそのイメージが最大14x14ピクセルで表示される。 表示可能なアイコンは最大で128x128の大きさまで。
Docment表示
F1キーでducumentがpopupで表示される
Version Control Plug-in
GitやSubversion等のVCS用のプラグインがあり、操作も簡単。 また、Localでの変更履歴が簡単に見られたりもする。
Gradle
AndroidStudioは、LocalのIDEと、Server上等でのbuild結果が同じ物になるように Gradleをベースにしたbuildシステムを採用した。詳しくは三日目のセッションで説明すると。
レイアウトエディタ
TextとPreviewは連動していて、現在の行のViewがすぐわかるようになっている。
デバイスや言語の切り替えも簡単。
Rendering Problem でのsuggest
Typoやattributeの不備でPreviewでのレンダリングができない時には、Rendering Problemと共に正しいと思われる単語への変更やattributeの追加のSuggestがPreview画面下部に表示される。
fragmentも <fragment />だけ入力すると、RenderingProblemに"Choose Fragment Class..."が表示され、実行するとFragmentのリストが表示され、選んだclassで適切なattributeが生成される。
レイアウトエディタでのGrid Layoutのサポート
使えるよーって言ってました。
annotation
annotations.jarを追加すれば、便利なAndroidのannotationが使えるようになる。
メソッドがサポートするOSのバージョンを示すなら、@TargetAPI
他にもあるよってことで。
Scopes
特定のパターンのフィイルを scopeとしてまとめ、それらを色分けしたりできる機能。ライブラリプロジェクトのファイル等を別のscopeとして設定して、色を変えておけば、本体のものと簡単に区別ができて便利。
Preference->Scopseで +で新しい Scopeを作成して、ファイルのInclude / Excludeのルールを決めた後、File Colorsの設定でScopeに対して色を指定できたりする。
Open Symbol
新しいAPIを探す時に、わざわざWebでググったりしなくても、SDKや依存しているライブラリの中からメソッド名やフィールド名を検索することができる機能。
Navigate->Symbol(option+コマンド+O)で呼び出せる。
Intellij IDEAの補完と同じで、完全一致じゃなくても候補がでてくる。
Injecting languages
文字列の中身を、XMLやRegExp等の別の言語として解釈してエラーを報告する機能。
RegExp
正規表現の文字列は、 quick fixで CheckRegExpを選ぶと、入力した文字列でmatchするかどうかをチェックするためのダイアログが開く
XML
文字列をXMLとした場合、XMLの文法規則に従っていなければエラーが報告される
他にもDTDやAIDLもある。 AndroidStudioには用意されていないが、SQL用のplug-inもあり、構文チェックには非常に役に立つと思われる。
Refactor this...
Ctrl + Tでいろいろなリファクタリング機能が使える。
他にもいろいろなTipsがあるけど、それはblogを見てくれとのことでした。
あと、Q&AでAndroidStudioは、Gradle-basedなprojectしか新規で作れないって言ってます。 しばらくはeclipseでprojectを作って、build.gradleを作らずにimportする 後ろ向きな運用が私にはあってそうですw
機能を理解すればする程使いやすいIDEだと感じています。
エディタとして使うだけでも充分実用的ですぐに元がとれますので、学習コストが…とか言ってないで、さっさと使いはじめた方がいいんじゃないかなと、ほんとそう思います。