Česky   |  Deutsch   |  English   |  Español   |  Français   |  Indonesia   |  日本語   |  한글   |  Polski   |  Português (BR)   |  Türkçe   |  中文   |  正體中文   |  Your Language  
PlanetNetbeans
プラネット NetBeans には、ブロゴスフィアの各所から集められた、NetBeans に関連する概念やアイデアがあります。
フィード
[RSS 1.0 Feed] [RSS 2.0 Feed]
[FOAF Subscriptions] [OPML Subscriptions]
NetBeansのブログを書いていますか? PlanetNetBeansにあなたのブログを登録してください!!
フィード登録
uyota 匠の一手 (feed)
厨房IT - IDE (feed)
Florian’s NewestDiary (feed)
BiBoLoG (feed)
HighLookの日記 (feed)
Kazzzの日記 (feed)
MineAPの(開発)日記 (feed)
bojovs blog (feed)
challenge Ruby on Rails (feed)
ぼそっと (feed)
チョッパーのほふく前進 (feed)
Sacrificed & Exploited (feed)
こくぼ@Everything is the experience. (feed)
不可逆な毎日 (feed)
dullhikoのだるい日記 (feed)
ネットランダム改 (feed)
Scala で TAPLを勉強しつつ LLVM コンパイラを作る日記 (feed)
人工無脳が作りたかった (feed)
PHP,MySQL,Flexな日々+イラストとか (feed)
ひたすらプログラミング日記 (feed)
henacho-coの日記 (feed)
Foo am I? (feed)
CROSSFIRE DBとコンパイラの日記 (feed)
イトウ アスカ blog (feed)
techlog (feed)
asa nisi masa (feed)
怒りのJava学習 (feed)
kaisehのブログ (feed)
?   ...!?   ...!!   from Kei-Miya... (feed)
へぼの壷 (feed)
紫水晶の和 (feed)
forest of netBeans (feed)
鎌倉でも手の平捕球!エースコーチの日記 (feed)
marsのメモ (feed)
mk18のプログラミング日記 (feed)
Geek motherは今日も仙台で細々と暮らす (feed)
nidoの雑記 (feed)
きしだのはてな (feed)
忘備録1.0 (feed)
ryopeiの日記 (feed)
試行錯誤と創意工夫(S!アプリ開発日記+α) (feed)
しんさんの出張所 はてな編 (feed)
やさしいデスマーチ (feed)
ささくれ、深爪、口内炎。 (feed)
Tomute’s Notes (feed)
じゃばてないわー 帰国前暇つぶし編 (feed)
torutkの日記 (feed)
仙台Rails牛タン社長 (feed)
Servlet Garden @はてな (feed)
草木のにをいに誘われた (feed)
Happy my life » 検索結果: » netbeans (feed)
ねこび~ん (feed)
へびのぬけがら (feed)
Where's my Blog?!

Powered by:    Planet

Last updated:
May 22, 2013 10:07 AM
All times are UTC

Sponsored by
sponsored by Oracle

visit NetBeans website
きしだのはてな - May 18, 2013 11:18 PM
[java][java8]Java8で体験するオブジェクトと関数の狭間

Java8でlambda構文が導入されることで、Java言語も関数型のような性質をもつことになりました。

関数型の性質として大事なことのひとつに、関数を戻り値として返せるということがあります。lambda構文によって、Javaでも表記上は関数を戻り値として返すことが可能になったわけです。

で、関数を戻り値として返せるとどうなるかというと、関数をオブジェクトのように使えるようになります。まあ、Javaでは関数といっても普通のオブジェクトとして扱われるので、関数としてオブジェクトのようなものが記述できる、ということになります。


では実際に、オブジェクトのようなものを関数として記述してみます。

    public static Function<String, Object> myFunc(String name, String address, LocalDate birthday){
        return prop -> {
            switch(prop){
                case "name": return name;
                case "address": return address;
                case "birthday": return birthday;
                case "introduce": return (Runnable)() -> {
                    System.out.printf("わたしは%s。%sに住んでて%tY年%<tm月%<td日生まれ%n", 
                            name, address, birthday);
                }
                case "age": return (Function<LocalDate, Integer>)d ->
                        birthday.periodUntil(d).getYears();
            }
            return null;
        }
    }

ここでは、文字列でname、address、日付でbirthdayを受け取ると、「文字列をうけとってオブジェクトを返す関数」を返すような関数を定義しています。

ちなみに、NetBeansのデイリービルド201305152300版では、コンパイルエラーと表示されます。

※ returnのあとのセミコロンがなくてもb88でコンパイル通るというのが原因ぽい。これは仕様?

※2 b89だとコンパイルエラーになるらしい。残念。セミコロン追加してください。


このmyFuncをこんな感じで呼び出しますね。

Function<String, Object> func = myFunc("きしだ", "ふくおか", LocalDate.of(2007, 5, 26));
System.out.println(func.apply("name"));
System.out.println(func.apply("address"));
System.out.println(func.apply("birthday"));

表示はこうなります。

きしだ

ふくおか

2007-05-26


もどってきた「関数」が、name・address・birthdayといった属性をもっているようにふるまっています。myFuncはコンストラクタのような役割になっていますね。

定義では、文字列「name」を受け取ったらmyFuncの第一引数を返すといった「関数」をlambda構文で記述していて、クラスやオブジェクトを定義・生成するような構文は使っていません。


メソッドはどうでしょう?「introduce」という引数で「関数」を呼び出すと、Runnableオブジェクトが返ってきます。これは引数をもたず戻り値もない処理をあらわします。

Runnable introduceProc = (Runnable)func.apply("introduce");
introduceProc.run();

これを呼び出すと、次のように表示されます。

わたしはきしだ。ふくおかに住んでて2007年05月26日生まれ

ちゃんと、myFuncに渡した値が使われていますね。


引数をもつメソッドも定義できています。日付を渡すと、その時点での年齢を返してくれます。

Function<LocalDate, Integer> ageFunc = (Function<LocalDate, Integer>)func.apply("age");
System.out.println(ageFunc.apply(LocalDate.now()) + "歳");

次のように、正しく表示されますね。

5歳


このように、myFuncを呼び出して返ってきた「関数」が、オブジェクトのように使えることがわかりました。


このような、関数をオブジェクトのように扱う記述は、関数を値として扱えるような言語では比較的自然に記述することができるのですが、Javaではlambda構文で関数の記述はできるようになったものの値としてはオブジェクトとして扱われるので、非常にイビツな記述になっています。

コードの説明も、やはりちょっと苦しいです。


ただ、これが、なんだかオブジェクトと関数の狭間に迷い込んだことをあらわしていて非常に面白いなと思いました。

ちなみに、2007年5月26日は、Twitterをはじめた日なので、誕生日として扱っても間違いないです。


全体は次のようになります。

import java.time.LocalDate;
import java.util.function.Function;

public class FuncObj {
    public static void main(String... args){
        Function<String, Object> func = myFunc("きしだ", "ふくおか", LocalDate.of(2007, 5, 26));
        System.out.println(func.apply("name"));
        System.out.println(func.apply("address"));
        System.out.println(func.apply("birthday"));
        
        Runnable introduceFunc = (Runnable)func.apply("introduce");
        (introduceFunc).run();
        
        Function<LocalDate, Integer> ageFunc = (Function<LocalDate, Integer>)func.apply("age");
        System.out.println(ageFunc.apply(LocalDate.now()) + "歳");
    }
    public static Function<String, Object> myFunc(String name, String address, LocalDate birthday){
        return prop -> {
            switch(prop){
                case "name": return name;
                case "address": return address;
                case "birthday": return birthday;
                case "introduce": return (Runnable)() -> {
                    System.out.printf("わたしは%s。%sに住んでて%tY年%<tm月%<td日生まれ%n", 
                            name, address, birthday);
                }
                case "age": return (Function<LocalDate, Integer>)d ->
                        birthday.periodUntil(d).getYears();
            }
            return null;
        }
    }
}

marsのメモ - May 17, 2013 01:39 PM
[IDEA][life] Java Day Tokyo 2013でIDEバトルやってきました

https://oj-events.jp/public/application/add/64


血で血を洗う勝者なき闘い!!...なんてことはなく,和気藹々とやりましたよ。

こんな面白い企画に誘って頂き関係者の皆さん(&出張扱いにしてくれた弊社)には感謝です。こんな場所で話せるほどIntelliJがメジャーになったと思うと感慨深いものがありますね。


みんな気付いているけど,これが真実だよね。

そんでもご贔屓のツールについて語るのも聴くのも楽しいんだからしょうがない。:-)


当日モデレータとグルになった広報活動では伝えきれなかった点について若干補足しときます。IntelliJの特徴で伝え損ねたのですが,これの最大の特徴は,これだと思ってます。

基本的なコンセプトは,使う人が 『いろいろ』 知ってる前提でサポートするIDEで、
やりたいことが,よく知らなくても何とかしてくれる系ではないです

EclipseのCtrl+2みたいな「これだけ知ってれば何とかなる」みたいな機能は少なめですし,NetBeansのように「細けぇ事は気にするな」的なお手軽さはありません。「なんでもしてやるから指示しな」「ダメだったら文句言ってやる」となかなかスパルタンなところがあります。(´・ω・`)

裏を返すと,やりたいことがハッキリしてれば,その手順を邪魔しないし,絶妙なアシストをしてくれます。そんなIDEですが,クセが強いのであわない人はあわないだろうな...。


テキストエディタと異なるIDEのメリットについては,きしださんがキレイにまとめてくれました。


FindBugsやCheckstyleあたりをうまいこと使えばテキストエディタでも似たような事はできますが,シームレスさに置いてはIDEに軍配があがると思います。テキストエディタより動作が重くなる理由のひとつでもあるんだから,そこは認めとこう。

この手のお節介機能については,IntelliJも負けてないんだけど,頑張りすぎて項目が膨大になり互いに矛盾するものもあって,使いこなすのは結構ちょっと大変。IntelliJ(Hectorおじさん)に指摘されたことを盲目的に信じずに「これは直す」「これはいいや」と取捨選択できないとうっとうしいだけだろな。

24日目 Inspections & Intentions - marsのメモ


ps.

今までほとんどIntelliJユーザに遭遇したことがなかったので行くまで「IntelliJが流行ってるとかガセ」と思ってたら違ってた。東京すごい。

あとtwitterでしかあったことがない皆さま方も実在してた。現実すごい。


(゜Д゜)ハッ!! これが「深淵をのぞく時、深淵もまたこちらをのぞいているのだ。」と言うことか...。

きしだのはてな - May 16, 2013 02:54 AM
Java大好き男に「どのIDEが好き?」と訊ねられたとき、女はどう答えたらいいの?

あ、まず前提として、

貴女がJava大好き男を夢中にさせることが、

はたして貴女を幸福にするかどうか、それはまた別問題だけれど。

とはいえ、Java大好き男たちは玉石混交ながら、

大手SI系の給料高い男なども多く、

したがって、釣り師たる女たちにとっては、

なかなかあなどれない釣り場です。


では、Java大好き男に「どのIDEが好き?」と訊ねられたとき、

貴女は、どう答えれば理想的でしょう?

まず最初に、その男がAndroidのようなタイプの携帯アプリと

あとはJavaScript、そして(アプリ公開するほどではないけれど)iPhoneアプリが大好きな、

そんなタイプの場合は、

貴女はかれの目を見て、微笑みとともに質問など無視して、こう言いましょう、

「わたしが、いいIDEを作ってあげる♪」

これこそまさに必殺の答えです。

そこでJava大好き男が、えへへ、とやにさがったならば、

貴女は、ひそかに、「IntelliJベースのAndroid開発ツール」あたりを

ひそかに開発しておきましょう。これで成功まちがいなしです。


しかし、ここでは、もう少しハイブロウな(?)いわゆるOracle Java好きの男の

落とし方をお伝えしましょう。

この場合、貴女は、こう答えましょう、

「わたしは、NetBeansが好き。

zipでよく落とすの、、

最初から日本語化されてるのも、大好き♪」

もしも貴女がそう答えたならば、

その瞬間、Oracle Java大好き男の目はきらりと輝き、

かれの貴女への恋心は、

20%増量になるでしょう。


では、参考までに、危険な回答を挙げておきましょう。

Oracle Java大好き男に「どのIDEが好き?」と訊ねられたとき、

貴女がこう答えたとしましょう、

「OracleのJDeveloperが好き♪ 毎年1案件は大手案件で使うの。」

その瞬間、Java大好き男の貴女への恋心は消えます、

なるほどJDeveloperは、Oracle製のJava IDE、

エディタは平凡ながら、ま、無難にまとめてあるものの、

しかし、「ADFコンポーネントはなんと30種類以上!」とかなんとか無意味な自慢を吹聴し、

Javaプログラム開発についての謬見を撒き散らした罪がありますから、Java大好き男にとっては天敵なんです。

また、もしも貴女が「JBuilderが大好き♪ あたしインストールしたBorlandツールたくさんあるよ♪」

と答えたとしても、同様の効果をもたらすでしょう、

なぜって、JBuilderは、1990年代にはJava屈指の名IDEだったものの、

しかし2000年代そうそうから、いやはやなんともなEclipseプラグインに転落し、

いまや、あの機能ではNetBeansの魅力に遥かに及びません。


またもしもたとえあなたがJavaが大好きで、

「わたし、IntelliJのIDEAが好き、無料でも使えるけど、

最高に好きなのはUltimate Edition♪ Scalaプラグインもすっごく使いやすいの。」

と、答えたとしたらどうでしょう?

なるほど、貴女の趣味は高く、

たしかにIntelliJ IDEAは、外装が chick であるのみならず、

機能も最高に使いやすいんですけれど、

しかし、貴女の答えを聞いて、Java大好き男はきっとおもうでしょう、

(なんだよ、お高くとまった女だな、カネかかりそう)って。


貴女が、Javaが大好きで、IDEの名を挙げるにしても、

たとえば、Eclipseならば安心でしょう、

なぜならば、Eclipseは、ふつうのサラリーマンにもマニアにもともに愛されるめずらしいIDEで、

貴女がそのIDEを挙げても必ずしも、あなたがJavaおた宣言をしているとは受け取られないでしょう。

しかし、たとえば、vimにせよSublime Text 2にせよ、

そういうエディタの名前をいきなり挙げるのは、ちょっぴり微妙。

ましてや貴女が、「Emacsが大好き♪ わたし、もうほとんど全ソース、読んじゃった♪」

と答えたならば、どうでしょう?

これはかなり博打な答え方で、

なるほど、Emacsは、Unix系OSの超絶名エディタゆえ、

あなたがそう答えた瞬間、Java大好き男がいきなり超笑顔になって、

鼻の下がだら〜んと伸びちゃう可能性もあるにはありますが、

しかし、逆に、(なんだよ、この女、エディタおたくかよ)とおもわれて、どん引きされる可能性もまた大です、

なぜって、必ずしもJava大好き男がエディタ大好き女を好きになるとは、限らないですから。

しかも、この答えには、もうひとつ問題があって、

男たちは、女を導き高みへ引き上げてあげることが大好きゆえ、

もしも貴女が、「Emacsのマクロが大好き♪」なんて言ってしまうと、

そこにはもはや、男が貴女をプログラマ教育する余地がまったく残されていません、

したがって貴女のその答えは、

Java大好き男の貴女への夢を潰してしまうことに他なりません。


ま、ざっとそんな感じです、貴女の目には男たちはバカでスケベで鈍感に見えるでしょうが、

しかし、ああ見せて、男は男で繊細で、傷つきやすく、IDEに夢を持っています、

貴女の答え方ひとつで、男の貴女への夢は大きくふくらみもすれば、

一瞬で、しぼんでしまいもするでしょう。


では、スキットを繰り返しましょう。


「わたしは、NetBeansが好き。

zipでよく落とすの、、

最初から日本語化されてるのも、大好き♪」

そして、その瞬間、Java大好き男の目がらんらんと輝いたなら、

貴女はこう重ねましょう、

「それからね、いま、わたしが使ってみたい機能は、

Java8のLambda、素敵な文法って噂を聞いたから。

あなたのお暇なときがあったら、わたしをJava8へ連れてって♪」

これでもう完璧です。


そうなったらこっちのもの、

デートの日には、アイメイクをばっちり決めて、かわいい下着をつけて、

Java Oneか、デュークの可愛いTシャツを着てゆきましょう。

その日から、Java大好き男は貴女の虜になるでしょう。

では、釣り師としての貴女の、愛の幸運と幸福をお祈りします!


参考

インド料理大好き男に「どこの店が好き?」と訊ねられたとき、女はどう答えたらいいの? : グルガオン GURGAON 食べログ

torutkの日記 - May 04, 2013 12:00 AM
[Java]自宅PC(Windows)のJava環境メモ(JDK7/JDK8, NetBeans IDE)

JDK(Java SE 開発キット) 自宅PC(Windows 8 64bit)のJDKを、Java SE 7 u21にアップデートしました。OSは64bit版ですが、JDKは32bit版と64bit版の両方をインストールしています。Javaで書かれたプログラム(クラスファイル)だけなら64bit版Javaだけインストールしていれば動きますが、ネイティブコードを伴うプログラムは32bit版ネイティブコードの場合32bit版Javaが必要になるので両方をインストールしています。 次に、Java SE ...

marsのメモ - April 21, 2013 08:47 AM
[IDEA][mac] Dash LauncherプラグインをIntelliJにインストールする

APIリファレンス&スニペットブラウザのDashなんですが、設定見るとAppCodeと連携できるようです(NetBeansはありませんね...。|ω・`)チラッチラッ

f:id:masanobuimai:20130421173741p:image

Mac App Store - Dash (Docs & Snippets)


調べてみると、AppCodeのプラグインとして提供しているようだったので、ものは試しとIntelliJに入れてみたらアッサリ動いた。やったことと言えば、"Tools->Search in Dash"の割り当てキーが「ctrl+SHIFT+D」で既存のキーマップと競合していたので、こっちを優先してあげたくらい。

f:id:masanobuimai:20130421173038p:image


たぶん、これIntelliJ以外のJetBrains系IDEでも動くよね。DashのAppCode用プラグインは、Githubのプロジェクト内にある(Dash.jar)ので、それを取ってきてインストールするだけでよい。

Kapeli/AppCodeDashSearch ? GitHub


docset指定したり、もうちょっと使いやすくする余地はありそうなんだけど、それよりもDashのWindows版が欲しいです。:-)

marsのメモ - March 26, 2013 02:10 PM
[memo] JDKのバージョンアップポリシーについて

長いだけでオチは無いよ。


「Java6がサポート切れた」だの「秋にはJava8が出る」だのとJavaのバージョンアップキャンペーンっぽい話題をちらほら聞きますよね。実際、保守しているシステムも、やれハードウェアの老朽化だ、OSやミドルウェアの保守切れだ、とかいう理由で否応なしにJVMのバージョンアップをするハメになりますよね。でもコンパイラ(JDK)のバージョンアップってどうしてるんですかね?


JVMはそれを必要とするミドルウェア(大抵はAPサーバですわな)がサポートしてないって大義名分があるので、Java5だJava6だと定期的にバージョンアップしてくんだけど、その上で動いているシステム(まあ業務アプリだわな)のコンパイラ(JDK)まで気にしてるって話は意外なほど聞かないのよね。


んで、どうしてるかというと、何もしない。いわゆるSI業界では、ソフトウェアは「やわらかいモノ」ではなく「モロいモノ」という扱いなので「寝た子は起こすな」が鉄則なので、要らんことはしない。したがって、JDK1.4が主流だった時に作成したシステムは2013年になった今でもJDK1.4でコンパイルしているのが普通...なんだと思うのデスよ。

え?そんな古いJDKどっから手に入れるかって?抜け目の無いプロジェクトは、保守に必要な環境をインストーラごと保管しているので、そんな心配はご無用さ。:-)

システムを構築した業態・業界にもよると思うんですが、業務システムって想像以上に長生きで、2000年あたりに新規構築したシステムが今でも現役なんて珍しくないですよね(と誰とは無く。


「JDKは据え置き」が果たしていいのか?というと悪いとも思うし、良いとも思う。つまるところ、そのプロジェクトなり会社なりのバージョンアップポリシー如何なんだけど、実際は前述の通り「何かあったら怖いから現状のままにしてる」が多数派なんじゃなかろうかと。なんで「ウチはこれこれ、こうゆう理由で、こんな対応してるよ」って事例があったら、それによろこんで倣うと思うんですよね。それがある程度の権威がある事例だったらなおさら。:-P


そうは言っても、選択肢は多くは無くて、やる事と言ったら

  1. JDKのバージョンは塩漬けのまま変えない
  2. JDKもバージョンアップするJVMと同じバージョンにあわせる

くらいかと。後者(JDKもバージョンアップ)を選ぶ理由のわかりやすい例は「JDKだってサポートプラットフォームがあるんだぞ」ってヤツ。今でもWindowsXPで開発してるところはあるけど、だいたいWindows7使ってるところもあるよね。で、仮にJDK1.4を使うとして、それがWindows7をサポートしてるか?っていったら、そんなワケないですよね。

正直、JDKのサポートプラットフォームなんて「細けぇこたぁどうでも良いんだ」と思うのだけど寝た子を起こすな哲学は長いものに巻かれろ哲学と互換性があるので、何かあっても文句言えるところを確保するってのも立派な理由のひとつですわな。


じゃあ、JDKもいっしょにバージョンアップするとした場合、どんなパターンが考えられるか。


JDKだけバージョンアップしてコンパイルする

大抵、これでしょうね。多少、警告が出ると思うけど見なかったことにして、ほとんど何もしないで完了する。運が悪いと、次の理由でコードを修正することになるけどね。

  • 変数名とかが新しいJDKで採用された予約語と被った
    • assertが被るって事はそうそう無いけど、enumはありそう。:-)
  • JDKのAPIを独自拡張してるクラスが、JDK側のAPIの追加・非推奨化の影響を受けた
    • 継承したり委譲してたりしてたJDKのAPIが増えた・減った場合ですね。これはフレームワークとかユーティリティを自作してると直面しそうですね。

JDKのバージョンアップに伴い、ソースコードもそのJDKの特徴にあわせて修正する

たとえばJDK1.4からJDK5以上にしたから、ついでにソースコードにも手を加えて、拡張forやオートボクシング、ジェネリクスといった特徴を取り込もうってヤツです。普通の発想だったらまずやりませんよね、こんなことw

個人的には、この手(ミドルウェアの更新みたいな)バージョンアップは4〜5年に1回の割合でしか起きないので、これくらいの無難な変更を全体に行うことで保守要員の育成にもなるんじゃないかなって思うんですよね。なんですかね、伊勢神宮方式とでも言いますかね。

ただ現実問題、

  • そんな広範囲に手を加えるためのコストが捻出できない
  • 無難な修正といってもデグレードを起こす可能性はある

などの理由で、これが採用されることはないだろうなと思ってます(そんな話を聞いた試しもない。:-P


そんわけで、JDKは据え置き/運が良くてJVMと同じバージョンのJDKを使うけどソースコードは必要最低限しか弄らないのどっちかだろなと。ただ後者(JDKもバージョンアップ)を選択した場合、その後の保守でソースコードに手を加えるときはどうすんだ?って疑問が残るのですよ。


つまり「元はJDK1.4で作ったソースコードだけど、今はJDK7でコンパイルしてる」なーんて状況で、何かしらの仕様変更を行うとき、そのソースコードはJDK7の特徴を存分に使っていいのかどうかって事ですわ。放っておくと、eclipseさんやNetBeansさんといったIDEが気を利かせて、最新のJDKの特徴を駆使したテンプレートを展開したり、何古くさいコード書いてんだって警告してくれるので、否応なしに新しいコードになってきますよね。で、古い書き方のコードと新しい書き方のコードがパッチワークみたいに混在しちゃうわけだ。


「それでいいのか!?」って思うけど、それもプロジェクト事のポリシーに寄るんだよね。当然、パッチワークになるのを嫌えば新しい書き方禁止!で、カビが生えたプロジェクト固有のコーディングルールを守るわけだ。これって特に若手にとって不幸な事だと思うのよね。だって書籍だの研修だので覚えるJavaはいわゆる近代のJavaだと思うんだ、なのに仕事で書くのは習ったことも無い古典Javaなーんて話が笑い話じゃ無く起きてる。


Java5、Java6、Java7でもって今度はJava8でそれなりにJavaも便利な書き方ができるようになってるんだけど、すぐに新しい特徴を取り込める状況にあるかというと、そうでも無いどころか、取り込むのを禁止したいと思う状況だったりするので、悩みは尽きないのですよ(でオチも無いw


ps.

ちなみに、JDK1.2からJDK7.0までの間にJDKの互換性がらみで困ったことは、この2つくらいしかないんですよ。

  • enumが予約語になった(JDK5.0から)
  • JDK1.4までのBigDecimal.toString()がJDK5.0からBigDecimal.toPlainString()になった
    • 他にもJDBCまわりでAPIの増減はあったけど、それで困るケースってそうなかった

それ以外については、JDK1.2でコンパイルしたクラスファイルであろうと元気に最新のJVMで動くので、Javaの上位互換性はスゴいなって正直思う(それ故にBigDecimalの件はイラっと来たけど)。


ふむふむ。

へびのぬけがら - March 15, 2013 11:10 PM
NetBeans IDE 7.3 リリース

ずいぶん、時間が経過していしまいましたが、 NetBeans IDE 7.3 がリリースされています
恒例のスプラッシュです

今回のリリースで最も目玉となる新機能はやはり HTML5 サポートかと思います
その他にも多くの新機能が追加されていますので、ぜひお試しください
何かお気づきの点がありましたら、 ML 等へご連絡お願い致します

marsのメモ - March 10, 2013 05:54 AM
[IDEA][eclipse][NetBeans][IdeaVIM] jVi, Vrapper, IdeaVIMの比較

ちょいと前にマジメに比較してみて、そのまま死蔵してた資料が出てきたので供養のつもりで公開してみる。知らない人に簡単に説明すると、jVi, Vrapper, IdeaVIMはそれぞれNetBeans, eclipse, IntelliJ IDEAのvi/vimプラグイン。世の中のvi/vimユーザの怨念たるや凄まじく、IDEなんてモードレスエディタが当たり前なのに、無理矢理vi/vimモードを実装した猛者がいるのです。


どれも一定水準以上のすばらしい出来なんだけど、vi/vim(特にvim)に対する拘りも人それぞれで、満足する人、それでも不満が残る人がちらほら。でも、どうがんばってもこれらプラグインがvimに追いつくことは叶わぬ夢なので、どの辺で妥協できるかが、これらを受け入れられるかどうかのポイントになるかと。

それと想像に難しくないけど、どれもvimscriptはサポートしてないよ。


jVi, Vrapper, IdeaVIM以外のvi/vimプラグインについては、この辺を参照のこと。

各種IDEのvi/vimプラグイン - marsのメモ

VsVim - 猫とC#について書くmatarilloの雑記


jVi 1.4.5 : NetBeans用vimプラグイン

http://jvi.sourceforge.net/

古くはJBuilderのviプラグインでNetBeansに移植された。もともと"vi"プラグインだったので、vimの機能が不足してたんだけど、この前調べたらそんなことなかった。

気になった点をいくつか。

  • Ctrl-[ でエディットモードに復帰できないけど、オプションで指定できるようになる。
  オプション -&gt; jVi Config -&gt; Ctrl-Key Bindings で "Ctrl-[ the "real" &lt;ESC&gt;"をチェックする。
  • :コマンドにNetBeans固有のコマンドがある。
  :fiximports    ... import文の最適化
  :make          ... ビルド実行(引数にターゲット名を指定できる)
  :grep          ... 「使用状況を検索」ダイアログを表示する。検索対象はカーソル位置から決定。
  :tselect       ... 「型に移動」ダイアログを表示する。
  :e#            ... #で現在開いているファイルの一覧が表示される。
  • ウィンドウ分割機能あり。わりとしっかりしている。
  Ctrl-W, h j k l   で分割ウィンドウ間の移動が可能。
  Ctrl-W, H J K L   で分割ウィンドウ間の位置移動が可能。
  • ワード移動は日本語(全角)と英語(半角)を区別しない
  • ある程度のオプションはNetBeansよりjViが優先される。たとえば、行番号,不可視文字の表示,ワードラップ...なんかはNetBeansのオプション指定が効かない。

Vrapper 0.24.0 : Eclipse用vimプラグイン

http://vrapper.sourceforge.net/home/

eclipse最古参のvimプラグインはviPlugin(http://www.viplugin.com/viplugin.htm)だったと思うけど、今はこっちのほうが有名なんでは?

こいつの一番の売りは mapコマンドでeclipseのコマンドをvimにアサインできることだと思う。

Eclipseのキーバインドをvim風にできるVrapperが素晴らしすぎる件について - ( ???) ゆるよろ日記


あと surround.vim(相当?)を独自実装してるみたい。

ワード移動は日本語(全角)と英語(半角)を区別しないどころか、特定の区切り子だけをみてるだけっぽかった。


IdeaVIM 0.23.93 : IntelliJ IDEAのvimプラグイン

https://github.com/JetBrains/ideavim

これもだいぶ古くからあるプラグイン。一番使い込んでて、不満があったらパッチ当てちゃうので公正な評価ができない。:-P

[IdeaVIM] - marsのメモ


元々はRick Maddyさんが個人的に公開してたプラグインなんだけど、彼がメンテできなくなったのでメンテナに @ さんが名乗りをあげて、このあたりからJetBrains公式プラグインになったみたい。ちなみに現在のメンテナである @ さんはとても意欲的で twitter で "IdeaVIM" ってつぶやくと、どの言語でつぶやいたかに関わりなく「バグだったらYouTrackにファイルしてね?」ってmention送ってくる。

ちなみに、IdeaVIMのワード移動はvim互換でちゃんと日本語と英語を区別するよ。


機能比較表

一式もろもろを比較したのがこちら。思ってみればクリップボード操作も拘りもってる人居そう。あたしは、vimでもCtrl+X,C,Vにremapしてるから全然気にしてないけど。:-)

あと設定できるオプションもプラグインによって異なるのでご注意を。

きしだのはてな - February 26, 2013 01:14 AM
[Java][NetBeans]Jacoco+NetBeansでカバレッジを取ってJenkinsで記録

カバレッジをとるのに、Jacocoを使ってみました。

設定などのメモ。


Mavenの設定

project > build > pluginsタグに次のようなプラグインを追加します。

          <plugin>
              <groupId>org.jacoco</groupId>
              <artifactId>jacoco-maven-plugin</artifactId>
              <version>0.6.2.201302030002</version>
              <executions>
                  <execution>
                      <goals>
                          <goal>prepare-agent</goal>
                      </goals>
                  </execution>
                  <execution>
                      <id>report</id>
                      <phase>prepare-package</phase>
                      <goals>
                          <goal>report</goal>
                      </goals>
                  </execution>
              </executions>
          </plugin>

NetBeansのカバレッジまわりの機能

NetBeansは、特に設定をしなくてもpomにカバレッジの設定があるとカバレッジ関係の機能が使えるようになります。


プロジェクトメニューにカバレッジのメニューが追加されているので、「レポートの表示」とするとカバレッジレポートが表示されます。

f:id:nowokay:20130226100947p:image


レポート画面で「すべてのテストの実行」とするとテストが実行されてカバレッジが計測されます。

f:id:nowokay:20130226100946p:image


そのとき、エディタ画面ではテストされた行とされてない行が色分けされます。「完了」を押せば、カバレッジ表示されなくなります。

f:id:nowokay:20130226100945p:image


Jenkinsでのカバレッジ記録

JenkinsにJacoco pluginを導入すると、「ビルド後の処理」として「JaCoCoカバレッジレポートを記録」が選べるようになるので追加します。

そうすると、カバレッジが記録されます。

f:id:nowokay:20130226100943p:image

marsのメモ - February 24, 2013 01:09 AM
[life] Java One 2012 フィードバック!( #てらだよしおまつり )に参加してきた

http://tohoku-dev.jp/modules/news/article.php?storyid=182


約半年ぶりに寺田さん(@)が来仙するってんで参加してきました。内容はJava One 2012 SF中心でJavaEE7とかJava8とかといったかなり未来の話。:-)


いろいろ考えさせられたが、それ故に消化するまで時間がかかりそうなので、主立ったメモだけ残すよ。


はじまった。


JCPはよりオープンになったって話。Specification LeadsやExpert Groupに属して無くても意見があったらガンガン言えるようになった(むろん英語で)。Java8のλに関しても日本の大学生がガンガン意見言ってたという事例があるそうな。

そう思うと日本初のJSRが一つくらいあってもいいんじゃないかと。例えば2Way-SQLなんかJSR化してもいいくらいの良い考え方だと思うけどなー、とか思ってみたり。


「社外のコミュニティに積極的に参加してる人とそうでない人で情報格差が広まっている」とのこと。まあ、そうかも。こうゆう場に集まる人たちはアンテナ高いけど、それを職場にフィードバック出来てないのは不徳の致すところでございます。


JSF2.2やWebSocketのAPIとか見てて思わず「ラッパー組んじゃる」って考えるのは悪いクセ。いちいち帯に短したすきに長しと思わないで、黙って出来合いのAPIを使ってみようという境地に至りたい。


番外編:

スライドにあったIDEの紹介にeclipseやNetBeansだけでなくIntelliJ IDEAもあったのは評価するが、相変わらず動的言語でgroovyを飛ばす(なんか恨みでもあるのかw

JavaScript無双をどこまで信じていいものか...。(´・ω・`)


おまけ:

まだJava6すら使ってない我々にとっては未来過ぎる話でしたね。:-)


ps.

寺田さん、最新情報をありがとうございました。テム・レイ化しないようコツコツ素振りします。それと運営の村上さん(@)おつかれさまでした。ノシ

torutkの日記 - February 24, 2013 12:00 AM
[Java][NetBeans]NetBeans 7.3をインストール

先日、NetBeans 7.3が正式リリースされたので早速インストールしてみました。今回はWindows 8(64bit版)に、NetBeans IDE 7.3 すべて版を入れました。すべて版にはJava SEのほか、JavaCard、Java ME、Java EE開発環境とJava EEアプリケーションサーバー(GlassFishおよびTomcat)、C++、Groovy、PHPのプログラミング言語開発、HTML5+JavaScript+CSS開発機能が同梱されたものになります。 NetBean ...

torutkの日記 - February 15, 2013 12:00 AM
[Java読書会]デブサミ2013コミュニティブース出展(2日目)

デブサミ2013コミュニティブース出展(1日目) - torutkの日記に引き続き、2日目の出展です。 昨日は、過去Java読書会BOFで読んだ本を、年代順に手前から並べていたので、最新のものが奥側になっていました。ここ最近オライリー本が多く、オライリー本は表紙のレイアウトでタイトルが下の方に位置しているので、写真のように重ねて並べるとタイトルが隠れてしまうという問題がありました。 そこで、今日は、年代順に奥から並べてみました。 また、ポストイットでいくつかの本にキャッチーをつけてみました。例えば ...

torutkの日記 - January 14, 2013 12:00 AM
[Android]Android端末実機デバッグ

Android開発環境を構築する(オフライン環境)(続) - torutkの日記のおまけです。 Android SDKを使った開発では、PC上でAndroidエミュレータ(AVD)を使ってAndroidアプリケーションを実行します。しかし、このAVDが「激重」で、起動するのに数分かかる代物です。 そこで、Android携帯端末を持っていれば直接その端末で実行・デバッグした方が快適です。PCとAndroid携帯端末をUSBケーブルで接続してPC上で作成したAndroidアプリケーションを 実行できる ...

torutkの日記 - January 13, 2013 12:00 AM
[Android]Android開発環境を構築する(オフライン環境)(続)

Android開発環境を構築する(オフライン環境) - torutkの日記の続編です。 今回は、NetBeans IDEにAndroidプラグインをインストールし、NetBeans上でAndroidプログラミングができるまでの環境を構築します。 NetBeans用Android開発プラグイン NBAndroidのインストール NetBeansのAndroidプラグインは、「NBAndroid」を使います。NBAndroidホームページは次のURLです。NetBeansは基本的には7.2以降です。 ...

きしだのはてな - January 10, 2013 11:43 PM
[java][netbeans][glassfish]GlassFishのカスタムリソースに日本語で説明を入れるとNetBeansが認識しなくなる

JavaでWebアプリを開発するとき、開発環境と本番環境で違うような値はカスタムリソースとして持たせたりすると思うのだけど、その説明に日本語を入れるとNetBeansがGlassFishを認識できなくなってしまった。

f:id:nowokay:20130111022307p:image


説明を英語にすると認識できるようになった。

これ、NetBeansの動きがおかしいけど、問題はGlassFishの設定ファイルであるdomain.xmlに、<?xml 〜?>で文字コードとかを指定していないことにあるんじゃないかなー。

ちなみに、<?xml 〜?>を手書きで追加しても、GlassFish起動時に消されてしまいました。

torutkの日記 - January 09, 2013 12:00 AM
[JavaFX]JavaFXのTableViewを使う画面をシーンビルダーで作成する

JavaFX 2の表(テーブル)コントロールTableViewを使った簡単なサンプルを、SceneBuilderを使って作成する手順を、以前の日記 id:torutk:20121005 に文章で書きました。 文章だけでは分かりにくいので、SceneBuilderとNetBeansを使ってJavaFX FXMLアプリケーションでTableViewを使う簡単なプログラミングについて画面キャプチャを交えて次のホームページに作成しました。 http://www.02.246.ne.jp/~torutk/j ...

forest of netBeans - January 04, 2013 08:07 PM
あけまして おめでとうございます。2013

去年は何かすべてにおいて行き詰っていて、NetBeansを使っていませんでした。

そんな中、年末に片貝さんのセッションや自分の周りのNetBenasユーザーの

使用状況を聞いて刺激をうけたので、自分も今年はNetBeansを使っていきた

いとおもいます。

それにしても、久しぶりNetBeans使ってみたら立ち上がり軽くなったなあ!

marsのメモ - December 24, 2012 03:18 PM
[IDEA] 25日目 IntelliJ IDEA Advent Calendar 2012 インデックス

やっと終わったわ。:-(


IntelliJが出来ることはもっといろいろありますし、正直びみょーなところや「これって他(Eclipse/NetBeans/etc)のほうがマシじゃね?」って点も多々ありますので、おのおのそれなりなつきあい方を模索してみてください。


信者になれば毎年の年貢や不意のセールで心が揺らぐこともなくなるでしょう(ンな分けない。:-P

marsのメモ - December 23, 2012 03:08 PM
[IDEA][advent] 24日目 Inspections & Intentions

私に「Javaでいいや」どころか下手すると「Javaが良い」と思わせるIntelliJの超絶変態機能。Inspectionsはコードの検査で,いわゆる「Checkstyle&Findbugsの強力バージョン」。Intentionsは意図というか気づき?EclipseでいうQuick Assistっぽい感じ。


Inspectionsは検査なので,エラーや警告,プロジェクト固有の規約違反などを指摘する(指摘項目によっては,その解決もしてくれる)。Intentionsは「こうも書けるよ」的なアドバイス。どっちも実行キーは,ALT+Enter(macだとopt+Enter)で実行可能な箇所にカーソルを置くと電球アイコンが表示される。


ALT+Enterについては、はるか昔に解説してた。

31日間ReSharper一周 ... それIDEAでもできるよ(その8)


Eclipse知ってる人には「Ctrl+1のようなもの」と言えばピンとくるかも(Ctrl+2っぽいのは無い)。NetBeansはまんま同じキーで同じことできるから分かるでしょ。


Inspectionsはエラーや警告の類いなので、エディタの右側にマーカーバーとして指摘箇所を表示してくれる。マーカーバーの説明も昔書いてた。

31日間ReSharper一周 ... それIDEAでもできるよ


ファイルを開くたびに検査を実行するので、有効になってるInspectionsが多いほど検査に時間がかかります。検査中はエディタ右上端のコンパイルステータス(compile status)が目玉マークの間は検査中ということを示してます。

f:id:masanobuimai:20121216105926p:image


このコンパイルステータスを緑に保つのが良いことなのですが、検査項目をうまいこと調整しないと緑にするのは至難の業です。2007年に紹介したときは630項目くらいだったのですが、IDEA12のデフォルト*1であらためて数えなおしたところ1,600項目近くありました。中には互いを打ち消し合う検査項目もあるので未調整でステータスを緑にするのは今や不可能ですね。:-P


うまいとこ手綱を握らないと鬱陶しいことこの上ないInspectionsですが、普段だったらうっかり見落とすような事まで指摘してくれるので、とても頼りになるパートナーとペアプロしてると錯覚することもままあります。ここまで徹底して指摘できるのも、型でガチガチに縛ってるJavaだからなんだよなぁと思うと「(IntelliJ使うんなら)Javaも悪くないな」と思うわけです。むろん、RubyやJavaScriptなどの他言語用のInspectionsもありますが、数や精度ではJavaのソレに及ばないです。


Inspectionsはひとつひとつ警告レベルを指定でき、モノによっては専用のオプションもあるので、一度じっくり項目をながめてみることをオススメします。過去に紹介したInspections系のエントリにも、いくつかオススメが載ってますので、ご参考まで。

「正しいソースの書き方養成ギプス」をIDEAでもやってみる。

behind the times: 10 Best IDEA Inspections You’re Not Using

Usages of API documented as @since 1.5


Inspectionsの調整は、まず項目ごとの警告レベルの設定ができます。デフォルトの警告レベルは「As typo/As server problem/As weak warning/As info/As warning/As Error」の6種類。

f:id:masanobuimai:20121222220641p:image


"As server problem"はJetBrainsのCIサーバであるTeamCityを使ってなければ設定する必要すらありません。通常は"As warning"なんですが「ウザいけどOFFにするのはどうも」ってのは"As weak warning"か"As info"にしとくといいです。

一応、デフォルト以外の警告レベルも追加できるのですが、そこまでするのはやり過ぎかなと思います。

f:id:masanobuimai:20121222220642p:image


それと先ほども言いましたが、Inspectorによっては独自のオプションを持っているものもあります。正直、プロジェクトごとにいちいち設定するのは大変ですので、その辺はうまいこと使い分けしましょう。

f:id:masanobuimai:20121222220643p:image


ちなみに、Inspectionsの設定は、Settings->Inspectionsで行います。この設定画面にはステータスバーに居るHectorおじさん経由でもたどり着けます(おじさんをクリックして"Configure Inspections"をクリック。

f:id:masanobuimai:20121222222246p:image


それ以外にも、警告箇所でALT+Enterを押し、該当する検査項目からInspectionsの設定画面に飛ぶこともできます(下図の場合、"Flip comparison(Constant on right side of comparison)"が検査項目で、そこから展開したメニューにある"Edit inspection profile setting"で設定画面に飛べます)。

f:id:masanobuimai:20121222222250p:image


Inspectionsの設定項目が多すぎるので、とりあえず全設定ONにして実コードの検査度合いをみつつ、上記方法で個別に警告レベルの調整をしたりしてます(それでも調整はくたびれます)。このサブメニューを見てもわかるように、検査項目の設定に飛ぶだけでは無く、検査項目そのものを無効(Disable inspection)にしたり、ここでだけ検査を無効(Suppress ...)することも可能です。ただし、"Disable inspection"を選択した場合、その検査項目は二度と登場してきませんので、復帰させるには1,600もあるInspectorsから探し出さないといけません(これもかなりくたびれる作業です。:-(


ちなみに、上記スクリーンショットの"Flip comparison"の下にある鉛筆アイコンの項目3つがIntentionsになります。こちらは検査項目ではないのでマーカーバーには影響ありません。


Hectorおじさんについて補足すると、検査レベル(Highlighting Level)を「Inspections/Syntax/None」に変えるたび、おじさんがそっぽを向いていくという細かい芸があります。

f:id:masanobuimai:20121222222247p:image

f:id:masanobuimai:20121222222248p:image


なんとなく想像が付くかと思いますが、このInspectoinsは結構CPUパワーを食います(つまり動作が重くなる)。そのため検査レベルを下げていけばいくほどIntelliJが軽くなります。その分、IntelliJを使っている良さも減っていきますが...。とはいえ非力なマシンでIntelliJを使うと、ホントに泣きたくなるほど遅くなるので、背に腹は代えられないときは、この辺から調整してみることをオススメします。


それとIDEA9あたりから"Power Save Mode"というのがつきました。Helpを読んでも要用を得なかったのですが、名称からしてCPUにやさしいモードなのだと思います。その証拠(?)に、このモードにするとHectorおじさんが完全に沈黙します。

f:id:masanobuimai:20121222222249p:image


いずれにしろ、明らかに余計だと思えるInsepctionsは無効にしておいたほうがPCにも、利用者の気持ちにもやさしいと思います。:-)


あと、その気になれば自分でもInspectionsやIntentionsを作れます。

独自Inspectorを作ってみる

QuickFixの作り方

この前,独自Inspectorで試したことを,他の方法で実現してみんとす


やめりゃ良かったと作り始めてから思ったのですが、IDEA12でデフォルトのプラグインをすべて有効にしたときのInspectionsとIntentionsの一覧を作りました。気になる&使っている順にコメントも付けてます。まだ完成してませんが、気長にこつこつやってこうと思います("+"付いてるのが、個人的オススメ。それらをError, Warinig, Infoのどれにするかは各自が決めて。

IntelliJ IDEA : inspections&intentions




当然ながら、RubyやPHP、Python、Scala、Kotlinなどの言語系プラグインを入れると、それ用のInsepctionsやIntentionsが増えます。:-P

*1:IDEA12の標準プラグインを全て有効にした状態

marsのメモ - December 20, 2012 02:26 PM
[IDEA][advent] 20日目 artifactの設定(ついでにProject Structure )

Settingsの話は3回もやりましたが,Project Structureの話をしてませんでしたね。正直,面倒なので,昔に書いたエントリーやIntelliJ本体のヘルプを参照してください(だんだんやる気がなくなってる。

初めてIntelliJに触れる人へ − プロジェクトの設定とかテスト実行の話


IntelliJのバージョンがあがるたびに設定画面もびみょうに変わってますが,まあ何とか読み替えられると思います。ちょっと補足すると,ライブラリの設定(File->Project Structure->Modules->Dependencies)にあるスコープ(Scope)は,Mavenを知らないと意味がわからないと思います。

f:id:masanobuimai:20121121213704p:image


設定可能な値と意味は以下の通りです。

  • Compile
    • 普通はこれです。コンパイルや実行時に参照されます。
  • Test
    • テストコードのコンパイルとテストの実行時に参照されます。
    • junit.jarとかがここに属します。
  • Runtime
    • 実行時にだけ参照されます。コンパイル時には参照されませんので,コード補完の対象になりません。
    • 強いて言えばJDBCドライバなどが,ここに属します。
  • Provided
    • 実行環境にあらかじめ用意されているライブラリを指定します。コンパイル時に参照されますが,実行時には参照されません(実行環境に相当品があるので)。
    • 具体的に言うと,J2EEのAPI(javaee.jar)とかが,ここに属します。

NetBeansにも同様の考え方があるので,NetBeansからの移行組はすんなり理解できると思いますが,eclipseにはどうゆうわけか伝統的にこの考えが無いので,はじめは戸惑うかと思います。でも,これを知ってしまうとスコープが無い世界には戻れないと思いますヨ。:-)


あと,ライブラリはMaven Repositoryから直接ダウンロードできます。

IntelliJ IDEA 10のEAPが登場したよ


Artifactsの指定

ちょっと脱線が長引いたのでセクション分けて本題に戻ります。IDEA9あたりからプロジェクトごとに成果物を定義できるArtifactsという機能がついきました。設定箇所は,File->Project Structure->Artifacts。

何ができるって「成果物を定義できる」んですが「成果物ってなによ?」と言うと,要するにJarファイルとかWARファイルとかEARファイルとかってアレです。

f:id:masanobuimai:20121121214919p:image


使い方は,昔書いたこのあたりが参考になると思います。

IntelliJ CE用Winstoneプラグイン公開しました



これの良いところは,自分のニーズに応じていくつもの成果物を定義できることです。これで,zipファイルも作れれば,実行モジュールだけではなく,リリースモジュールも作れそうなので,ちょっと残念ではあります(だったら自分でプラグイン作ったら?という話でもありますが。:-P


ps.

チーム開発する場合など,ライブラリや成果物の生成はIDEではなくAntやMavenといったビルドツールに任せるのが望ましいのです。ただ,個人の実験や趣味で作るちょっとしたプロジェクトなどは,IDEで完結できることが多いととても楽なのです。

marsのメモ - December 17, 2012 03:09 PM
[IDEA][advent] 18日目 Databaseプラグイン

地味に便利な Databaseプラグインについてです。IDEからDBを操作する機能ですが、NetBeansにも似たような機能があるし、今やさほど珍しい機能ではないですね。


そんな中でIntelliJっぽいなぁという機能について紹介します。


DDL 文からDBの定義を再現

この手の機能はDBに接続すると相場が決まっているのですが、IntelliJの場合、DDLが定義されたファイルだけでも、この機能を利用できます。


使い方は、Databaseウィンドウを開き「+」ボタンを押して "DDL Data Source"を選択。以下のようなダイアログが表示されるので,"DDL Files"の「+」ボタンを押して,任意のDDLファイルを指定します。

f:id:masanobuimai:20121121215845p:image


DB が別のネットワークにあるなどの理由で参照できないときでも、構造を可視化できて意外と助かる事が多いです。


スキーマの比較

DB専用ツールだと、そんなの出来のがあったと思いますが、実はIntelliJでも出来ました。

Databaseウィンドウで比較したいスキーマを2つ選んで、ツールバーの「Compare」を押す。

f:id:masanobuimai:20121121220250p:image


オンラインとDDLの比較なんてのもできるので,まあまあ便利です。普通のDiffと異なるのは,DDLの記述順に囚われずテーブルの比較をしてくれるので,DDLファイル同士のdiffを取るよりは,親切な結果が得られます。

f:id:masanobuimai:20121121220405p:image



Language Injection でプログラム中でもコード補完

Data Sourceが設定されている状態で,JDBC API(StatementやPrepareStatementクラスなど)にSQL文をタイプすると(うまくすると)コード補完が効きます。「うまくいくと」というのは,何か知らないけど上手く行かない事もままあるためです。


それと,JDBCではなく別のAPI(オレオレAPIだったりするかもしれません)で,SQL文の補完を有効にしたい場合は,Intension(ALT+Enter)メニューの"Language Injections Settings"から追加で設定することができます。

f:id:masanobuimai:20121121221506p:image


すると、こうなります。結構うれしい。:-)

f:id:masanobuimai:20121121221505p:image


特定のAPIだけではなく、String型のローカル変数に対してもLanguage Injectionをかけることが出来るのですが、その場合、次のようにIntelliJ固有のアノテーションを付けなければならないのが難しいところです。:-(

f:id:masanobuimai:20121121222424p:image


アノテーション付けなくても何とかする方法もあったと思ったのですが、ちょっとその設定を特定できてません...。が、IDEA12だとアノテーションやコメントアノテーションを使わなくてもLanguage Injectionができるようです。

f:id:masanobuimai:20121122231548p:image


(追記)しおしおさんが追加調査してくれました。:-)

しおしおの雑記帳



JPAについて

一応、JPAエンティティを作る機能を持っていますが、あまり洗練されてるように思えないし、正直使いづらかったです。生成されるエンティティもアノテーションごてごてで見づらかった記憶が...。このへんについてはNetBeansのほうが扱いやすいと思います。


一応、画面の紹介だけしておきます。

f:id:masanobuimai:20121121223241p:image


(おまけ)DBの起動

NetBeansの組み込みJavaDBがうらやましくて、Derbyを起動・停止するだけのプラグインを作ったこともありますが、よーく考えてみると外部ツールに登録すれば済む話だったのはナイショです。:-)

Derbyプラグインできたよ


ps.

本家ブログでIDEA12のDatabaseプラグインの説明が出ましたね。

Manage Your Database Schema in IntelliJ IDEA 12 | JetBrains IntelliJ IDEA Blog

torutkの日記 - December 17, 2012 12:00 AM
[Java][GIS]Javaで地図を表示〜GeoToolsを使って

はじめに Java Advent Calendar 2012の17日目です。 エントリ時は、昨年度まで担当していたJavaの仕事でenumのいろいろな活用を知ったので、enumについて整理を兼ねて書こうと思っていました。しかし、Javaのenumをググってみるとすでに数多くのenumの紹介記事があり、また、名著Effective Java 第2版 (The Java Series)で触れられていた「シングルトンをenumで」もちらほら紹介しているブログがあり、いまさら感がありました。 そこで、方針を ...

きしだのはてな - December 13, 2012 09:21 AM
[sencha][netbeans]Sencha Touchでの開発にNetBeans7.3が便利だったり微妙だったり

Sencha Advent Calendarの13日目の記事です。

「Sencha Advent Calendar 2012」

http://www.adventar.org/calendars/23


Sencha Touchでの開発をするときの、NetBeansの便利なところと便利なはずなのに微妙なところを書いてみます。


NetBeans7.3 beta2のセットアップ

とりあえず、NetBeansのセットアップについて。

NetBeansはJavaで動くので、JDKのインストールが必要です。Sencha Cmdでも必要なので、Sencha Touchでの開発にはどっちにしろ必要ですね。

http://www.oracle.com/technetwork/java/javase/downloads/index.html


また、NetBeansは7.3からHTMLまわりが充実してきているので、正式版がでている7.2ではなく、beta2の7.3を使います。

http://download.netbeans.org/netbeans/7.3/beta2/


サポートテクノロジーは、一番簡素な「Java SE」版で大丈夫です。また、プラットフォームは「OSに依存しないZIP」にすれば解凍するだけで動かせるので、ちょっと試すのにインストーラはなーって人にも安心です。その場合はbinフォルダの実行ファイルを起動します。

etcフォルダのnetbeans.confファイルに、netbeans_jdkhomeの設定をしてJDKをインストールしたパスを指定しておくほうがいいかもしれません。


Sencha Touch用プロジェクトの作成

まずはSencha Cmdでプロジェクトを生成します。senchaライブラリのフォルダで、次のようなコマンドで生成します。

> sencha app generate Advent ..\advent

f:id:nowokay:20121213173708p:image


生成したSencha TouchプロジェクトをNetBeansのプロジェクトとして取り込みます。

NetBeans7.3から、HTML用のプロジェクトが用意されているので、これを使います。新規プロジェクトで「HTML5 Application with Existing Sources」を選択して「次へ」ボタンを押します。正式リリースされて日本語訳されると「既存のソースを利用するHTML5アプリケーション」になるんじゃないかと思います。

f:id:nowokay:20121213173706p:image


そしたら、「Site Root」に先ほど作成したSencha Touchプロジェクトのパスを指定します。「Project Name」は適当なものをつけてください。

「Project Directory」は「Site Root」と同じものが埋め込まれます。ここで指定したパスにnbprojectというフォルダが作成されるのですが、ここにフォルダが生成されるのがイヤなときは、別のフォルダを選びます。nbprojectフォルダは、Sencha Cmdでのパッケージングのときには除外されるので、あまり気にしなくてもいいと思います。

f:id:nowokay:20121213173705p:image


Sencha Touchアプリケーションの実行

Sencha Cmdで生成したSencha Touchアプリケーションの実行には、Webサーバーが必要になります。

NetBeans7.3では、HTMLプロジェクトを実行すると内蔵のWebサーバーが起動するので、別にWebサーバーを用意する必要がなくて楽です。・・・と思ったら。

f:id:nowokay:20121213173659p:image

なんか、「touch/event/publisher/Dom.js」などのファイルがないといってエラーになって、ピコピコ画面がずっと表示されちゃいました >_<

もちろん、単体でDom.jsファイルを指定するとちゃんと表示されるのですけど。


ということで、NetBeans外部のWebサーバーを使うことにします。これはnginxなどを準備しておいてください。

そしたら、NetBeansからプロジェクトのプロパティを開いて、「Run」カテゴリの「Web Server」に「External」を指定して、「Project URL」にプロジェクトを開くことができるURLを指定します。

f:id:nowokay:20121213180318p:image


また、このとき「Browser」として「Embedded WebKit Browser」を選択すると、JavaFXのブラウザを使って表示されます。

これは、WebKitをJavaでラップしたブラウザで、結構ちゃんとSencha Touchも動きます。ただ、ちょっとタブのアイコン表示がおかしいですけど。

このブラウザのいいところは、画面サイズを指定できることです。スマートフォンっぽいアイコンを指定すると、スマートフォンっぽい縦横比で表示されます。

f:id:nowokay:20121213173704p:image

ChromeにNetBeans用プラグインを導入することでも同様のことができるので、安定性などを求める場合はそっちを使うほうがいいと思います。


宣伝

Sencha Touchの本を書いてます。基本的な使い方について全般的に書きました。


ただ、刊行直前にSencha Touchがバージョンアップして、対応できてない点が多いので、こちらも参考にしてください。

「Sencha Touchの2.1バージョンアップでの書籍の記述からの変更点」

http://d.hatena.ne.jp/nowokay/20121116#1353052434

marsのメモ - December 12, 2012 01:49 PM
[IDEA][advent] 12日目 IDEの設定(IDE Settings:後編)

設定編の後編です。


Keymap

  f:id:masanobuimai:20121118225556p:image

ショートカットキーの設定を行います。Keymapsにはプリセットでいくつかのキーマップが登録してあるので,好みが合えばそちらを使うのも良いでしょう。「この手のはなるべくデフォルトを覚えたい」というならば,"Default"や"Mac OS X 10.5+"を選ぶと良いかと。

個人的には,IntelliJのデフォルトキーマップは分かりやすいと思ってないので,がしがしカスタマイズしてしまい,今となってはデフォルトキーマップでは使えない体になってしまいました(それにIdeaVIMも必須w


他のIDEやエディタからの乗り換え組向けに"Eclipse", "NetBeans 6.5", "VisualStudio", "Emacs"なんてのもありますが,その出来については未評価です。IntelliJのエディタはいわゆるモードレスエディタなので,お決まりのように"Emacs"キーマップがありますが,この手のEmacs風キーマップが生粋のEmacs使いを満足させた試しは無いので,それなりに見てあげると落胆も少ないかと思います。


Keymapsの別の使い道として,IntelliJで提供している全コマンドを俯瞰することができます。"Main menu"はメニューバーの項目なので,なにもここで確認しなくても分かりますが,"Editor Actions"や"Other"などを覗いてみると面白い発見があると思います。


また「プラグインを入れたけど,そのプラグインがどんな機能を提供しているのかわからない」ときは,ここの"Plug-ins"を見ると,プラグインが提供しているコマンドを見つけることができます。

IntelliJのショートカットを素早く知る方法+α


それはそうと,WindowsでもMacでもIntelliJを使う場合,キーマップをどうしようか非常に悩みます。わたしは面倒なのでMacでもWindowsのキーマップを使っているので,コピー&ペーストは Ctrl+C, Ctrl+V です。



Live Templates

  f:id:masanobuimai:20121118225622p:image

スニペットというかキーワード展開を行うLive Templatesを設定します。プリセットされているテンプレートも非常に多いのですが,この手の機能は他のIDEにも実装されているので,特に取り上げるほどの機能ではありません。むしろ,キーワード展開がコード補完とは別のキーになっていたり*1,キーワード展開例がプレビューできないなど,EclipseやNetBeansのソレと比べて劣っている気もします。

31日間ReSharper一周 ... それIDEAでもできるよ(その7)



Menu and Toolbars

  f:id:masanobuimai:20121118225646p:image

メニューバーやツールバー,ナビバー,それにProjectウィンドウやエディタなどのコンテキストメニューの項目を設定します。



Notifications

  f:id:masanobuimai:20121118225701p:image

コンパイル結果,テスト結果など,IntelliJからのレスポンスの通知方法を設定します。



Passwords

主にバージョン管理システムとの連係で入力するパスワードをどこまで記憶していくかを設定します。



Path Variables

  f:id:masanobuimai:20121118225743p:image

いわゆる環境変数を設定します。が,あまり使った事はありません。Mavenプロジェクトを利用したときに「M2_HOMEはどこ?」と聞かれたくらいしか記憶がありません。



Plugins

  f:id:masanobuimai:20121118225723p:image

プラグインマネージャです。"Browse repositories"で公式プラグインサイトに登録してあるプラグインの一覧から任意のプラグインをインストールできます。一覧で"Bundle"とあるのは,IntelliJ付属のプラグインで削除することはできません(無効化まで)。


プラグインは非常にたくさんありますが,なんだかんだでIntelliJ標準のままか,JetBrains公式プラグインくらいしか使わなくなります。:-)


それと,プラグインのインストールやアンインストール,有効・無効化にはIntelliJの再起動が必要になります。



Quick Lists

  f:id:masanobuimai:20121118225803p:image

お好みのコマンドを集約したQuickリストを登録します。Quickリストは,よく使うけど,ひとつひとつのショートカットキーを覚えられない,なんて場合に便利です。

31日間ReSharper一周 ... それIDEAでもできるよ(その4)



TODO

TODOウィンドウに表示する,TODOコメントのパターンを定義します。



Updates

自動アップデートの設定をします。アップデートモジュールは,必ずしもパッチ方式で提供されるわけではないようです(場合によっては,ダウンロードページにジャンプするだけもある。



Usage Statistics

IntelliJの使用統計情報をJetBrainsに送信する頻度を設定します。使っているIntelliJの統計情報は,Help->Productivity Guideで確認できます。


Web Browsers

IntelliJから起動できるWebブラウザを登録します。エディタでHTMLなどを編集していると,右上にブラウザアイコンが浮かんできますが,それのことです。


"Default Web Browser"は,View->Open in Browserで起動するWebブラウザの事です。



XPath Viewer

XPathに関する設定です。XPathに関するコマンドは,

  • Edit->Find->Evaluate XPath (ツールバーのヘルプアイコンの隣にもある)
  • Edit->Find->Find in XPath
  • View->Unique XPath

の3つです。"Find in XPath"以外の2つは,XMLを編集しているエディタのコンテキストメニュー最下部も表示されます。



XSLT

XMLに関連付けしたXSLファイルをProjectウィンドウに表示するかどうか(Show Associated Files in Project View)の設定がありますが,XSLT使ってないのでどうなるかは分かってません。:-)

*1:隠しオプションで変更可能ですが...。

marsのメモ - December 09, 2012 04:46 PM
[IDEA][advent] 10日目 IDEの設定(Project Settings)

File->SettingsのProject Settings編です。Project Structureとの明確な違いを言い表せませんが、長い歴史の名残りだと思って下さい。


全部みたわけじゃないんですが、どうもこの「Project Settings」はIntelliJにしか無いみたいです。WebStormやRubyMineは「Settings(Preferences)」しかないです。たぶん、PhpStormやPyCharm, AppCodeも同じなんじゃないかな。


Code Style

  f:id:masanobuimai:20121118222431p:image

コードフォーマッターで整形するルールを設定します。言語別に設定項目があり,正直うんざりします。設定を保存するSchemeのうち「Default」は変更不可なので,別のSchemeを作って独自の設定をしましょう。


JavaのImportの設定がちょっと分かりづらいですが,Java->Importsを以下のように設定するのを好んでいます。

  • Use single class import を ON にして,import hoge.* にしない(それ以外はすべてOFF)
  • Names count to use static import with '*' に 1 を設定して static import は速攻で * を使う

それとJavadoc系の設定(Java->JavaDoc)は,日本語の処理がイマイチなので全体的に無効(Enable JavaDoc formattingをOFF)にしておくと良いです。


そうそう,言語ごとにタブサイズの設定がありますが,どうゆうわけかHTMLにはその項目がありません。じゃあ,HTMLのタブサイズはどこで設定するかというと一般(General)のタブサイズが適用されますので,ご注意を。

#IDEA12だとHTMLの設定にタブサイズ指定ができてました(よかったよかった。


また、以前説明したように改行コードの指定(Line separator (for new files))も、ここでおこないます。

IntelliJでファイルの改行コードを指定する



Compiler

  f:id:masanobuimai:20121115230226p:image

コンパイラの設定をします。Project Structure のSDKと分かれてるのが、正直不満です。

ここでは、javacに渡すオプション(Compiler->Java Compiler)とか、コンパイル時にビルドディレクトリにコピーするリリースファイルのパターン(Resource patterns)などを設定します。


最近流行りのAnnotation Processorの設定(Compiler->Annotation Processors)もここで行います。



Copyright

IntelliJのおもしろプラグイン、Copyrightの設定を行います。詳しくは他のエントリーで書きます。



Coverage

  f:id:masanobuimai:20121118223717p:image

カバレッジの結果の収集方法に関する設定です。サーバサイドJavaでもカバレッジ取れるようになったので、もうClover要らないw



Deployment

IntelliJのおもしろプラグイン、Remote Hostの設定を行います。こちらも詳しくは他のエントリーで書きます。



File Colors

  f:id:masanobuimai:20121118223747p:image

ファイルのパターンを指定して、その表示色を設定します。設定した色はProject ウィンドウやエディタのタブに反映されます。巨大なプロジェクトでファイルを視覚的に区分けしたい時など、便利と言えば便利な機能です。

More Colors with Maia



File Encodings

  f:id:masanobuimai:20121118223816p:image

その名の通り、ファイルのエンコードを設定します。ディレクトリやファイル単位に細かく指定できるのでかなり便利です(残念なことに拡張子別には指定できませんが...。


ひとつ落とし穴がありまして,Project Settingsに属しながらも,ここの「IDE Encoding」はプロジェクト固有の設定ではなく,IDE共通の設定になります。さらにこのエンコードはコンパイラに渡されますので「IDE EncodingはUTF-8だけど,たまにWindows-31Jで作成したプロジェクトを開く」といったシチュエーションのとき大変困ります。


IDE Encodingとプロジェクトのソースのエンコードが異なる場合は,Compiler->Java Compiler->Additional command line parametersに以下のような設定をしておく必要があります。

-encoding Windows-31J

初めてIntelliJに触れる人へ − Javadocの日本語化


あと申し訳ついでにプロパティファイルに関する設定もここにあります。画面下のほうにひっそりあるので,よく見落とします。設定項目は以下の2つです。

  • プロパティファイルのエンコードを指定する(Default encoding for properties files)
  • 自動的に native2ascii を行うかを設定する(Transparent nattive-to-ascii conversion)


Gant/Gradle

Groovy のビルドツール、GantとGradleの設定です。といってもツールのパスを指定するだけです。

Gantは正直オワコンですよね。



GUI Designer

GUI デザイナっで作った画面をソースに展開するか、バイナリのままにするかを指定します(Generate GUI into)。

バイナリのままだど、そのプログラムの実行環境にIntelliJのランタイムライブラリが必要になります。


何よりGUI デザイナ自体、IntelliJのプラグインでGUI使うときくらいしか使いません。GUI デザイナはNetBeansのほうが万人向けだと思います。



Inspections

  f:id:masanobuimai:20121118223855p:image

Hectorおじさんの指摘項目を設定します。要するにFindBugsとCheckstyleのIntelliJ版です。気が遠くなるほど設定項目がありますが,ヒマなときに全部眺めてみると意外な発見があると思います。結構,いろいろやってます。

ちょっと面白いInsectorがありまして、General->Structural Search Inspectionでは、IntelliJのStructural SearchやReplace(Edit->Find->Search/Replace Structurally)の検索・置換パターンを登録してそれをリアルタイムに検査することができます。Replaceの場合、置換結果を修正候補に出せます。

  f:id:masanobuimai:20121124004815p:image

以前、@さんが紹介していたStructural Searchを登録しておくなんてことができます。

IntelliJのStructural Searchでfail文のない異常系テストコードを抽出 - しおしおの雑記帳


JavaScript

  f:id:masanobuimai:20121118223917p:image

JavaScriptの言語レベルの指定(JavaScript language version)や使用するライブラリ(JavaSciprt->Libraries),コード検査(JavaSciprt->Code Quality Tools)の設定を行います。



Language Injections

  f:id:masanobuimai:20121118224117p:image

IntelliJのヘンタイ機能のLanguage Injectionsの設定を行います。「Language Injectionsって何?」という方は,こちらを参照してください。

Language Injectionオモロイ


おもしろい機能ではあるのですが、実際のところJDBCのStatementなど該当するAPIに直接文字列をハードコードすることは希で、普通はStringなりStringBuilder/StringBufferなどの変数や定数に、お目当ての文字列代入しとく事が多いので、本当に役に立つかはわかりません。:-P



Maven

  f:id:masanobuimai:20121118224508p:image

Mavenの設定です。Gant/Gradleで暗に言ってますが,IntelliJにはこの手のよく使うであろうビルドツールバンドルしてません。Mavenそのものを別途インストールしておき,そのパスを指定します。ただし、どうゆうワケかAntだけはIntelliJにバンドルされています。Project Settingsに項目はありませんが,Antの設定はAnt Buildウィンドウで行います。ようするに、IntelliJ当初からAntをサポートしており、そのときはビルドツールなんてAntくらいしか無かったのでバンドルしてただけ、というのが続いているだけなんだと思います。


IntelliJはMavenのpomをそのままプロジェクトとして読み込めますが,その関連をどうするか(Maven->Importing)やMavenのリポジトリの設定(Maven->Repositories)などを行います。わたし自身が,Mavenそのものをあまり使ってないので,細かいところまではわかりません。><



Schemas and DTDs

  f:id:masanobuimai:20121118224541p:image

XMLを編集するときに参照するXMLスキーマやDTDなどを登録します(External Schemas and DTDs),もしくは無視させる(Ignored Schemas and DTDs)。あと,ここに置くしか無かったのでしょうか?HTMLの言語レベルの指定(Default HTML language level)もここにあります。


Scopes

Projectウィンドウや先ほどのFile Colorsや検索などで,ある条件でプロジェクトの対象を絞り込むスコープ(Scope)の設定を行います。ピンとこない方は,こちらを参照してください。

特定のファイルのみを表示するようにスコープ設定してみた


これもある程度大きなプロジェクトを扱っていると便利な機能です。独自のスコープを設定し,「ああ,IntelliJ使っててよかった」とほくそ笑むと良いでしょう。



Spelling

スペルチェックで使う単語(Accepted Words)や辞書(Dictionaries)を設定します。「スペルチェックそのものがうざい」場合は,「Configure 'Spelling' inspection」のリンクから,スペルチェックそのものを無効にしてしまいましょう。


SQL Dialects

SQLファイルの中身がOracle用なのかDB2用なのかといった方言(SQL Dialect)を指定します。


Tasks

  f:id:masanobuimai:20121118224720p:image

BTS/ITSと連係するTasksの設定を行います。eclipseで言うところのMylynみたいなものです(乱暴な説明だなw)。連係するサーバ(Tasks->Servers)は数多くあります(JIRA, YouTrack, Lighthouse, PivotalTracker, GitHub, Redmine, Trac, Bitbucket)。おそらく連係可能なサーバはプラグインで追加できるのだと思いますが,JetBrains純正のプラグインでしか,この項目が追加されるプラグインを見たことがありません。たとえば,Backlogと連係したい場合は,誰かがガンバらないと叶わないでしょう(チラッ


私自身,手近にあるBTS/ITSがTrac/Redmine/GitHubくらいなのですが,どうゆうわけかTrac連係だけうまく行きませんでした。:-(



Template Data Languages

ファイルの言語タイプを設定します。本来は拡張子によってファイルタイプが決まるのですが,なんらかの理由でファイルタイプを変更したいときに指定するのでしょうか?(使ったこと無い)。実際試してみましたが,拡張子のほうが強かったです(何に使うんだろう...)。


Version Control

  f:id:masanobuimai:20121118224748p:image

Subversion, Git, Mercurialといったバージョン管理システムとの連係方法を設定します。設定上,同一のプロジェクトで複数のバージョン管理システムと連係できるみたいですが,同じディレクトリに異なるバージョン管理システムを指定すると,IntelliJが混乱するようです。


特定のバージョン管理システムに依存しない無視するファイルの指定(Version Control->Ignored Files)もできます。設定をみると「FileInfo.iws」と「.idea/workspace.xml」がデフォルト値なってますが,これ以外のIntelliJの管理ファイルを登録しても大丈夫なのかは,正直自身がありません(IntelliJでチーム開発したことがないので...)。


Tasksではなく,ここにこの設定があるのも微妙なのですが,コミットログに含まれるBTS/ITSのチケット番号と,それに対応するBTS/ITSのリンクも設定できます(Version Control->Issue Navigation)。


Web Contexts

Webコンテキストを設定します。プロジェクトがJavaでWebファセット(要するにWebアプリケーションプロジェクト)がついている場合,同様の設定はProject Structureでできるのに,なぜ似たような設定がここにあるのかが不思議でなりません。一瞬「Webモジュール用かな?」と思いましたが,Webモジュールの場合,ここに設定可能な情報が出てきませんでした。ますますもって謎です。


そんなこともあって,この項目は気にしたことがありません。:-P


XSLT File Associations

XSLTを設定するようです。というのもの,XSLT自体もう何年も扱ったことが無いので,ここをいじる用事もなく,なにができるのかもよくわかってません。:-)

torutkの日記 - December 08, 2012 12:00 AM
[Java][JavaFX]Windows OS上でのJavaFX Scene Builder 1.1プレビュー版とNetBeans 7.3開発版の組み合わせについて

JavaFX Scene Builderは、現時点で正式版の1.0と、開発中の1.1アーリーアクセス版がOracleのJavaFXツールページから入手可能です。 http://www.oracle.com/technetwork/java/javafx/tools/index.html Windows用は、”Windows 32/64 bit (msi)”と記載されていますが、本日時点でダウンロードできるb13は32bit版のみでした。 NetBeans IDEはJavaFXアプリケーション開発 ...

marsのメモ - December 05, 2012 10:07 PM
[IDEA][advent] 06日目 IDEA12とIDEA11の比較

(このエントリーは11月23日に書きました)そろそろIDEA12のリリースが近づいてきたので記念にIDEA11との違いを探してみます。比較に使ったのはEAP123.4なので正式リリース版と変わってる可能性はあります。このエントリーを公開するときには正式リリースしてるんだろうか?

→ 正式版がリリースされたので、このエントリも公開しました。


トップページのデザインが変わった

Public Privewの時にトップページからメニューバーとプラグインの一覧がなくなったのでがっかりしてましたが、EAP123.4でまた、ちょっとデザインが変わりました。

プラグインの一覧は相変わらずありませんが、Settingsを開けるので、そこからプラグインマネージャにたどり着けます。一手間増えて面倒ですけど...。


Quick Start欄が、一部スライドメニューになっていて、何か変えたがってる雰囲気がうかがえます。

f:id:masanobuimai:20121123193814p:image



アイコンがのっぺりした

パステル調とでもいうのか,ちょっと不思議なアイコンになりました。見た目は世の中の流行り廃りもあるので,一概にどうとは言えませんが,伝統的にJetBrainsのUIデザイン(主に見た目)の評判はよくありません(暗に悪いって言ってるw

UIデザインがガマンできる範疇かは利用者の主観によるので,受け付けない人は縁が無かったと思うほかありませんね。

f:id:masanobuimai:20121123193815p:image


IDEA12のアイコンが気に入らない人向けに,IDEA11のアイコンに戻すプラグインがあります。:-)

IDEA12 EAP Build 122.519 からアイコンが変わった



ダークテーマ:Darcula

エディタのカラースキームでSolarized Darkのようにダーク基調のものが流行っているせいか,UI全体をダーク基調にする「Darcula」というテーマが追加されました。設定は,File->Settings->Appearance->Theme*1から「Darcula」を選びます。ご丁寧にエディタのカラースキーム(File->Settings->Editor->Colors & Fonts)も「Darcula」に設定されます。


正直...かっこ悪いです...。:-P



Problemsウィンドウ

NetBeansやEclipseにある,コンパイルエラーを随時表示しているアレです。インクリメンタルビルドを持たないIntelliJは,いままでずーっと明示的にビルドしないと,コンパイルエラーを知ることができなかったのですが,IDEA12でついにProblemsウィンドウができました。


File->Settings->Compilerに「Make project automatically」という項目が増えており、これを有効にしないとダメなようです。

f:id:masanobuimai:20121123193816p:image


この項目を有効にすると,編集しているファイルを保存するタイミングで,Problemsウィンドウにエラーが表示されるようになりました。ちょっと使ってみた感じでは、そんな便利には思えませんでした。

f:id:masanobuimai:20121123193817p:image



コード補完(Code->Completion)からクラス名補完(Class Name)が無くなった

どうやら,ベーシック(Basic)に統合されたようです。まあ,普段から使う補完種別ではなかったので,良い事です。



View->Show Byte Codeでバイトコードが見れる

ほほう。これはこれは。:-)

f:id:masanobuimai:20121123193818p:image

プロジェクト作成方法がちょっと変わった

New Projectウィザードの最初の画面がこんな風に変わってました。

f:id:masanobuimai:20121123193819p:image


Public Previewで無くなってしまった「Import project from external model」「Create project from existing sources」はEAP123.4で復活してましたね。



Settingsまわりの違い

Project Structureはあまり違いを見つけられませんでしたので割愛します。


Code Style->HTMLにタブサイズの設定がついた

よかった。よかった。:-)

f:id:masanobuimai:20121123193820p:image



Code Style->JavaにArrange項目がついた

Rearrangerプラグインが統合されたようです。くわしくはこちら。

Arrange Your Code Automatically with IntelliJ IDEA 12 | JetBrains IntelliJ IDEA Blog

f:id:masanobuimai:20121123193821p:image



Compilerのオプションが若干変更してる

Compilerにヒープサイズの指定(Compiler process heap size(Mbytes))やVMオプションの指定(Additional compiler process VM options)が増えてます。その代わり(?),Compiler->Java CompilerにバイトコードのターゲットVMが指定できるようになりました(Project bytecode version (leave blank for jdk default))。IDEA12からバイトコードビューアがつくと言ってましたので,それにちなんだ設定なのだと思います。

f:id:masanobuimai:20121123193822p:image



プラグイン

見たこと無いプラグインがいくつか増えてますね。

  • Android Designer
  • Application Servers View
  • Base Cucumber
  • Byte Code Viewer
  • Cloud Foundry integration
  • CloudBees integration
  • Cucumber for Groovy
  • Cucumber for Java
  • JBoss jBPM
  • Maven Integration Extension
  • Playframework Support
  • Remote Run
  • Spring Batch
  • Vaadin Support

*1:IDEA11までは"Look and feel"だった。

marsのメモ - December 04, 2012 03:04 PM
[IDEA][advent] 05日目 Eclipseとの違い

多くの人は,なにかしらeclipseにガッカリしてIntelliJに手を出すと思いますが,IntelliJとeclipseは操作体系からずいぶん違いがあります。eclipseに慣れてからIntelliJに手を出すと,逆にガッカリする事請け合いだと思うので,主だった違いを列挙しとこうと思います。


インクリメンタルビルド

インクリメンタルビルドはeclipseの目玉機能のひとつだと思いますが,残念ながらIntelliJにはありません(IDEA12にそれっぽい設定項目*1がありましたが,はたしてあれはインクリメンタルビルドなんだろうか...*2)。

これに連動した話で,eclipseのProblemsビューのように現在のエラー状況を一覧表示するウィンドウもありません*3


じゃあ,どうするかというとビルドはビルドボタン(もしくは相当のショートカットキー)を押さない限り実行されません(クリーンビルドなどは Build メニューから行います)。

f:id:masanobuimai:20121114212856p:image


ビルドを実行すると,その結果が Messagesウィンドウに表示されますので,結果としてコンパイルエラーになったファイルの一覧がそこに表示されます。

f:id:masanobuimai:20121114213254p:image


この操作系になれちゃっているので,実のところインクリメンタルビルドの便利さを分かってませんw IDEA12でコンパイラ周りが改善されるようなので,次のバージョンではちょっとはマシになってるかも知れませんね。

Brand New Compiler Mode in IntelliJ IDEA 12 Leda | JetBrains IntelliJ IDEA Blog


ワークスペースやプロジェクトの考え方

そもそもワークスペースという考え方が無いです。強いて言えば,IntelliJのプロジェクトがeclipseのワークスペースに相当します。eclipseのプロジェクトが,IntelliJのモジュールに相当します。

その辺は,このドキュメントが詳しいです。ありがたいことに日本語に訳してくれた方がいます。

Eclipse FAQ - IntelliJ-Wiki

Eclipseユーザの為のIntelliJ IDEA Q&A - 砂漠の音楽


設定まわり

だいたい,こんな対比になります。

 eclipseIntelliJ
IDEの設定Window->PreferencesFile->Settings
プロジェクトの設定(Projectを選んで) PropertiesFile->Project Structure

Ctrl+1とかCtrl+2とか

eclipseの空気読み機能であるCtrl+1(Quick fix),Ctrl+2(Quick Assist)ですが,これに相当する機能はIntelliJにはありません。辛うじてAlt+Enter(Show Intention Action)が近いですが,Ctrl+1ほど何でもアリな機能ではないです。


eclipseとの発想の違いだと思いますが,「何か分かんないけど,良い方法を教えて」に答えてくれるeclipseに対して,IntelliJは「こんな事やりたいから手伝って」的なアプローチを取っています。よって,そもそもやりたいことを指示してこそ,IntelliJが輝くとも言えます。

そうは言ってもずっと受け身なわけではなく「おいおい,ここヘンじゃね?」的な指摘は都度してくれます。


コード補完でも同じで「Ctrl+Spaceの一族」で書いたように,補完目的(ノーマル,スマート,クラス名*4,テンプレート展開)に応じてキーを使い分けないとイケない。ちなみに,テンプレート展開(Live Template)については,隠しオプションを有効にすることで通常補完でも使えるようになります。

IntelliJの隠しオプション一覧


早いか遅いか

よくTwitterのタイムラインとかで「eclipseは遅い」と聞きますが,IntelliJも十分遅いと思います。特に立ち上げ時のインデックス作成なんてのは顕著ですね(それでもNetBeansのよりは早いかも)。インデックス作り終わってからは,それなりにサクサク動きますが,この辺はモロに主観の問題ですし,なんだかんだでマシンスペックが支配的なので,どっちがどうとは言えないかと思います。


UIがカッコいいか悪いか

SWTでプラットフォームネイティブっぽいUIのeclipseと,いかにもJavaでございなIntelliJ(NetBeansも似たり寄ったり)と比べてどっちがカッコ良いかってのも難しい問題だなーと思います。これもまた好みの問題で,時代背景もある程度影響しますので,どっちが気に入るかは,その人次第ってことで。:-)

IntelliJの見た目の歴史

*1:File -> Settings -> Compiler -> Make project automatically

*2:どうもIDEA12のそれは、インクリメンタルビルドに近い機能っぽいです。

*3:一応、ProjectツールウィンドウにProblemsというビューはありますが、eclipseのそれとは趣旨が異なるかなと...

*4:クラス名補完はIDEA12からは無くなったようです。

torutkの日記 - December 02, 2012 12:00 AM
[Java][JavaFX]依存するJARがあるJavaFXアプリケーションの実行可能JAR作成

JavaFX Advent Calendar 12月3日担当です。 11/30開催の「第8回JavaFX勉強会」(日本JavaFXユーザーグループ主催)で、「ダブルクリックで起動する JavaFX アプリケーション JAR の仕組み 」を発表をしてきました。 この発表では、作成するプログラムがJava SE/JavaFX以外の他のJARに依存しない単純な形式を対象にしていました。 発表の質疑応答にて、依存するJARがあり複数のJARで構成されるアプリケーションの場合について質問を受けました。事前に調査 ...

torutkの日記 - November 25, 2012 12:00 AM
[Linux][Java]Fedora 17にOracle JDK7u9およびNetBeans 7.3 beta2をインストール

Fedora 17には、OpenJDK 1.7.0が標準搭載されています。Fedora 17のアップデートをすると、現時点ではUpdate9が入ります。 ただし、Oracle JDKと違ってJavaFXは含まれていないので、JavaFXアプリケーションを作成するには、Oracle JDKを入れる必要があります。 そこで、Fedora 17に、Oracle JDK7 u9をインストールし、合わせてNetBeans 7.3 beta2をインストールし、パス設定、フォント設定をします。 OpenJDK 1 ...

torutkの日記 - November 19, 2012 12:00 AM
[Java]JavaFXアプリケーションをインストーラ形式(msi)に

id:torutk:20120901で、JavaFXのコマンドjavafxpackagerを使って実行可能JAR形式ファイルを作成する方法を紹介しました。今日は、そのjavafxpackagerで、OS固有のインストーラ形式としてWindows OS用のMSI形式インストーラを作成する方法を追究してみます。 情報収集 Oracle Blogs 日本語のまとめ: [JavaFX] Native packaging for JavaFX Oracle blogの翻訳で、JavaFX ...

Scala で TAPLを勉強しつつ LLVM コンパイラを作る日記 - November 06, 2012 12:00 AM
[NetBeans]NetBeansのバグを報告してみる(3)

前回の、バグはfixされてナイトリービルドではfixしてるらしいです。 よかったー。 ということで、次は、グレップ検索して、検索結果をタブを閉じずに2回目のグレップ検索をすると、エディット機能が無効になってしまうバグを報告してみました。 http://netbeans.org/bugzilla/enter_bug.cgi この辺から、PHPの機能のバグっぽいのでphpを選択して、 http://netbeans.org/bugzilla/enter_bug.cgi?product=php Editor ...

きしだのはてな - November 03, 2012 09:04 AM
きしだの10の信条

なるべく24時間サイクルで行動する

おなかがすいたらごはんを食べる

めんどくさくてもごはんを食べる

おやつは300円まで

出汁は煮立てない

麦100%ビール

おいしくないビールは世の中の敵です

朝が早い人を徹夜でビールにつきあわせない

あれは牛丼

チームいいなー

最後は寝ます

きしだのはてな - November 03, 2012 07:59 AM
[ubuntu][netbeans][php]UbuntuでNetBeans7.3+PHPの環境設定メモ

メモ。

Ubuntu12.04LTS

Ubuntu12.04LTS 32bitのisoをダウンロード

http://www.ubuntu.com/download/desktop


Ubuntu12.10は、VirtualBox4.1.22のGuest Additionsが対応してなくて、画面のリサイズができなかった。*1


「デスクトップ」とかのカタカナフォルダを「Desktop」にする。

$ LANG=C xdg-user-dirs-gtk-update

「もうたずねない」のチェックを入れつつ間違って「Old Filename」のほうを押すと死ぬ・・・(2013/1/5)


VirtualBoxの共有フォルダ用

$ sudo usermod -a -G vboxsf kishida

-a忘れると死ぬ。

(追記 2013/1/4)


Javaまわり

JDK7u8をとってきて解凍


NetBeans7.3Betaをとってきて解凍

etc/netbeans.confにJDKパスを書く

netbeans_jdkhome="/home/kishida/dev/jdk1.7.0_09"

Glassfish3.1.1.2をとってきて解凍

NetBeansに設定しておく


jenkinsをとってきてGlassfishに配備

jenkinsプラグインでphp、gitをいれる

あと、antパスの設定。NetBeans/java/antあたりにあるのを使う


Javaの環境構築は楽だ。


apache2

これはapt-getで。

$ sudo apt-get install apache2
$ sudo apt-get install apache2-dev

apxsが必要なので、devも入れる


PHP

5.4が使いたいのでソースからインストール。

configureでlibxml2が必要といわれるので、devをいれる。

$ sudo apt-get install libxml2-dev

5.4.8をとってきた。本気で使うわけではないので、必要最低限。mbstringはなんとなく。

$ ./configure --prefix=/usr/local/php-5.4.8 --with-apxs2=/usr/bin/apxs2 ----enable-mbstring --with-pear
$ make
$ sudo make install
$ sudo cp php.ini-development /usr/local/php-5.4.8/lib/php.ini

apacheの設定。AddTypeじゃないのは、ちゃんと拡張子判定するため、らしい。

/etc/apache2/httpd.conf

<FilesMatch "\.php$">
 SetHandler application/x-httpd-php
</FilesMatch>

接続確認もしておく。


PHPUnit

ここを参考

http://www.phpunit.de/manual/current/en/installation.html

$ ./pear config-set auto_discover 1
$ sudo ./pear install pear.phpunit.de/PHPUnit
$ sudo ./pear install phpunit/PHPUnit_SkeletonGenerator

auto_discoverの設定は、あとでも使う。


XDebug

デバッガのために必要。

autoconfが必要だったから入れてる


http://xdebug.org/download.php

$ sudo apt-get install autoconf
$ cd xdebug-2.2.1
$ /usr/local/php-5.4.8/bin/phpize
$ ./configure --enable-xdebug --with-php-config=/usr/local/php-5.4.8/bin/php-config
$ make
$ sudo make install

php.ini

zend_extension=/usr/local/php-5.4.8/lib/php/extensions/no-debug-zts-20100525/xdebug.so

xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000

Composer

パッケージ管理ツール

curlでとってくるので、いれてる。

$ sudo apt-get install curl
$ curl -s https://getcomposer.org/installer | /usr/local/php-5.4.8/bin/php

apigen

ドキュメントを生成するツール


まずはpearでいれてみる。

$ sudo ./pear install pear.apigen.org/apigen

netteがないというエラー


しかたないから、直接とってくる。

http://apigen.org/

apigen.phpの先頭を書き換え

#! /usr/local/php-5.4.8/bin/php

PHPプロジェクトをJenkinsで構築するための準備

とりあえずppw

$ pear install phpunit/ppw

imagemagickでpmdがエラーになったから入れておく。でもこれでだいじょうぶかはわからない。

$ sudo apt-get install imagemagick

いろいろ必要なものを入れる。

$ sudo ./pear install PHPDocumentor
$ sudo ./pear install phpunit/phpCPD
$ sudo ./pear install -a phpunit/phploc
$ sudo ./pear install pear.pdepend.org/PHP_Depend (インストール済みかも)
$ sudo ./pear install -a PHP_CodeSniffer
$ sudo ./pear install -a phpunit/PHP_CodeBrowser
$ sudo ./pear install -a pear.phpmd.org/PHP_PMD

NetBeansで生成したbuild.xmlに、php関連実行ファイルのパスを指定する

<property name="phpbin" value="/usr/local/php-5.4.8/bin"/>

あとは、executableにすべてこのパスをつける

<exec executable="${phpbin}/phpunit" failonerrer="true"/>

*1:追記2013/1/5 4.2.4ではできる

きしだのはてな - October 25, 2012 10:01 AM
黎明期のJava入門書の話

結城さんのJava入門書、「Java言語プログラミングレッスン」がJava7に対応した第3版が出るということで、思い出した話。

まずは出版おめでとうございます、おつかれさまでした。ただ、評価はちょっと厳しめです。

Java言語プログラミングレッスン 第3版(上)

Java言語プログラミングレッスン 第3版(上)

Java言語プログラミングレッスン 第3版(下)


今回の「Java言語プログラミングレッスン」もやはり上巻でif、for、配列、下巻でクラス、インタフェースという構成になっていて、1冊にまとめれなかったものかという感がぬぐえない。

あわせて5040円というのは入門書として高価だし、上巻だけでは役にたたない。

まだ発売されていないので内容は見ていないのだけど、結城さんの本であるからには記述がすばらしいということに疑いの余地はない。だからこそ、二分冊という構成はもったいない。

また、通した構成としても、やはり古い。実際のプログラムでは配列よりListのほうが使う場面が多いにもかかわらず、コレクションに関しては下巻の最後におまけのように載せられている。


このような構成は、黎明期のJava入門書によく見られた構成で、多くの入門書が上巻でif/for/配列、下巻でクラス/インタフェースという分冊になっていた。なぜこのような構成になっているかというと、初期の入門書というのは、結城さんも含めて、矢沢久雄、林晴比古、高橋麻奈といったCの入門書を書いていた人が、C部分をJavaに移植したものというのが多かったためだ。Cを使って解説していた部分にJavaならではの話題を追加したという構成。

このうちで高橋麻奈さんの「やさしいJava」は1冊にまとまっていて、記述も丁寧で、説明が甘い部分も多いけどそれが却って読みやすさにつながって、人気があった。


ただ、やはりこれらのC言語入門書由来の本には構成上の致命的な欠点があって、それは「Javaの言語しか説明してない」ということだった。まあ、Cにもある入出力については説明されていたけど。

それ以外の入門書は、AWTコンポーネント配置したりGraphicsでアニメーションしてゲーム作ったり楽しいサンプルを作りつつ、プログラム的な解説はない愉快な本が多かったので、プログラムの入門には使えなかった。


C言語は、言語とstdioだけがあって、実用ライブラリは独自のものがコンパイラとセットになっていたので、C言語入門書ではライブラリについて扱わないのが当然だった。

ライブラリとコンパイラとをあわせて「処理系」と呼ばれていたけど、ライブラリはVisualCだとかTurboCとかそれぞれの処理系の説明書を見てくださいね、というスタンス。ちなみに、説明書といっても、当時の処理系の説明書の量はハンパなくて、それがひとつの箱に入ってるものだから、Professional版などは箱の厚さが80cmくらいあった。この厚さに「専門的なソフトで、素人が購入することは考えにくい」Professional感があったと言っていい。CD-ROMが普及すると説明書は全部CD-ROMに納められて、Standard版を買ってもProfessional版を買ってもその辺のソフトと同じ箱になったことに寂しい思いをした人も多いと思う。今では箱でソフトを買うということもないわけだけど。


話を戻して。

Javaの場合は、ライブラリや実行環境まで含めてJavaで、Cに比べれば言語とライブラリが密接になっている。入門編で言語部分、実践編でライブラリ、という構成にも無理がある。入門編でC相当、応用編でオブジェクト指向、実践編でライブラリとそろえると8000円近くになるし、こうなると統一的に扱った本を探すのも難しいし。結城さんの「Java言語プログラミングレッスン」も2005年の改訂2版までは、コレクションを扱っていなかった。「やさしいJava」にしても活用編まで含めれば5500円近くなって結構高い。


ということで、一冊でオブジェクト指向やライブラリの説明まで含まれた「独習Java」に人気が出たわけだ。一冊としては3780円で割高だったけど、何冊も買うよりいいしね。

ところがまた、この本の記述が難しすぎてひどい。初期の「Javaは難しい」という評判の1/5くらいはこの本の影響じゃないだろうか。3/5くらいはjava-houseというメーリングリストの高木浩光という人物のせいだと思うけど。

この「独習Java」は、改訂してもしばらくList/MapではなくVector/Hashtableを説明していたりして、「オススメしない本」から「読むべきではない本」にグレードアップした。


そうこうするうちに、Cからの移植ではなくJavaネイティブの入門書が出るようになって、問題は解決したかに見えたのだけど、時代はJSP/サーブレット時代になって、今度はWebまわりまで勉強が必須になった。

当時Javaを教える仕事をよくやってたのだけど、そうするとJava入門からWebまでの教科書を探すのも大変。Javaでプログラムを始めた人が一冊で作業に入れるような本がない。あと、テキストエディタとコマンドラインベースで進めて、入力間違い探しやファイル名のミスなんかに10分20分費やすのが非常にもったいなかったんで、IDEも使いたかった。Eclipseは人気だったけど、授業中のムダな時間を減らすには力不足すぎて、当時はForteだったNetBeansを使うことにした。

というところで、結局テキストは自分で書いて、当時の自分のサイトに載せてたりして、それが本としてまとまったのが「創るJava」というわけやね。


いまだにEclipseの新しいのが出るたびに、入門での授業につかえるようになったか確認してるんだけど、あいかわらず使いやすくなってくれない。

Javaは準備がめんどうとか、はじめるまでの設定が多いとかいう、手順的な悪評は、90%くらいはEclipseのせいだと思う。


あと、このときに最初は「独習Java」をすでに使っていたのだけど「絶対に許さない、そう、絶対にだ」という感想をもった。次に検討して、使ってみたのが「やさしいJava」だったけど、簡単なところはやさしく解説してくれてるけど難しい部分は舌足らずであいまいで漠然としか解説してくれてなくて、あってもなくても同じという結果になった。

「Java言語プログラミングレッスン」は、2冊あると物理的に重いのと、いい本ではあるけど職業訓練的に使うには、「レジ打ちに計算を教えるために数学ガールを読ませる」ようなミスマッチがあって、これは使わなかった。

矢沢久雄、林晴比古と言った人たちの本は、当時の時点でも古くさくて、検討すらしてない。


今はいろんな本が出てて、あとJavaとかJava技術者とかの位置づけもかわってきて、状況は変わったけど。

あ、ちなみに、「創るJava」の改訂の作業をしてるとか、ないです。期待してもらってる人には残念ながら。Java8対応の打診してみるかな。

Scala で TAPLを勉強しつつ LLVM コンパイラを作る日記 - October 24, 2012 12:00 AM
NetBeans7.3 Betaのバグを報告してみましたの続き

なんかメールが来ててチェックしなきゃと思って見てるんですけど 20個くらい同じバグがあるってなってfixしてるーってなってます。 http://netbeans.org/bugzilla/show_bug.cgi?id=218624 よくわかってないですけど、Jan Lahodaさん達に感謝っと。

Scala で TAPLを勉強しつつ LLVM コンパイラを作る日記 - October 09, 2012 12:00 AM
[NetBeans]NetBeans7.3 Betaのバグを報告してみました

NetBeans7.3のベータが出たということで、早速入れてみました。 結構かっこよくなってて嬉しいし機能もいろいろ増えてていい感じです。 画面下にパンくずリストが表示されるようになったのですがPHPって書いてる箇所をクリックしたらエラーが出ました。 エラー報告しないとなぁ、、、っと思っていたので報告してみました。 報告するには、まず、報告ってボタンを押して、 問題が発生したときどのような操作を行っていたかを記述してください。 と書いてあるので、起こった内容を書きます。 日本語で書いてあるので、日本 ...

へびのぬけがら - October 05, 2012 10:54 PM
NetBeans IDE 7.3 Beta リリース

NetBeans IDE 7.3 Beta がリリースされました
ダウンロードはコチラからできるようになっております
恒例のスプラッシュです


今回の注目の新機能は、 HTML5 アプリケーションプロジェクト対応かと思います
Google Chrome の拡張機能を利用した JavaScript のデバッグ機能や組み込み Webkit ブラウザなどが追加されています
その他の追加機能や各詳細はリリースノートを参照ください
何かお気づきの点などありましたら、 ML 等へご連絡頂ければと思います

きしだのはてな - October 03, 2012 12:44 AM
NetBeans7.3(Beta)に組込みブラウザがついて想像以上にすばらしい

とうとうNetBeansに組込みブラウザがつきましたよ!

いままで、FirefoxのレンダリングエンジンであるGeckoを使ったプラグインなどがありましたが、ネイティブコンポーネントとSwingの相性も悪くて、あまり使えるものじゃありませんでした。

でも、JavaFXにWebKitベースのブラウザが入ったことで、とうとうNetBeansにも使い物になるブラウザが組み込まれました!といっても、まだBetaですが。

んで、これが思ったよりも素晴らしくて、なんだか将来的に期待がもてそうな感じなので、紹介します。します。します。


Betaの前の開発版を使ったので、動きは少し違うかも。NetBeans7.3Betaはこっちからダウンロードできます。

http://dlc.sun.com.edgesuite.net/netbeans/7.3/beta/


オプションを見ると「Webブラウザ」の項目に、「Embedded WebKit Browser」という項目ができてます。

f:id:nowokay:20121003081933p:image


JavaコードとかでJavaDocを開こうとすると、NetBeans内でブラウザが開きます!やった!ただ、最初はJavaFXの場所を指定しろと言ってくるので、JDK内のjreフォルダを選びます。この手順はなくせるはずなので、正式リリースまでにはなくなってくれることを望みます。

f:id:nowokay:20121003081931p:image


JavaFXの場所を指定すると、晴れてNetBeans内でJavaDocが表示できるようになりました!ぱちぱちぱち。いやー長かった。

f:id:nowokay:20121003081930p:image


このJavaFXのWebKitベースのブラウザ、なかなかちゃんと動いてて、結構めんどうなことをやってそうなSencha Touchもちゃんと動きました。

f:id:nowokay:20121003081928p:image


こっちはChrome。JavaFXのほうは、アイコンの透過がうまく処理できてない感じだけど。

f:id:nowokay:20121003081929p:image



んで、まあ、これだけなら「それ10年前から見れたわ〜Eclipseなら10年前から見れたわ〜」という話なんですけど、面白いのはここからで。

なんか新規プロジェクトでHTML5プロジェクトなどというものができてたりします。Twitter Bootstrupとかテンプレートを選べたり、jQueryなどJavaScriptライブラリを選べたりします。

f:id:nowokay:20121003081927p:image


CSSや画像の指定が絶対パスだったりして、実行するときに、ルートディレクトリである必要がある場合に、サーバー経由で表示したいことも多いですけど、その場合に組込みサーバーを使うこともできたりします。たぶん、JDK付属のHttpServerを使ってるんだと思います。

http://d.hatena.ne.jp/nowokay/20101124#1290505617

f:id:nowokay:20121003081926p:image

「NetBeansと統合したChrome」なんてものも選択できますけど、プラグインが必要で、そのプラグインは現在のところダウンロードできませんでした。


んで、まあ、こんなHTMLを作ってみます。

<!DOCTYPE html>
<html>
    <head>
        <title>Hello JavaFX Browser</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <style type="text/css">
            .hello{
                font-size: x-large;
                color: limegreen}
        </style>
    </head>
    <body>
        <h1>Hello JavaFX Browser</h1>
        <div>TODO write content</div>
        <div class="hello">Yeah!</div>
    </body>
</html>

で、「開く」とすると、組込みブラウザで開きます。有効描画範囲を設定できるのがうれしい。あと、上部のHTMLエディタのほう、パンくずナビゲーションがついてるのがわかります。パンくずナビゲーション、Javaコードでも使えます。

HTMLを変更して保存すると、変更なしに反映されるのがうれしいです。

f:id:nowokay:20121003081923p:image


面白いのが「select mode」なるものです。

f:id:nowokay:20121003081924p:image


ブラウザ内のエレメントを選べます。左側のツリーと連動してます。あと、右側ではスタイルとか属性が表示されます。

f:id:nowokay:20121003081925p:image


まだまだ使いやすいものではないし、動的生成されたHTMLソースを見る機能がなかったりして、これで開発が楽になるという段階ではないですけど、もう少しIDE連携がこなれて、あとはSeleniumと連携できるようになったりしたら、これはなかなか面白いことになりそうです。

JsTestDriver連携も標準で用意されているようだし、Web開発ツールとしてNetBeansが強化されていくことを実感できるバージョンアップになりそう。いままでも、CSSエディタなどWeb系ファイルの強さというのはあったのですけど、ブラウザという重要なコンポーネントが手に入ったことで、この方向への進化が加速しそうです。


最近、NetBeansのベータが出てもわざわざ使おうとは思わなくて、正式リリースが出てからいろいろ試すという感じになっていたのですけど、久しぶりにベータの時点から常用したいバージョンになりました。

へびのぬけがら - October 02, 2012 09:23 PM
NetBeans 次期リリース版での Composer サポートについて

PHP による開発にて、パッケージ(依存性)管理ツールとして今後標準になるだろうと言われている Composer を、 NetBeans の次期リリースにてサポートする予定となっています
なお、以降の記述は現在(2012年10月01日時点)にリリースされている開発版よるものですので、実際のリリース版と異なる可能性もありますので、ご了承下さい
また、 Composer そのものの使用法については今回詳しくは説明しませんので、別途 Composer のドキュメント等を参照ください

今回使用した環境は以下のとおりです

* Mac OS X version 10.8.2

* PHP 5.4.7
* NetBeans IDE Dev (Build 201209260001)

まず、適当な場所にて下記コマンドを実行し、 Composer をダウンロードします
$ curl -s https://getcomposer.org/installer | php

次に NetBeans 開発版を起動し、「オプション」ウィンドウを開きます
ウィンドウ中の「PHP」タブを選択し、更に「Composer」タブをクリックします
「Composer」フィールドに、先ほどダウンロードしたファイル("composer.phar")のパスを指定します
「Vendor」、「Author name」、「Autor e-mail」フィールドは、プロジェクト情報として使用されるため、適当な値を入力してください
入力後、画面下部の「OK」ボタンをクリックし、設定を反映します
以上で、 Composer を使用する準備はできましたので、実際に PHP アプリケーションプロジェクトにて使ってみたいと思います

今回は、新規に PHP アプリケーションのプロジェクトを作成します
(既存のプロジェクトでも以降の操作にて Composer 対応とすることが可能です)
「プロジェクト」ツリーより、今回作成したプロジェクトを右クリックし、表示されたコンテキストメニューより、「Composer > Init」と選択します
初期化処理が実行され、プロジェクトツリー内に "composer.json" というファイルが新しく生成されます
"composer.json" ファイルの内容は以下のようになっています
先に Composer の設定画面で設定した値が反映されています
{
"name": "ja-netbeans-org/composer-sample-project",
"description": "Description of project ComposerSampleProject.",
"authors": [
{
"name": "Junji Takakura",
"email": "takakura@example.com"
}
],
"require": {

}
}

再度プロジェクトを右クリックし、表示されたコンテキストメニューより、「Composer > Install」を選択します

インストール処理が実行され、 "vendor" フォルダなどが新たに作成されます

次に、プロジェクトにログライブラリの "Monolog" を追加します
"require" ブロックに下記のように Monolog パッケージに関する記述を追加します
パッケージを指定する際はバージョン番号の指定をあわせて記述します
(下記例では 1.0.1 、1.0.2 … 1.0.20 などのバージョンが対象となります)
{
/* 中略 */
"require": {
"monolog/monolog": "1.0.*"
}
}

"composer.json" ファイルを保存し、変更した内容を反映します

プロジェクトを右クリックし、表示されたコンテキストメニューより、「Composer > Update」を選択します

アップデート処理が実行され、 "vendor" フォルダ以下に "monolog "フォルダが新たに作成されます

この他に「Validate」 コマンドによる "composer.json" の内容の検証、及び 「Self Update」 コマンドによる "composer.phar" 自身の更新を行うことができます
このように、 PHP アプリケーションプロジェクトに完全に統合された形にて Composer の機能を利用することができます

NetBeans 次期開発版ではこれ以外にも多くの新機能が追加される予定となっています
機会があれば、紹介できたらと思います

気になるリリース時期については、 JavaOne 2012 の1日目にて、2013年前半予定との発表がありました
(また、 Java SE の新バージョンリリースに合わせて、 NetBeans のメジャーバージョンアップも行なっていく計画のようです)

リリースまでにはもう少し時間がありますが、新機能に興味のある方は開発版を是非触って頂き、お気づきの点等ありましたら、 ML 等でお知らせ頂ければと思います

Scala で TAPLを勉強しつつ LLVM コンパイラを作る日記 - September 03, 2012 12:00 AM
xdebug

php.iniを書き換え C:¥xampp¥php¥php.ini [XDebug] zend_extension = ”C:¥xampp¥php¥ext¥php_xdebug.dll” ; for mac zend_extension=”/opt/local/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so” xdebug.remote_enable=1 xdebug.remote_host=localhost xdebug. ...

Scala で TAPLを勉強しつつ LLVM コンパイラを作る日記 - September 03, 2012 12:00 AM
smarty

スマーティプラグインを使うと、色がつきます。 ということで、NetBeansは設定が楽なので試してみてください。 そういえば、検索をしたあとに、編集できなくなるバグがあって、同僚の人も気にしてたので完全してもらえたらなぁと思います。 思いますで終わらず、メーリングリストにバグ報告しろよってかんじなんですけど、、、。(笑

Scala で TAPLを勉強しつつ LLVM コンパイラを作る日記 - September 03, 2012 12:00 AM
SubVerisionの設定

ちゃんとやればできますが、WindowsではTortoizeSVNを使ったほうが良いのでとくに設定しなくても大丈夫です。

Scala で TAPLを勉強しつつ LLVM コンパイラを作る日記 - September 03, 2012 12:00 AM
デバッガを使ってみる

例えば、マイページ C:¥xampp¥htdocs¥mypage.php を開いて、エディタのウィンドウの行番号の表示されている箇所を左クリックします。 デバッグ>ファイルをデバッグを選択してデバッグを開始できます。 デバッグはデバッグ開始ボタンが常に画面上に表示されているのでそちらを押すとよいでしょう。 次に、FireFoxで目的のページを開くとうまくいっていればブレイクポイントで止まります。 デバッグ>ステップ・オーバー デバッグ>ステップ・イン デバッグ>ステップ・アウト デバッグ>カーソルま ...

Scala で TAPLを勉強しつつ LLVM コンパイラを作る日記 - September 03, 2012 12:00 AM
プロジェクト設定

現状のままだと、検索等に時間がかかるので、不要なフォルダは除外します。 右側のプロジェクトタブ内のプロジェクトを右クリックして、プロパティを表示します。 カテゴリ内の無視されたフォルダを選択します。 フォルダの追加ボタンを押して、以下のフォルダを追加します。 OKを押して完了します。

Scala で TAPLを勉強しつつ LLVM コンパイラを作る日記 - September 03, 2012 12:00 AM
プロジェクト作成

1. ファイル>新規プロジェクト>既存のソースを使用するPHPアプリケーション を選択し「次」を押します。 2. ソースフォルダに C:¥***プロジェクト名に***とします。 3. NetBeansのメタデータを別のディレクトリに配置を選択し「次」を押します。 4. プロジェクトURLに http://localhost/開始ファイルindex.phpで「終了」を押します。場合によってURLは変えてください。

Scala で TAPLを勉強しつつ LLVM コンパイラを作る日記 - September 03, 2012 12:00 AM
インストール

netbeans-7.2-ml-php-windows.exe を実行します。 jdkなどが入っていれば特に問題なくインストールできるはずです。

Scala で TAPLを勉強しつつ LLVM コンパイラを作る日記 - September 03, 2012 12:00 AM
NetBeansインストール

http://ja.netbeans.org/ からダウンロードページに移動します。 http://netbeans.org/downloads/index.html?pagelang=ja PHP版をダウンロードします。

Scala で TAPLを勉強しつつ LLVM コンパイラを作る日記 - September 03, 2012 12:00 AM
デフォルトブラウザをfirefoxにする

オプション>一般>Webブラウザの中のFireFoxを選択します。

Scala で TAPLを勉強しつつ LLVM コンパイラを作る日記 - September 03, 2012 12:00 AM
最初にブレイクしないようにする。

ツール>オプション>PHPタブ>デバッグタブを選択します。 「最初の行で停止」のチェックを外します。

Scala で TAPLを勉強しつつ LLVM コンパイラを作る日記 - September 03, 2012 12:00 AM
NetBeans7.2設定

NetBeans で PHP のデバッガを動かせるようにする設定方法です。 とにかく、まず、xdebugでデバッガを使える設定を先にして試してみてもらい気に入ったら、subversionなどの設定もしてもらうように書きました。

へびのぬけがら - July 24, 2012 03:42 PM
NetBeans IDE 7.2 リリース

NetBeans IDE 7.2 がリリースされました
ダウンロードはコチラからできるようになっております
恒例のスプラッシュです

 新機能については、ざっくり以下の通りです

* パフォーマンスの改善
 * FindBugs 統合
 * JavaFX Scene Builder
 * Java エディタツールの強化
 * Java EE 機能の強化
 * PHP 5.4 サポート、その他
 * Groovy / Grails サポートのアップデート
 * TestNG サポート

上記以外の機能追加などの詳細についてはリリース情報を参照ください
また、何かお気づきの点などありましたら、 ML 等へご連絡頂ければと思います

へびのぬけがら - June 30, 2012 03:31 AM
NetBeans IDE 7.2 RC1 リリース

NetBeans IDE 7.2 RC1 がリリースされました
ダウンロードはコチラからできるようになっております
恒例のスプラッシュです

新機能については、コチラを参照ください
(先の 7.2 Beta リリースのエントリでも簡単にですが、紹介してあります)

7.2 Beta を PHP 5.4 評価のため使っていましたが、 RC が出ましたので、実際の開発にも投入してみようと思います

何かお気づきの点などありましたら、 ML 等へご連絡頂ければと思います

Scala で TAPLを勉強しつつ LLVM コンパイラを作る日記 - June 29, 2012 12:00 AM
[NetBeans]NetBeans7.2 Betaでログフォルダを無視されたフォルダに登録する。

なぜか、ブラウザでプログラムを実行すると、NetBeansのナビゲータがパラパラ動いて気になってました。 たぶん、プロジェクト内のファイルが書き変わったら反応するようになっていてログフォルダがプロジェクト内にあるからなんじゃないかと思って調べてみました。 プロジェクトの設定に、無視されたフォルダという設定項目があるのでここに、無視してほしいフォルダを追加したら、パラパラ言わなくなりました。 検索にも引っかからなくなるので、登録しておくと良いです。 あと、Smartyのキャッシュとかも登録するといいで ...

しんさんの出張所 はてな編 - June 26, 2012 12:00 AM
[NetBeans]NetBeans 7.2ベータでも放置中のbug

検索文字が表示されない。

http://shin.cside.com/diary/2012/0626-01.png

反転されている文字をみてのとおり、ここでは「public」とうちこんでる。


だいぶ前のナイトリービルドですぐにわかったこのバグ、いまだに法地中だけど、製品版までにはちゃんと直るのだろうか。というか、こういう見た目系って真っ先に気がつくバグだと思うんだけどどうなってんの。

きしだのはてな - June 18, 2012 08:16 PM
Windows64bitでJNAでJavaからC++コード呼び出そうとしてハマった話

Javaからネイティブコード呼び出そうと思ったんです。

で、あんまりやる気もないんで、JNIじゃなくてJNAでやろうと思ったんです。

Windows7 64bitで。


ということで、まずMinGWインストールしたんです。

http://www.mingw.org/

んで、NetBeans7.1で「オプション」の「C/C++」のところの「ツールコレクション」で「ベースディレクトリ」に「MinGW\bin」を指定したんです。


それから「C/C++動的ライブラリ」プロジェクト作って、「newfile.c」って名前でこんなコード書きました。

#include <stdio.h>

void  hello(){
    printf("test\n");
}

それから「構築」ってやるとDLLができたんです。


あとはJavaからの呼び出しコード書こうと思って、まずはJNAのサイトからjna.jarをダウンロードしたんです。ググるたんびにjava.netのサイトに案内されて、githubにいちいち移動するのはめんどくさかったですけど。

https://github.com/twall/jna


それで、NetBeansで「Javaプロジェクト」を作って、ライブラリにさっきのjna.jarを追加して、Javaコードにこんな感じでJNA呼び出しのコード書いたんです。

package javajnaapplication11;

import com.sun.jna.Library;
import com.sun.jna.Native;

public class JavaJnaApplication11 {
    static String PATH = "C:/Users/naoki/libCppDynamicLibrary_1.dll";
    public static void main(String[] args) {
        Sample lib = (Sample) Native.loadLibrary(PATH , Sample.class);
        lib.hello();
    }
    
    interface Sample extends Library{
        void hello();
    }
}

それで実行したら、こんなエラー出たんです。

Exception in thread "main" java.lang.UnsatisfiedLinkError
    :Unable to load library 'libCppDynamicLibrary_1.dll'
    :指定されたモジュールが見つかりません。

パスの指定を間違えたと思って、/を\\にしたり、dllをc:\windows\system32に置いてみたり、拡張子をはずしてみたり、いろいろやってみたけどダメなんです。


Google先生に泣きついてみたけど「JNAはとっても簡単でみんな幸せ」としか答えてくれないんです。

ぼくは、もうどうしたらいいかわからなくなって、街にとびだしてビール飲んだりラーメン食べたりスーパーでインドの青鬼買って飲んだりしたけど関係ないので省略しますね。


それで、一応Linuxで試してみようと思って、Ubuntu 12.04で試したら、何事もなくうまくいくんです。これでJNAの使い方に問題がないってわかったんで、「ははぁ〜ん、これは64bit Windowsなのに32bit DLLが作られてるな」って思って。


あとはgccの64bitバイナリ吐くオプション調べればいいだけだと思って、ググってDLLプロジェクトの「プロジェクトプロパティ」で「構築」の「Cコンパイラ」の「追加のオプション」に「-m64」ってつけて構築してみたんです。

そしたら、sorryって謝られちゃった >_<

newfile.c:1:0: sorry, unimplemented: 64-bit mode not compiled in

それでMinGWでGCCの64bitバイナリ作れるようにしようと思って、MinGW64落としてきたんです。

http://sourceforge.net/projects/mingw-w64/

でも、ツールコレクションに追加して構築してもgcc.exeがないって言われるし、なんだか面倒だったのでやめました。


もう、NetBeans+MinGWにこだわっても仕方ないと思って、あきらめてVisual Studio入れることにしたんです。Expressですけど。

http://www.microsoft.com/japan/msdn/vstudio/express/


それで、こんなコード書いてDLL作ってみたんですけど、やっぱりおんなじエラーが出てしまうんです。

#include "stdafx.h"
#include <stdio.h>

extern "C"{

__declspec(dllexport)
void hello(){
    printf("test!\n");
}
};

プロジェクトのプロパティで64bit選ぼうとしても選択肢にWin32しかないんで、調べたらExpressは32bitバイナリしか作れないんですね。

それで、ここを参考に64bitバイナリが作れるようにしてみました。

http://d.hatena.ne.jp/torutk/20100927/p1


そしたら、あっけなく動いたんですね。もう、土曜日ずっと起きて日曜の朝まで作業して、プリキュアみようとしたらゴルフってなによ?じゃなくて、あの作業はなんだったんだ?って感じですよ。

たぶん、エラーメッセージが「指定されたモジュールが見つかりません。」じゃなくて、「モジュールが読み込めません」だったら、こんなに無駄ハマらなかったと思うんです。


そのあと「はは〜ん、32bit JDKなら32bit DLLでも動くのだな」と思って、試してみたら、ちゃんと動いたんです。はは〜ん。

これで作業はNetBeans+MinGWでできますね。もう一台のパソコンにVisual Studioの設定するの面倒なんです。HDDももったいないし。


結論としては、インドの青鬼はアルコール度数高めでおいしいです。欲しい物リストにも突っこんでおいたんで、送りつけてくれてもいいですよ。

きしだのはてな - June 11, 2012 05:14 AM
NetBeansのタブを切り替えるショートカット

NetBeansのタブを切り替えるの、Ctrl+Tabでできるようだ。

f:id:nowokay:20120611141117p:image


あと、Ctrl+Page Up/Downでタブの左右移動、そしてCtrl+Alt+Page Up/Downでドキュメント内タブ(ソース/履歴など)の移動ができる。

へびのぬけがら - June 04, 2012 10:36 PM
NetBeans 7.2 以降の設定データディレクトリのパス変更について

NetBeans 7.2 以降から NetBeans 設定データディレクトリの場所が変わります

Mac OS X では、NetBeans 7.1 以前は以下のようになっています

/Users/<username>/.netbeans/<nb-version>

NetBeans 7.2 以降は以下のように変更されます
/Users/<username>/Library/Application Support/NetBeans/<nb-version>

Windows 7 では、NetBeans 7.1 以前は以下のようになっています
C:\Users\<username>\.netbeans\<nb-version>

NetBeans 7.2 以降は以下のように変更されます
C:\Users\<username>\AppData\Roaming\NetBeans\<nb-version>

上記以外にキャッシュ用ディレクトリなども変更になっています
その他の環境なども含め、詳細はコチラを参照ください

へびのぬけがら - June 02, 2012 10:04 PM
NetBeans IDE 7.2 Beta リリース

NetBeans IDE 7.2 Beta がリリースされました
(リリースされてからだいぶ時間が経ってしまっていますが…)
ダウンロードはコチラからできるようになっております 恒例のスプラッシュです


今回のバージョンでは、結構便利な機能が追加されています
(現在、ベータ版ですので、今回ご紹介する機能が最終リリースでは含まれない可能性がありますので、ご了承ください)

Java 開発では、ソースコードの自動生成やリファクタリング、ヒント機能が強化され、至れり尽くせりな状況となっています
また、クラウドサポートとして、Amazon Beanstalk や Oracle Public Cloud に対応しているようです
(クラウドサポートに関しては、まだ試せていないので、ドキュメント以上の知識はないのですが、一回各設定をしてしまえば、あとは F6 押すだけで、デプロイして、ブラウザ開いて、表示までしてくれるという感じみたいです)

PHP 開発では、 PHP 5.4 が正式にサポートされることとなり、 trait などの新文法対応、また組込Webサーバによるローカル環境での実行、デバッグなどが簡単に行えるようになります

その他の追加機能や各詳細はリリースノートを参照ください
何かお気づきの点などありましたら、 ML 等へご連絡頂ければと思います

きしだのはてな - May 31, 2012 06:20 AM
NetBeans7.2とPHP5.4の組み合わせが素晴らしい件

PHPは開発が簡単とか言われますが、実際になにかWebアプリケーションを動かそうとすると、ApacheにPHPモジュールを設定してドキュメントルートを設定するなど、準備に手間がかかりました。

特に、絶対パスが使われているサイトを2つ同時に開発するという場合には、サーバーを別に用意したりポートを変えたホストを用意したりする必要がありました。


PHP5.4からは組込Webサーバーが用意されたので、ApacheなどWebサーバーを別にたてて設定する必要なくPHPのWebアプリケーションを試すことができます。


7月くらいにリリースされる予定のNetBeans7.2ではPHP5.4に対応してtraitなどの新しい文法の補完にも対応するようですが、一番ステキ機能は、PHP5.4組込サーバーへの対応だと思います。

ということで、NetBeans7.2betaとPHP5.4組込サーバーを使ってPHPをNetBeansから動かす手順を見てみます。


まず、オプションでPHPへのパスを登録します。

f:id:nowokay:20120531151537p:image


PHPプロジェクトを作成するとき、実行環境としてBuilt-in serverを指定します。

f:id:nowokay:20120531151538p:image


そうして、こういうコードを書いて実行してみます。

f:id:nowokay:20120531151539p:image


そうすると組込サーバーが起動してブラウザが開いて、実行が確認できます。

f:id:nowokay:20120531151540p:image


このサーバーの起動も一瞬で、まったく待ち時間がありません。GlassfishなどJavaのアプリケーションサーバーも0.3秒で起動できるようになったとはいえ、なんだかんだで1秒くらいはタイムラグが発生します。

こういうところはPHPすごいなーと思います。