What’s Cool In IntelliJIDEA. Part I - 4

これは、What’s Cool In IntelliJIDEA. Part Iの翻訳(の一部)です。


前回分はこちら


http://d.hatena.ne.jp/fuzzhead/20111120/p1
http://d.hatena.ne.jp/fuzzhead/20111121/p1
http://d.hatena.ne.jp/fuzzhead/20111123/p1

Smart Code Completion

型付け(typing)は、単なる結びつけ(tying)かい?*1この型付けという用途で使用する際に、IDEが何と賢いことであるか、本当に驚くべきことだ。自分が望んだように、IDEが自動的にコードを補完するというのはクールじゃないか?

簡単な例を挙げよう。あるクラスにフィールドを導入したいとする。で、

 List<String> list = new 

と入力し、Ctrl+Spaceを打つ。その時Eclipseは何で補完をしようとするのか?Listインタフェースと、このフィールドが定義されているクラス名だ。あんまり賢くはないね、はぁ。


http://2.bp.blogspot.com/-pqbjDE-_Wt0/TgYdkg47ixI/AAAAAAAANhI/MpDU4RsiUW8/s1600/EclipseAutocomplete.png
[List実装クラスをnewする状況でListとMainを補完しようとするおちゃめなEclipseさん]


IntellliJでは、同じ事を入力してCtrl+Spaceを打つと、クラスパスに含まれるList実装クラス一覧がポップアップされる。また、Ctrl+Shift+Spaceではさらに賢くなり、好ましい選択肢としてArrayListを提案する。

http://4.bp.blogspot.com/-WaoeOVBO5II/TgYpoDY33RI/AAAAAAAANhQ/bbp3_L5pYoA/s1600/CtrlSpace.png
[List匿名クラスとList実装クラスが候補に上がっています]


http://1.bp.blogspot.com/-HZMKzIg8cEk/TgYpoVovZaI/AAAAAAAANhY/VMmQTUggzpg/s1600/CtrlShiftSpace.png

[ArryaListが候補に上がります。MapだとHashMapになります。]


他に私がIntelliJで発見した自動補完には、
smate type compilation(Ctrl+Shift+Space)を二回連続して実行すると、期待する型を返却するようなメソッドチェインをIntelliJが探しだす、というものがある。


http://4.bp.blogspot.com/-82RqCy4QiPg/TgZDIHWvXsI/AAAAAAAANhg/yJP2XHKQY98/s1600/CtrlShiftSpaceCtrlShiftSpace.png
[左辺の型(Owner)に合致するメソッドチェインも補完候補に上がります]

Live Templates

コードを自動補完とは別に、素早く書くための方法としてテンプレート[(雛形)]がある。ふつう、IDEはテンプレートを提供してくれるのだが、自分で新しいテンプレートを追加することもできる。IntelliJでどうやるか見てみよう。


Ctrl+Jを押すと、利用可能なテンプレート一覧がポップアップされ、テンプレート名でフィルターをかけることができる。なるほど、一覧にごく一部のテンプレートしか表示されていない場合、その一覧から正しいものを選ぶのは難しい。しかし、このように一覧中に候補が多すぎる場合、一覧をフィルタリングする別の手段を使うのがよい。


メソッド引数のnullチェックは極めてよくあることだ。これに対応するif文は、inn[if-not-null]テンプレートで生成される。エディタ上で"inn"とタイピングして、テンプレート展開用のキー(デフォルトではTABキー)を押せば、nullチェックif文が生成されるのだ。


http://3.bp.blogspot.com/-NDBuMsAC3e8/TgZJL26DtZI/AAAAAAAANho/K6TQugsBaYo/s1600/LiveTemplates-1.png

[if-not-nullテンプレートが展開されるので、チェック対象の変数を一覧から選択します。]


次のよくあるコード断片は、コレクション要素の走査処理だ。IntelliJは、さまざまなループ用途にイテレーションテンプレートをたくさん提供している。イテレーションテンプレートに共通する点は、それらが"it"[という接頭辞]で始まる点だ。すなわち、iter[Iterate Iterable]、itco[Iterate elements of java.util.Collection]、itar[Iterate elements of array]等だ*2。例えば、コレクションがあるとして、iterとタイプしてテンプレート展開用キーを押すと、コレクションを走査するforeachループが文脈に応じて生成される。


http://3.bp.blogspot.com/-uXKt8WsXYsc/TgZL52HnncI/AAAAAAAANhw/pRJXPfGxGJ4/s1600/LiveTemplates-2.png

[コレクションの総称型から要素の型を導出してくれています。]


また、文を囲む用途のテンプレートも、適用可能な状況であれば使うことができる。Ctrl+Alt+Tはトリックを行う。例として「検索処理をtry-catch節で囲みたいが、検索結果に対するループ処理を誤って先に生成してしまったケース」を挙げておく。


http://3.bp.blogspot.com/-cL3qXITpATA/TgZOu1U7qZI/AAAAAAAANh4/NJuEygnE7X0/s1600/LiveTemplates-3.png


他にも、デフォルトのEclipseを使うときにやっかいな思いをしてしまうテンプレートに、soutvというのがある。これはその場に応じた変数を表示するSystem.out.println(...)を生成してくれる。


http://4.bp.blogspot.com/-X8zg9BkGRng/TgZQkkUtjhI/AAAAAAAANiA/Sa-oWQXd0v0/s1600/LiveTemplates-4.png


テンプレートを編集したり作ったりするのはとても直感的で、ドキュメントも整備されている。普段、私は自分用のtry-catchテンプレートを定義している。というのも、デフォルトでは用意されていないからだ(これは奇妙なことだ)。


http://2.bp.blogspot.com/-kKsIXNaTzn8/TgZZDx7a7EI/AAAAAAAANiI/Z5JfYF0W94g/s1600/LiveTemplates-5.png

[try-catchのテンプレート定義です]


IntelliJでのテンプレート機能でユニークなのは、IDEの多彩な機能、例えばコード補完やその他の便利な機能を利用して、新しいテンプレートを定義できる点だ。

Refactoring

リファクタリングについては大部分を省略しようと思う。IDEで利用可能な膨大な量のリファクタリングを比較するのは正気の沙汰ではないからだ。簡単なリファクタリング「変数、メソッドその他の抽出」を取り上げて、ひとつだけ使いやすさの点について記しておく。


Eclipseでは、Alt+Shift+Lを押してリファクタリングを実行する前に、対象となるステートメント全体を選択しておく必要がある。(あるいは末尾にカーソルを置いておく必要がある)。そうでないと、Eclipseは「リファクタリング対象が選択されていなければなりません」というポップアップメッセージを出力し、開発者の望みを理解することを拒否する。


IntelliJは、文脈から判断してリファクタリングの選択肢を提示するので、少し賢いようだ。


http://3.bp.blogspot.com/-Fd6lW9EyQS0/TgZnBhNQ1nI/AAAAAAAANiQ/Ru9U7RQJmZ4/s1600/CtrlAltV.png

[文脈から、あり得る選択肢を提示してくれます。]


まだまだあるよ。チャンネルはそのまま :)

*1:[typingとtyingのダジャレです]

*2:iterは拡張for文を、itcoはイテレータを、itarはインデックスを使います

What’s Cool In IntelliJIDEA. Part I - 3

これは、What’s Cool In IntelliJIDEA. Part Iの翻訳(の一部)です。


前回分はこちら


http://d.hatena.ne.jp/fuzzhead/20111120/p1
http://d.hatena.ne.jp/fuzzhead/20111121/p1

Bookmarks

関心がある箇所に戻るためのブックマークがあればコード探索はもっと簡単だ。IntelliJ開発者は、この機能を優先事項とみなしており、Ctrl+Shift+数字とCtrl+数字ショートカットをブックマーク用に確保しているようだ。


Ctrl+Shift+数字(例えばCtrl+Shift+1) は、カーソルがある行を即座にブックマークする。その後は、Ctrl+数字(例えば、Ctrl+1)を押せばブックマーした箇所に戻れる。数字だけでなく英文字を割り当てることもできるが、後で即座に戻ることはできない。特別なメニューを使う必要がある。以下のスクリーンキャストはこの機能のデモンストレーションだ。




http://tv.jetbrains.net/sites/default/files/videos/converted/idea-bookmarks.mp4:movie=flash
http://tv.jetbrains.net/videocontent/using-bookmarks-in-intellijidea
[はてなダイアリーの動画埋め込みが糞で解像度を上げられませんでした。リンク先を見てください。]


Eclipseでも、ブックマーク機能を使うことができる。しかし、IntelliJと同じほど使い勝手はよくない。デフォルトではショートカットが割り当てられておらず、マウスを使わずに簡単に使えないのだ。

Local History

IntelliJEclipseともに、ローカルの変更を追跡しローカルの変更履歴を提供しており、それを使って変更点を確認できる。この機能はバージョン管理システムに似ているが、バージョン管理システム無しで動作する。

最初は、IntelliJEclipseとで同じような機能が実装されているようにみえるが、より深堀りして本格的に使い出すと違いに気づいてくるだろう。またしても、IntelliJは使い勝手に関して少し優っている。(が、私はこの点について偏見に満ちている)

http://4.bp.blogspot.com/-DTJgmo9CpWI/TgYVOhvdHMI/AAAAAAAANg4/fACy9GFMWaA/s1600/IntelliJLocalHistoryView.png


特に、この機能の差分ビューはとても直感的だ。どんな変更が生じたかはっきりわかるし、[差分ビューの片方からもう片方へ]変更を移動させることも簡単だ。Eclipseでもこのビューはとてもよく似ているが、私がこの機能を試したとき、新しいメソッドをクラスに追加し、さらに新しい行を追加したのだが、
履歴は作成されていたのだが、これらの変更点を後で見つることができなかった。IntelliJではパッチを作ることもできるし指定したバージョンに戻すこともできる。
[(注:パッチ作成やリバートはEclipseでも当然できる)]

http://1.bp.blogspot.com/-ZbOR_UhHQHo/TgYV3sIuLwI/AAAAAAAANhA/F4GgJsvC0kk/s1600/EclipseLocalHistoryView.png

訳者補足

ローカル履歴機能で言えば、IntelliJの素晴らしいところは、ユニットテストの結果と連動する点です。自動的に以下の変更を覚えています。

  • それまで失敗していたテストが成功するようになった変更
  • それまで成功していたテストが失敗するようになった変更

なので、どのバージョンにリバートすればいいか、かなり判断がしやすいです。また、自分でラベルをつけることもできます。


あと、EclipseでLocal Historyにあるだろうとおもったら、履歴がなかったということがよくありました。
IntelliJでは今のところそういうことはありません。筆者が言うようにdiffの精度はIntelliJのほうがいいと思います。

What’s Cool In IntelliJIDEA. Part I - 2

これは、What’s Cool In IntelliJIDEA. Part Iの翻訳(の一部)です。

前回分はこちら

http://d.hatena.ne.jp/fuzzhead/20111120/p1

Find Usages

IntelliJの"Find Usage"機能は「同じ事をEclipseでしようとするといつもイライラしてしまう」そんな機能だ。Ctrl+Shift+G(ワークスペース内で参照箇所を探す)は、ばかげているほどに使い物にならない。
そのショートカットを使えばワークスペース内でそのメソッドを参照している全ての箇所を調べられるのに、プロジェクトスコープで同じ事を使用とすると、マウスを使わなければならないのだ。


IntelliJではこうだ。まず最初にAlt+F7を押すと、EclipseのCtrl+Shift+Gとほぼ同じ結果得られる。それに加えて、探索対象とするスコープを指定するのにマウスを使う必要はない。矢印キーを押せば参照箇所を探すのに利用できるスコープを選ぶことができる。エンターキーを押せばそれでおしまい。こんなシンプルな機能でさえIntelliJはとても使いやすいのだ。


http://2.bp.blogspot.com/-eU2z75Avd_0/TgX32PReI5I/AAAAAAAANgY/sPqLZ6gP6HA/s1600/AltF7.png


更に、クイックルップアップも使える。Ctrl+Alt+F7を押すと、対象メソッドを参照している箇所が一覧でポップアップ表示される。そこで、(先に紹介した)Ctrl+Shift+Iを押せば、そのメソッドが使われている箇所のソースを見ることができる。


http://4.bp.blogspot.com/-hom4dasyjQA/TgX4-1r1I3I/AAAAAAAANgg/RSo-YpWi2rw/s1600/CtrlAltF7CtrlShiftI.png


変数の出現箇所をハイライトする機能はEclipseでもIntelliJでも同じだ。EclipseではハイライトのOn/Offを切り替えられるし、IntelliJではショートカット(Ctrl-Shift-F7)を押す。が、私にとっては本質的な違いはない。けれども、Eclipseでは単一の変数だけをハイライトする一方、IntelliJでは複数の変数をハイライトさせることができる。


http://1.bp.blogspot.com/-Zjg4NnIu6sI/TgYHtM2QKSI/AAAAAAAANgw/IlRBECbgMaE/s1600/EclipseVariableHighlight.png



http://2.bp.blogspot.com/-CrNsiB-t0Uw/TgYDagSXc7I/AAAAAAAANgo/dMMeodLq9-w/s1600/CtrlShiftF7.png

What’s Cool In IntelliJIDEA. Part I - 1

はじめに

これは、What’s Cool In IntelliJIDEA. Part Iの翻訳(の一部)です。


量が多いので何回かに分けます。
角かっこ[]は訳者が付け足した箇所です。

What’s Cool In IntelliJIDEA. Part I

EclipseかIntelliか?NetBeansかEclpseか?IntelliJNetBeansか?IDEに関する議論はソフト開発者の間で最も人気のあるトピックであり、決着が付きそうもない。私は自分のことをIntelliJの大ファンだと思っている。しかし、IntelliJのほうが上手くできることがたくさんある一方で、ある意味ではNetBeansEclipseのほうが良い点もある、ということがわかった。
この投稿で、私が最高に気に入っているIntelliJの機能を概観し、また、IntelliJが優っている面を示したい。


かつて友人が言った。

IDEは好きじゃないね。IDEは冗長なコードを書く手助けをしてしまう。僕は生活の9割はコードを読むことに費やしている。冗長なコードっていうのは、そのコードリーディングの効率を損ねるんだ。

私は彼は間違っていると思う。IDEというのは、コードを書いたり生成したりするだけに使われるのではなく、コードを読んだり分析したりすることにも使われるというのが真実なのだ。君たちは筋金入りのEmacs/Vimの使い手かもしれないが、テキストエディタではできないこともあるのだ。

ナビゲーション

ソースコードのナビゲーションはプログラマが日頃から行う活動のひとつだ。基本的に、EmacsVimでコードをナビゲートするのは難しいことではないが、それは基本的なものに限られている。IDEはもう一歩進んだナビゲーションを行うのだ。


IntelliJのナビゲーション機能がどんなものかを見てみよう。まず最初は、Crtl+Nで実行する"Open Type"だ。


http://3.bp.blogspot.com/-z7u7Wr1-xwQ/TgSpb-0Jn3I/AAAAAAAANe4/pJIQfBtp0LI/s1600/CtrlN.png

[マッチするクラス・インタフェースが表示されます]


Eclipseでも同じ事がCtrl+Shift+Tでできるし、その動きは全く同じだ。Ctrl+Shift+Nはファイルを開くのに便利だ。EclipseのCtrl+Shift+Rと同じだ。これはこんなものだが、まだある。Ctrl+Shift+Alt+Nで、特定のシンボル(例えばメソッド名)のすべての出現箇所をみつけることができる。


http://4.bp.blogspot.com/-iksIvvyLWjw/TgSrfr27BlI/AAAAAAAANfA/Q_hSM1MJwAQ/s1600/CtrlShiftAltN.png

[マッチするシンボル(メソッド名、フィールド名…)が表示されます]


これは、IntelliJがそのシンボルの出現箇所をスキャンするということではなく、むしろ、[IntelliJが内部的にキャッシュしている]コード構造にマッチするコードの要素をさがしてるのだ。だから、単にメソッド名が現れている箇所ではなくてメソッド宣言の一覧を見ることができるのだ。クラスが同じ階層を共有していない場合[(別のモジュールだったりjarファイルだったりする場合)]、この機能はとても便利だ。


ソースを探索する際、別クラスへ飛んだり、別のメソッドを見たり、型宣言を開いたりすることがある。
時折、何ステップか戻ったり、逆に進んだりするのはよくあることだ。Ctrl+Alt+(left|right)は、そのための便利なショートカットだ。コード上で矢印を押すとその箇所が履歴に記録され、戻ったり進んだりできる。大きなコードベースを探索してちょっと前にどのファイルを開いていたかを思い出せないような場合、これはとても便利だ。


Ctrl+Eで、最近閲覧したファイルの一覧を出せる。最近閉じたファイルをまた開くことも非常によくあることだ。


http://2.bp.blogspot.com/-uVPyD8dlgRk/TgSvSTqqqrI/AAAAAAAANfI/mf-8DgGX5rg/s1600/CtrlE.png

[最近閲覧したファイルの一覧がポップアップされます。]


履歴を行き来するのは、EclipseのAlt+(left|right)と同じだが、最近編集したファイルの一覧は表示できない。IntelliJでは、Ctrl+Shift+Eでできる。コードブラウジングを快適にする機能が他にもたくさんある。例えば、IntelliJEclipseには、現在開いているクラスの場所を即座に閲覧する機能が提供されている。Alt+Homeを押すと、ナビゲーションバーがそのクラスのパスとともにポップアップされる。


IntelliJがこのナビゲーションバーで提供する機能でクールなのは、実際にはファイルを開かないでファイルの中身を見ることができる点だ


http://4.bp.blogspot.com/-E0aqtcRmzho/TgUXRHaYiCI/AAAAAAAANf4/J3V4pDE83Fw/s1600/AltHomeCtrlShiftI.png
[そのファイルにジャンプせずその場でポップアップ表示されます]。


Eclipseで似たような機能に、Alt+Shift+Bで呼び出す「パンくずリストで見る」がある。違いは、EclipseではJavaの型が選択されたときにしか機能しない点と、ナビゲーションバーとして機能するだけ、という点だ。つまり、即座にプレビューすることはできない。さらに言うと、私は、Eclipseの「パンくずリスト」を簡単に取り除く方法を、ツールバーにある専用のボタンをクリックする以外には見つけられなかった。


IntelliJでは、どんなシンボルを調べたい場合でもCtrl+Shift+Iでプレビューを実現できる。例えば、メソッド呼び出しの箇所でこのショートカットを実行すると、そのメソッドのソースコードがポップアップされる。


http://4.bp.blogspot.com/-E0aqtcRmzho/TgUXRHaYiCI/AAAAAAAANf4/J3V4pDE83Fw/s1600/AltHomeCtrlShiftI.png


それに、型階層化されたコードを閲覧する場合は、同じようにポップアップから実装クラスを即座に選択できる。


http://3.bp.blogspot.com/-xtpn9n20T9I/TgUagF47J2I/AAAAAAAANgI/_uch902bvTg/s1600/CtrlShiftI-interface.png

[ジャンプする先の実装クラスをその場で選択できます。]


クラスの型階層を探索する点について言えば、階層ビューはEclipseでも同じように利用できるが、IntelliJは素晴らしい実装をしている。IntelliJを際立たせているのは簡単に実装クラスへ飛べる点だ。例えば、インタフェースでのメソッド定義の箇所から、あらゆる実装クラスへジャンプできる。あるインタフェースに複数の実装クラスがある場合は、Ctrl+Alt+Bを押すことで、実装クラスの一覧がポップアップされる。


http://2.bp.blogspot.com/-XnQoN7QgXHc/TgUelHeq-zI/AAAAAAAANgQ/V4Ebna9zww0/s1600/CtrlAltB.png

訳者補足

「なんかすげーショートカット多いし複雑だな」と思った方がいるかもしれません。
しかし、実際はよく使う機能は使いやすいキーバインドに変更したりしますし、
覚えたくなければ、ランチャーみたいなのに登録してよびだすこともできます。



(よく使う機能を登録したランチャーみたいなもの)


コマンド自体も検索できます。だから、最悪コマンド名さえ覚えておけば、キーバインドは覚えなくても大丈夫です。コマンド名も強力な補完が効きますので、うろ覚えでも大丈夫です。




(そのコンテキストで使用可能な"usage"を含むコマンドが表示されています)


私は、Alt-xにこの機能を割り当てています(EmacsのM-xのアナロジーです)。

IntelliJが起動しなくなったのでJetbrains社にメールした

はじめに

自宅のMacIntelliJ IDEAを10.5.2にアップデートしたら、
起動しなくなるという事象に出くわしてしまいました。

どうにも解決できないので、思い切って(?)Jetbrains社にメールしてみました。

メール

IntelliJ Ultimate Editionユーザです、そして、私はIntelliJを10.5.1?10.5.2までアップグレードさせました。それだけが始まりません。


私はIntelliJ IDEA10.appをクリックします、次に、スプラッシュスクリーンがすぐに、現れます。IDEだけが始まりませんでした、私は10分間以上待ちましたが(まだスプラッシュスクリーンを表示しています)。 活動モニターは、CPUとDiskが使用されていないと私に言います。


いっそう困ったことに、ウェブサイトが応じなかったので、私は旧式のバージョンをダウンロードできませんでした。
( http://devnet.jetbrains.net/docs/DOC-1228 )


私はCommunity Edition10.5.2を試みました。 私の期待とは逆に、うまくいきます…


My IDEが始まらないで、ビルド番号を見ることができないので、私は以下の見せかけの'Numberを造ってください'を書きました。 (私は、2011年9月3日にそれをダウンロードしました)


心から。

I am IntelliJ Ultimate Edition user, and I upgraded IntelliJ from 10.5.1 to 10.5.2. but it doesn't start.


I click IntelliJ IDEA 10.app, then the splash screen appears immediately. but IDE did NOT start, even though I waited 10 minutes or longer (splash screen is still displayed). Activity monitor tells me CPU and Disk are idle.


To make matters worse, I couldn't download older version because web site did not respond.
(http://devnet.jetbrains.net/docs/DOC-1228)


I tried Community Edition 10.5.2. Contrary to my expectation, it works well...


I wrote mock 'Build Number' below, because My IDE doesn't start and I can't see build number. (I downloaded it at 2011-09-03)


sincerely.

返事

とまあ拙いメールを送ったのでしたが、その日のうちに返事をくれました。

こんにちは、Tsuyoshi


~/Library/Application Support/IntelliJIdeaXXディレクトリからプラグインを取り外すようにしてください。


助からないなら、すべてのIDEAディレクトリをまず第一に既定の設定に改名してください: http://devnet.jetbrains.net/docs/DOC-181



セルジュバラノフJetBrains、Inc
http://www.jetbrains.com
「喜んで展開してください!」


Hello Tsuyoshi,


Try to remove plugins from ~/Library/Application
Support/IntelliJIdeaXX directory.


If it doesn't help, rename all IDEA directories to start with the
default settings: http://devnet.jetbrains.net/docs/DOC-181 .


Serge Baranov
JetBrains, Inc
http://www.jetbrains.com
"Develop with pleasure!"

お礼

バラノフさん


私はプラグインを取り外しました、そして、それは働いていました!
アドバイスありがとうございます。


心から


Mr. Baranov


I removed plugins and it worked!
Thank you for your advice.


sincerely

解決

アップデートしたときプラグイン周りで不具合が起こることがどうも多いようです。
前はscalaプラグインが悪さをしていました。
今回は、Idea Server Pluginがまずかったみたいです。

おしまい

いやー、こういうサポートはやっぱり製品ならではですね。

ありがとうバラノフさん

Eclipseユーザの為のIntelliJ IDEA Q&A

これは、IntelliJ IDEA Q&A for Eclipse Usersの翻訳です。


IntelliJ IDEAは、たいへんすぐれたIDEなのですが、設定や操作方法に若干の慣れが必要です。なんとなく使い始めると、そのメリットを享受できるようになる前に、使い慣れた開発環境に戻ってしまいます。なにしろEclipseでもNetBeansでもひと通りのことはできるわけで、使い慣れた環境以上の生産性を出すには、それなりの学習コストが必要です。*1


このドキュメントは、EclipseユーザがIDEAを試す際に一番最初に読むべきドキュメントです。Eclipseユーザはまずこの文書を読み、いくつかの概念の違いを頭の片隅においてください。これを読んででいないと'Project'や'Module'が何のことを指しているかわからず、かなり苦しいと思われます。それからキーバインドEclipse互換のものに設定してください。これでだいぶ楽になるはずです。


この翻訳が、EclipseユーザがIDEAに親しむ手助けになれば幸いです。

ワークスペースはどうなったの?プロジェクトはどこにあるの?

問題ありません。ただ、すこしやり方がちがうのです。

IDEAで は、作業対象となるコードベース全体に対してプロジェクトを作成し、そのプロジェクトの各コンポーネントに対してモジュールを作成します。IDEAでの モジュールはEclipseでのプロジェクトのようなもので、IDEAでのプロジェクトは大まかに言えばEclipseワークスペースに似ています。Eclipseワークスペースは作業対象全てを含んでおり、IDEAのプロジェクトはEclipseワークスペースとは完全に同じではないですが、IDEAでは複数のプロジェクトを個別のウィンドウで同時に開くことができます。


この表はEclipseとIDEAの概念が互いにどう対応するか理解するのに役立つでしょう。

Eclipse IDEA
Workspace (ワークスペース) Project
Project (プロジェクト) Module
Project-specific JRE(プロジェクトのJRE) Module JDK
User library (ユーザライブラリ) Global library
Classpath variable(クラスパス変数) Path variable
Project dependency (プロジェクトの依存関係) Module dependency
Library (ライブラリ) Module library

Eclipseのプロジェクトを開くには?

とても簡単です。Eclipseプロジェクトをインポートするか、あるいはEclipseプロジェクトに同期することができます。

IDEA はEclipseのモジュール間の依存関係をサポートするので、EclipseプロジェクトをIDEAで同期させることができ、使用するIDEが混 在したチームであってもうまくいきます。Eclipseへの後方互換性が不要であれば、EclipseプロジェクトをIDEA固有のフォーマットへとイン ポートすることもできます。Mavenを使っているなら、直接pom.xmlを開くことができます。IDEAはpom.xmlを参照して、全依存関係のインポートを、必要であれば依存ライブラリのダウンロードを、その他全てのセットアップを完全にこなします。

‘Facet’というのは何のためにあるの?

プロジェクトの設定が簡単にできるようにするためです。

Facet’は、様々なフレームワークやテクノロジ、プログラミング言語のサポートをカプセル化します。例えば、プロジェクトでSpringを有効にする場合 は、それに応じた’Facet’を追加するだけです。全てのライブラリがダウンロード・構成され、最大限のコード補完やリファクタリングを行うことが できます。さらには、コードモデルも認識されるので、設定に関する問題で煩うことも全く無くなります。


大抵の場合、同じタイプのファセットを1つ以上プロジェクトに追加します。例えば、アプリケーションを異なるサーバにデプロイするのに複数のWebファセットを追加したり、EJBのバージョンに応じて複数のEJBファセットを追加したりします。
('Project Configuration'も参照してください)

プロジェクトのJDKを設定するには?

‘Project Settings’ダイアログで設定します。


プロジェクトにJDKを追加するには、Ctrl+Alt+Shift+Sを押し、’Platform Settings’の’SDKs’をクリックしてJDKへのパスを指定します。その後、’Project’をクリックして、設定したJDKのうちどれを現在のプロジェクトで使用するかを指定します。JDKIDE単位で設定される点に注意してください。別のプロジェクトを作った場合には、同じJDKをもう一度追加する必要はありません。

プロジェクトにファイルを追加するには?

ファイルをプロジェクトのフォルダにコピーするだけです。

IDEAはプロジェクト内のファイルに対する全ての変更を監視し自動で適切に対処します。

設定を共有するには?

プロジェクト単位で設定を共有します。

IDEAには、コードスタイル実行構成・コード検査などプロジェクトレベルの設定がたくさんあります。これらの設定はプロジェクト記述ファイルに保存されるので、チーム全員で使用できます。


また、IDEAサーバ経由で設定を同期させて、どのコンピュータのIDEAでも好みの設定を使うこともできます。('IDE Setting Synchronization'を参照してください)

Code template(コード定型文)を設定するには?

Settingsダイアログから設定します。

IDEAでは、’Live Template’(定義済みのコードの断片)を使うことができます。関連付けされた略語を入力することで、’Live Template’を呼び出すことができます。’Live Template’は、パラメータを含んでいることがあり、挿入される箇所の文脈に応じて自動調整されます。コード中でテンプレートをどのように使用するか、詳細についてはここを参照してください。’Live Template’を管理するには、Ctrl+Alt+S を押下して’Settings’ダイアログを開き、’Live Templates’をクリックします。(’Code Generation’も参照してください)。

ファイルが保存されたことを確認するには?

心配しないでください。ファイルはすべて自動で保存されます。

IDEAを使えば、別アプリに切り替えたり、コンパイルしたり、コードを動かしたり、バージョン管理システムの操作をしたりする際に、ファイル保存に煩わされることはありません。更に安全にするために、一定時間ごとに自動保存することもできます。思わしくない変更を元に戻したい場合、’Local History’を利用できます。これはIDEA内蔵のバージョン管理システムです。

差分コンパイルはどうなったの?コンパイルはどうやるの?

差分コンパイルはありますが、若干やり方が異なっています。

デフォルトでは、IDEAは必要になるまで(アプリケーションを動作させたり、手動でビルドを実行するまで)ファイルをコンパイルしません。その時点ではもっと重要なタスクのためにシステムリソースを節約します。コンパイルは差分コンパイルで行います。IDEAはソースファイル間の依存関係を監視し、 ファイルが変更されたときだけ再コンパイルします。


コンパイルエラーのあるファイルと、そのファイルを含むフォルダはハイライトされます。
なので、Projectビューから簡単にエラーを調査できます。コンパイルエラーのある全てのファイルの一覧を見るには、’Project’ビューの’View As’コンボボックスでスコープを’Problems’を選択します。IDEAはコンパイルを行った後、ファイルにエラーがないか定期的にバックグラウンドでコード解析を行います。エラーが修正されたら自動的に赤いハイライトは消えます。


ファイルが保存される度にコンパイルを行えるように、’EclipseMode’プラグインを使うことができます(このプラグインサードパーティ製でありバンドルされていません)。


コンパイルエラーがあるコードを実行するには、Settingsダイアログ-Compiler- Java CompilerでEclipseコンパイラを選択肢、コンパイラに対する追加コマンドライン引数に-proceedOnErrorを指定します。

コード検査の設定にはどのようなオプションがありますか?

IDEとプロジェクトレベルのプロファイルに加え、ファイルごとの検査設定があります。


IDEAでは、コード検査の一式(プロファイル)を定義できます。IDEレベルのプロファイルは、現在のマシン上の全プロジェクトで使用できます。プロジェクトレベルのプロファイルはチームメンバー全員で使うことができます。ソースコード検査に関するより詳細な情報はここにあります。


コード検査のプロファイルを設定するには、Settingsダイアログを開くか、ツールバーのアイコンをクリックします。


コード検査を個別に設定することも可能です。電球のポップアップは問題を報告します。電球が表示されたときに、Alt+Enterを押して、右矢印を選択しメ ニューを開きます。そこで、現在のファイルかあるいはプロジェクト全体を対象にして、この検査を設定するかあるいは抑止するかを設定できます。

使い慣れたキーボードショートカットはどこにいったの?

ここにあります。

IDEAはEclipseのキーマップを含んでいるので、使い慣れたショートカットキーが使いたい場合は、Settingsダイアログ Keymapから、Eclipseのキーマップを選択することができます。


IDEAのキーボードショートカットを覚えたい場合には、デフォルトキーマップリファレンスをヘルプメニューから参照したり印刷することができます。

エディターの動きが違うように感じるのですが?

そのとおりです。

Eclipseでは、バーチャルスペース(カーソルを行末より後ろに動かせるようにする)はデフォルトでは無効化されています。IDEAのデフォルト設定は逆です。この設定を変更するには、Settings Editor、'Allow placement of caret after end of line'オプションのチェックを消します。


Eclipseは、カーソル上の識別子の使用箇所をデフォルトでハイライトします。この機能をIDEAで有効にするには、上記と同じ箇所にあるHighlight usages of element at caretをチェックします。

エディタタブの最大数があることにも注意してください('Setting dialog'で最大数を調整できます)。エディタタブの最大数に既に達している場合、新しいファイルを開こうとすると一番古いタブが自動的に閉じられます。

なぜコード補完の呼び出し方が3種類あるのですか?

補完するものが異なるからです。

IDEAには3種類のコード補完があります。この3つのコード補完は、作業中のコードに対して最も相応しい補完を常に選択できるように、それぞれ異なった働きをします。


例えば、補完候補が明らかで即座に補完を実行したい、という場合は、Ctrl+スペースを押下します。これをBasic Compilationと言います。この補完方法は、現在の文脈で利用できる補完の一覧を見たい場合や予約語を補完したい場合にも使えます。


より精密なコード補完が必要で、補完候補一覧を延々とスクロールしたくない場合は、Ctrl+Shift+Spaceを押して、型情報を利用して選択肢を狭めます。このようにして呼び出されたSmart Compiletionは候補一覧をフィルターし、望むものを素早く選ぶことができます。さらに、もう一度押すと、メソッドチェインした結果の補完も表示されます。


最後に、Class Names Completion(Ctrl+Alt+スペース)は、即座にクラス名を補完し、そのクラスがまだ参照されていない場合はインポート文を追加します。('Intelligent Coding Assisitance'を参照してください)

バージョン管理システム連携の設定はどうすればいいの?バージョン管理システムを自分のプロジェクトに追加するには?

‘Settings’ダイアログの’Version Control’から設定します。

IDEAでバージョン管理システムの初期設定をするには、バージョン管理システムの種類を選択し、サーバ名や認証情報のような接続情報を設定をし、プロジェクトフォルダを設定したバージョン管理システムに関連付けをします。


プロジェクトをバージョン管理システムに追加するには、単純にプロジェクトのルートフォルダをバージョン管理システムに関連付けするだけです。

バージョン管理システムの操作をするには?差分はどこで見るの?

専用の’Changes’ビューで行います。

Eclipseには同期パースペクティブがあり、ローカルとバージョン管理システムサーバ上のコードとの差分を示します。IDEAでは、この機能は’Changes’ビューのほんの一部です。このビューには、ローカルでの変更を示す’Local’タブや、他のチームメンバがチェックインした変更でまだ同期化されていないものを示す’Incoming’タブなどがあります。


外部の変更を追跡するには、’Change’ビューで’Incoming’タブを開き、’Refresh’ボタンを押下します。また、キャッシュの設定を行う必要があります。

バージョン管理システムからチェックアウトするには?

‘Welcome’画面から行います。

バージョン管理システムからチェックアウトしたソースからプロジェクトを作る場合、これが最も簡単な方法です。’Check out from Version Control’をクリックするだけです。

*1:周りに使い方をよく知っている人がいれば一番いいのですが、なかなかそういう人はいないのではないかと思います。

MacBookのハードディスク修復したらブートしなくなった

ディスクユーティリティでディスク修復

最近Macbookの調子がよろしくないので、
ディスクユーティリティでディスク修復してみました。
ブートドライブは通常ではディスク修復はかけられないので、
インストールDVDでブートした状態でやります。


修復は、ノードがおかしいとかなんとかいわれて失敗。
あきらめてデータのバックアップとってからクリーンインストールしようと
再起動したが、HDDからブートできない。。。

ターミナルでバックアップする

FTP

ターミナル.appは立ち上がるので、なんとかなるだろうと、
とりあえず、Windowsマシンにftpdを立ち上げて、ファイル転送しようとしたら、
パス上にftpがない。しょうがないので、HDD上のftpコマンドを起動したが、
よくよく考えると、ディレクトリまるごと転送できないことに気が付きました。

SMB

パス上にmount_smbというのがあるので、試してみたが、
ライブラリがないよ、みたいなエラーがでた。
ぐぐったらやっぱり無理っぽい。どこみたかわかんなくなったけど、
そのページを見ると、mount_afp*1というのだけは使えるらしい。

AFP

Windows側で、ExtremeZ-IP
というのを使えば、サーバになれるとのことで、トライアル盤をインストール。

 mount_afp afp://hoge:fuga@192.168.1.11/temp /mnt/temp

(ユーザとパスワードはWindowsOS上で作っとかないとだめみたい。)


みたいなかんじでマウント。無事マウントできて、ファイルはコピーできました。

おしまい

ぐぐってみると同じような症状の人がいました。
mac OS-X leopard HDD トラブル 起動しない ノードエラー サルベージ


ディスク修復する前に、バックアップしておいたほうが安全かもしれません。

*1:Apple Filing Protocol