CoffeeScript、Node.js | 気まぐれエンジニアの セルフ・デザイン&セルフ・マネジメント

気まぐれエンジニアの セルフ・デザイン&セルフ・マネジメント

システムエンジニアをやってます。
ITのこと、デザインのこと、仕事のことなど自分の興味持ったことをまとめていきたいと思っています

2012年のJavaScript~PCからモバイルの時代へ
http://gihyo.jp/dev/column/newyear/2012/javascript-prospect

2012年のIT技術第2弾はJavaScriptの周辺技術から2つ
「CoffeeScript」
「Node.js」
を取り上げて調べてみました。

CoffeeScript はプログラミング言語のひとつである。コードはJavaScript のコードに変換される。
CoffeeScript により、パフォーマンスを下げることなく、より短いコードでプログラムを記述することができる (JavaScript に比べ 1/3 程度の行数が削減できる)
Ruby on Rails 3.1 でも正式にサポートされている。

・JavaScriptにコンパイルできる小さな言語
・コンパイル後はJavaScriptとして動作するため実行速度面ではほぼ変わらない
・構文がRubyやPythonライク
・ブラウザ用の開発にもサーバサイドの開発にも使える

インストールにはNode.jsの実行環境とnpm(パッケージマネージャ)が必要


ちっちゃいCoffeeScriptの本

ベターJavaScript!? CoffeeScriptが注目されるワケ
http://el.jibun.atmarkit.co.jp/rails/2011/04/javascript-coff-6f71.html
 CoffeeScriptはRubyやPythonぽい文法を持った独自言語で、
 セミコロンやブレースといったや記号類、functionという長い予約語など
 冗長になりがちなJavaScriptをシンプルにすること目的に設計されています。

 実はCoffeeScriptは2つの点でjQueryなどの「JavaSciptライブラリ」とは異なります。

 1.CoffeeScriptはライブラリではなくオーバーヘッドがないということ。
   コンパイル後はJavaScriptのネイティブコードになります。

 2.CoffeeScriptの重要な点。CoffeeScriptは独自言語ではありますが、
  JavaScriptと必ず1対1に対応させるのが設計ルール


JavaScriptをよりシンプルに書く! - 簡易言語「CoffeeScript」登場
CoffeeScript マジ Coffee でかわいい
CoffeeScript基礎文法最速マスター



サーバサイドJavaScriptの本命「Node.js」の基礎知識
JavaScriptをサーバサイドで使うことにより、クライアントサイドと同じ言語で開発でき、
開発効率が上がることが期待されます。
サーバサイドJavaScriptには、「CommonJS」と呼ばれる標準化が策定されています。
Node.jsは、このCommonJSに則って開発されています。 
Node.jsとは、サーバサイドJavaScriptの1つですが、「シングルスレッドベースの非同期処理環境」という特徴を持っています。


Node.js 日本ユーザグループ
http://nodejs.jp/nodejs.org_ja/docs/v0.6/
Node.jsは高速でスケーラブルなネットワークアプリケーションを 簡単に構築するためにChrome の JavaScript 実行環境 上に構築されたプラットフォームです。 
Node.jsはイベント駆動とノンブロッキング I/O モデルを使用することにより 軽量・効率的で、分散されたデバイスにまたがるデータ集約的なリアルタイム アプリケーションに最適です。

Nodeの目標は、 簡単にスケーラブルなネットワークプログラムを作成する方法を提供すること


初心者にも分かる Node.js と WebSocket についての解釈まとめ
Node.js の凄いところをまとめると
 ・サーバーからクライアントに対してプッシュができる
 ・専用のプロトコルでコネクションを維持し続けてくれる

 Node.js 自体は「サーバーの中で JavaScript を動かそうー」っていう技術で、
 その上で Socket.IO がいち早く実装されたから「WebSocket といえば Node.js」
 って認知されてるだけ。

node.jsに関する基礎や開発・チュートリアルのまとめ
http://phpspot.org/blog/archives/2011/02/nodejs.html
V8というChromeにものっている高速JavaScriptエンジン上で動くサーバを動かせる仕組み
node.js で動くサーバはシングルプロセスで動くのでリソースを消費せず、さらに非同期IOというもので、IO待ちをすることなく、次の処理にいけるので効率がよいみたい。
このため、かなり大量のクライアントがサーバへ同時にリクエストしに来ても対処できてしまうというわけです。 

node.jsでできること
・ソーシャルサイトなんかで、誰かが自分に対してメッセージを送ったりした際もすぐアラート表示 
・チャット等で他のブラウザの発言があった場合はラグなく反映 
  普通にやると10秒ごとにリロードという感じでラグが発生 
・サイト管理者が利用者にメッセージを送りたい場合、送信すればその場でダイアログ表示させたりできる
・リアルタイムに複数人でお絵かきできたりする


「JavaScriptを用いたNon-blocking I/O環境」という非常にシンプルなものだ。
その根底には「うまくスケールできること」と「動作が速いこと」という理念が見受けられる。
apache はご存じのとおりスレッド、対して nginx はイベントループ
スレッドモデルの場合ね、実行スタックをコピーする必要があるからスレッドが増えるほどメモリ使用率が上昇する。
対してイベントループモデルは1プロセスのままだからメモリはそれほど食わない。この点ではイベントループが有利っていうコンテクスト
イベントループモデルにも弱点がある。それはコードのどこかでブロックする処理が発生するとプロセス全体がストップしちゃう、
つまりイベントループ自体の処理もストップしてしまい、パフォーマンスに大きく影響してしまう
イベントループにおけるブロックをなくそうと考えた。それが node.js のそもそもの始まり

node.js とは何か (2)

Node.jsのコンセプトとは? ライアン・ダール氏による東京Node学園祭 基調講演(前編)
http://www.publickey1.jp/blog/11/nodejs_node.html

Node.jsの新版について。ライアン・ダール氏による東京Node学園祭 基調講演(後編)
http://www.publickey1.jp/blog/11/nodejsnode.html

Node.jsがバージョンアップ、初の公式Windows版「node.exe」登場
http://www.publickey1.jp/blog/11/nodejswindowsnodeexe.html

Node.jsとは何か、開発者ライアン・ダール氏が語る(前編)
~ノンブロッキングとはどういうことか?
http://www.publickey1.jp/blog/11/nodejs.html

Node.jsとは何か、開発者ライアン・ダール氏が語る(後編)
~ 複数コネクションの並列処理とデバッグ
http://www.publickey1.jp/blog/11/nodejsnodejs.html