JSDT jQuery 開発環境

先日さすらいの Web サーフィンをしていたら、JSDT (JavaScript Developer Tool)の jQuery サポートをみつけたのでちょっと試してみました。 たぶん前からあったものだと思うのですがなかなか良さそうな雰囲気であります。

とりあえずインストールより。

最近、Eclipse PDT(PDT Developer Tool)のオールインワン的なリリースがないのですが、とりあえず PDT に入れています。 Eclipse Classic に PDT プラグインを追加すれば PDT になります。

Eclipse 3.7 / Indigo / PDT 3.0

  • Installed and running Eclipse Classic 3.7

これに JSDT jQuery を追加で入れます。 eclipse.org から for JavaScript Developer のパッケージもでていますので、JS しかやらないかたはこちらでもいいかもしれません。 PDT を追加することもできるでしょう。

Market Client が入っていないと JSDT jQuery が入れにくいので追加します。

jQuery10

で、Eclipse Market から JSDT jQuery を追加。

jQuery11

JavaScript プロジェクトをつくって右クリックからプロジェクトの設定。 JS のライブラリを選んであげます。 jQuery が追加されているはずです。

jQuery13

こんな感じに。

jQuery14

ではやってみましょう。 🙂

jQuery 補完機能。

jQuery15

うん!よい!

JSDoc(?) もちゃんとみれます。 メソッド名と引数わかればこちらのものです(笑)

jQuery16

ちなみに、jQuery と関係ないですが、JSDT のリファクタリング機能も試してみましょう。

変数名リファクタリング。 下に別スコープの同名変数があることに注目してください。

変数 hoge を moge にリファクタリング。

jQuery30

jQuery31

ちゃんとスコープみて test1 の中だけ変えてくれています。

また初期化警告もでています。 ただのテキストエディタと違ってプログラムを読んでいてくれるからできる実装です。

jQuery32

JavaScript は動的型付言語ですので、IDE サポートも限界がありますがなかなか動くようですね!

また Web Developer 系の Eclipse には HTML のリアルタイムバリデータとか、PDT には PHP のリアルタイム警告サポートもあります。

閉じタグ忘れ。

jQuery33

閉じ括弧忘れ。

jQuery34

Eclipse メインじゃなくても既存のファイルをワークスペースにもってこれますので、使うときだけという運用も可能です。

jQuery20

プロジェクト作成時に form exsisting source にすればOKです。 あと、JS/PHP サポートをプロジェクト右クリックからつけてあげられます。

jQuery35

てな感じなのでつかわにゃそんそん。  🙂

textile 文書をつくる

なにか文書をつくるとき、、まぁ普通は Microsoft Word とかワープロになると思うのですが、操作が煩わしかったり、バージョン管理できなかったり、なんとかテキストに近い形で書きたいことっていうのは結構あると思います。

docbook や XHTML を直書きするのはあまりにも冗長、tex は環境つくるの大変だしそこまで大がかりでなくてもよい、、なんてとき Eclipse Mylyn の WikiText モジュールが良いかもしれません。 実は Eclipse のリッチテキストエディタのキャレット制御も優秀でなかなか使えます。 🙂

Eclipse 上で動きますので統合環境のバージョン管理やローカルヒストリーも使えますし、各種キーボード操作、増分検索やカーソル飛ばしも同じ。 Eclipse 使っている方はお試しを。 J2EE 版をお使いならスタートは簡単。 .textile 拡張子のファイルをつくってダブルクリックするだけです。

エディタはこのような感じです。 たとえば textile 記法で文書をつくります。 設定により他の wiki 記法にも切り替えられます。 ヘッダとかはリアルタイムで表示変換されます。

textile10

ちゃんと word-warp ・折り返しするエディタです。簡単あるね。

Eclipse 上ですので当然(?) CTRL + SPACE とか ALT + \ とかの補完機能も使えますので wiki 記法分からなくても大丈夫。 ぼくもよく知りません(笑)

textile15

画面下タブに Preview がありますので、CTRL + PageUP とかで切り替えると画像展開を含むプレビューをすることができます。

ちなみに、ここで使われているインターナルブラウザは Eclipse Indigo からは標準で WebKit になるはずです。スクリーンショットは Ubuntu の Eclipse/SWT の WebKit です。

Windows だと iTunes か Safari が入っていないと Gecko になるのかな。(SWT のソース確認していませんが C:\Program Files\Common Files\Apple\Apple Application Support\webkit.dll を見ている気がします)

textile11

脚注利用時に存在しない番号を指定してしまった場合等、リアルタイム警告などもるようです。

アウトラインビューをだせばアウトラインだせます。

textile12

編集時のフォントはいつもの設定画面より WikiText 部分。 Text Font をプロポーショナルフォントで設定すればさながらワープロです。

textile14

ちなみに、この SWT のエディタはちゃんとオンザスポット入力で、文字列の途中挿入でも横の文字をずらすキャレット制御タイプなので文書入力も違和感ありません。(確定後ちょっとばたつきますが)

Windows のテキストエディタでも、この動作ができないのありますので優秀です。 Linux のテキストエディタだと、Eclipse と gedit くらいしか出来るのをみたことがありません。。

プレビュー部分は CSS で表示制御できます。 フォントなど気に入らなければ body タグとかに font-famiry を追加して設定しちゃうとよいでしょう。 また画像も展開しますので img に width きっておくと、ブラウザ縮小ではありますがいい感じで表示できます。

textile13

できた文書は docbook や HTML にコンバートすることもできます。 docbook のほうが素直そうな感じでした。 残念ながら脚注とかは正確な docbook タグにはなっていないようでしたが XML ですので別系で加工すると面白いことが出来るかもです。

てなわけで、お手軽に wiki 記法でテキスト文書つくれてバージョン管理できますので、そんな環境をお探しの方は試してみるといいかもしれません。 😀

Redmine 1.2.2 + Eclipse Mylynでチケット管理

前々からバージョンが上がっているのに気がついてはいたのですが、、Eclipse 用の Mylyn Redmine Connector が Redmine の最新バージョンに対応されましたのでようやく試してみました。

うちのローカルサーバには Redmine がたっていまして、その wiki の機能やバージョン管理システム連携を使って、作業のメモなどを残しています。 Redmine プロジェクトの扱いが簡単なのでこういった用途にも便利です。

redmine30

本来的にはチームで作業するためのもので、そのうち仕事でも使う機会があるかなぁとたまにいじっていたりするのですが、できればいいと思っていたのが Eclipse 連携。 Eclipse には Mylyn というチーム作業用の仕組みがありますが、これが Redmine に対応すればOKです。

ということで、以前から Eclipse Redmine Mylyn Connector に注目していました。

SourceForge.net: Project redmin-mylyncon

This project is an Eclipse Mylyn Repository plug-in for the Redmine bug tracking / project management application.

Eclipse 3.7 and Redmine 1.2 now also supported

The new Eclipse-Plugin 0.3.0  supports now Eclipse 3.5, 3.6 and 3.7, the new WS-API-Plugin 2.7.4 supports now Redmine 1.0, 1.1 and 1.2.

ついに最新バージョンの Redmine と Eclipse にも対応しましたので今回はこれを導入してみました。 Redmine 1.2.2 + Eclipse 3.7.1 で Redmine は JRuby + Tomcat + PostgraSQL で動作させています。

Redmine Mylyn Connector は2つの要素で構成されており、Redmine に入れるプラグインと Eclipse のプラグインの2つを併せて導入します。 ちょっと sourceforge でのファイルの配布状況が分かりづらいのですが、Redmine プラグインは git から最新版を、Eclipse プラグインは dev のアップデートサイトからインストールしています。

Redmine プラグインは、Redmine ディレクトリの vender/plugins に git より

git clone git://redmin-mylyncon.git.sourceforge.net/gitroot/redmin-mylyncon/redmine-mylyn-connector

のような感じでファイルを格納します。 ぼくは JRuby で warble して tomcat にデプロイしているので、一回 war を作り直しています。

redmine13

こんな感じで Redmine に認識されたら、管理画面より REST API を enable にします。(一番下)

redmine14

できたら Eclipse 側にプラグインをいれます。 いつもの Install new software より

こちらの dev チャンネルを登録。

redmine00

これでプラグインをインストールします。

できたら Eclipse Mylyn の Task Repository ビューを表示してリポジトリを登録します。

今入れたコネクターを選択します。

redmine10

Redmine サーバの設定をします。 Label はお好みで…。

redmine11

Validate Setting が通ったら Finish できます。:)

Task List ビューも表示させて、Preference で自動取得間隔などが設定できます。

redmine12

あとはチケットの検索クエリー等を設定すれば…。

じゃんじゃん!

redmine21

よい感じです。 :) 新規チケットはこんな感じで書けます。 ちょっとエディタが遅いのですが、、textile なども利用できます。

redmine22

上は Eclipse on Ubuntu の図。 Windows ではこんな感じです。

redmine23

リポジトリで更新があると Eclipse からこんな感じで通知が来ます。

redmine25redmine24

左 Windows、右 Ubuntu。 Linux 版 Eclipse の日本語が入った Eclipse Notification スクリーンショットは珍しいかもですね(笑)

redmine20

通知後すぐチケットを開くと昔のデータが出てしまうことがあるようなので、更新ボタンを押す運用にするとよいと思われます。

ということでなかなかうまいこと動くようです。 何か機会があるまでひとりで寂しく使ってみようと思います。。(笑)

Eclipse Indigo リリース

少し前になりますが統合環境 Eclipse の新版 Indigo がリリースされました。 🙂

てなわけで休日をつかって Ubuntu にインストールです。 Linux 版 Eclipse ってあんまりスクリーンショット載せてる人見かけないので見てってください= ヨーロッパでは Eclipse ユーザの 3割くらいは Linux とどっかに書いてたのですが(笑)。

Eclipse.org – Indigo Simultaneous Release

Indigo is the annual release of Eclipse projects on June 22 2011;
this year 62 project teams are part of the release.

Eclipse最新版「Eclipse Indigo」登場 – 62プロジェクト同時公開 | エンタープライズ | マイコミジャーナル

Eclipse Foundationは6月22日(カナダ時間)、Eclipseの最新リリース版となる「Eclipse Indigo」を公開した。EclipseはJavaをはじめ様々なプログラミング言語に対応した統合開発環境。プラグイン構造を採用した高い拡張性が特徴で、代表的な開発環境のひとつとされている。

今回は残念ながら PHP Developer 版はメンテナさん不足で本家からのリリースはないそうで、その場合は Pleiades All in One さんからディストリビューションリリースされているので使わせていただくと良いと思われます。

というわけで、ぼくは本家 JEE 版から入れてみました。 今回のリリースのポイントのひとつとなっている WindowsBuilder は EE には入っていないので別途入れてみました。 SE 版では標準です。

WindowBuilder

WindowBuilder is composed of SWT Designer and Swing Designer and makes it very easy to create Java GUI applications without spending a lot of time writing code.

アップデートサイトがありますので、いつも通りの感じでインストールできます。

いざ実行。

indigo02

XWT がちょっと目を引きますね。 🙂

Indigo にあわせて SWT 3.7 もリリースされています。 Linux で SWT 使っている人もあまり Web でみかけないので WindowBuilder / SWT のスクリーンショットのせておきますです。

indigo01

この手のは案外レイアウトマネージャのこととか知らないと、うまく使えなかったりするので逆に難しい時もありますが、固定位置合わせとかは便利そうですね。 イベントハンドらの生成とか JFace のデータバインディングとかまだみていませんが、そのうち遊んでみるです。

その他、Groovy-Eclipse とか Subclipse とかいつも使っているものは、ぱらっとさわった限り Indigo でも大丈夫そうです。 Android のプラグインも入りました(ただ、こちらはまだ入れてみただけです)

統合環境新しくなると、なんかつくってみたくなるのはなぜなんでしょう。(←逆ですわな。

mikumiku

さて、DX7 色。 こちらも届きましたぞ。 すごいね、ねんどろいど。 🙂

Groovy のスクラップコードと Eclipse 3.6 Helios

コンピュータでの作業中に、定型的なテキストファイルをつくったり、加工したりなどの効率化を図りたいときがあります。

こんなとき手元でぱっと動くプログラム言語があると便利です。 Linux なんか使っていると Perl とか Ruby とかすぐ動くのでそちらという手もありますし、Windows なら Excel VBA とか?

そんな一つの方法で、Eclipse 立ち上げて仕事しているのなら Groovy が便利かもしれません、、というわけで使いそうな Groovy のプログラム断片をメモしておきます。

Groovy 言語は Java を拡張して連携できるようなスクリプト言語です。

Groovy – Wikipedia

GroovyはJVM上で動作する言語処理系および言語の名称であり、Javaとの直接的な連携を特徴とする。例えばGroovyからすべてのJava SE APIや、Javaで書かれた任意のサードパーティ製のコンパイル済みのライブラリなどを呼び出すことができる。言語の記述能力としては、Javaで記述できることは、無名内部クラスの定義など一部の例外を除き基本的にGroovyでも記述することができる。逆に言うとJavaで記述できない機能は記述できないが、Javaと同様にC言語などで書かれたネイティブメソッドなどは呼び出すことができる。

groovy-eclipse という Eclipse 用のプラグインが提供されており、これ入れておけば実行環境が簡単につくることができます。 最終的には JVM で動くコードができるので、隣の人につくったプログラム動かしてもらうのも簡単だという利点もあるですね。

Eclipse向けのGroobvy開発プラグイン「Groovy-Eclipse 2.0」 登場 – SourceForge.JP Magazine  オープンソースの話題満載

Groovy Eclipseプロジェクトは1月15日、「Eclipse」向けプラグイン「Groovy-Eclipse 2.0」を公開した。Eclipse環境でGroovy開発を構築するもので、EclipseのJava開発機能に匹敵するレベルの支援機能を提供するという。

というわけで、使いそうな断片集です。 ぼくはその場に応じて適当につかっているだけなので、間違っていたらごめんなさい。 メモレベルです。

作業用に、Eclipse のプロジェクトをひとつつくっておいています。

groovy10 

まずは文字列操作編。

// 部分文字列取得
println "テストです。"[3..-1]
 
// 文字列長さ取得
println "Lengthのテストです。".length()
 
// 文字列分割
"split1,split2,split3".split(",").each { str ->
    println str
}

 

結果は上から、

です。
13
split1
split2
split3

 

となります。 日本語も思った通り処理されます。

次は文字列マッチ系。

// 正規表現マッチ判定(完全一致)
if("hiromasa" ==~ /.+masa$/) {
    println "mutch!"
}
 
// 正規表現マッチ判定(部分一致)
if("hiromasa" =~ /masa$/) {
    println "mutch!"
}
 
// 正規表現マッチ取得
"stronger, stranger, walker, hiromasa".eachMatch(/(\w+?er),/) { all, match ->
    println match;
}
 
// 正規表現マッチ置換
println "stronger, stranger, walker, hiromasa".replaceAll(/\w+?er/, { match ->
    match[0].toUpperCase() + ((match.size() > 1) ? match[1..-1] : '')
})

 

結果は、

mutch!
mutch!
stronger
stranger
walker
Stronger, Stranger, Walker, hiromasa

 

こんな方向で。

次は、リストとマップ。

// リスト
def lists = ["test1", "test2", "test3"]
lists.each { value ->
    println value
}
 
// マップ
def maps = ["key1":"apple", "key2":"orange", "key3":"mango"]
maps.each { key, value ->
    println key + " = " + value
}

 

こんな感じでまわせます。 結果はご想像通りの方向で(笑)

次はファイル処理系。

// ファイル読み込み
new File("file/readme.txt").eachLine { line ->
    println line
}
 
// ファイル書き出し
new File("file/writer.txt").withWriter { line ->
    line.println("hoge")
    line.println("moge")
}

 

読み書きともクロージャ渡す感じで。 オープンクローズ、異常系を勝手にやってくれます。 便利あるね。

最後に、便利そうなの。

// 回数指定ループ
(0..2).each { counter ->
    println counter
}
 
// 埋め込み文字列
def lines = ["line1", "line2", "line3"]
def number = 1
lines.each { value ->
    println "${number} : ${value}"
    number++
}
 
// 長い文字列
def gstr = """\
改行できますぞ。
改行できますぞ。
改行できますぞ。\
"""
println gstr

 

文字列系がいろいろ拡張されているようです。

これくらいあればあとは知恵と勇気でなんとかなるかと。 困ったら Java そのまま呼べちゃうので、それでパッと回避するのが吉かもしれません。 ライブラリ jar 入れれば、すぐその機能を使えるのも楽ですね。

てなわけで、Groovy でした。 🙂

さて、先日でました Eclipse 3.6 Helios をちょっと評価がてら最近使っております。

helios01

事務所では Windows XP / JavaEE 版をつかっていますが特に不具合はなさそうです。 最近流行のプログラムのマーケット的なところからプラグインの導入ができるようになりました。

helios02 

毎回、Subclipse のアップデート探していたりしていたので、便利かもしれません。 ぼくの使い方では、あとは JavaEE では劇的に便利になるのはないかな。。

家では、PHP for Developer 版を導入してみました。

Windows 7 対応がされているハズなのですが、うちの環境だとジャンプリストとかがうまく動作しませんでした。 右クリックが無反応でした。(うちだけかな)

Linux 版もいれて、3.5 ガニメデ で存在していた「ボタンが押せなくなる」 SWT の不具合が解消しているのを確認しました。 ただ、PHP のでかいコード表示すると、無反応になった後ヒープエラーがでることも確認。。 パーサがバグってるのかも。

というわけで、全般的にはうちでは 3.6 はまだ様子見という感じです。 引き続きウォッチしていこうと思います。 🙂

Ecipse PDT 3.5 + xampp + xdebug を使った PHP デバッグ

たまに WordPress の不具合などでご質問をうけるも、初見のプラグインとかもすぐ直しちゃって「なんでそんなにすぐ分かるの?」と聞かれることありますが、タネを明かせばプログラムのおかしそうなところにデバッグブレイクひっかけて動作を見ているからです。 え?この軟弱もの? いいのいいの(笑)

プログラミングの難しい部分の一つは動作が一瞬で終わることにあると思います。 普通は机上というか頭の中で考えて、ここの if はこーだから、ここに入って、値はこーなるはず、、なんてやるわけですが、面倒なときはコンピュータに評価させた様子を1行ずつみていく。 これがデバッガの役目です。

てなわけで、現在の xampp 最新版 1.7.3 と Eclipse PDT を使ったデバッガの設定方法の紹介です。 前書いたのは設定方法が古くなってしまっていますが、とりあえず操作方法などもあるので併せてどうぞ。 🙂

hiromasa.docs o) – Eclipse PDT + XAMPP で WordPress の開発環境をつくる (3)

Eclipse PDT と XAMPP に入っている xdebug モジュールを利用すると、実行中のプログラムを任意の位置で停止させ、ソースコードとあわせて1行ずつ動作させるステップ実行や、変数の値の監視や書き換えが行えるウォッチなどのいわゆるデバッグ機能を使うことができるようになります。

まず、xampp の PHP に xdebug というモジュールを読ませる必要があります。 現在の xampp-1.7.3 のベーシックパッケージ(lite版には入ってないようです)には xdebug が同梱されているようです。 キウイ!

昔、Vista で xdebug 動作させると Apache ごとおちるという問題がありました。 今回は Windows 7 と xdebug-2.0.6 でやっていますが大丈夫そうです。

というわけで、php.ini にそれを読ませる設定をしてあげます。

C:\Develop\xampp-win32-1.7.3\php\php.ini

xampp インストールディレクトリの php\php.ini を開きまして、

zend_extension = "C:\Develop\xampp-win32-1.7.3\php\ext\php_xdebug.dll"
xdebug.remote_enable = 1

zend_extention の php_xdebug.dll のコメントを解除。 xdebug.remote_enable = 0 の行があるので、コメントを解除した上で 0 を 1 にします。

これで、準備完了。 Apache を xampp コントロールパネルから再起動して phpinfo をみて xdebug があればOKです。

xdebug01

次は Eclipse PDT の設定。

WordPress などの PHP プロジェクトを開いた上で、実行 –> デバッグの構成。

xdebug05

左ペイン、PHP Web ページを選択し、ペイン上アイコンで新規作成。 で、ここがポイント。

xdebug04

ファイルと書いてあるところに、WP の index.php を指定。 そして、URL の部分をそのファイルをブラウザでみたときの URL と完全一致させます。 デフォルト localhost になっていますが、もしブラウザ http://127.0.0.1/ でアクセスしているときは、PHP Server 欄の構成で localhost を 127.0.0.1 に変更してください。

実ファイルの場所と、ブラウザでの URL の対応を完全に設定するところがキモです。 あっていないとブレイクしてくれません。

でもってできたら、ウインドウ->ビュー->その他 あたりから「デバッグ」というビューを表示しておきます。 デバッグ中であるとここにデバッグスレッドの様子がでますので、開始、停止ができます。

xdebug03

準備ができたら、ソースコードのブレイクしたい位置にブレイクポイントをはります。 詳しくは前述の昔の記事をみてみてください。 で、実行構成からデバッグボタンをおせばブレイクするハズです。

xdebug02

あとは、F5、F6、F8 での行すすめや、ウォッチでの変数閲覧などをたのしんでいただければ。 🙂

管理画面などのプログラムなどログインを伴うときは、セッションの関係でうまくブレイクできないときがあります。 このときは以下の記事を参考に URL をいじってデバッグセッションつけてあげてください。

hiromasa.another o)» Blog Archive » wp-jrelated 1.52 リリース (関連取得不具合修正)

動きしか見てないですが、たぶん WP の認証によりデバッグセッションの cookie がきえてしまうのがとまらない原因です。 なので GET でつけてあげて再設定すればこの後は何もしなくてもとまるようになります。 :-)

この辺 Java のリモートデバッガに比べればおもちゃっぽい部分もありますが、それでも十分実用になっていると思います。

というわけで、

power source » WP ローカル環境の構築 – XAMPP+Eclipse PDT

今回インストールした XAMPP Windows版 1.7.3 には Xdebug 2.0.6-dev が入ってるので、このまま使えそう。。?

たぶん、いけそう! 🙂

WordPress と Eclipse と

ぼくは WordPress をごにょごにょさわるときの環境に Eclipse を使っています。  主に PHP の解析が楽なので使っているのですが、この記事では言語サポート以外の周辺を紹介してみます。

具体的には Subversion とか DB 操作の部分も統合環境のサポートがうけることができます。 まぁまぁ、この手のは慣れの問題も多分に含まれていますのでとりあえずスクリーンショットを楽しんでもらえれば!

Eclipse ベースの Aptana を使われている方も、プラグイン導入で同じように動くかもしれません。(ちなみに依存関係があるので Eclipse に Aptana プラグインをいれたほうが各種 Eclipse プラグインを使うならば楽かもです 🙂

WordPress + XAMPP + Eclipse の最新導入方法はぼのをさんがまとめてくださっております! 🙂

power source* » WP: ローカル環境の構築 – XAMPP+Eclipse PDT

WordPressの作業用に、ローカルPCに開発環境を構築。

初めてのことなので、ひろまさ著 『Eclipse PDT + XAMPP で WordPress の開発環境をつくる』を読みながら作業し、本日はテキスト第3章「Eclipse PDT プロジェクトへの既存ファイルの取り込み」までで力尽きる。

ありがとうございます、ありがとうございます。 キウイを進呈します。

まずはソースコード管理システムの Subversion。

WordPress の本家リポジトリにつないで開発状況をみたり、タグから過去バージョンの取得を行うことができます。

Eclipse にはいくつか Subversion プラグインがあるのですが、ぼくは、Subclipse を使っています。(こちらに同梱の Pure Java Subversion ライブラリが Linux でよく動く印象があるためです)

subclipse.tigris.org

Subclipse is an Eclipse Team Provider plug-in providing support for Subversion within the Eclipse IDE. The software is released under the Eclipse Public License (EPL) 1.0 open source license.

インストールは Eclipse 上から update URL をいれるだけのタイプです。 入れると・・・

eclipse03

こんな感じで新規プロジェクトを SVN のリポジトリからつくれるようになりますので、たとえば WordPress のリポジトリを指定してあげるとファイルが取得できます。 取得場所を Apache の htdocs の下にしてあげれば WordPress のインストール完了です。

でもって、プロジェクト右クリックのチーム、ヒストリーあたりから改版履歴がみれるようになります。

eclipse06

で、気になった修正があったら diff してみたり。

eclipse07

なるほど、みたいな。 🙂

さらに Eclipse には Mylyn という仕組みが備わっていて、ソースコード管理とタスクを結びつけることができます。 タスク、、というのはそう、WordPress Trac。

Eclipse Mylyn Open Source Project

Mylyn is a task-focused interface for Eclipse that reduces information overload and makes multi-tasking easy. It does this by making tasks a first class part of Eclipse, and integrating rich and offline editing for repositories such as Bugzilla, Trac, and JIRA.

インストールなど詳細ははぶきますが、MyLyn から接続するリポジトリ種別を Trac として、WordPress Trac の URL を設定。 ちなみに他にもいろいろなシステムに接続できます。

eclipse04

WordPress の Trac は API をあけてくれていないので細かいことはできませんが、以下のようになります。

eclipse02

Subversion の修正履歴コメントの # の番号をクリックすると、インターナルで WordPress Trac の該当タスクを開いてくれます。  ソース修正とタスクの結びつけができます。

API あけてないのでいつもの画面がでてくるだけではありますが、ワンクリックで修正経緯がみれるので割と便利です。 🙂

次は DB 操作系。

こちらもいくつかプラグインがありますが、ぼくは DB Viewer を使っています。

DBViewer Plugin for Eclipse

DBViewer Plugin for Eclipse(以下DBViewer)は、Eclipse(統合開発環境)を拡張するためプラグインです。Eclipseに「データベース・フロントエンド」機能を提供します。(JDBCドライバーを使用しています)

スクリーンショット小さくて見づらいですが、こんな感じで MySQL に接続できて、中を閲覧したり画面からパッチしたり SQL を発行したりできます。

eclipse05

phpMyAdmin と同じような感じですが、たとえば SQL 作成時のオートコンプリートや SQL 履歴保存、SQL 整形とか便利機能がいろいろあります。

eclipse01

というわけで、こんなことをしていると、、、

家で仕事しているみたいだ~(笑)

そう、、事務所でも家でも Eclipse な時期も多いわけです。。

いろいろな現場で使えるようになっているシステム群ですので、若干複雑な部分もありますが、取り入れて便利そうなところがあったら使ってみてください。 🙂

Eclipse 3.5 wiki エディタのフォント不具合

Eclipse 3.5 からだとおもうのですが、ファイル拡張子を .mediawiki とか tracwiki とかにして開くと wiki 記法が使えるエディタが開くようになりました。 ちょっとドキュメントを書く機会があったので気分転換に使ってみたり。

新しいものというのは、楽しいものである、、ぼくは、うきうきで wiki の記述を始めた・・・。(←ふり

悲劇は、 tracwiki のコード表記の部分で起きた。

travwiki01

倍角か! 昔のワープロか!(←弱いおち

ぼのを「・・・」

というわけで、Eclipse の Bugzilla を探してみるとどうやら SWT の不具合の模様。

Bug 278959 – setting font height should update font width

Created an attachment (id=138181) [details]

次の Eclipse 3.6 には入るようですが、3.5 で使えないのも寂しいのパッチを SWT 3.5.1 に適応してみました。 といっても1行パッチ。

SWT のソースをコンパイルして、上記不具合 class を plugins の下の

org.eclipse.swt.win32.win32.x86_3.5.1.v3555a.jar

に差し替えただけです。

とう!

travwiki02

なおった、なおった。 🙂

.wiki のファイルは HTML や DocBook などに出力でき、リアルタイムでは HTML で表示できます。 設定画面である程度 CSS も変更できるようです。

travwiki03

まぁ正直、エディタの方はまだまだのできっぽいですが、とりあえず記法をオートコンプリートできるのは、wiki になれていないぼくには便利でした。 こまったら、CTRL + SPACE。

travwiki04

DocBook に書き出せるので、docbook2pdf とか docbook2txt とかでも整形して出力できそうですね。

というわけで、ひさびさのこののりのブログはやっぱり良い・・・。 🙂

マルチプラットフォームの GUI アプリケーション

たまぁになんですが、自作のちょっとしたアプリで GUI を使いたいときがあります。 ほいでもって、ぼくは家で大抵は Linux を使っているのですが、せっかくつくったアプリなのでたまに使う Windows でも使いたい、、。 ということで、マルチプラットフォームで動く GUI アプリ。

Mono + GTK、Mono + Windows.Forms、 Java + Swing、 Java + GTK(あるのかな?)、などなど思いつきますが、今回は Java + SWT をやってみました。 🙂

GTK は各種プラットフォームで動作する GUI ツールキットですが、自前で描画をしているので特に Linux 以外で動かすとやっぱりほんのすこーし、違う。 まぁ特別問題があるわけではないのですが、Pidgin や GIMP を Windows などで動作させたことがある方ならなんとなく分かるのではないでしょうか。

Swing は逆に Windows で動かす分にはそれなりなのですが、Linux で動かすとフォント系が厳しい。。 Swing は TrueType も自前で描画するので特にアンチエイリアスがある環境ではなにか違う感じを醸し出します(笑) (フォントレンダラがあんまりよくないのかな)

てなわけで、やっぱネイティブだよねってことで Java + SWT です。

Standard Widget Toolkit – Wikipedia

SWT は Java で書かれている。GUI部品を表示するため、SWT はそのオペレーティングシステムが提供するGUIライブラリを JNI(Java Native Interface)経由で使用する(これはシステム固有のAPIを使う一般的手法である)。SWT を使うプログラムは移植性があるが、ツールキット自体の実装は Java でかかれているにも関わらず、各プラットフォーム固有である。

ネイティブライブラリですが、Windows、Linux、Mac OS X などなどいろんなプラットフォームに移植されていますので、実行ファイルこそ変われど同じアプリケーション(ソース)が動作します。 Eclipse などの巨大なアプリケーションが SWT で動作していますので、ライブラリ自体もかなり枯れていると思われます。

で、SWT にかぶる形で GUI のフレームワークとして JFace というのがあって今回はこれも使ってみました。

とりあえず、SWT と JFace のライブラリを持ってきます。 JFace は Eclipse の plugins に入っているものをほげってきました。(外部 Jar 追加で参照してもいいのですが、なんとなくコピーして自分のおなかに)

jface02

こんな感じにライブラリをいれておきます。 これは Linux の場合。

詳しくはこちらが参照になります。

SWTとJFaceに必要な外部JARファイルを特定する – Identify the Required External JAR Files for SWT and JFace – 何かしらの言語による記述を解析する日記

JFaceプロジェクトには、SWTのクラスとJFaceのクラス、その他JFaceが依存するEclipseのクラスが必要です。SWTプロジェクトのウェブサイトから、SWTのクラスを含むファイルをダウンロードできます。JFaceのファイルとJFaceが依存するファイルは、プロジェクトに手動で追加する必要があります。

ほいでもってソースをかきます。

あちこちのサイト様を参照しました。 JFace は ApplicationWindow から extends して開始です。 (未来の自分用へのメモ)

JFaceSample.java

package net.maple4ever.sample.jface;

import java.io.File;

import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;

public class JFaceSample extends ApplicationWindow {

    public JFaceSample() {
        super(null);
    }

    @Override
    protected Control createContents(Composite parent) {
        // ウインドウタイトル設定
        parent.getShell().setText("JFaceSample");
        // ウインドウサイズ設定
        parent.getShell().setSize(480, 320);

        // 親の下にさらに Composite をつくる
        Composite child = new Composite(parent, SWT.NONE);
        // レイアウトマネージャ設定
        child.setLayout(new GridLayout());
        // テーブル作成
        TableViewer table = new TableViewer(child);
        table.getTable().setLayoutData(new GridData(GridData.FILL_BOTH));
        // テーブルにプロバイダ設定
        table.setContentProvider(new FileTableContentProvider());
        table.setInput(new File(System.getProperty("user.home")));

        return parent;
    }

    @Override
    protected MenuManager createMenuManager() {
        // 親メニュー作成
        MenuManager bar = new MenuManager();
        MenuManager fileMenu = new MenuManager("ファイル(&F)");
        // Action クラスを継承したインスタンスを渡す
        fileMenu.add(new ActionExit(this));
        // 追加メニューを返却
        bar.add(fileMenu);

        return bar;
    }

    public static void main(String[] args) {
        // ApplicationWindow インスタンス生成
        JFaceSample window = new JFaceSample();
        // メニューバー追加(createMenuManagerメソッド が呼ばれる)
        window.addMenuBar();
        // ウインドウクローズまでイベントループブロック指定
        window.setBlockOnOpen(true);
        // イベントループ開始(終わるまでここでブロック)
        window.open();
        // イベントループ終わったらリソース解放
        Display.getCurrent().dispose();
    }

}

ActionExit.java

package net.maple4ever.sample.jface;

import org.eclipse.jface.action.Action;
import org.eclipse.jface.window.ApplicationWindow;

class ActionExit extends Action {

    private ApplicationWindow window = null;

    public ActionExit(ApplicationWindow win) {
        // ApplicationWindow もらっておく
        window = win;
        setText("終了(&X)@Ctrl+W");
    }

    @Override
    public void run() {
        // Action の処理を run にかく
        // ApplicationWindow 呼んじゃえ
        window.close();
    }

}

FileTableContentProvider.java

package net.maple4ever.sample.jface;

import java.io.File;

import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.Viewer;

class FileTableContentProvider implements IStructuredContentProvider {
    @Override
    public Object[] getElements(Object element) {
        File currentDir = (File) element;
        File[] files = currentDir.listFiles();
        return files == null ? new Object[0] : files;
    }

    @Override
    public void inputChanged(Viewer arg0, Object arg1, Object arg2) {
    }

    @Override
    public void dispose() {
    }
}

で、まずは Linux。 実行~ 🙂

jface03

うむうむ。 Linux SWT の GTK 版なのであたりまえですが、GTK で描画されています。 Linux の場合、GTK のテーマでみんないろいろ画面をかえているので、何にもしなくても追随してくれるのはやっぱりいいですね。 🙂

同様に Windows でも Windows 用の SWT ライブラリをあつめて、同じアプリケーションのソースを実行!

jface01

エアローってことで、 Windows 7 で動かしたの図ですが同じソースでネイティブ描画してくれております。 よい、よい。 😀

JFace は、普通の GUI フレームワークとちょこっと趣向が違うところがあったりして面白いですね。 スレッドの中からの GUI 描画方法とかまだ全然分かっていない部分もあって本気で使いこなすには時間がかかりそうですが、小物ならなんとかいけそうです。

ちなみにできたアプリの配布ですが、小さいアプリであれば Eclipse のエクスポートウイザードの実行形式 jar で ant 書き出してもらうのが楽そうです。

jface04

で、できた jar 玉を JRE が入っていれば通常ダブルクリックで実行できます。

jface05

gjc で JRE なしのまじネイティブ (.exe 版とか)もできるのかなぁ。 Eclipse の gjc 版はあるのでできると思いますが、ちょっとそこまでは調べていません。

swt 、JFace とも Eclipse Public License 系のライセンスなのでこういった配布形態も問題ないとおもいますが、やる方がいたら各自よくご確認ください。 ぼくは配布するまではなさそうなので、、(笑)

てなわけで、画面系はやっぱりネイティブがいいよね、という方は試してみるといいかもしれません。 🙂

Eclipse 3.5 Galileo & Eclipse for PHP Developers がリリースされました

統合環境でおなじみ Eclipse の最新バージョン 3.5 (Galileo) がリリースされました。 今回のリリースより、以前はプラグイン配布だった PDT(PHP Developrt Tools) が本体に昇格し、Eclipse for PHP Developers として本家からリリースされています。 🙂

少しの時間ですが、動かした感じでは不具合もなく、安定している印象を持ちました!。

とりあえず、スプラッシュスクリーンの進捗がちょっと変わっています(笑)

eclipse40

こっちは、JavaEE 版ですが起動直後の画面。 派手!

eclipse41

PDT 2.0 からの一番嬉しかった修正は、XDebug のフロントエンドに文字コードの指定がつきました。 デフォルトで UTF-8 になっています。

eclipse44

このことで、以前はデバッガのウォッチで、変数に日本語が入ると化けていたのが修正されています。 まぁ、化けていてものりで分かったので極端には困っていませんでしたが、わかりやすくなりました。

eclipse42

そのほかは PHP 5.3 の名前空間やクロージャに IDE が対応したのが大きな変更点のようです。 PDT 2.0 ではコードアシスト系(定義ジャンプや補完機能)が、若干バギーだった印象をうけましたが、それも改善されているように思います。

PDT 2.1 Release Notes

Eclipse PDT 2.1 is the first toolkit to support the new language features provided by PHP 5.3 such as namespaces and closures, PDT 2.1 introduces a range of features such as code assist and smart navigation to make writing PHP 5.3 easy and intuitive.
The team has also continued fixing issues according to the feedback provided by users of PDT 2.0, which was released at the end of last year. Find your fixed bug here.

PHP という言語の特性上、エントリポイントがまちまちだったり、動的に include や require ができたりするので、ソースコード解析的には完璧な IDE というのはつくれない(動くまでプログラムの形が分からない・・・)とは思うのですが、それでもあると便利なことも多々あります。

また、Linux 版ですが以前書いていました、ATOK と使った場合の、「ファイル開いただけで修正扱い問題」は 3.5 で解消されています。 エントリにコメントくださったみなさん、ありがとうございました。

Eclipseユーザー調査を発表、進むLinuxの利用、Subversion人気 – SourceForge.JP Magazine

開発に利用するデスクトップOSを聞いたところ、26.6%が「Linux」と回答、「Windows」は63.9%、「Mac OS X」は1.8%だった。実装では、「Linux」は41.7%となり、「Windows」の38.3%を上回った。Eclipseによると、2007年の調査では、Windowsのシェアは開発が約74%で実装が約47%だったことから、LinuxはWindowsのシェアを侵食する形で増加していると見ている。Linuxでは「Ubuntu」が人気で、開発用で14.4%、実装で11.4%と、ともにシェア最多となった。

eclipse.org の調査によると、Linux 版を使っている方が増加しているとのことでした。 ユーザいないとバグとれないので、これは嬉しいです(笑) Java にしろ PHP にしろ、最終的に動かす環境が Linux なことも多そうなので、開発も Linux で、というところが増加の要因でしょうか。

てなわけで、PDT 2.0 な方は大丈夫そうですので移行するといいかもしれません!

あ、最後にひとつ注意です。 これは PDT じゃなくて Eclipse 3.5 全般ですが、OK/Cancel ボタンの位置が逆転していますので、長年使っている方はご注意ください。。 一瞬間違えそうになります(笑)