コンパイルするとJavaScriptに! Rubyライクに記述できる「CoffeeScript」とは?

CodeZine / 2012年2月8日 14時0分

 JavaScriptプログラマーの間で「CoffeeScript」を使う人が増えています。CoffeeScriptとは一体どんな言語なのか、そして実際の現場で使うにはどうしたらいいのか、この連載を通して解説していきます。Webブラウザ向けのフロントエンド開発にも、そしてサーバサイド開発にも使える内容となっています。

■CoffeeScriptが登場する前

 JavaScriptは広く普及している言語ですが、ソースコードは見苦しいものになりがちです。小さなプログラム程度なら構いませんが、大規模なプログラムを作るのはかなり骨が折れる作業です。冗長な記号や面倒な決まり文句などが積み重なると、読みづらくメンテナンスしづらいソースコードができてしまいます。

 JavaScriptを使ってある程度の規模の開発を経験したプログラマーの多くはそのような不満を感じ、もう一度JavaScriptで大きな開発をしたいとはあまり思わないでしょう。しかし、フロントエンド開発者に選択の余地はありませんでした。多くのブラウザで共通して動くスクリプト言語はJavaScriptしかなかったからです。

 GmailやGoogleマップなどをきっかけにAjaxが世間に認知されると、本格的なフロントエンド開発に使える言語としてJavaScriptが脚光を浴びました。さらにNode.jsの登場によってハイパフォーマンスなサーバサイドプログラムを手軽に作れる言語としても注目され、JavaScriptの活躍の場はますます広がっています。その一方、文法などが性に合わず使いたがらないプログラマーも少なからずいました。

■CoffeeScriptの登場と広まり

 DocumentCloudというオンラインツールの開発者であるJeremy Ashkenas氏は、JavaScriptでの大規模開発経験から新しい言語が必要だと考え、CoffeeScriptを作りました。Node.jsの普及によってJavaScriptを使うプログラマーが増えていた時期とも重なり、新しい物好きのプログラマーをはじめとしてCoffeeScriptは受け入れられていきました。

 CoffeeScriptが開発者に受け入れられやすい大きな理由は2つあると考えられます。1つは、JavaScriptの良い所は残したまま、できの悪い所がうまく補われ、より洗練された文法になっているという点。もう1つは、コンパイル結果がただのJavaScriptになるという点です。JavaScriptにコンパイルできるということは、幅広く需要のあるJavaScript開発のあらゆる部分をCoffeeScriptが代替できることになります。文法がRubyやPythonに似ており、またどのようなJavaScriptプログラムを作るのにもCoffeeScriptを代わりに使うことができるため、開発者は障壁をほとんど感じることなく導入できました。

 またRubyプログラマーからの人気が高く、Ruby on Rails 3.1ではアセットパイプライン(※注1)の仕組みの一部としてCoffeeScriptが標準でサポートされました。

 JavaScriptの文法を嫌っていたプログラマーの中にもCoffeeScriptは楽しいと感じる人がいます。そして大規模なプログラムを作ろうとする開発者を中心にCoffeeScriptは受け入れられつつあります。JavaScriptが好きな人はJavaScriptを使い、CoffeeScriptの方が好きな人はCoffeeScriptを使いながら、同じ目的を達成できるようになりました。

※注1 アセットパイプライン
 Ruby on Rails 3.1で導入された、JavaScriptやCSSのファイルをクライアントに送る前に自動的に結合・縮小する機能。ソースファイルをCoffeeScriptで書くと、自動的にJavaScriptにコンパイルされた状態でクライアントに送られる。





■関連記事
スマートフォン向けゲームエンジン「ngCore」とは? ~ JavaScriptでiOS/Android向け開発を共通化
Dojo道場 ~ 第9回「ウィジェット・レイアウト詳解」
「crocro.jscam」ライブラリの使い方 ――JavaScriptでWebカメラの画像やマーカー情報を取得するライブラリ
「CoffeeScript」の開発環境を用意して、サンプルを表示してみよう
コンパイルするとJavaScriptに! Rubyライクに記述できる「CoffeeScript」とは?

■記事全文へ

CodeZine

トピックスRSS

ランキング