2013年7月17日水曜日

CoffeeScript入門

どうも,B4のktaroです.
今回は,CoffeeScriptについて記述したいと思います.
まず,CoffeeScriptって何?新しいプログラミング言語?と思っている方の為に解説から.
CoffeeScriptとは・・・
  • プログラミング言語の一種.コードはJavaScriptに変換される
  • JavaScriptと比較して
    • 簡潔
    • 可読性が高い
    • コードを短く記述できる
  • RubyやPythonに影響を受けている
つまり,
「JavaScriptより高性能なRuby・Pythonライクなプログラミング言語」
という事です.

ソースコードはGitHubで公開されており,注目を集めているプロジェクトです.

そんなこんなで,さっそくコードを書いていきたいと思います.
今回は,
  • Mac OS X
  • Node.jsの実行環境導入済み
  • npmのインストール済み
という環境で記述します.
Node.jsとnpmがインストールされていない方は,Google先生に質問するか,CoffeeScriptのサイトに実行環境があるので,そこで実行してみてください.
まずnpmでCoffeeScriptのモジュールをインストールしてパスを通します.
#CoffeeScriptモジュールのインストール
npm install coffee-script
#zshrcに記述
cd
vi .zshrc
export PATH="$PATH:/$HOME/node_modules/coffee-script/bin"
source .zshrc
これだけで,実行環境の設定は終わりです.簡単ですね. 次に,恒例のHelloWorldを表示させます. 任意のファイル(拡張子->.coffee)を作成し,記述します.
#hello.coffee
hello = ->
 console.log("Hello World")
hello()
これだけです.このファイルを先ほど導入したcoffeeコマンドによりコンパイルします.
coffee -c hello.coffee
コンパイルが成功すると,hello.jsというファイルが同ディレクトリに作成されます. 新しく作成されたファイルの中身を覗いてみましょう.
(function() {
  var hello;

  hello = function() {
    return console.log("Hello World");
  };

  hello();

}).call(this);
たったあれだけのコードだけで,変数定義,関数定義,クロージャーもしっかり記述されています.便利ですね。実行します.
node hello.js
Hello World
表示されました!やったね! これだけのコードでは,よくわからないと思うので,とりあえずFizzBuzzのコードを書いてみたいと思います.
#FizzBuzz 1~15
for i in [1...16]
 if i%3 is 0 and i%5 is 0
  console.log 'FizzBuzz'
 else if i%3 is 0
  console.log 'Fizz'
 else if i%5 is 0
  console.log 'Buzz'
 else
  console.log i
CoffeeScriptでは,!===といった曖昧な演算子を使わず, ===であるisを利用します. また括弧やセミコロンも省かれます. 同様にコンパイルを行い,作成されたファイルを見てみましょう.
(function() {
  var i, _i;
  for (i = _i = 1; _i < 16; i = ++_i) {
    if (i % 3 === 0 && i % 5 === 0) {
      console.log('FizzBuzz');
    } else if (i % 3 === 0) {
      console.log('Fizz');
    } else if (i % 5 === 0) {
      console.log('Buzz');
    } else {
      console.log(i);
    }
  }
}).call(this);
実行します.
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
表示されました!やったね! 今回は簡単な説明だったので,興味を持った方はいろいろ調べてみてください.
では,今回はこの辺で終わります.ありがとうございました.

1 件のコメント:


  1. I’m excited to uncover this page. I need to thank you for your time for this, particularly fantastic read!! I definitely really liked every part of it and I also have you saved to fav to look at new information in your site.
    Python classes in Mumbai
    Python classes in Delhi
    Python classes in Chennai
    Python classes in Noida

    返信削除