Eclipseの最近のブログ記事

 今日は、ブログも書かれている種田さんに夕食に誘われました。

 帰宅の電車が一緒という事もあり、帰りに種田さんと夕食に行ってきました。チームが違いますが、以前、6月からの常駐前までは週1回の組み込み同好会を開催していただき、私も参加していました。

 4月から一番忙しかった9月が終り、疲れていないかという事で食事に誘えって頂き、話の話題にも出てきました。お店の中では、MacやEmacsなどの話をしていましたが、Macを所有しておきながらMacを全然使用していなかったり、Linuxなども使用していなかったので、種田さんがMacでEmacsの実演をしていただきました。

 仕事やJavaを使用するときはEclipseを主に使っていましたが、Eclipseで出来る事はEmacsでも出来る事を教えていただき、他にもマウスを動かさないキー操作を教えていただきました。

 種田さんにはいろいろな技術を教えてもらい、少しづつですが、MacやEmacsを使用していこうと思います。

 せっかく、高性能なマシンを持っているのに、それを活用しなくてはもったいない。

今回のテーマとねらいです。

●テーマ
 Eclipseの活用方法
●ねらい
 Eclipseの機能でマシンを贅沢に活用する。


 現在のマシン(PC)は、十分なCPUパワーとメモリ容量が搭載されている。そこで、Eclipseの機能を使い、ちょっと贅沢な使い方をしてみましょう。Eclipseで作業する時に、ファイルが多く探すのにスクロールを上下するのは面倒くさいと思いませんか?他にも、タブに表示するファイルも多くは切り替えるのに面倒くさいですね。そんなときは、フォルダ単位で新規ウィンドウを立ち上げると便利です。

Eclipse新規ウィンドウ一覧.png

ファイルを展開してみましたが、WEB-INFまで探すのは大変です。また、ソースとpropertieやxmlファイルを複数起動していると、切り替えるが面倒くさいですよね。

WEB-INFに使用するウィンドウを新しく開くには、開きたいフォルダの上でコンテキストメニューを表示します。

Eclipse新規ウィンドウメニュー.png

新規ウィンドウを押下すると、
Eclipse新規ウィンドウ新規.png

新しいウィンドウが開きます。タブも別で管理できるので便利。注意するところは、設定ファイルでメモリを512MB以上に設定すること!

これで、アプリを切り変えれば、専用にウィンドウを使う事が出来ます。

 仕事などで大事な要素に、スピードや効率があげられると思いますが、私なりの効率的な作業を三回に分けて紹介します。

 その1として、Javaなどのオブジェクト指向で利用するアクセサの作成方法(デモでは、Javaを使用します)を紹介します。
 その2として、私なりのJava(又はStrutsなどフレームワークを使用)とRuby(又は、RoR)とを比べた結果を紹介します。
 その3として、その1やその2よりももうちょっと抽象的な話で私のやり方・考え方を紹介します。


では、効率その1 Java アクセサの作成をご覧ください。

 Javaに限りませんが、オブジェクト指向を利用するプログラミング言語で作業をしようとすると必ずと言ってもいいほど、アクセサの作業に追われると思います。オブジェクト指向言語では、アクセサの作成は、「やる作業は同じだが物が微妙に違う面倒くさい作業」の代表ともいえるでしょう。人それぞれやり方は決めていると思いますが、毎回試行錯誤で試しているかには、参考になると考えています。

 デモの環境は、以下の通りですが、バージョンなどは気にしなくても大して変わらないと思います。
OS:Mac OS X Leopard 10.5.3
使用言語:Java SDK 1.5.0_13
IDE:Eclipse Europa 3.3.2

 アクセサには、クラス変数をまず作成する必要があります。クラス変数を作成する前に、以下のように、入力してみてください。

accessor_1.png
コメントや変数名に「XXXXXXXXXX」と書きます。英字であれば、何でもかまいません。英字である理由は後ほど分かると思います。戻り値の型は、一番使用すると思われるのを指定すると後々楽です。定型をコピーしてそれぞれ加工するのですが、コピーするのは、以下の範囲でコピーします。

accessor_2.png

 ペーストは、範囲から場所を移動する必要はありません。ただ適当な回数回ペーストします。続いては、コメントから記述します。この時にすでに設計書があると思いますので、それを利用してコメントの「XXXXXXXXXX」をダブルクリックしてペースしてコメントを作成します。

accessor_4.png
変数のコメントが作成できたら、不要な変数を削除します。

 続いて、変数名です。これもまた、設計書を利用すると楽でしょう。変数名も「XXXXXXXXXX」をダブルクリックして選択できます。

accessor_5.png
戻り値型もここで設定します。

 続いて、Eclipseの機能からgetterとsetterを自動的に作成するのですが、作成する前にgetterとsetterのコメントを設定します。コメントのテンプレートは、自分が使う環境に合わせてください。

 設定画面を開き、下のようにgetterのコメントを設定します。


accessor_6.png
表示をクリックすると、拡大画面が表示されます。

setterも次の画面のように設定します。

accessor_7.png
表示をクリックすると、拡大画面が表示されます。

「ソース」メニューから「Getter および Setter の生成」を選らび、getterとsetterを自動生成すると、以下の画面が表示されます。

accessor_8.png
また、変数名のコメントから「XXXXXXXXXX」を設定します。

accessor_9.png
 getter、setterが多くなると変数名に戻るのに、いちいち「home」から次に設定する変数名を選ぶのは非効率なので、クラス変数名を指定して、コンテキストメニューから宣言を開くを選択すれば、クラス変数名に戻れます。続いてアクセサの設定していないコメントを作成するのに、いちいち探すのが面倒くさいなら、コメント・テンプレートで「TODO」などを設定しておくのもいいかもしれませんね。

 その1のまとめとして、以下の方法を使用してみました。
 「XXXXXXXXXX」をうまく使う。「XXXXXXXXXX」をうまく使う事がアクセサを効率的に作成できます。アクセサに限らず他にも利用できると思います。
 大量のペースをする時には、改行もコピーする。例えば、テンプレートから何かをコピーする時には、改行も含める事によって、無駄を省く。さらに、コピーしてからペースと位置を位置を選択するよりもコピーした時点からペーストする。

 その1は、以上です。その2では、アクセサを含めたJavaとRubyの違いを説明します。

 プログラムを開発するのに、開発ツールを利用していませんか?私はJavaでよく利用されているEclipseの履歴機能が気に入って、Eclipseを利用しています。

 Eclipseの履歴機能には、

「元に戻す」
「ファイルを保持する日数」
「ファイル当たりの最大のエントリー数」
「最大ファイル・サイズ」

という機能があるのですが、それぞれ簡単に設定できるので、よければお試しあれ!


 動作環境には、

OS:Mac OS X 10.5.3 Leopard
Eclipse:3.3.2(Europa)

を利用していますが、OSにWindowsやEclipseには、3.2などの3.X系でも利用できます。

Eclipseの「設定」から履歴機能を変更できます。
私の環境では、「Eclipse」メニューから「Preferences」をクリックすると「設定画面」ウィンドウが表示されます。
WindowsのEclipse 3.2なら「ウィンドウ(W)」メニューから「設定(P)」をクリックすると「設定画面」ウィンドウが表示されます。
画面で確認してみましょう!

設定画面.jpg


「元に戻す」という機能は、一般的な入力の戻りや取り消しが行える回数の事で次のように、設定します。

テキスト・エディター.jpg
表示をクリックすると拡大されて表示されます。

「ローカル・ヒストリー」の中にある「ファイルを保持する日数」、「ファイル当たりの最大のエントリー数」、「最大ファイル・サイズ」の機能を画像で確認してみましょう。

ローカル・ヒストリー.jpg
表示をクリックすると拡大されて表示されます。

 「ファイルを保持する日数」に、最大値を入れて再度設定画面を開くと、画像のような数になりますが、ここまで保持する必要があるかは微妙ですけど、私にはありがたいです。
 「ファイル当たりの最大のエントリー数」、「最大ファイル・サイズ」も画面の値が最大値で、警告が表示されるまで入力してみました。


 試しに、ローカル・ヒストリーから操作を戻してみましょう!比較もできるので、履歴をみることでどうのように変化したかも確認できます。

ローカル・ヒストリーへ.jpg
表示をクリックすると拡大されて表示されます。

ローカル・ヒストリーをクリックすと、比較画面が表示されます。
比較.jpg
表示をクリックすると拡大されて表示されます。

 時刻をクリックすると現在の比較が表示されます。ねえ、便利でしょ?

 Eclipseの良さは、他にもあると思いますが、後々戻せるので、私の場合は安心して作業に取り込めます。操作性は、Eclipseが現在と差はないので、履歴機能の設定を最大限にしても損はないと思います。

DJUnitを使って単体試験をする

|

今回はDJUnitを紹介いたします。

JUnit自体はだいぶ前から単体試験などで利用されていますが、Eclipse+DJUnitによってさらに入念な単体試験が可能になります。

単体試験の大まかなポイントとしては以下のように私は考えています。
・想定される条件下でプログラムが意図した通り実行されるか
・すべてのコードが最低一度は実行されているか
・想定外のパターンではどうなるか

DJUnitでは2番目のテストで実行されたかどうかを視覚的に捉えることに重点が置かれています。
引数がゼロかどうかの簡単なサンプルプログラムを作成して実行してみます。

DJUnitを使って単体試験をする.JPG 画1 引数が0の時のみのテストプログラムを実行したときのテストされたプログラム

DJUnitを使って単体試験をする2.JPG 画2 その時のDJUnitのカバレッジ・レポート

図1ではゼロ以外のメッセージ出力の部分がまだテストで通らなかったことが警告として表示されています。
画2ではソースの80%がテストで実行されたことがわかります。

では引数にゼロ以外を入れてテストし直すと

DJUnitを使って単体試験をする3.JPG 画3 引数0と引数0以外をテストしたときのDJUnitのカバレッジ・レポート

ソースのテスト実行が100%になりました。
このように見た目の警告を消すようにテストプログラムを作成するだけでプログラムの一通り実行させ、単体レベルでの不具合を発見できるようになり、「せっかくJUnitを導入しテストしたけど単体試験漏れが見つかってしまった」なんてことが少なくなること間違いありません。

Javaによるプログラムで一番やっかないなのが、メモリーリークやスレッドの同期など負荷試験をしっかりしないとわからない問題です。ここでは、メモリーリークとボトルネックが簡単に調査するためにEclipseプラグインの「Profiler」について書いていきます。

 

環境

OS:WindowsXP

JDK:jdk1.5.0_01

Eclipse:3.1

Tomcat:5.5.25

Tomcatプラグイン:Sysdeo Tomcat Launcher Plugin 3.2 beta3

 

1.まずは「Profiler」プラグインをダウンロードする。

http://sourceforge.net/projects/eclipsecolorer/

 

2.「Profiler」プラグイン自体の開発は現在止まっており、Eclipse3.0までしか動作確認されていない。Eclipse3.1で動作させるためにパッチを当てる。(※この手順とすっ飛ばすと3.1では動きません。)

http://sourceforge.net/tracker/index.php?func=detail&aid=1202373&group_id=48823&atid=454283

上記URLの一番下のprofiler_jars.part1.rar~profiler_jars.part4.rarをすべてダウンロードし、解凍。
解凍した中のprofiler_trace.jar、profiler_ui.jarをプラグイン「Profiler」フォルダへ上書きコピーする。

 

3.プラグインのProfilerフォルダにあるProfilerDLL.dllをJAVA_HOME\JRE\BIN\にコピーする。

4.Eclipseのパッケージ・エクスプローラー上でTomcatプロジェクトを右クリック→実行→構成および実行する。

 Profilerをダブルクリック、画面右のタブがメインのプロジェクトをプロジェクト名、メインクラスをorg.apache.catalina.startup.Bootstrapに設定する。

 タブが引数ではプログラム引数をstart、VM引数を-Dcatalina.base=<tomcat directory> -Dcatalina.home=<tomcat directory>。

 タブがクラスパスでは、ユーザー・エントリーにJAVA_HOME\LIB\tools.jarと<tomcat directory>\BIN\bootstrap.jarxを外部jarの追加。

 

5.4で作成した「Profiler」の実行を押せばTomcatが立ち上がり、「Profiler」プラグインの実行を確認できる。