【社内勉強会】Eclipseマスターへの第一歩を踏み出す(2017/04/12) 



# 0.はじめに

-----------------
## 対象者
* Eclipse4.6でJavaを使っている人
    - [Pleiades All in One(Java Standard Edition)](http://mergedoc.osdn.jp/pleiades-redirect/4.6/pleiades_java-win-64bit.zip.html?v=20170323)

-----------------
## 伝えたいこと
* Eclipseの便利なショートカット、ビュー



-----------------
## 目次
1. Eclipseの概要
2. エディタで使うショートカット・機能
3. デバッグ
4. パースペクティブとビュー
5. その他

-----------------
# 1. Eclipsの概要

-----------------
## Eclipseとは？
Javaのオープンソース開発統合環境（Integrated Development Environment, 以下IDE)。

* Java上で動作する。
* プラグインの導入によって、C#やPHPなど様々な言語に対応できる。
* 「Eclipse」の意味は「日蝕」、「月蝕」


-----------------
##  Pleiades All in Oneとは？

Eclipse本体、日本語化プラグイン、便利なプラグインをセットしたパッケージ。
発音は「プレイアデス」。「惑星」を意味する。


-----------------
##  Eclipseのコードネーム

![Eclipseバージョン.PNG](https://qiita-image-store.s3.amazonaws.com/0/37903/78ac6e17-fd99-2a70-eddb-18877af54812.png)

天体、神、科学に関するコードネーム。


-----------------
# 2.エディタで使うショートカット・機能

-----------------
### カーソルの移動・選択(一般)

* [Try]矩形選択：`Alt + Shift + A`
* [try]選択範囲の拡大/縮小：`Alt + Shift + Up` / `Alt + Shift + Down`
* 最後の編集位置：`Ctrl + Q`
* ヒストリーを戻る/進む：`Alt + Left` / `Alt + Right`
* 単語の境界単位で移動: `Ctrl + Left` / `Ctrl + Right`　

-----------------
### カーソルの移動・選択(Java)

* [Try] 対応する括弧にジャンプ：`Ctrl + Shift + P`
* 前/次のメンバーへジャンプ：`Ctrl  + Shift + Up` OR `Ctrl  + Shift + Down`
* 宣言に移動/宣言を開く：`F3`
* 型階層を開く：`F4`
* [Try] 呼び出し階層を開く：`Ctrl + Alt + H`


-----------------
### カーソルの移動・選択(XML, HTML,JSP)

* [Try] 一致するタグに移動：`Ctrl + Shift + >`
* 前/次の兄弟タグに移動：`Ctrl + Shift + Up` OR `Ctrl + Shift + Down`


-----------------
### コードの編集(一般)

* 1行削除: `Ctrl + D`
* 現在行の下/上に行追加: `Shift + Enter` / `Ctrl + Shift + Enter`
* キャメルケース⇔スネークケースの変換：`Ctrl + Alt + K`
* 大文字に変換：`Ctlr + Alt + X`
* 小文字に変換：`Ctrl + Alt + Y`

-----------------
### コードの編集(Java)

* コメントの切り替え: `Ctrl + /`
* フォーマット：`Ctrl + Shift + F`
* [Try] インポートの編成：`Ctrl + Shift + O`
* 行単位の移動: `Alt + Up` / `Alt+Down`
* コンテンツアシスト（自動補完）：`Ctrl + Space`
* [Try] JavaDocの追加：`Alt + Shift + J`

-----------------
### コードの編集(XML, HTML,JSP)

* コメントの切り替え：`Ctrl + Shift + C`
* フォーマット：`Ctrl + Shift + F`


-----------------
### ウィンドウ(Java)

* [Try] 型の構造を開く：`Ctrl + F3`
* [Try] クイック階層を開く： `Ctrl + T`
* クイックアウトラインを開く：`Ctrl + O`
* ツールチップの表示(JavaDoc, DTD(XMLの定義)など：`F2`


-----------------
### リファクタリング(Java)
変更対象の参照元を修正してくれる。

* [Try] 名前の変更：変数名、メソッド名の変更
* メソッド・シグニチャーの変更：メソッドの引数、例外、戻り値の変更


-----------------
### ファイル内での出現個所検索(Java)

出現個所を検索してくれる

* [Try] 例外のスロー：例外を選択して、スローするコードを検索
* メソッド出口：メソッドの戻り値を選択して、return文の出現箇所を検索
* メソッドの実装：インターフェイスを選択して、実装メソッドを検索

```java
public void read() throws IOException {
  BufferedReader br = Files.newBufferedReader(Paths.get("sample.txt")); //マッチ
  Stream<String> lines = br.lines();
  lines.forEach(line -> {
      System.out.println(line);
  });
  br.close(); //マッチ
}
```

※選択するだけで、該当箇所をハイライトしてくれる。
<img width="354" alt="出現箇所検索.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/37903/ccd2687c-765c-4cb9-d9ea-38e863667fd8.png">



-----------------
# 3. デバッグ

-----------------
## デバッグ操作

* 指定行まで実行：`Ctrl + R`
* 条件付きブレークポイント：ブレークポイントを右クリック→「ブレークポイント・プロパティ」

-----------------
## デバッグ用のビュー

* 変数ビュー：変数の確認、変数の値の変更
* 式ビュー：式の確認
* 表示ビュー：メソッドの実行。途中でExceptionをスローしたいときに使う

http://progmemo.wp.xdomain.jp/archives/671#ec_debug_arbitrary3

-----------------
### ステップフィルタ
ステップインしたくないクラスを指定できる。

```java
String tmp = " abc ";
sample(tmp.trim()); //この行でステップインすると、最初に`String.trim`メソッドに入る 
```

設定画面の「Java→デバッグ→ステップ・フィルタ」で、「`java.*`」にチェック

![ステップフィルタ.PNG](https://qiita-image-store.s3.amazonaws.com/0/37903/b386ee10-8c69-d18f-803d-fd68a8b9fd79.png)



-----------------
# 4. パースペクティブとビュー

-----------------
## パースぺクティブ

和訳は「視点」。
行いたい作業によって切り替えて利用するワークベンチのレイアウト。

* 「パースペクティブの別名補完」で自分用の設定を保存できる。
* パースペクティブの切り替え：`Ctrl + F8` / `Ctlr + Shift + F8`
* [Try] アクティブ ビューまたはエディターの最大化：`Ctrl + M`
* [Try] エディターの即時切り替え：`Ctrl + E`
* 前/次のエディタ：`Ctrl + Shift + F6` / `Ctrl + F6`
* 前/次のビュー：`Ctrl + Shift + F7` / `Ctrl + F7`


-----------------
## 「プロジェクト・エクスプローラ」ビュー
プロジェクトのファイル構造を一覧するビュー。

* [Try]「エディターにリンク」：編集しているファイルがプロジェクトエクスプローラ上で選択状態になる。
* 「パッケージ・プレゼンテーション」：パッケージ表示を「階層/フラット」に切り替える
*  右クリック→「中にジャンプ」：表示するルート要素を変更


-----------------
## 「ブックマーク」ビュー
任意の行をブックマークできる。
エラー調査などに便利。

行番号が書かれている左側を右クリック→[Add Bookmark...]

http://javaworld.helpfulness.jp/post-37/


-----------------
## 「タスク」ビュー

ソース内での以下のタグは、「タスク」として認識される。

* TODO： バグがあって正常に動作しない
* FIXME：なにか作業が必要
* XXX：バグがあるが動作する

http://nobukit.cocolog-nifty.com/blog/2011/08/post-d01c.html

設定ウィンドウで「タスクタグ」を作成できる。


-----------------
# 5. その他

-----------------
## プロジェクトとワークスペース

* プロジェクト：作業単位
    - 設定方法：プロジェクトのプロパティ
    - 設定ファイル：`workspace/project(仮)/.settings/`

* ワークスペース：プロジェクトの集合
    - 設定方法：「ウィンドウ→設定」
    - 設定ファイル：`workspace/.metadata/`

【補足】
`.settings`フォルダをバージョン管理すれば、プロジェクト設定をチーム内で共有できる。
「プロジェクト固有の設定を可能にする」チェックをONにすること。

![プロジェクト固有の設定を可能にする.PNG](https://qiita-image-store.s3.amazonaws.com/0/37903/6042019b-50b7-90ad-8eb0-a99885383334.png)



-----------------------
## 私の設定

### 高速化
* ホバーの非表示：設定→Java→エディタ→ホバー→「最適な吹き出し」チェックをOFF
* コンテンツアシストの無効化：設定→[Java]→[エディター]→[コンテンツ・アシスト]→「自動有効化を使用可能にする」チェックをOFF

### その他
* コンソール出力の制限をなくす：設定→実行/デバッグ→コンソール→「コンソール出力の制限」チェックをOFFにする。
* メモリ使用量を表示：設定→一般→「ヒープ・ステータスを表示」チェックをON

-----------------
## プラグイン

### 私が使っているプラグイン
* [JsHint](http://jshint.com/about/)：JavaScript構文チェック。
* [StepCounter](https://github.com/takezoe/stepcounter)：ステップ数カウント。bat, shなど多くのファイルに対応している。またコメント部分のカウントにも対応している。

### 私が使えるようになりたいプラグイン
* [ERMaster](http://ermaster.sourceforge.net/index_ja.html)：ER図作成用。DBからのインポート/エクスポートに対応している。
* [CheckStyle](http://checkstyle.sourceforge.net/)：Javaのコーディングスタイルチェック。
* [FindBugs](http://findbugs.sourceforge.net/)：Javaのバグになりそうなコードをチェック


-----------------
### 参考サイト・図書

* [Eclipse ショートカット](http://so-zou.jp/software/tech/tool/ide/eclipse/shortcut/)
* [Eclipse 完全攻略 4.X](https://www.amazon.co.jp/Java%E3%83%87%E3%83%99%E3%83%AD%E3%83%83%E3%83%91%E3%83%BC%E3%81%AE%E3%81%9F%E3%82%81%E3%81%%BB%E7%95%A5-4-x%E5%AF%BE%E5%BF%9C%E7%89%88-%E7%9F%B3%E9%BB%92-%E5%B0%9A%E4%B9%85/dp/4797385294)
* [新人研修でドヤ顔で披露したらウケたEclipseのショートカット集](http://qiita.com/arai-wa/items/c2eb7387b5bf37b4ace4)

-----------------
# おわり