今回は傲慢SE日記さんの「JavaからRubyへ・・・」という記事に影響を受けて私の意見を書いてみたいと思います。あ、私はRuby未経験なので話半分で読んでください(^_^;
Ruby on Rails が出てきたころから色々な雑誌やブログで「Ruby(RoR)は生産性が高い」というような記事や、それから派生したと思われる「Lightweight Language は生産性が高い」という記事をよく見かけるようになりました。
けれど本当に生産性が高いんでしょうか? 確かにRubyは優れた言語かもしれませんし、スキルの高いプログラマが書けば生産性も高くなくかもしれません。けれど、自動生成の恩恵は基本的な画面構成に限られますし、クロージャを使ってコードが短く書けるからといって生産性がそんなに高くなるんでしょうか?例えば(こういう呼び方は好きではないですが)100人月の仕事を、数十人の派遣プログラマでやらなくてはならないときに、果たしてRoRのほうが生産性が高いのか疑問です。
と、ここまで読んでJava贔屓だと思われるかもしれませんが、確かにJavaよりLLの方が良い部分もあることは分かっているつもりです。プロトタイプを作りやすいとか、レンタルサーバではJavaよりPHPやPerlのほうがサポートしている会社が多いなどです。今後はRubyをサポートする会社も増えることでしょう。
ということで、私はRubyはPerlやPHPの代替にはなり得ますが、JavaやC#の代替にはなり得ないのではないかと考えています。
ただ、本当に重要なのは顧客や自身の要望をいかに早く、いかに正確に実現するかということだと思います。そういう意味では言語の生産性だけでなく、その言語が使えるプログラマを必要な人数だけ集めることができるか、保守コストが言語によってどれだけ変わるか、必要なパフォーマンスが出せるか、動作環境やライセンスはどうなっているか等、他にも考えることがたくさんあるはずです。一つの技術や言語にとらわれず、状況を考えて使う言語を選びたいものです。
カテゴリ : 雑記 | コメント(7)
今、Javaのオールインワンフレームワークみたいなのを作っているんですが、思わぬところで問題にぶち当たりました。
ある理由でJSF1.2を使おうと思っているのですが、MyFaces1.2とFaceletsを組み合わせるとFaceletsで用意されているc:ifタグが効かなくなってしまう問題に遭遇しました。コードを追いかけたのですが、どうやらTomcatの方に行っているようで、なんだかわからなくなってしまいました。
Facelets用のカスタムタグを独自に作るか、このページにあるように rendered 属性で何とかするしかないのかも・・・。極力車輪の再発明はしない方向で考えているので、renderedで進めることにします。
同じ問題に遭遇している人へのメモでした。
(2007/11/27追記)
Faceletsを1.1.14にしたら動作するようになりました。
(2008/05/10追記)
h:viewのbeforePhaseListenerで呼び出されるメソッドの結果が、c:ifの判定文の中から見ることができないようです。
メソッドが呼び出されるより前に判定されているような…?
(2010/01/28追記)
この問題は解決したんですが書き忘れていました。どうやら、JSFのタグとJSTLのタグは評価されるタイミング違うようですね。
JSF2.0なら c:forEach の代わりに ui:repeat が使えます。
カテゴリ : Java | コメント(0)
バッドノウハウの危険性といっても、バッドノウハウが役に立つ/立たないとか、使うべき/使わないべきという話ではありませんので、あしからず。
何年か前のことですが、当時サラリーマンをしていた私の近くの席で働いていた新人が、スタイルシートで悩んでいるようでした。隣の社員が相談に乗っていたようなのですが、いつまでも解決できていないようなので思わずアドバイスしてしまいました。その時、そのアドバイスを聞いていた隣の社員に「それはバッドノウハウだな」というようなことを言われたんですが、ちょっと待て!と言いたくなりました。実際には説明が面倒なのでスルーしてしまいましたが(^_^;実際のところ、(私の考えでは)それはバッドノウハウではないのです。まぁ、私が教えた知識がバッドノウハウかどうかということは置いておいて、その隣の社員の態度が気になりました。バッドノウハウは知識や技術として邪道だと言いたそうだったんですが、他人からのアドバイスを詳しく考えることはせずに「バッドノウハウだ」と決め付けてしまうことが危険なように思うのです。
他人の知識や意見に接する機会があったときは、例え自分に必要ないと思ったときでも、一旦自分で噛み砕いて必要性や意味を理解したいものです。
・・・自戒の意味を込めて。
カテゴリ : 雑記 | コメント(0)
いつも読んでいるブログの「おさかなラボ」で、「禁断の快楽・変態キーバインドのお誘い」というのがありました。結構前に読んだ記事なんですが、最近キーバインドを考える機会があったんで思い出しました。
よくよく考えてみると、私はキーバインドを変えていません。いや、色々な人からキーバインドの変更を勧められるのですが、頑なにデフォルトにこだわっています。そういえば、マウスも色々なものが発売されているのに、家のマウスは普通のどこでもあるような2ボタン+ホイールのマウスです。
で、それはなぜか考えてみました。
結論としては、「私の環境におけるソフトウェア開発の生産性を最大にするため」かな、と思います。皆さんは、逆だろうと思われるかもしれません。確かに、キーバインドを変更したほうが(慣れるまでの苦労は別として)生産性が上がるはずです。マウスも5ボタンとかにしたほうが生産性が上がるのかもしれません。5ボタンマウスは試したことがないんで分からないですが・・・。
では、私がなぜキーバインドを変えないか。それは、キーボードを使う場所(というか作業する場所)が一箇所ではないからです。私はしがないフリーランスエンジニアなんで、お客様の環境で作業したり、出向先の会社で作業したり、もちろん家でも作業します。
そりゃ、家に篭って開発できるのなら好きなキーバインドに変えますよ。しかも東プレのキーボードに5ボタンマウスを使いますよ。って、ただの愚痴になってしまいましたが(^_^;
そういえば、新米プログラマの中には特殊な環境に憧れる人も少なくないように思います。 emacsやないとエディタじゃないみたいな。これって、自分なりにアレンジしまくった環境で開発できれば凄いみたいなことなんですかね?確かにスゴいプログラマにはemacsとかマクロ組みまくってキーバインドも変更しまくってバリバリ使っておられる方も多いと思いますが、かといってそれらを上手に使えるから凄いってもんでもないように思うんです。きっと、スゴいプログラマはどんな開発環境でもスゴいんだと思います。それをスタイルだけ真似るのは間違いだと思うのは私だけでしょうか?
カテゴリ : 雑記 | コメント(1)
カラーピッカーに続き、カレンダーをJavaScriptで作ってみました。といっても、こっちは必要に駆られて作っただけですが・・・。
本当は車輪の再発明はしたくなかったんですが、フリーで公開されているものはライセンスとか、使いが手とか、互換性とか色々問題があったもんで(^_^;
もしよろしければ使ってみてください。何かご希望やご意見をいただければ嬉しいです。
カテゴリ : JavaScript | コメント(0)