ColdFusionは実は優れた言語ではないかという考察 – 2

ColdFusion-開発効率を求められる今だから知りたい高性能Webアプリケーションサーバーという連載を始めました。ここに書いてあることよりまともな批評や紹介をしているつもりなので、是非参考にしてください。

前回に引き続き、PerlとColdFusionを比べてみようかな、と言う企画。今回は言語面や開発者層という視点から。世の中にあまり知られていないColdFusionの紹介もかねて。

まず、本題に入る前に前回の反省ですが、前回は「はてなブックマークと同じぐらいのPVでサーバー数は5分の1だから、ColdFusionはPerlより5倍性能がいい」みたいなことを書いていたのですが、はてなブックマークや各所で指摘されたとおり、サーバーにかかる負荷は『何をどう実装するか』で変わってくるのであり、単純にPVが同じだからと言うことでは比べられないと言うことです。これはそういう視点で比べると言うことが抜けていたのであり、大変失礼しました。また、指摘してくださったみなさんありがとうございます。

さて、今回の記事ですが、長いので結論から先に言うと、言いたいことは2点で、1点目は「ColdFusionはJavaというエンタープライズで実績のある言語の上で動くライトウェイトランゲージである。なのでRapidな開発が可能、それでいてできあがるアプリケーションは堅固」ということ。2点目は、「Perl初心者からPerl熟練者まで独学でたどり着くのは困難であるけれど、ColdFusionの場合それが可能であること」。順を追って書いていきます。

まず、言語面ですが「3年で陳腐化するWebサイトの構築には軽量言語のほうが向いている」という記事を引用します。

高橋氏は「Webサイトは構築してから3年経つと陳腐化する」と指摘する。ただ,壊れたわけでもないWebサイトを3年でリニューアルするには,事前に顧客と話をつけておく必要がある。3年で捨てる予定のアプリケーションの予算は少ない—これが,WebにはPHPやRubyといったLLが向いている理由である。Javaのような重量級の言語だと,10年持ちそうな設計や構造のアプリケーションを作ることになり,費用もそれなりに高額になってしまう。

これはおそらく正しいでしょう。また、最近のWebアプリケーションは「常にβ版」、言い換えるなら「常に進化していくこと」が求められていると思います。そういった状況で、ヘビーなJavaなどを使うのは得策ではないでしょう。

しかし、Javaには良さもあります。それはエンタープライズ環境での運用実績があること。つまり、大規模なサイトやミッションクリティカルな仕事でいじめ抜かれて鍛えられた堅固な言語であると言うことです。これはRubyやPHPにはない特徴でしょう(PerlはAmazonのフロントエンドなどで使われていると言うこともあり、いじめられているとは言えますが、エンタープライズな環境で運用しようと思ったら、CGIのそれとは違う特殊な大規模アプリで運用するための知識を付ける必要があるでしょう)。

Javaの堅固さを得たい、けれども予算はない。そんな矛盾する要求を満たしてくれるのがColdFusionだと思います。

ColdFusionはJava上で(正確にはJRun上で)動いています。言い換えるなら「Javaというエンタープライズ系で実績のある言語の上で動く、ライトウェイトな言語である」と言うことになります。アジャイルな開発を行うことができて、それでいてできあがったアプリケーションは堅固、それがColdFusionです。

また、言語の習得容易性という側面からも議論してみようと思います。

Perlでいうところのmiyagawaさんなどのスーパーハッカーをレベル10としたときに、レベル8に到達するのにかかるコストはどれぐらいでしょうか。

はてななど、レベル8や9や10の技術者が集まっているところに入社して学ぶなら、先人に教わりながらその知識を吸収して、素早くレベル8に到達できると思います。しかし、現実に周り(私の身の回りだと零細Web製作会社などが多いのですが)を見渡してみると、はてなみたいに優秀な技術者が集まっているところと言うのは少なく、むしろ自分が1から切り開いていかないと行けないという状況の方が多いと思います。そういった状況でPerlでレベル8まで持って行くための苦労というかコストはかなり馬鹿にならないと思います(様々な書籍を買うための金銭的コスト、また参考になるWebなどにたどり着くまでの時間的コストなど)。

なぜPerl初心者がPerlでWebアプリケーションを作るのにコストがかかるのか、Perl初心者なりに考えてみたのですが、だいたい次の3点かなと思いました。

  • 書き方が何通りもある。どれがベストの書き方なのか、熟練してからでないと判断できない。
  • 文法が記号的で、記号の意味を覚えて、すらすら出てくるまでが大変。「$@って何だっけ?」みたいなことがよくある
  • 別にWebアプリケーションを作るためだけに設計されたわけではない。PerlはLinuxでの日々のタスクもこなすし、iTunesのサーバーになっちゃったりもする。PerlでのWebアプリケーションの構築はPerlに備わってる一部の機能を使っているにすぎない(雑な言い方ですみません。もうちょっといい表現の仕方があると思うのですが・・・)。何というか、汎用的すぎて、覚えることが沢山。

これとは逆に、ColdFusionはWebアプリケーションの構築のためだけに設計されています。つまり、それだけ覚えるべきことが少なく、また、Webアプリケーションの構築に集中しやすいように言語的に様々な配慮がなされています(ただ、これは弱点でもあって、ColdFusionは基本的にはWebアプリケーションの構築にしか使えないので、いわゆる「潰しがきかない」と言うことでもあるのですが)。即ち、学習コストを低く抑えることができると言うことです。

実際、弊社でColdFusionを使うことに決めたのも、学習コストの低さからでした。CatalystやRuby on Railsなどに一時期浮気してみたこともあったのですが、PerlハッカーやRubyハッカーが残念ながら居なかったので、自学でレベル8に到達するまでに1年ぐらいかかってしまいそうで、諦めたのです。

逆にPerlのいいところは、リソースが沢山あるのと、CPANなどのライブラリー群が充実してるところ。これは正直うらやましい。ColdFusionは最近ようやくMVCフレームワークであるModel-Glue、Aspect-Oriented-Programming (AOP)を実現するColdSpring、O/RマッパーであるReactorがでてきて、これらを組み合わせてキレイなコードが書けるようになったばかりです。

長くなったので締めますが、PerlやRubyやPHPで苦労しているみなさん、ColdFusionという選択肢もありますよ。また、ColdFusionはWebアプリケーションを構築する上で考慮に値するだけの実力を持った「Webアプリケーション構築に特化された言語」です。

ColdFusionマンセー房が書いてるので、どうしてもColdFusion寄りの提灯記事みたいになってしまいましたが、 日本でのColdFusionの地位はあまりにも低すぎるので、これぐらい書いてもいいよね?

次回に続く(かも)。

5 thoughts on “ColdFusionは実は優れた言語ではないかという考察 – 2”

  1. はじめまして。utaと申します。
    ColdFusionを使ってから、もう他の言語に戻れない者です。それほどサクサク作れるってことです。惚れてます。

    ちょっと宣伝になりますが、アマゾンの検索サイトを作ってみました。
    http://www.utalab.com/amazon/
    です。
    今までオブジェクト指向というか、コンポーネントの使用は避けていたのですが、使ってみるとおもしろい!
    コンポーネントを使っていなかったらif文の嵐だったことでしょう。今はmach-IIのフレームワークを勉強中です。日本語訳のサイトがありましたので重宝しています。

    それから上記サイトでは本などの売れ筋・新着をメール配信しています。定期的に配信するのであればcfscheduleを使うべきなのでしょうが、だいたいという感じでの配信として、Javascriptの非同期通信を使ってみました。ちょっと処理が重いものでも、画面表示の部分は問題ないので、だいたい定期的?なバッチ処理は、使えそうですね。ColdFusionにかかわらずバッチ処理的なものは有効かも。

  2. はじめまして
    自分もしがないColdFusionプログラマーなのですが
    (最近JSPを勉強してるのですがあまりにも、ColdFusionに
    比べると難しくて。。。。軽く死んでおります)
    BlueDragonていう
    http://www.newatlanta.com/products/bluedragon/
    CFMX 6.1と互換性が有るサーバが有ります
    ちなみに無償で商用利用も可能なバージョンが有ります
    ColdFusionの勉強ならこちらを使うのも良いですよね

  3. はじめまして、もともと広告のプランナーだったのですが、社内でイントラネットを作ることになり、CFを活用して、作り上げたにわかプログラマーです。

     すごいですね、みなさん。
     とても参考になるし、刺激になりました。

     周りをみわたしてもCFの人が好くないので、
     孤独でしたが、やるきがわきました。

     まだCFCは未経験なのですが、そんなにすばらしいのか。。。 
     ためしてみようかな。

Leave a Reply

Your email address will not be published. Required fields are marked *