たった99行でシューティングゲームを作る方法 - wise9
括弧がけっこう邪魔なので、CoffeeScriptを使うともっと短くなるかもしれない。

CoffeeScript - Wikipedia
CoffeeScript は JavaScript にトランスコンパイル (別のプログラミング言語のコードに変換) されるプログラミング言語である。
Ruby や Python、Haskell から影響を受けたシンタックスシュガーの導入により、JavaScript に比べ簡潔さと可読性を向上させたほか、配列内包 (Array comprehensions) やパターンマッチといった機能を追加している。
CoffeeScript により、パフォーマンスを下げることなく、より短いコードでプログラムを記述することができる (JavaScript に比べ 1/3 程度の行数が削減できる)。
CoffeeScript (公式サイト)
http://coffeescript.org/
CoffeeScript (ダウンロード)
https://github.com/jashkenas/coffee-script/
JavaScriptをよりシンプルに書く! - 簡易言語「CoffeeScript」登場 Ruby/Pythonライクな文法でJavaScriptを - マイナビニュース
Jeremy Ashkenas氏がRuby/Pythonライクな文法でJavaScriptを記述する、興味深い試みをおこなっている。
同氏が開発した「CoffeeScript」と呼ばれる簡易言語は、"a little language that compiles into JavaScript"の名のとおり、コンパイルするとJavaScriptコードを出力するというものだ。
Ruby製のコンパイラが用意されており、デベロッパはCoffeeScriptで書かれたファイルをコンパイラに通すことでJavaScriptコードを得られる。
Rails Hub情報局: ベターJavaScript!? CoffeeScriptが注目されるワケ
JavaScriptへコンパイルして実行することを前提としたスクリプト言語「CoffeeScript」がちょっとした注目を集めています。
CoffeeScript自体は2009年末に登場し、その1年後の2010年12月にバージョン1.0がリリースされていますが、注目を集めたのは、数日前(2011年4月13日)にRuby on Railsの生みの親であるDHHが、次期バージョンのRails3.1でjQueryやSCSSと合わせて、CoffeeScriptをデフォルトとして採用するとTwitter上で発言して議論が巻き起こったからです。
DHHは「デフォルトだけど、簡単にオフにできるよ」と念押しした後に、興味深い指摘をしています。
「男ならJavaScriptを直接書く。JavaScriptのフレームワークが登場したころに、同じことが言われてたのを思い出すね」という意味ですね。
その心は、jQuery(あるいはPrototype.js、Dojo、MochiKit、YUIなど)なしにJavaScriptを直接書く人が減ったのと同様に、CoffeeScriptも当たり前のように使われるようになるだろうけど、最初は反発が大きいだけだろうということですね。
CoffeeScriptは文法だけのおもちゃと思われそうですが、私はAshkenas氏の以下の発言に大変共感しました。
プログラミング言語進化の歴史全体が、人間という読者のニーズにより直接的に応えられるようになるという歴史であり、コンピュータが高速化するにつれて、よりコンピュータに対して非直接的になることだった。われわれは(コンピュータが理解して実行できる)マシン語から、どんどん遠くへ離れることができるようになったのだ。
(かつて1970年代にドナルド・クヌース博士が提唱した)文芸的プログラミングとは、(人間とコンピュータという)二重の読者がいることをハッキリと認め、態度表明したものだ。われわれは人間という読者のニーズにできる限りのことをして応えるのだ、と。
ソースコードの読者には、
(1) コンピューター
(2) 人間
という2つがある。
プログラミング言語の進化は、人間の側に近づいていくこと。
…なるほどね!
プログラムのコメント - 浜村拓夫の世界
人間の思考(アイデア)→言葉として表現(ドキュメント)→実装コード、へと置き換えていく作業がスムーズにできれば、生産性が上がる。
・適切なコメント、文芸的プログラミングによって、可読性の高いソースコードを書く。
・そもそも、読みやすいコードが書けるプログラミング言語があれば良い。
●CoffeeScriptの特徴
・JavaScriptのライブラリではない。
・JavaScriptのシンタックスシュガーとして使うプログラミング言語。
・コンパイルしてJavaScriptのコードを生成する。
・コンパイラーはRuby製。
・RubyやPythonの文法に似ている。
・生のJSよりも、コード量が1/3程度に削減できる。
InfoQ: CoffeeScript - JavaScriptの良いパーツ
Jeremy氏は次のように明確に語った。
「JavaScript Webアプリケーションのためのエンド・トー・エンドの満足のいくシステムを最初に作ったら、次の5年のWeb開発の時代の勝者となるでしょう。」
これらの理由によって、Jeremy氏は、JavaScriptを標的とするプラットフォームとしている。
JavaScriptをベースとしているとはいえ、CoffeeScriptはPythonの影響を強く受けており、Haskellなどの関数型言語や、そしてもちろんEcmaScript 5およびEcmaScript Harmony Wikiからの多くの示唆の影響を受けている。
CoffeeScriptが対象としている主要な3つのエリアは次のようなものだ。
構文の整理
- Pythonスタイルの重要な意味をもつスペース
- 暗黙の丸括弧
- セミコロンの不使用
- Stringの継続
- 簡潔な関数リテラル
- YAMLスタイルのオブジェクトリテラル
セマンティックの拡張
- すべてのものが式(expression)である(値を返す)
- ローカルの構文スコープの変数が、グローバルスコープを汚染しない。
- 単純な代入と変数の宣言、分割代入
- 一連のif-then-elseにコンパイルされるswitch構文
- 連結比較式(chain comparisons)
- 名前付きパラメータ
Goodies
- 可変長引数リスト(splats)
- 文芸的プログラミング (ドキュメントのなかにコードを書く)
- pythonのレンジ、配列、オブジェクトの内包表記(comprehensions)
- 実在(existential)(エルビス)演算子
- =>ハッシュロケット演算子を利用した明示的な現在のオブジェクトの関数への強いバインディング
- 高速できちんと動作するクラスを基にした継承のサポート、これはgoogle.inheritのアプローチを基にしている
- 静的な継承のサポートとスーパークラスのメソッドへの自動的な委譲
- ヒアドキュメント、複数行の文字列、リテラルとしての正規表現、文字列の差し込み/置換
- CakeというRakeに似たビルドシステム
- <script type="text/coffeescript">タグ、インラインで利用するための縮小したcoffescriptコンパイラ
●デバッグ
CoffeeScriptのデバッグは、どうすんだろ?
いちいちコンパイルした後のJSコードを見なきゃならないとか?
コードがでかくなると、念力デバッグが必要になるのは勘弁して欲しいです。><
念力デバッグ - 浜村拓夫の世界
経験を積んだプログラマの特技.デバッグ用のコードやデバッガなしに,気合いのみでデバッグを行う.理論的な考察は不可能だが,納期後の現場デバッグ状況でよく見られる.
uupaaさんのCoffeeScript利用時の注意点 - Togetter
ステートマシン書けない人が、CoffeeScript使うと、スレッドコンテキストではまると思われるので注意ね
●NetBeans
CoffeeScriptの開発環境として、NetBeansは使えるだろうか?
「CoffeeScript NetBeans」で検索したら、いろいろヒットした。
CoffeeScript Netbeans - NetBeans Plugin detail
dstepanov/coffeescript-netbeans - GitHub
NetBeansに、CoffeeScript用のプラグインを入れてコードを書けば、文法チェックはしてくれるみたいです。
…便利なものを作ってくれる方がいて助かります。(・∀・)
これなら安心して試せるでしょうか?
JavaScriptでプログラミングをやっている人は、一度CoffeeScriptを試してみる価値はありますね。
(まあ、人が作ったものに文句があるなら、自分で作れよと。)
![]() | CoffeeScript: Accelerated JavaScript Development (Pragmatic) Trevor Burnham Pragmatic Bookshelf 2011-08-03 by [Z]ZAPAnetサーチ2.0 |
- 関連記事
-
- プロになるためのJavaScript入門
- Google Apps Script のお勉強
- Google Maps API プログラミング
- arbor.jsの使い方調査
- JavaScriptのクリックカウントで、クローキングを防止する方法
- ActionScriptとJavaScriptの違い
- パーフェクトJavaScript
- CoffeeScript
- FlashからHTML5+JSへ主役交代
- JavaScriptの勉強にenchant.js
- JavaScriptのモダンなOOP
- JavaScript本格入門
- LotY - JavaScript
- JavaScriptで文字数とバイト数を数える
- JavaScript 第5版