3.2 の新規機能 (JDT)

ここでは、Java 開発ツール Eclipse の リリース 3.2 で変更された新機能のうち、特筆すべきものおよび重要なものの一部を紹介します。 以下のようにグループ化して説明します。

同様に、プラットフォーム内の変更について、Eclipse プラットフォーム 3.2 の新規機能 も参照してください。

Java リファクタリング

「間接参照の導入」リファクタリング

間接参照の導入」は、メソッドのすべての呼び出し元を新規のメソッドにリダイレクトさせる新規のリファクタリングです。 新規のメソッドが元のメソッドを呼び出します。 必要な場合は、新規のメソッドのデフォルトの実装を、ほかの実装で置き換えることができます。

このような間接化は、新規の振る舞いがメソッドに導入される必要があり、しかも以下のようであるときに役に立ちます。

  • メソッドが、ライブラリーから得られたものであるため変更できない。
  • メソッドが API メソッドであるため、メソッドを変更してはならない。

間接化は、オリジナル・メソッドに対するバグ修正として使用するか、またはメソッドに対するすべての呼び出しの前または後で、簡単にコードを追加するための方法として使用します。

間接参照の導入」リファクタリングを実行するには、メソッドを選択し、「リファクタリング」>「間接参照の導入...」を呼び出し、新規メソッドの名前と宣言されているクラスを提供します。

「間接参照の導入」ダイアログ

メソッドは選択済みの宣言されているクラスに追加されます。

更新された参照を持つ「間接参照の導入」プレビュー

そして、すべての参照が、新規のメソッドを呼び出すように更新されます。

間接参照の導入後の結果

「スーパークラスの抽出」リファクタリング

兄弟型のセットから共通のスーパークラスを抽出する「スーパークラスの抽出」と呼ばれる新規のリファクタリング。 選択された兄弟型は、リファクタリングの適用後に、抽出されたスーパークラスの直接のサブクラスになります。 また、「スーパークラスの抽出」を使用すると、コード内で可能な場合はいつでも 、抽出されたスーパークラスを使用することが可能になります。

以下の例で、JavaEditorTests および PropertiesEditorTests は兄弟型です。 最初のピクチャーは、リファクタリング前の型階層を表示しています。

EditorTests を抽出する前の階層

次のピクチャーは、Extract Superclass リファクタリングを使用して EditorTests を抽出したあとの型階層を表示しています。

EditorTests を抽出したあとの階層

このリファクタリングを呼び出すには、「リファクタリング」>「スーパークラスの抽出...」を使用します。

「クリーンアップ」ウィザード

クリーンアップ」は、任意の数の Java ソース・ファイルまたはパッケージ、または Java プロジェクト全体上で呼び出すことができます。 これは、以下の場合に役立ちます。

  • 一度に複数の問題を修正する
  • コードが優先コード・スタイルを使用するようにする

以下に、どのようなことができるのかを、いくつかの例で示します。

  • すべての「if」、「while」または「for」本文に中括弧 (ブロック) を使用するように強制します
  • すべてのフィールド・アクセスを「this」で修飾します
  • 可能な場合は「final」を使用します

Java 1.4 互換コードを 5.0 にするには、「クリーンアップ」を使用して以下のことを行います。

  • 可能な場合は、すべての for ループを拡張 for ループに変換します
  • すべての上書きメソッドを @Override 注釈でマークします。

「クリーンアップ」ウィザード

プロジェクト、パッケージ、またはファイルを選択して「ソース」>「クリーンアップ...」を使用し、このウィザードを開始します。

リファクタリング・ヒストリー

JDT によって提供されるリファクタリングのほとんどは、リファクタリング・ヒストリー内で追跡されるようになりました。 リファクタリング・インフラストラクチャーは、ご使用のワークスペース上で実行されたリファクタリングについての詳細情報を保管します。

リファクタリング・ヒストリーは、「リファクタリング」>「ヒストリー...」を使用して参照および編集することができます。

「リファクタリング・ヒストリー」ダイアログ

リファクタリング・スクリプトの作成と適用

ローカル・ワークスペース上で実行されたリファクタリングを、「リファクタリング・スクリプト」内にエクスポートし、任意のワークスペース上でリプレイすることが可能になりました。

このようなリファクタリング・スクリプトは、ソフトウェア・レイヤー間の API の大幅な変更の自動修正、またはリッチ・セマンティクスを含むパッチの提供などの、さまざまなシナリオで使用できます。

リファクタリング」>「スクリプトの作成...」を使用して、リファクタリング・ヒストリーからリファクタリング・スクリプトを作成します

スクリプト・アクションの作成

生成されたリファクタリング・スクリプトを任意のワークスペース上に適用するには、「リファクタリング」>「スクリプトの適用...」を使用します。

新規拡張ポイントにより、プラグイン作成者が、新規のあるいは既存のリファクタリングに関するリファクタリング・スクリプト・サポートを提供できるようになりました。 詳しくは、org.eclipse.ltk.core.refactoring.refactoringContributions 拡張ポイントを参照してください。

リファクタリングを含む JAR ファイル・エクスポート

ワークスペースから JAR ファイルをエクスポートする場合、「JAR エクスポート」ウィザードは、JAR ファイル内にリファクタリング情報を含めるためのオプションを提供します。

ファイル」>「エクスポート...」を使用して、「JAR ファイル」を選択します。 「JAR エクスポート」ウィザードの最初のページで、「検査済みプロジェクトのリファクタリングをエクスポート」を選択します。 リンク上をクリックして、含めるリファクタリングを選択します。

JAR エクスポート・リファクタリング選択

クライアントは、「リファクタリング」>「JAR ファイルのマイグレーション...」リファクタリングを使用して、古いバージョンの JAR ファイルを新しいバージョンにマイグレーションすることができます。 JAR ファイルが現在選択されている場合は、「ビルド・パス」>「JAR ファイルのマイグレーション...」を使用することもできます。

「JAR ファイルのマイグレーション」アクション

このリファクタリングは、古いバージョンの JAR ファイルに依存しているすべてのコードを、新しいバージョンの JAR ファイルを使用するように自動的に更新します。

API 対応リファクタリング

リファクタリングされたメンバーの委譲メンバーとしてオリジナル・メンバーを保持することによって API 互換性をサポートするために、いくつかの既存のリファクタリングが拡張されています。

  • メソッドの名前変更
  • フィールド名の変更 (定数用のみ)
  • メソッドの移動
  • パラメーターの導入
  • シグニチャーの変更

「リファクタリングされたメンバーの委譲メンバーとしてオリジナル・メンバーを保持」のための「チェック・ボックス」

API 互換性を保持するための委譲メンバーの生成は、リファクタリング・ダイアログで「メソッドの名前変更の委譲としてオリジナル・メソッドを保持」をチェックすることで使用可能にできます。

型の名前変更により名前付き要素も同様に更新されます。

型の名前変更」リファクタリングは、名前変更された型と同様の名前で変数およびメソッドを名前変更することができるようになりました。 この機能は、メソッド名および変数名と型名との同期化を保持するのに役に立ちます。

同様の宣言 UI の更新

このリファクタリングを呼び出すには、型を選択して、「リファクタリング」>「名前変更...」を使用します。

「パッケージ名の変更」リファクタリングがサブパッケージの名前変更を行う

パッケージ名の変更」リファクタリングは、要求に基づいてサブパッケージの名前変更も行うようになりました。

新規のチェック・ボックスを備えた「パッケージ名の変更」ダイアログ

この例では、junit.samples.moneyjunit.examples.money に名前変更されます。

このリファクタリングを呼び出すには、パッケージを選択して、「リファクタリング」>「名前変更...」を使用します。

「リファクタリング・プレビュー」のフィルター操作

「リファクタリング・プレビュー」ページは、変更のフィルタリングをサポートするようになりました。 これは特に、Java 要素の名前変更中にコメントおよびストリング内のテキスト一致の更新が要求されるときに役に立ちます。

「フィルタリングされたリファクタリングのプレビュー」ページ

スクリーン・ショットは、クラス TestCaseTestCasee に名前変更するときに、テキスト一致のためにフィルタリングされた「名前変更」ダイアログを表示します。

Java 要素の可視性に関係する変更もフィルタリングされるようになりました。

Java エディター

カスタマイズ可能なコンテンツ・アシスト

コンテンツ・アシストを繰り返して起動すると (ほとんどのプラットフォーム上では Ctrl+Space)、さまざまなプロポーザル・カテゴリーが循環するようになりました。

お気に入りのプロポーザル・カテゴリーに個々のキー・ショートカットを割り当て、 「拡張コンテンツ・アシスト」設定ページを開くJava」>「エディター」>「コンテンツ・アシスト」>「拡張設定ページを使用して、デフォルトのコンテンツ・アシスト・ポップアップでどのカテゴリーを表示するのかを構成することができます。

Java プロポーザルを備えたコンテンツ・アシスト・ポップアップ。繰り返し起動するとテンプレート・プロポーザルが表示されます

プラグイン・ライターは、新規の org.eclipse.jdt.ui.javaCompletionProposalComputer 拡張ポイントを使用して、コンプリート機能のプロポーザルおよびカテゴリーを Java エディターのコンテンツ・アシスト・プロセスに提供することができます。

コーディング・コンプリート機能におけるラクダ記法のサポート

コーディング・コンプリート機能は、ラクダ記法パターンをサポートするようになりました。 例えば、NPE でコンプリート機能が使用されると、NullPointerException を提案します。 このサポートは、 「コンテンツ・アシスト」設定ページJava」>「エディター」>「コンテンツ・アシスト設定ページ上の「ラクダ記法のものも表示」設定を使用して使用不可にできます。

NPE での Java エディターのコンプリート機能

コードを囲むクイック・メニュー

新規の「囲む」クイック・メニューを使用すると、コードを含む選択された行を囲むことができます。 このメニューは、カスタム・テンプレートで拡張できます。 テンプレートが、プルする必要がある変数、および final にする必要がある変数を認識するようになりました。

実行可能コード変換で囲む

ソース」>「囲む」を使用するか、または「Alt+Shift+Z」を押して、直接メニューを表示します。

カスタム・テンプレートを「Java」>「エディター」>「テンプレート」設定ページ上に追加できます。テンプレートが必要とするのは、${line_selection} 変数です。

新規クイック・フィックス

いくつかの新規クイック・フィックスが追加されました。例えば、以下のものが挙げられます。

  • raw 型アクセスの修正

    Raw アクセスの修正プロポーザル

    クイック・フィックスは、同じファイル内の使用法から情報を収集します。 より洗練された分析を行うためには、「総称型引数の推測」リファクタリングを使用します。

  • 「欠落している注釈を追加」属性

    「欠落している注釈」属性のクイック・フィックス

  • 新規の注釈メンバーを追加します

    新規注釈メンバーのクイック・フィックス

カテゴリー・サポート

カテゴリーは、Javadoc コメント内で @category タグを使用して、タイプ、メソッド、およびフィールドについて定義できます。

カテゴリーを使用するコード

カテゴリーは、クイック・アウトライン内のアウトライン・ビューおよびメンバー・ビューで表示されます。 ビュー・メニューを使用して表示カテゴリーを選択することができます。

カテゴリーおよびカテゴリー・フィルターを表示するアウトライン

すべてのメンバーは折りたたみ可能です

折りたたみが使用可能になっている場合、フィールド、イニシャライザーおよびそのコメントもメソッドと同じ方法で折りたためるようになりました。

折りたたまれたフィールド・イニシャライザー

すべてのコメントを縮小し、すべてのメンバーを縮小し、折りたたみ構造をリセットするための、新規のテキスト折りたたみコマンドが用意されています。 これらのコマンドは、垂直方向ルーラー上の、Java エディターの折りたたみコンテキスト・メニューにあります。

ワークスペース外の Java ファイルのルーラー・サポートとアウトライン

Java エディターが垂直方向ルーラーおよびアウトライン・ページを表示するようになり、また、クイック・アウトラインが外部 Java ファイルおよびリポジトリーからの Java ファイルのアウトラインを表示できるようになりました。

ルーラー・サポート

Java コンパイラー

Java SE 6.0 準拠

Java SE 6.0 準拠が完全にサポートされるようになりました。 特に、StackMapTable 属性 (JSR 202 を参照してください) が、1.6 をターゲットとして .class ファイル内に生成されるようになりました。

6.0 準拠の設定

NULL 参照分析

Java コンパイラーは、ローカル変数の基本 NULL 参照分析を実行できるようになりました。

このオプションの診断は、「潜在的なプログラミングの問題」>「NULL 参照」設定を使用して、 「エラー/警告」設定ページを開くJava」>「コンパイラー」>「エラー/警告設定ページで使用可能にできます。

NULL 参照警告を備えた Java エディター

分析はかなり保守的であり、一定の割り当て規則に従っていることに注意してください。 すべての可能なケースについて忠告するわけではなく、疑わしいことがあるケース (例えば、あとで NULL 検査が実行される場合など) のみを考慮します。

5.0 準拠モードでは、NULL 参照警告は @SuppressWarnings("null") を使用して抑制することができます。

改良された構文リカバリー

内部 Java パーサーは、構文エラーがある場合に、より柔軟に対応するようになりました。 Eclipse 3.1 では、構文エラーがあると後続のエラーが表示されなくなりました。 パーサーは、エラーのあるステートメントからリカバリーして、さらに分析を実行を続けられるようになりました。

以下の例では、前のステートメントでセミコロンが欠落しているにもかかわらず、メソッド bar() への無効な参照が検出されています。

構文リカバリーを備えた Java エディター

例えばこれにより、単一ファイルにのみ影響するリファクタリングで、構文エラーを許容することが可能になります。 例えば、まだ完全に書かれていないメソッドの先頭にあるローカル変数を、名前変更または抽出できるようになりました。

不完全なメソッド内のローカル変数の抽出

構成可能エラーを致命的ではないエラーとして処理

「ビルド」設定ページを開くJava」>「コンパイラー」>「ビルド設定ページ上のオプション「構成可能エラーを致命的エラーとして処理する」を使用して、構成可能エラーを致命的エラーにするかどうかをコントロールできます。 このオプションはデフォルトで使用可能になっています。

このオプションが使用不可になっている場合は、コンパイルされたコードは、コード内にエラーが存在していても実行できます。

不要な $NON-NLS$ タグの検出

不要な $NON-NLS$ タグが検出されるようになりました。 行コメントが //$NON-NLS-x$ で開始され、同じ行に対応するストリングが存在しない場合は、問題が報告されます。

レポートのオン/オフは、非外部化ストリングの検出と同じ設定を使用して切り替えることができます。 オン/オフは、 「エラー/警告」設定ページを開くJava」>「コンパイラー」>「エラー/警告設定ページ上で、「コード・スタイル」>「非外部化ストリング (欠落/未使用 $NON-NLS タグ)」設定を使用して設定可能です。

不要な NLS タグを含む Java エディター

不要なタグを除去するためには、クイック・フィックス (Ctrl+1) を使用するか、または Ctrl+1、Ctrl+Enter を使用して、コンパイル単位内のすべての不要なタグを除去します。

raw 型使用の検出

raw 型の使用が検出されるようになりました。 raw 型とは、型引数を持たない総称型のことです (例えば、List<Element> と比較した場合の List)。

このオプションの診断は、未検査の型操作から独立して、「総称型」>「raw 型の使用」設定を使用して、 「エラー/警告」設定ページを開くJava」>「コンパイラー」>「エラー/警告設定ページ上で使用可能にできます。

raw 型を使用する Java エディター

この警告は、@SuppressWarnings("未検査") を追加することによって抑制できます。

また、raw 型の使用の問題を解決するための支援として、クイック・フィックスを実装しました。

メソッド・パラメーター割り当ての検出

メソッド・パラメーターへの割り当ては、不良な動作とみなされます。

このような割り当てを検出および報告するには、 「エラー/警告」設定ページを開くJava」>「コンパイラー」>「エラー/警告設定ページを開いて、「コード・スタイル > 「パラメーター割り当て」設定を使用可能にします。

パラメーター割り当て警告が出された Java エディター

未使用ラベルの検出

Java コンパイラーは、未使用のステートメント・ラベルを検出するようになりました。

このオプションの診断は、 「エラー/警告」設定ページを開くJava」>「コンパイラー」>「エラー/警告」設定ページ上で、「不要なコード」>「未使用の break/continue ラベル」設定を使用して使用可能にできます。

raw 型を使用する Java エディター

switch case のフォールスルーの検出

Java コンパイラーは、前の case をフォールスルーして case に入った場合にそれを検出できるようになりました。 空の case が許可されます。

このオプションの診断は、 「エラー/警告」設定ページを開くJava」>「コンパイラー」>「エラー/警告設定ページ上で「潜在的なプログラミングの問題 」>「Switch case のフォールスルー」設定を使用して使用可能にできます。

フォールスルー警告が出された Java エディター

break ステートメントを前の case に追加するクイック・フィックスが実装されました。

大きな .jar ファイルのパフォーマンスの改善

内部 Java モデル・キャッシュのサイズ制限は Eclipse IDE を実行する Java 仮想マシンに割り当てられ、最大ヒープ・サイズ (ほとんどの JVM 上の -Xmx VM 引数) の関数になりました。

大きな .jar ファイルがビルド・クラスパス上にあるときは、ヒープ・サイズを大きくすることにより、パフォーマンスが大幅に向上します。

変更された .class ファイルの再作成

Java ビルダーは、オリジナル・ソースを使用して、出力フォルダー内の変更された、または除去された .class ファイルを再作成できるようになりました。

これは、 「ビルド」設定ページを開くJava」>「コンパイラー」>「ビルド」設定ページ上で、「出力フォルダー」>「その他によって変更されたクラス・ファイルを再ビルド」設定を使用して、制御できます。

接続された Javadoc からの Javadoc ビューとツールチップ

Javadoc ビューと Javadoc 吹き出しは、接続されたソースを持たないライブラリーに関して、接続された Javadoc から情報を抽出するようになりました。

JUnit ツール

JUnit 4 サポート

JUnit サポートが更新され、JUnit 4 テストを実行および作成できるようになりました。 JUnit 4 について詳しくは、www.junit.org を参照してください。

  • 新規 JUnit テスト・ケース」ウィザードを使用して、JUnit 4 テスト・クラスを生成します。
    「新規テスト・ケース」ウィザード内の JUnit 4 サポート
  • 提供された JUnit ライブラリーをビルド・パスに追加します。
    クイック・フィックスを使用した JUnit 4 ライブラリーの追加
  • JUnit として実行で、通常通りに JUnit 4 テストを起動します。
  • テストを無視するには、テストに @Ignore というタグを付けます。

JUnit ビュー・ヒストリー

JUnit ビューは、複数の並行テスト実行を取り扱えるようになりました。 新規のヒストリーを使用して、アクティブなテスト実行と最近のテスト実行を切り替えることが可能です。 テストは、すでに実行中のテストを停止することなく、ヒストリーから再実行することが可能です。

JUnit ヒストリー

これは JUnit 4 の場合と同様に、JUnit 3 でも作動します。

Java デバッガー
実行環境

実行環境は、ランタイム (例えば、J2SE-1.4) の機能を記述します。 実行環境の参照を基にした実行、デバッグおよびビルドのために使用される JRE を指定することができます。 新規の 「実行環境」設定ページを開くJava」>「インストール済み JRE」>「実行環境設定ページが、各実行環境と互換性のあるワークスペース内にインストール済みの JRE を表示します。 実行環境の要求と正確に一致した JRE は太字で表示され、環境の要求を上回る JRE はデフォルト・フォントで表示されます。 複数の JRE が実行環境と互換性を持つ場合は、JRE をチェックすることによって、その環境のために使用するデフォルト JRE を選択することができます。

「実行環境」設定ページ

実行環境を参照しているビルド・パスまたは起動構成は、明示的 JRE を参照しているものよりもポータブルです。JRE の実行環境はその名前と独立に解決できるからです。 JRE タブまたは「ライブラリーの編集」ウィザードを使用して、実行およびビルドのための実行環境を指定します。

「起動構成」ダイアログ内の JRE タブ

システム・プロパティー起動変数

新規の起動変数によって、Eclipse ランタイムから、Java プログラムおよび VM 引数としてシステム・プロパティーを動的に指定できるようになりました。 変数は、起動時に解決されるシステム・プロパティーの名前である単一引数を受け入れます。

例えば、java.home システム・プロパティーは、${system_property:java.home} で参照されます。

「起動構成」ダイアログ内の引数タブ

配列の評価サポート

評価およびコンテンツ・アシストが、Java 配列のためにサポートされるようになりました。 特定の配列を参照するには、this を使用します。

「変数」ビュー内のコード・アシスト

Java スレッド・グループ

ビュー・メニュー内の「スレッド・グループの表示」を切り替えることによって、「デバッグ」ビュー内のスレッド・グループを表示できるようになりました。

「デバッグ」ビューでのスレッド・グループの使用可能化

ランタイム・クラスパスのエクスポートされたエントリー

ランタイム・クラスパスは、ビルド・パスからエクスポートされたエントリーのみを含むように構成することができます。 デフォルトでは、ランタイム・クラスパスは、すべてのエントリー (エクスポートされたものおよびエクスポートされたのではないもの) を含みます。

クラスパス」タブから、デフォルトのエントリーを選択して、「編集...」ボタンを使用してオプションを構成します。

「起動構成」ダイアログ内の「クラスパス」タブ

「ランタイム・クラスパス」ダイアログの編集

スレッドの中断と VM の中断

「デバッグ」設定ページを開くJava」>「デバッグ設定ページにオプションが追加され、新規に作成されたブレークポイントが、単一スレッドを中断するのかまたは VM 全体を中断するのかをコントロールできるようになりました。

デバッグ設定ページ

その他

Java タイプ・インディケーター

「デコレーター」設定ページを開く一般」>「外観」>「ラベル装飾設定ページで「Java タイプ・インディケーター」を使用可能にすると、コンパイル単位内またはクラス・ファイル内の最初の型が何であるのかを検索できます。 インターフェース、注釈、および列挙については装飾が表示されますが、通常のクラスは装飾されないままです。

タイプ・インディケーターのラベル装飾子

壊れた外部化されたストリングの検索

新規のアクションにより、壊れた外部化されたストリングを検索できます。 この検索により、欠落したキー、未使用のキー、および重複したキーが報告されます。

「壊れた外部化されたストリングの検索」アクション

検索を開始するには、プロパティー・ファイル、パッケージ、またはプロジェクト全体を選択し、「ソース」>「壊れた外部化されたストリングの検索」を使用します。

Eclipse のストリング外部化機構のサポートの改善

Eclipse のストリング外部化機構は、従来のストリングの外部化と同じ種類のサポートを行うようになりました。 Java エディターで外部化されたストリングのキーの入力に手間取っている場合、関連する外部化された値が吹き出しに表示されます。

NLS 吹き出し

キーを Ctrl+ クリックして、対応するプロパティー・ファイルのエントリーに直接ナビゲートします。プロパティー・ファイル・エディターで Ctrl+ クリックを使用して、コード内のどこでそのキーが使用されているのかを検索します。

例スニペットから型を作成

Java の型を含むコードのスニペットを、パッケージまたはソース・フォルダーに直接貼り付け、新規コンパイル単位を作成することができます。 例えば、以下のソース・コードを選択してコピーします。
package pack;
   public class HelloWorld {
      public static void main(String[] args) {
        System.out.println("Hello World");
    }
}
次にパッケージ・エクスプローラーでソース・フォルダーを選択して、Ctrl+V (「編集」>「貼り付け」) を使用します。 これにより、コピーされたコンテンツを使用して新規パッケージ「pack」およびファイル「HelloWorld.java」が自動的に作成されます。

hashCode() および equals() の生成

メソッド hashCode() および equals() を生成するために、新規のアクションが使用できます。 実装の基になるフィールドを選択することができます。

hash および equals ウィザードの生成

このアクションを呼び出すには、型を選択して、「ソース」 >「hashCode() および equals() の生成...」を使用します。

コマンド行のコード・フォーマッター

新規のヘッドレス・フォーマッター・アプリケーションを使用して、Eclipse UI を開始せずにソース・コードをフォーマットできるようになりました。 コマンド行フォーマッターは、標準の Eclipse アプリケーションとして機能します。

以下のコマンドは、フォルダー src 内に、config.prefs ファイルで指定されたオプションを使用して、ソース・ファイルをフォーマットします。

eclipse -application org.eclipse.jdt.core.JavaCodeFormatter -config d:/config.prefs c:/src

詳しくは、フォーマッター・アプリケーションの使用を参照してください。

Java 類似拡張子のサポート

.java 以外のファイル拡張子を持ち、pure Java コードを含むファイルがサポートされるようになりました。 Java 類似拡張子は、 「コンテンツ・タイプ」設定ページ一般」>「コンテンツ・タイプ設定ページ (「テキスト」>「Java ソース・ファイル」と入力) を使用して追加できます。

「Y.abc」をコンパイル単位とするパッケージ・エクスプローラー