JPQLってプログラム実行してみないと、どういう結果がとれるかわかりにくい…。SQLなら実行するツールでSQLを試行錯誤してからプログラムに張り付けてGOGO!!って出来るんだけどね…。 と思ってたらNetBeans 7.3からはJPQLを実行する機能があるというじゃないですか。 Test JPQL with NetBeans IDE 7.3 Tools persistence.xmlの右クリックメニューにJPQL問い合わせの実行という項目が…気づかなかったorz JPQLを入力する画面が出てきて ...
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; } } }
https://oj-events.jp/public/application/add/64
血で血を洗う勝者なき闘い!!...なんてことはなく,和気藹々とやりましたよ。
こんな面白い企画に誘って頂き関係者の皆さん(&出張扱いにしてくれた弊社)には感謝です。こんな場所で話せるほどIntelliJがメジャーになったと思うと感慨深いものがありますね。
みんな気付いているけど,これが真実だよね。
そんでもご贔屓のツールについて語るのも聴くのも楽しいんだからしょうがない。:-)
当日モデレータとグルになった広報活動では伝えきれなかった点について若干補足しときます。IntelliJの特徴で伝え損ねたのですが,これの最大の特徴は,これだと思ってます。
基本的なコンセプトは,使う人が 『いろいろ』 知ってる前提でサポートするIDEで、 やりたいことが,よく知らなくても何とかしてくれる系ではないです
EclipseのCtrl+2みたいな「これだけ知ってれば何とかなる」みたいな機能は少なめですし,NetBeansのように「細けぇ事は気にするな」的なお手軽さはありません。「なんでもしてやるから指示しな」「ダメだったら文句言ってやる」となかなかスパルタンなところがあります。(´・ω・`)
裏を返すと,やりたいことがハッキリしてれば,その手順を邪魔しないし,絶妙なアシストをしてくれます。そんなIDEですが,クセが強いのであわない人はあわないだろうな...。
テキストエディタと異なるIDEのメリットについては,きしださんがキレイにまとめてくれました。
「IDEが良い書き方を教えてくれる」これは確かに! #ideawars #jdt2013 #jdt2013e2
FindBugsやCheckstyleあたりをうまいこと使えばテキストエディタでも似たような事はできますが,シームレスさに置いてはIDEに軍配があがると思います。テキストエディタより動作が重くなる理由のひとつでもあるんだから,そこは認めとこう。
この手のお節介機能については,IntelliJも負けてないんだけど,頑張りすぎて項目が膨大になり互いに矛盾するものもあって,使いこなすのは結構ちょっと大変。IntelliJ(Hectorおじさん)に指摘されたことを盲目的に信じずに「これは直す」「これはいいや」と取捨選択できないとうっとうしいだけだろな。
→ 24日目 Inspections & Intentions - marsのメモ
ps.
今までほとんどIntelliJユーザに遭遇したことがなかったので行くまで「IntelliJが流行ってるとかガセ」と思ってたら違ってた。東京すごい。
あとtwitterでしかあったことがない皆さま方も実在してた。現実すごい。
今日の成果: @takezoen さん @_siosio_ さん @mike_neck さん、実在。 @kikutaro_ さん @shinsan68k さん、不定(会えてない。
@masanobuimai というか、みんなが@masanobuimai が実在するんだと確認した一日だと思うw
(゜Д゜)ハッ!! これが「深淵をのぞく時、深淵もまたこちらをのぞいているのだ。」と言うことか...。
あ、まず前提として、
貴女が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 食べログ
CentOSのインストール CentOS6.4だと凄い楽。最初からこのサイト見ておけばよかった・・・。 Windows 8 メモ / CentOS 6.4をHyper-Vにインストールする 続いて、GlassFishを入れるときに参考にしたサイト CentOS6.2にGlassFish3.1.2.2をインストールする Apacheの起動時のエラー対応 Apacheのエラー:Could not reliably determine the server’s fully qualified domain ...
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 ...
APIリファレンス&スニペットブラウザのDashなんですが、設定見るとAppCodeと連携できるようです(NetBeansはありませんね...。|ω・`)チラッチラッ
Mac App Store - Dash (Docs & Snippets)
調べてみると、AppCodeのプラグインとして提供しているようだったので、ものは試しとIntelliJに入れてみたらアッサリ動いた。やったことと言えば、"Tools->Search in Dash"の割り当てキーが「ctrl+SHIFT+D」で既存のキーマップと競合していたので、こっちを優先してあげたくらい。
たぶん、これIntelliJ以外のJetBrains系IDEでも動くよね。DashのAppCode用プラグインは、Githubのプロジェクト内にある(Dash.jar)ので、それを取ってきてインストールするだけでよい。
→ Kapeli/AppCodeDashSearch ? GitHub
docset指定したり、もうちょっと使いやすくする余地はありそうなんだけど、それよりもDashのWindows版が欲しいです。:-)
JSF2.0になって、簡単なコンポーネントなら自作できるようになったけど、情報が少なくてはまると辛い。 PrimeFacesのp:ajaxのlistener属性にcc:attributeから指定したメソッドを設定しようとするとリンク先のようなエラーがでる。 http://stackoverflow.com/questions/15420081/jsf2-0-composite-component-with-optional-method-expression リンク先では、cc.getValueExp ...
最近遅延読み込みがマイブームです。PrimeFacesのtreeコントロールは、遅延読み込み機能とかいうのは明示的にあったりはしないんですよね。dataTableの方にはあるのに。 ということで、treeのほうはTreeNodeを自前実装してgetChildCountやisLeafやgetChildrenメソッドで遅延読み込みするようなものを作ってやればOKです。とりあえず、DefaultTreeNodeクラスを継承して以下のようなものを作ってみました。 package com.mycompany. ...
RichFacesからPrimeFacesに浮気中。こいつも遅延読み込みできるのね。 表示するデータは、以下の単純なクラス。 package com.mycompany.richtest; import java.io.Serializable; public class Person implements Serializable { private int id; private String name; public int getId() { return id; } public void ...
長いだけでオチは無いよ。
「Java6がサポート切れた」だの「秋にはJava8が出る」だのとJavaのバージョンアップキャンペーンっぽい話題をちらほら聞きますよね。実際、保守しているシステムも、やれハードウェアの老朽化だ、OSやミドルウェアの保守切れだ、とかいう理由で否応なしにJVMのバージョンアップをするハメになりますよね。でもコンパイラ(JDK)のバージョンアップってどうしてるんですかね?
JVMはそれを必要とするミドルウェア(大抵はAPサーバですわな)がサポートしてないって大義名分があるので、Java5だJava6だと定期的にバージョンアップしてくんだけど、その上で動いているシステム(まあ業務アプリだわな)のコンパイラ(JDK)まで気にしてるって話は意外なほど聞かないのよね。
んで、どうしてるかというと、何もしない。いわゆるSI業界では、ソフトウェアは「やわらかいモノ」ではなく「モロいモノ」という扱いなので「寝た子は起こすな」が鉄則なので、要らんことはしない。したがって、JDK1.4が主流だった時に作成したシステムは2013年になった今でもJDK1.4でコンパイルしているのが普通...なんだと思うのデスよ。
え?そんな古いJDKどっから手に入れるかって?抜け目の無いプロジェクトは、保守に必要な環境をインストーラごと保管しているので、そんな心配はご無用さ。:-)
システムを構築した業態・業界にもよると思うんですが、業務システムって想像以上に長生きで、2000年あたりに新規構築したシステムが今でも現役なんて珍しくないですよね(と誰とは無く。
「JDKは据え置き」が果たしていいのか?というと悪いとも思うし、良いとも思う。つまるところ、そのプロジェクトなり会社なりのバージョンアップポリシー如何なんだけど、実際は前述の通り「何かあったら怖いから現状のままにしてる」が多数派なんじゃなかろうかと。なんで「ウチはこれこれ、こうゆう理由で、こんな対応してるよ」って事例があったら、それによろこんで倣うと思うんですよね。それがある程度の権威がある事例だったらなおさら。:-P
そうは言っても、選択肢は多くは無くて、やる事と言ったら
- JDKのバージョンは塩漬けのまま変えない
- 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の件はイラっと来たけど)。
ふむふむ。
@masanobuimai 1.5からデフォルトパッケージにあるクラスをパッケージに所属するクラスから呼べない(コンパイルエラー)という問題に2回くらい遭遇しました
Javaのバージョンアップ回りでこまったのはJavaSoundの細かいタイミングとかフルスクリーン回りの挙動、タイミングが変わったとかかな。JDBCがインターフェースにガッツリ手が入ってしまってギャーってのはよくあるとおもう。実装はいいけど、インターフェースに手が入るとダメだよね
2013-03-26 23:35:21 via web
お手伝いしてるプロジェクトのコーディング規約眺めてる
Java5からの新機能は使っちゃダメって書いてあるお。
理由に記述方法が異なるコードが混在すると、可読性がさがるためとあるけど、可読性さがるか?1メソッド数千行とかのがよっぽどあれだと思うが。
ちょいと前にマジメに比較してみて、そのまま死蔵してた資料が出てきたので供養のつもりで公開してみる。知らない人に簡単に説明すると、jVi, Vrapper, IdeaVIMはそれぞれNetBeans, eclipse, IntelliJ IDEAのvi/vimプラグイン。世の中のvi/vimユーザの怨念たるや凄まじく、IDEなんてモードレスエディタが当たり前なのに、無理矢理vi/vimモードを実装した猛者がいるのです。
どれも一定水準以上のすばらしい出来なんだけど、vi/vim(特にvim)に対する拘りも人それぞれで、満足する人、それでも不満が残る人がちらほら。でも、どうがんばってもこれらプラグインがvimに追いつくことは叶わぬ夢なので、どの辺で妥協できるかが、これらを受け入れられるかどうかのポイントになるかと。
それと想像に難しくないけど、どれもvimscriptはサポートしてないよ。
jVi, Vrapper, IdeaVIM以外のvi/vimプラグインについては、この辺を参照のこと。
→ VsVim - 猫とC#について書くmatarilloの雑記
jVi 1.4.5 : NetBeans用vimプラグイン
古くはJBuilderのviプラグインでNetBeansに移植された。もともと"vi"プラグインだったので、vimの機能が不足してたんだけど、この前調べたらそんなことなかった。
気になった点をいくつか。
- Ctrl-[ でエディットモードに復帰できないけど、オプションで指定できるようになる。
オプション -> jVi Config -> Ctrl-Key Bindings で "Ctrl-[ the "real" <ESC>"をチェックする。
- :コマンドに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
元々はRick Maddyさんが個人的に公開してたプラグインなんだけど、彼がメンテできなくなったのでメンテナに @oleg_s さんが名乗りをあげて、このあたりからJetBrains公式プラグインになったみたい。ちなみに現在のメンテナである @vlasovskikh さんはとても意欲的で twitter で "IdeaVIM" ってつぶやくと、どの言語でつぶやいたかに関わりなく「バグだったらYouTrackにファイルしてね?」ってmention送ってくる。
ちなみに、IdeaVIMのワード移動はvim互換でちゃんと日本語と英語を区別するよ。
機能比較表
一式もろもろを比較したのがこちら。思ってみればクリップボード操作も拘りもってる人居そう。あたしは、vimでもCtrl+X,C,Vにremapしてるから全然気にしてないけど。:-)
あと設定できるオプションもプラグインによって異なるのでご注意を。
カバレッジをとるのに、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にカバレッジの設定があるとカバレッジ関係の機能が使えるようになります。
プロジェクトメニューにカバレッジのメニューが追加されているので、「レポートの表示」とするとカバレッジレポートが表示されます。
レポート画面で「すべてのテストの実行」とするとテストが実行されてカバレッジが計測されます。
そのとき、エディタ画面ではテストされた行とされてない行が色分けされます。「完了」を押せば、カバレッジ表示されなくなります。
Jenkinsでのカバレッジ記録
JenkinsにJacoco pluginを導入すると、「ビルド後の処理」として「JaCoCoカバレッジレポートを記録」が選べるようになるので追加します。
そうすると、カバレッジが記録されます。
http://tohoku-dev.jp/modules/news/article.php?storyid=182
約半年ぶりに寺田さん(@yoshioterada)が来仙するってんで参加してきました。内容はJava One 2012 SF中心でJavaEE7とかJava8とかといったかなり未来の話。:-)
いろいろ考えさせられたが、それ故に消化するまで時間がかかりそうなので、主立ったメモだけ残すよ。
去年のJavaのテーマは「Moving forward Java」今年は「Make the Future Java」だそうな。 #てらだよしおオンステージ
はじまった。
JCPはよりオープンになったって話。Specification LeadsやExpert Groupに属して無くても意見があったらガンガン言えるようになった(むろん英語で)。Java8のλに関しても日本の大学生がガンガン意見言ってたという事例があるそうな。
そう思うと日本初のJSRが一つくらいあってもいいんじゃないかと。例えば2Way-SQLなんかJSR化してもいいくらいの良い考え方だと思うけどなー、とか思ってみたり。
まあ、コミュニティに参加する人達は非日常を経験しにきてるようなもんだかんねー。( ゜∀゜)・∵. グハッ!!
「社外のコミュニティに積極的に参加してる人とそうでない人で情報格差が広まっている」とのこと。まあ、そうかも。こうゆう場に集まる人たちはアンテナ高いけど、それを職場にフィードバック出来てないのは不徳の致すところでございます。
WebSocketも誰かがラッパー書いて「ほら、素で使うより簡単」て言いそうやな。
標準を素直に使おうとしないのは、古くからのJava屋の悪いクセ。(´・ω・`)
Java屋さんは標準APIをみるとすぐ「もっと便利にしてやるぜー」と俺俺ラッパー書いちゃうけど、よその言語系はどうなんだろう?(´・ω・`)
何にでも例外ケースはあって、稀におこるそれに対応してないからって鬼の首取ったように騒ぐのは悪いクセ。そん時だけ例外処理すりゃあいいのだ。
JSF2.2やWebSocketのAPIとか見てて思わず「ラッパー組んじゃる」って考えるのは悪いクセ。いちいち帯に短したすきに長しと思わないで、黙って出来合いのAPIを使ってみようという境地に至りたい。
番外編:
JavaScriptとRubyしか言わない。RT @kiy0taka: またか。RT @masanobuimai: またgroovy飛ばしたぞ #てらだよしおヒドい
スライドにあったIDEの紹介にeclipseやNetBeansだけでなくIntelliJ IDEAもあったのは評価するが、相変わらず動的言語でgroovyを飛ばす(なんか恨みでもあるのかw
Rhinoはいらない子。(´・ω・)カワイソス
Project Easelって、それWebStormのパク...うわなにおす
言語としてのJavaってなんか影薄いな。(´・ω・`)
あれこれ、言語覚えんで、JavaScriptに集中していいんちゃうか?
JavaScript無双をどこまで信じていいものか...。(´・ω・`)
おまけ:
去年のJavaのテーマは「Moving forward Java」今年は「Make the Future Java」だそうな。 #てらだよしおオンステージ
Javaの未来がよく見えない
@oymk1 だって、ぼくらと世界が繋がってないもの。(・ω<)テヘペロ☆
2013-01-18 20:53:53 via Tweetbot for iOS to @oymk1
まだJava6すら使ってない我々にとっては未来過ぎる話でしたね。:-)
ps.
寺田さん、最新情報をありがとうございました。テム・レイ化しないようコツコツ素振りします。それと運営の村上さん(@MasanoriMurakam)おつかれさまでした。ノシ
先日、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 ...
デブサミ2013コミュニティブース出展(1日目) - torutkの日記に引き続き、2日目の出展です。 昨日は、過去Java読書会BOFで読んだ本を、年代順に手前から並べていたので、最新のものが奥側になっていました。ここ最近オライリー本が多く、オライリー本は表紙のレイアウトでタイトルが下の方に位置しているので、写真のように重ねて並べるとタイトルが隠れてしまうという問題がありました。 そこで、今日は、年代順に奥から並べてみました。 また、ポストイットでいくつかの本にキャッチーをつけてみました。例えば ...
JAX-RSって出力を柔軟に差し替えれるんですね。知りませんでした。これは捗る。やりかたは簡単。MessageBodyWriterインターフェースを実装して@Providerアノテーションをつけるだけ。 package okazuki.mavenproject7; import java.io.IOException; import java.io.OutputStream; import java.io.PrintWriter; import java.lang.annotati ...
HTMLとかXHTMLとかHTML5とかのテンプレートエンジンのThymeleafいい感じっぽいのでHello worldしてみます。 NetBeansでMavenのJavaアプリケーションのプロジェクトを作成して依存性の追加でthymeleafで検索するとorg.thymeleafが出てくるので、それを追加します。pom.xmlには以下のような記述が追加されます。 org.thymeleaf < ...
でっかいツリーを表示したいが、最初に全部データをクライアントに持っていくのは忍びない。というか普通にある程度の規模以上になると性能問題になりますよね。 そんなときのために、表示するのに必要最低限のデータだけをとっておいて、あとは必要に応じて取得するという手は常套手段です。やってみましょう。 表示するデータ 表示するデータは、実際にDBにアクセスするものはめんどくさかったので以下のような簡易的なものです。 package okazuki.mavenproject4; import java.util. ...
eclipselinkの2.4.0を入れる jsonに出力したいクラスのあるパッケージにjaxb.propertiesを置く javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory JAXBContextを生成するときにJAXBContextProperties.MEDIA_TYPEにapplication/jsonを設定する JAXBContextPropertiesはeclipseli ...
Java EEのクラスに依存してるクラスを単体テストしようとして以下のエラーに悩まされました。 java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file [Java EEの中のクラスの名前] ぐぐってみたら解決策発見したのでメモメモ。 http://d.hatena.ne.jp/ryoasai/20110812/1313164684
Android開発環境を構築する(オフライン環境)(続) - torutkの日記のおまけです。 Android SDKを使った開発では、PC上でAndroidエミュレータ(AVD)を使ってAndroidアプリケーションを実行します。しかし、このAVDが「激重」で、起動するのに数分かかる代物です。 そこで、Android携帯端末を持っていれば直接その端末で実行・デバッグした方が快適です。PCとAndroid携帯端末をUSBケーブルで接続してPC上で作成したAndroidアプリケーションを 実行できる ...
Android開発環境を構築する(オフライン環境) - torutkの日記の続編です。 今回は、NetBeans IDEにAndroidプラグインをインストールし、NetBeans上でAndroidプログラミングができるまでの環境を構築します。 NetBeans用Android開発プラグイン NBAndroidのインストール NetBeansのAndroidプラグインは、「NBAndroid」を使います。NBAndroidホームページは次のURLです。NetBeansは基本的には7.2以降です。 ...
Java EE 6を使うならCDIを使わなきゃね!ということなんですが、Beginning Java EE 6にはCDIについて書かれてない!!せっかくNetBeansは手厚くCDIをサポートしてくれてるのにもったいない!ということでぐぐりました。 まずは、Oracleにいた人が書いてくれてたBlogの記事がありました。とても丁寧なので、さいごまで連載が続かなかったのがとても残念でなりません… Understanding Contexts and Dependency Injection (CDI) ...
JavaFX 2の表(テーブル)コントロールTableViewを使った簡単なサンプルを、SceneBuilderを使って作成する手順を、以前の日記 id:torutk:20121005 に文章で書きました。 文章だけでは分かりにくいので、SceneBuilderとNetBeansを使ってJavaFX FXMLアプリケーションでTableViewを使う簡単なプログラミングについて画面キャプチャを交えて次のホームページに作成しました。 http://www.02.246.ne.jp/~torutk/j ...
はじめに WPF連載の中に突如現れるJavaEE関連ネタ!! 本題 Webアプリケーションを作成するときにJSFのライブラリとして以下の3つがあることを確認…どれも、個人的に未使用なので癖や良し悪しはなんとも言えない。 ちょっと気になるDataTable系コントロールだけ見てみました。 PrimeFaces jQueryをベースとしてるらしい。 PrimeFaces 3.0 リリース - Ajax,モバイル,IE9 対応 JSF2 コンポーネントを提供 http://www.infoq.com/j ...
去年は何かすべてにおいて行き詰っていて、NetBeansを使っていませんでした。
そんな中、年末に片貝さんのセッションや自分の周りのNetBenasユーザーの
使用状況を聞いて刺激をうけたので、自分も今年はNetBeansを使っていきた
いとおもいます。
それにしても、久しぶりNetBeans使ってみたら立ち上がり軽くなったなあ!
やっと終わったわ。:-(
IntelliJが出来ることはもっといろいろありますし、正直びみょーなところや「これって他(Eclipse/NetBeans/etc)のほうがマシじゃね?」って点も多々ありますので、おのおのそれなりなつきあい方を模索してみてください。
信者になれば毎年の年貢や不意のセールで心が揺らぐこともなくなるでしょう(ンな分けない。:-P
- 01日目 ひとりIntelliJ IDEA Advent Calendarはじめました
- 02日目 IntelliJと仲間たち
- 03日目 IntelliJの購入方法
- おまけ:IntelliJ IDEAの読み方
- 04日目 インストール直後にやった方が良いこと
- 05日目 Eclipseとの違い
- 06日目 IDEA12とIDEA11の比較
- 07日目 メニューバー,ツールバー,ナビバーとステータスバーについて
- 08日目 ツールウィンドウ
- 09日目 IDEの設定(概要編)
- 10日目 IDEの設定(Project Settings)
- 11日目 IDEの設定(IDE Settings:前編)
- 12日目 IDEの設定(IDE Settings:後編)
- 13日目 オススメしないプラグイン
- 14日目 Copyright プラグイン
- 15日目 プラグインの探し方
- 16日目 目的のファイルに素早く移動する
- 17日目 IntelliJで期待しちゃイケないこと
- おまけ:XPathの表示と検索
- 18日目 Databaseプラグイン
- 19日目 ExplorerやFinderとの連係
- 20日目 artifactの設定(ついでにProject Structure )
- 21日目 コマンドプロンプトとTerminal
- 22日目 情報源とか雑多なこと
- 23日目 Remote Hostプラグイン
- おまけ:ライセンスのこととか
- 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)が目玉マークの間は検査中ということを示してます。
このコンパイルステータスを緑に保つのが良いことなのですが、検査項目をうまいこと調整しないと緑にするのは至難の業です。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種類。
"As server problem"はJetBrainsのCIサーバであるTeamCityを使ってなければ設定する必要すらありません。通常は"As warning"なんですが「ウザいけどOFFにするのはどうも」ってのは"As weak warning"か"As info"にしとくといいです。
一応、デフォルト以外の警告レベルも追加できるのですが、そこまでするのはやり過ぎかなと思います。
それと先ほども言いましたが、Inspectorによっては独自のオプションを持っているものもあります。正直、プロジェクトごとにいちいち設定するのは大変ですので、その辺はうまいこと使い分けしましょう。
ちなみに、Inspectionsの設定は、Settings->Inspectionsで行います。この設定画面にはステータスバーに居るHectorおじさん経由でもたどり着けます(おじさんをクリックして"Configure Inspections"をクリック。
それ以外にも、警告箇所でALT+Enterを押し、該当する検査項目からInspectionsの設定画面に飛ぶこともできます(下図の場合、"Flip comparison(Constant on right side of comparison)"が検査項目で、そこから展開したメニューにある"Edit inspection profile setting"で設定画面に飛べます)。
Inspectionsの設定項目が多すぎるので、とりあえず全設定ONにして実コードの検査度合いをみつつ、上記方法で個別に警告レベルの調整をしたりしてます(それでも調整はくたびれます)。このサブメニューを見てもわかるように、検査項目の設定に飛ぶだけでは無く、検査項目そのものを無効(Disable inspection)にしたり、ここでだけ検査を無効(Suppress ...)することも可能です。ただし、"Disable inspection"を選択した場合、その検査項目は二度と登場してきませんので、復帰させるには1,600もあるInspectorsから探し出さないといけません(これもかなりくたびれる作業です。:-(
ちなみに、上記スクリーンショットの"Flip comparison"の下にある鉛筆アイコンの項目3つがIntentionsになります。こちらは検査項目ではないのでマーカーバーには影響ありません。
Hectorおじさんについて補足すると、検査レベル(Highlighting Level)を「Inspections/Syntax/None」に変えるたび、おじさんがそっぽを向いていくという細かい芸があります。
なんとなく想像が付くかと思いますが、このInspectoinsは結構CPUパワーを食います(つまり動作が重くなる)。そのため検査レベルを下げていけばいくほどIntelliJが軽くなります。その分、IntelliJを使っている良さも減っていきますが...。とはいえ非力なマシンでIntelliJを使うと、ホントに泣きたくなるほど遅くなるので、背に腹は代えられないときは、この辺から調整してみることをオススメします。
それとIDEA9あたりから"Power Save Mode"というのがつきました。Helpを読んでも要用を得なかったのですが、名称からしてCPUにやさしいモードなのだと思います。その証拠(?)に、このモードにするとHectorおじさんが完全に沈黙します。
いずれにしろ、明らかに余計だと思えるInsepctionsは無効にしておいたほうがPCにも、利用者の気持ちにもやさしいと思います。:-)
あと、その気になれば自分でもInspectionsやIntentionsを作れます。
→ この前,独自Inspectorで試したことを,他の方法で実現してみんとす
やめりゃ良かったと作り始めてから思ったのですが、IDEA12でデフォルトのプラグインをすべて有効にしたときのInspectionsとIntentionsの一覧を作りました。気になる&使っている順にコメントも付けてます。まだ完成してませんが、気長にこつこつやってこうと思います("+"付いてるのが、個人的オススメ。それらをError, Warinig, Infoのどれにするかは各自が決めて。
→ IntelliJ IDEA : inspections&intentions
当然ながら、RubyやPHP、Python、Scala、Kotlinなどの言語系プラグインを入れると、それ用のInsepctionsやIntentionsが増えます。:-P
*1:IDEA12の標準プラグインを全て有効にした状態
Settingsの話は3回もやりましたが,Project Structureの話をしてませんでしたね。正直,面倒なので,昔に書いたエントリーやIntelliJ本体のヘルプを参照してください(だんだんやる気がなくなってる。
→ 初めてIntelliJに触れる人へ − プロジェクトの設定とかテスト実行の話
IntelliJのバージョンがあがるたびに設定画面もびみょうに変わってますが,まあ何とか読み替えられると思います。ちょっと補足すると,ライブラリの設定(File->Project Structure->Modules->Dependencies)にあるスコープ(Scope)は,Mavenを知らないと意味がわからないと思います。
設定可能な値と意味は以下の通りです。
- Compile
- 普通はこれです。コンパイルや実行時に参照されます。
- Test
- テストコードのコンパイルとテストの実行時に参照されます。
- junit.jarとかがここに属します。
- Runtime
- 実行時にだけ参照されます。コンパイル時には参照されませんので,コード補完の対象になりません。
- 強いて言えばJDBCドライバなどが,ここに属します。
- Provided
- 実行環境にあらかじめ用意されているライブラリを指定します。コンパイル時に参照されますが,実行時には参照されません(実行環境に相当品があるので)。
- 具体的に言うと,J2EEのAPI(javaee.jar)とかが,ここに属します。
NetBeansにも同様の考え方があるので,NetBeansからの移行組はすんなり理解できると思いますが,eclipseにはどうゆうわけか伝統的にこの考えが無いので,はじめは戸惑うかと思います。でも,これを知ってしまうとスコープが無い世界には戻れないと思いますヨ。:-)
あと,ライブラリはMaven Repositoryから直接ダウンロードできます。
Artifactsの指定
ちょっと脱線が長引いたのでセクション分けて本題に戻ります。IDEA9あたりからプロジェクトごとに成果物を定義できるArtifactsという機能がついきました。設定箇所は,File->Project Structure->Artifacts。
何ができるって「成果物を定義できる」んですが「成果物ってなによ?」と言うと,要するにJarファイルとかWARファイルとかEARファイルとかってアレです。
使い方は,昔書いたこのあたりが参考になると思います。
→ IntelliJ CE用Winstoneプラグイン公開しました
これの良いところは,自分のニーズに応じていくつもの成果物を定義できることです。これで,zipファイルも作れれば,実行モジュールだけではなく,リリースモジュールも作れそうなので,ちょっと残念ではあります(だったら自分でプラグイン作ったら?という話でもありますが。:-P
ps.
チーム開発する場合など,ライブラリや成果物の生成はIDEではなくAntやMavenといったビルドツールに任せるのが望ましいのです。ただ,個人の実験や趣味で作るちょっとしたプロジェクトなどは,IDEで完結できることが多いととても楽なのです。
地味に便利な Databaseプラグインについてです。IDEからDBを操作する機能ですが、NetBeansにも似たような機能があるし、今やさほど珍しい機能ではないですね。
そんな中でIntelliJっぽいなぁという機能について紹介します。
DDL 文からDBの定義を再現
この手の機能はDBに接続すると相場が決まっているのですが、IntelliJの場合、DDLが定義されたファイルだけでも、この機能を利用できます。
使い方は、Databaseウィンドウを開き「+」ボタンを押して "DDL Data Source"を選択。以下のようなダイアログが表示されるので,"DDL Files"の「+」ボタンを押して,任意のDDLファイルを指定します。
DB が別のネットワークにあるなどの理由で参照できないときでも、構造を可視化できて意外と助かる事が多いです。
スキーマの比較
DB専用ツールだと、そんなの出来のがあったと思いますが、実はIntelliJでも出来ました。
Databaseウィンドウで比較したいスキーマを2つ選んで、ツールバーの「Compare」を押す。
オンラインとDDLの比較なんてのもできるので,まあまあ便利です。普通のDiffと異なるのは,DDLの記述順に囚われずテーブルの比較をしてくれるので,DDLファイル同士のdiffを取るよりは,親切な結果が得られます。
Language Injection でプログラム中でもコード補完
Data Sourceが設定されている状態で,JDBC API(StatementやPrepareStatementクラスなど)にSQL文をタイプすると(うまくすると)コード補完が効きます。「うまくいくと」というのは,何か知らないけど上手く行かない事もままあるためです。
それと,JDBCではなく別のAPI(オレオレAPIだったりするかもしれません)で,SQL文の補完を有効にしたい場合は,Intension(ALT+Enter)メニューの"Language Injections Settings"から追加で設定することができます。
すると、こうなります。結構うれしい。:-)
特定のAPIだけではなく、String型のローカル変数に対してもLanguage Injectionをかけることが出来るのですが、その場合、次のようにIntelliJ固有のアノテーションを付けなければならないのが難しいところです。:-(
アノテーション付けなくても何とかする方法もあったと思ったのですが、ちょっとその設定を特定できてません...。が、IDEA12だとアノテーションやコメントアノテーションを使わなくてもLanguage Injectionができるようです。
(追記)しおしおさんが追加調査してくれました。:-)
→ しおしおの雑記帳
JPAについて
一応、JPAエンティティを作る機能を持っていますが、あまり洗練されてるように思えないし、正直使いづらかったです。生成されるエンティティもアノテーションごてごてで見づらかった記憶が...。このへんについてはNetBeansのほうが扱いやすいと思います。
一応、画面の紹介だけしておきます。
(おまけ)DBの起動
NetBeansの組み込みJavaDBがうらやましくて、Derbyを起動・停止するだけのプラグインを作ったこともありますが、よーく考えてみると外部ツールに登録すれば済む話だったのはナイショです。:-)
ps.
本家ブログでIDEA12のDatabaseプラグインの説明が出ましたね。
→ Manage Your Database Schema in IntelliJ IDEA 12 | JetBrains IntelliJ IDEA Blog
はじめに Java Advent Calendar 2012の17日目です。 エントリ時は、昨年度まで担当していたJavaの仕事でenumのいろいろな活用を知ったので、enumについて整理を兼ねて書こうと思っていました。しかし、Javaのenumをググってみるとすでに数多くのenumの紹介記事があり、また、名著Effective Java 第2版 (The Java Series)で触れられていた「シングルトンをenumで」もちらほら紹介しているブログがあり、いまさら感がありました。 そこで、方針を ...
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
生成したSencha TouchプロジェクトをNetBeansのプロジェクトとして取り込みます。
NetBeans7.3から、HTML用のプロジェクトが用意されているので、これを使います。新規プロジェクトで「HTML5 Application with Existing Sources」を選択して「次へ」ボタンを押します。正式リリースされて日本語訳されると「既存のソースを利用するHTML5アプリケーション」になるんじゃないかと思います。
そしたら、「Site Root」に先ほど作成したSencha Touchプロジェクトのパスを指定します。「Project Name」は適当なものをつけてください。
「Project Directory」は「Site Root」と同じものが埋め込まれます。ここで指定したパスにnbprojectというフォルダが作成されるのですが、ここにフォルダが生成されるのがイヤなときは、別のフォルダを選びます。nbprojectフォルダは、Sencha Cmdでのパッケージングのときには除外されるので、あまり気にしなくてもいいと思います。
Sencha Touchアプリケーションの実行
Sencha Cmdで生成したSencha Touchアプリケーションの実行には、Webサーバーが必要になります。
NetBeans7.3では、HTMLプロジェクトを実行すると内蔵のWebサーバーが起動するので、別にWebサーバーを用意する必要がなくて楽です。・・・と思ったら。
なんか、「touch/event/publisher/Dom.js」などのファイルがないといってエラーになって、ピコピコ画面がずっと表示されちゃいました >_<
もちろん、単体でDom.jsファイルを指定するとちゃんと表示されるのですけど。
ということで、NetBeans外部のWebサーバーを使うことにします。これはnginxなどを準備しておいてください。
そしたら、NetBeansからプロジェクトのプロパティを開いて、「Run」カテゴリの「Web Server」に「External」を指定して、「Project URL」にプロジェクトを開くことができるURLを指定します。
また、このとき「Browser」として「Embedded WebKit Browser」を選択すると、JavaFXのブラウザを使って表示されます。
これは、WebKitをJavaでラップしたブラウザで、結構ちゃんとSencha Touchも動きます。ただ、ちょっとタブのアイコン表示がおかしいですけど。
このブラウザのいいところは、画面サイズを指定できることです。スマートフォンっぽいアイコンを指定すると、スマートフォンっぽい縦横比で表示されます。
ChromeにNetBeans用プラグインを導入することでも同様のことができるので、安定性などを求める場合はそっちを使うほうがいいと思います。
宣伝
Sencha Touchの本を書いてます。基本的な使い方について全般的に書きました。
![]()
Sencha Touchではじめるモバイルアプリ開発―無料で使える「HTML5」&「JavaScript」開発フレームワーク (I・O BOOKS)
- 作者: きしだなおき
- 出版社/メーカー: 工学社
- 発売日: 2012/11
- メディア: 単行本
- 購入: 1人 クリック: 24回
- この商品を含むブログ (7件) を見る
ただ、刊行直前にSencha Touchがバージョンアップして、対応できてない点が多いので、こちらも参考にしてください。
「Sencha Touchの2.1バージョンアップでの書籍の記述からの変更点」
設定編の後編です。
Keymap
ショートカットキーの設定を行います。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"を見ると,プラグインが提供しているコマンドを見つけることができます。
それはそうと,WindowsでもMacでもIntelliJを使う場合,キーマップをどうしようか非常に悩みます。わたしは面倒なのでMacでもWindowsのキーマップを使っているので,コピー&ペーストは Ctrl+C, Ctrl+V です。
Live Templates
スニペットというかキーワード展開を行うLive Templatesを設定します。プリセットされているテンプレートも非常に多いのですが,この手の機能は他のIDEにも実装されているので,特に取り上げるほどの機能ではありません。むしろ,キーワード展開がコード補完とは別のキーになっていたり*1,キーワード展開例がプレビューできないなど,EclipseやNetBeansのソレと比べて劣っている気もします。
→ 31日間ReSharper一周 ... それIDEAでもできるよ(その7)
Menu and Toolbars
メニューバーやツールバー,ナビバー,それにProjectウィンドウやエディタなどのコンテキストメニューの項目を設定します。
Notifications
コンパイル結果,テスト結果など,IntelliJからのレスポンスの通知方法を設定します。
Passwords
主にバージョン管理システムとの連係で入力するパスワードをどこまで記憶していくかを設定します。
Path Variables
いわゆる環境変数を設定します。が,あまり使った事はありません。Mavenプロジェクトを利用したときに「M2_HOMEはどこ?」と聞かれたくらいしか記憶がありません。
Plugins
プラグインマネージャです。"Browse repositories"で公式プラグインサイトに登録してあるプラグインの一覧から任意のプラグインをインストールできます。一覧で"Bundle"とあるのは,IntelliJ付属のプラグインで削除することはできません(無効化まで)。
プラグインは非常にたくさんありますが,なんだかんだでIntelliJ標準のままか,JetBrains公式プラグインくらいしか使わなくなります。:-)
それと,プラグインのインストールやアンインストール,有効・無効化にはIntelliJの再起動が必要になります。
Quick Lists
お好みのコマンドを集約した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:隠しオプションで変更可能ですが...。
File->SettingsのProject Settings編です。Project Structureとの明確な違いを言い表せませんが、長い歴史の名残りだと思って下さい。
全部みたわけじゃないんですが、どうもこの「Project Settings」はIntelliJにしか無いみたいです。WebStormやRubyMineは「Settings(Preferences)」しかないです。たぶん、PhpStormやPyCharm, AppCodeも同じなんじゃないかな。
Code Style
コードフォーマッターで整形するルールを設定します。言語別に設定項目があり,正直うんざりします。設定を保存する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))も、ここでおこないます。
Compiler
コンパイラの設定をします。Project Structure のSDKと分かれてるのが、正直不満です。
ここでは、javacに渡すオプション(Compiler->Java Compiler)とか、コンパイル時にビルドディレクトリにコピーするリリースファイルのパターン(Resource patterns)などを設定します。
最近流行りのAnnotation Processorの設定(Compiler->Annotation Processors)もここで行います。
Copyright
IntelliJのおもしろプラグイン、Copyrightの設定を行います。詳しくは他のエントリーで書きます。
Coverage
カバレッジの結果の収集方法に関する設定です。サーバサイドJavaでもカバレッジ取れるようになったので、もうClover要らないw
Deployment
IntelliJのおもしろプラグイン、Remote Hostの設定を行います。こちらも詳しくは他のエントリーで書きます。
File Colors
ファイルのパターンを指定して、その表示色を設定します。設定した色はProject ウィンドウやエディタのタブに反映されます。巨大なプロジェクトでファイルを視覚的に区分けしたい時など、便利と言えば便利な機能です。
File Encodings
その名の通り、ファイルのエンコードを設定します。ディレクトリやファイル単位に細かく指定できるのでかなり便利です(残念なことに拡張子別には指定できませんが...。
ひとつ落とし穴がありまして,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
Hectorおじさんの指摘項目を設定します。要するにFindBugsとCheckstyleのIntelliJ版です。気が遠くなるほど設定項目がありますが,ヒマなときに全部眺めてみると意外な発見があると思います。結構,いろいろやってます。
ちょっと面白いInsectorがありまして、General->Structural Search Inspectionでは、IntelliJのStructural SearchやReplace(Edit->Find->Search/Replace Structurally)の検索・置換パターンを登録してそれをリアルタイムに検査することができます。Replaceの場合、置換結果を修正候補に出せます。
以前、@_siosio_さんが紹介していたStructural Searchを登録しておくなんてことができます。
→ IntelliJのStructural Searchでfail文のない異常系テストコードを抽出 - しおしおの雑記帳
JavaScript
JavaScriptの言語レベルの指定(JavaScript language version)や使用するライブラリ(JavaSciprt->Libraries),コード検査(JavaSciprt->Code Quality Tools)の設定を行います。
Language Injections
IntelliJのヘンタイ機能のLanguage Injectionsの設定を行います。「Language Injectionsって何?」という方は,こちらを参照してください。
おもしろい機能ではあるのですが、実際のところJDBCのStatementなど該当するAPIに直接文字列をハードコードすることは希で、普通はStringなりStringBuilder/StringBufferなどの変数や定数に、お目当ての文字列代入しとく事が多いので、本当に役に立つかはわかりません。:-P
Maven
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
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
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
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自体もう何年も扱ったことが無いので,ここをいじる用事もなく,なにができるのかもよくわかってません。:-)
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アプリケーション開発 ...
(このエントリーは11月23日に書きました)そろそろIDEA12のリリースが近づいてきたので記念にIDEA11との違いを探してみます。比較に使ったのはEAP123.4なので正式リリース版と変わってる可能性はあります。このエントリーを公開するときには正式リリースしてるんだろうか?
→ 正式版がリリースされたので、このエントリも公開しました。
トップページのデザインが変わった
Public Privewの時にトップページからメニューバーとプラグインの一覧がなくなったのでがっかりしてましたが、EAP123.4でまた、ちょっとデザインが変わりました。
プラグインの一覧は相変わらずありませんが、Settingsを開けるので、そこからプラグインマネージャにたどり着けます。一手間増えて面倒ですけど...。
Quick Start欄が、一部スライドメニューになっていて、何か変えたがってる雰囲気がうかがえます。
アイコンがのっぺりした
パステル調とでもいうのか,ちょっと不思議なアイコンになりました。見た目は世の中の流行り廃りもあるので,一概にどうとは言えませんが,伝統的にJetBrainsのUIデザイン(主に見た目)の評判はよくありません(暗に悪いって言ってるw
UIデザインがガマンできる範疇かは利用者の主観によるので,受け付けない人は縁が無かったと思うほかありませんね。
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」という項目が増えており、これを有効にしないとダメなようです。
この項目を有効にすると,編集しているファイルを保存するタイミングで,Problemsウィンドウにエラーが表示されるようになりました。ちょっと使ってみた感じでは、そんな便利には思えませんでした。
コード補完(Code->Completion)からクラス名補完(Class Name)が無くなった
どうやら,ベーシック(Basic)に統合されたようです。まあ,普段から使う補完種別ではなかったので,良い事です。
View->Show Byte Codeでバイトコードが見れる
ほほう。これはこれは。:-)
プロジェクト作成方法がちょっと変わった
New Projectウィザードの最初の画面がこんな風に変わってました。
Public Previewで無くなってしまった「Import project from external model」「Create project from existing sources」はEAP123.4で復活してましたね。
Settingsまわりの違い
Project Structureはあまり違いを見つけられませんでしたので割愛します。
Code Style->HTMLにタブサイズの設定がついた
よかった。よかった。:-)
Code Style->JavaにArrange項目がついた
Rearrangerプラグインが統合されたようです。くわしくはこちら。
→ Arrange Your Code Automatically with IntelliJ IDEA 12 | JetBrains IntelliJ IDEA Blog
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からバイトコードビューアがつくと言ってましたので,それにちなんだ設定なのだと思います。
プラグイン
見たこと無いプラグインがいくつか増えてますね。
- 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"だった。
多くの人は,なにかしらeclipseにガッカリしてIntelliJに手を出すと思いますが,IntelliJとeclipseは操作体系からずいぶん違いがあります。eclipseに慣れてからIntelliJに手を出すと,逆にガッカリする事請け合いだと思うので,主だった違いを列挙しとこうと思います。
インクリメンタルビルド
インクリメンタルビルドはeclipseの目玉機能のひとつだと思いますが,残念ながらIntelliJにはありません(IDEA12にそれっぽい設定項目*1がありましたが,はたしてあれはインクリメンタルビルドなんだろうか...*2)。
これに連動した話で,eclipseのProblemsビューのように現在のエラー状況を一覧表示するウィンドウもありません*3。
じゃあ,どうするかというとビルドはビルドボタン(もしくは相当のショートカットキー)を押さない限り実行されません(クリーンビルドなどは Build メニューから行います)。
ビルドを実行すると,その結果が Messagesウィンドウに表示されますので,結果としてコンパイルエラーになったファイルの一覧がそこに表示されます。
この操作系になれちゃっているので,実のところインクリメンタルビルドの便利さを分かってませんw IDEA12でコンパイラ周りが改善されるようなので,次のバージョンではちょっとはマシになってるかも知れませんね。
→ Brand New Compiler Mode in IntelliJ IDEA 12 Leda | JetBrains IntelliJ IDEA Blog
ワークスペースやプロジェクトの考え方
そもそもワークスペースという考え方が無いです。強いて言えば,IntelliJのプロジェクトがeclipseのワークスペースに相当します。eclipseのプロジェクトが,IntelliJのモジュールに相当します。
その辺は,このドキュメントが詳しいです。ありがたいことに日本語に訳してくれた方がいます。
→ Eclipseユーザの為のIntelliJ IDEA Q&A - 砂漠の音楽
設定まわり
だいたい,こんな対比になります。
| eclipse | IntelliJ | |
|---|---|---|
| IDEの設定 | Window->Preferences | File->Settings |
| プロジェクトの設定 | (Projectを選んで) Properties | File->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)については,隠しオプションを有効にすることで通常補完でも使えるようになります。
早いか遅いか
よくTwitterのタイムラインとかで「eclipseは遅い」と聞きますが,IntelliJも十分遅いと思います。特に立ち上げ時のインデックス作成なんてのは顕著ですね(それでもNetBeansのよりは早いかも)。インデックス作り終わってからは,それなりにサクサク動きますが,この辺はモロに主観の問題ですし,なんだかんだでマシンスペックが支配的なので,どっちがどうとは言えないかと思います。
UIがカッコいいか悪いか
SWTでプラットフォームネイティブっぽいUIのeclipseと,いかにもJavaでございなIntelliJ(NetBeansも似たり寄ったり)と比べてどっちがカッコ良いかってのも難しい問題だなーと思います。これもまた好みの問題で,時代背景もある程度影響しますので,どっちが気に入るかは,その人次第ってことで。:-)
JavaFX Advent Calendar 12月3日担当です。 11/30開催の「第8回JavaFX勉強会」(日本JavaFXユーザーグループ主催)で、「ダブルクリックで起動する JavaFX アプリケーション JAR の仕組み 」を発表をしてきました。 この発表では、作成するプログラムがJava SE/JavaFX以外の他のJARに依存しない単純な形式を対象にしていました。 発表の質疑応答にて、依存するJARがあり複数のJARで構成されるアプリケーションの場合について質問を受けました。事前に調査 ...
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 ...
id:torutk:20120901で、JavaFXのコマンドjavafxpackagerを使って実行可能JAR形式ファイルを作成する方法を紹介しました。今日は、そのjavafxpackagerで、OS固有のインストーラ形式としてWindows OS用のMSI形式インストーラを作成する方法を追究してみます。 情報収集 Oracle Blogs 日本語のまとめ: [JavaFX] Native packaging for JavaFX Oracle blogの翻訳で、JavaFX ...
前回の、バグはfixされてナイトリービルドではfixしてるらしいです。 よかったー。 ということで、次は、グレップ検索して、検索結果をタブを閉じずに2回目のグレップ検索をすると、エディット機能が無効になってしまうバグを報告してみました。 http://netbeans.org/bugzilla/enter_bug.cgi この辺から、PHPの機能のバグっぽいのでphpを選択して、 http://netbeans.org/bugzilla/enter_bug.cgi?product=php Editor ...
なるべく24時間サイクルで行動する
おなかがすいたらごはんを食べる
めんどくさくてもごはんを食べる
おやつは300円まで
出汁は煮立てない
麦100%ビール
おいしくないビールは世の中の敵です
朝が早い人を徹夜でビールにつきあわせない
あれは牛丼
チームいいなー
最後は寝ます
メモ。
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がないというエラー
しかたないから、直接とってくる。
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ではできる
結城さんのJava入門書、「Java言語プログラミングレッスン」がJava7に対応した第3版が出るということで、思い出した話。
まずは出版おめでとうございます、おつかれさまでした。ただ、評価はちょっと厳しめです。
![]()
- 作者: 結城浩
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2012/11/16
- メディア: 大型本
- 購入: 1人 クリック: 7回
- この商品を含むブログ (7件) を見る
今回の「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対応の打診してみるかな。
なんかメールが来ててチェックしなきゃと思って見てるんですけど 20個くらい同じバグがあるってなってfixしてるーってなってます。 http://netbeans.org/bugzilla/show_bug.cgi?id=218624 よくわかってないですけど、Jan Lahodaさん達に感謝っと。
NetBeans7.3のベータが出たということで、早速入れてみました。 結構かっこよくなってて嬉しいし機能もいろいろ増えてていい感じです。 画面下にパンくずリストが表示されるようになったのですがPHPって書いてる箇所をクリックしたらエラーが出ました。 エラー報告しないとなぁ、、、っと思っていたので報告してみました。 報告するには、まず、報告ってボタンを押して、 問題が発生したときどのような操作を行っていたかを記述してください。 と書いてあるので、起こった内容を書きます。 日本語で書いてあるので、日本 ...
とうとう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」という項目ができてます。
JavaコードとかでJavaDocを開こうとすると、NetBeans内でブラウザが開きます!やった!ただ、最初はJavaFXの場所を指定しろと言ってくるので、JDK内のjreフォルダを選びます。この手順はなくせるはずなので、正式リリースまでにはなくなってくれることを望みます。
JavaFXの場所を指定すると、晴れてNetBeans内でJavaDocが表示できるようになりました!ぱちぱちぱち。いやー長かった。
このJavaFXのWebKitベースのブラウザ、なかなかちゃんと動いてて、結構めんどうなことをやってそうなSencha Touchもちゃんと動きました。
こっちはChrome。JavaFXのほうは、アイコンの透過がうまく処理できてない感じだけど。
んで、まあ、これだけなら「それ10年前から見れたわ〜Eclipseなら10年前から見れたわ〜」という話なんですけど、面白いのはここからで。
なんか新規プロジェクトでHTML5プロジェクトなどというものができてたりします。Twitter Bootstrupとかテンプレートを選べたり、jQueryなどJavaScriptライブラリを選べたりします。
CSSや画像の指定が絶対パスだったりして、実行するときに、ルートディレクトリである必要がある場合に、サーバー経由で表示したいことも多いですけど、その場合に組込みサーバーを使うこともできたりします。たぶん、JDK付属のHttpServerを使ってるんだと思います。
http://d.hatena.ne.jp/nowokay/20101124#1290505617
「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を変更して保存すると、変更なしに反映されるのがうれしいです。
面白いのが「select mode」なるものです。
ブラウザ内のエレメントを選べます。左側のツリーと連動してます。あと、右側ではスタイルとか属性が表示されます。
まだまだ使いやすいものではないし、動的生成されたHTMLソースを見る機能がなかったりして、これで開発が楽になるという段階ではないですけど、もう少しIDE連携がこなれて、あとはSeleniumと連携できるようになったりしたら、これはなかなか面白いことになりそうです。
JsTestDriver連携も標準で用意されているようだし、Web開発ツールとしてNetBeansが強化されていくことを実感できるバージョンアップになりそう。いままでも、CSSエディタなどWeb系ファイルの強さというのはあったのですけど、ブラウザという重要なコンポーネントが手に入ったことで、この方向への進化が加速しそうです。
最近、NetBeansのベータが出てもわざわざ使おうとは思わなくて、正式リリースが出てからいろいろ試すという感じになっていたのですけど、久しぶりにベータの時点から常用したいバージョンになりました。
PHP による開発にて、パッケージ(依存性)管理ツールとして今後標準になるだろうと言われている Composer を、 NetBeans の次期リリースにてサポートする予定となっています
なお、以降の記述は現在(2012年10月01日時点)にリリースされている開発版よるものですので、実際のリリース版と異なる可能性もありますので、ご了承下さい
また、 Composer そのものの使用法については今回詳しくは説明しませんので、別途 Composer のドキュメント等を参照ください
今回使用した環境は以下のとおりです
* Mac OS X version 10.8.2
まず、適当な場所にて下記コマンドを実行し、 Composer をダウンロードします
次に NetBeans 開発版を起動し、「オプション」ウィンドウを開きます
以上で、 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」を選択します
"require" ブロックに下記のように Monolog パッケージに関する記述を追加します
パッケージを指定する際はバージョン番号の指定をあわせて記述します
(下記例では 1.0.1 、1.0.2 … 1.0.20 などのバージョンが対象となります)
{
/* 中略 */
"require": {
"monolog/monolog": "1.0.*"
}
}"composer.json" ファイルを保存し、変更した内容を反映します
プロジェクトを右クリックし、表示されたコンテキストメニューより、「Composer > Update」を選択します
NetBeans 次期開発版ではこれ以外にも多くの新機能が追加される予定となっています
機会があれば、紹介できたらと思います
気になるリリース時期については、 JavaOne 2012 の1日目にて、2013年前半予定との発表がありました
(また、 Java SE の新バージョンリリースに合わせて、 NetBeans のメジャーバージョンアップも行なっていく計画のようです)
リリースまでにはもう少し時間がありますが、新機能に興味のある方は開発版を是非触って頂き、お気づきの点等ありましたら、 ML 等でお知らせ頂ければと思います
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. ...
スマーティプラグインを使うと、色がつきます。 ということで、NetBeansは設定が楽なので試してみてください。 そういえば、検索をしたあとに、編集できなくなるバグがあって、同僚の人も気にしてたので完全してもらえたらなぁと思います。 思いますで終わらず、メーリングリストにバグ報告しろよってかんじなんですけど、、、。(笑
ちゃんとやればできますが、WindowsではTortoizeSVNを使ったほうが良いのでとくに設定しなくても大丈夫です。
例えば、マイページ C:¥xampp¥htdocs¥mypage.php を開いて、エディタのウィンドウの行番号の表示されている箇所を左クリックします。 デバッグ>ファイルをデバッグを選択してデバッグを開始できます。 デバッグはデバッグ開始ボタンが常に画面上に表示されているのでそちらを押すとよいでしょう。 次に、FireFoxで目的のページを開くとうまくいっていればブレイクポイントで止まります。 デバッグ>ステップ・オーバー デバッグ>ステップ・イン デバッグ>ステップ・アウト デバッグ>カーソルま ...
現状のままだと、検索等に時間がかかるので、不要なフォルダは除外します。 右側のプロジェクトタブ内のプロジェクトを右クリックして、プロパティを表示します。 カテゴリ内の無視されたフォルダを選択します。 フォルダの追加ボタンを押して、以下のフォルダを追加します。 OKを押して完了します。
1. ファイル>新規プロジェクト>既存のソースを使用するPHPアプリケーション を選択し「次」を押します。 2. ソースフォルダに C:¥***プロジェクト名に***とします。 3. NetBeansのメタデータを別のディレクトリに配置を選択し「次」を押します。 4. プロジェクトURLに http://localhost/開始ファイルindex.phpで「終了」を押します。場合によってURLは変えてください。
netbeans-7.2-ml-php-windows.exe を実行します。 jdkなどが入っていれば特に問題なくインストールできるはずです。
http://ja.netbeans.org/ からダウンロードページに移動します。 http://netbeans.org/downloads/index.html?pagelang=ja PHP版をダウンロードします。






















































































