 
    
        
                                                                                  飯塚 直 著
                                                                            
CoffeeScriptとは、最近のWeb/スマートデバイス開発に欠かせないJavaScriptに対して、より少ないコード記述で同等の機能を実現できる簡易言語です。コンパイルすることによってネイティブなJavaScriptに変換されるため、実行速度、既存資産との連携など、JavaScriptと遜色なく利用できます。元来JavaScriptの記述は冗長になりがちなため、CoffeeScriptが開発効率向上を求める開発者たちの間で注目されています。
本書では、環境構築からはじめ、基礎的・応用的な文法やプログラミングテクニック、ライブラリの活用やテスト・デバッグ、さらにはnode.jsやブラウザ向け開発のベストプラクティスまで、CoffeeScriptを用いた開発のノウハウを豊富なソースコードとともに解説します。
第1章CoffeeScriptの概要
1-1 CoffeeScriptとは/ CoffeeScriptが登場する前/ CoffeeScriptの登場と広まり
   CoffeeScriptとJavaScriptの違い
   どんなときCoffeeScriptを使えばいいか
  1-2 CoffeeScriptの開発環境/ Node.jsのインストール
   CoffeeScriptのインストール
  1-3 プログラムの実行/ coffeeコマンドでプログラムを実行する
   スクリプトをファイルに書いて実行する
   JavaScriptにコンパイルする
   エディタ向けプラグイン/ Node.jsのAPIドキュメント
   [Note]コマンドプロンプトの操作
第2章基礎的な文法
2-1 文法の基本/ CoffeeScriptの基本形
  2-2 関数/引数を取る関数
   デフォルト引数/名前付き関数と無名関数
   無名関数に続けて引数を指定する
  2-3 文字列/変数展開/複数行に分けて書く
   ヒアドキュメント
  2-4 コメント/コメントをコンパイル後にも残す
  2-5 配列
  2-6 オブジェクト
   予約語の自動クォート
  2-7 変数のスコープ
  2-8 条件分岐/ if/else
   unless / while
   until / loop
   switch
   条件分岐のある関数の戻り値
  2-9 ループ・繰返し/配列に対するループ
   要素をスキップする
   オブジェクトに対する繰返し
   条件分岐を式として使う
   ループの応用
  2-10 演算子/比較は常に厳密
   連鎖比較
  2-11 例外処理
   [Note]本書のソースコード
   [Note]セミコロンの使いどころ
第3章応用的な文法
3-1 レンジ/レンジの基礎知識
   配列を部分的に切り出す/配列を部分的に入れ替える
   末端までのレンジ
  3-2 関数にthisを束縛する/ thisの値はどのように決まるのか
   thisを束縛して関数を作る
  3-3 存在演算子/変数や関数が存在するか調べる
   条件付き代入
   2つの値のいずれかを選択する
  3-4 引数の扱い/引数を配列で受け取る可変長引数
   配列の展開
  3-5 クロージャ/クロージャの基礎知識
   CoffeeScriptでクロージャを実現する
   プライベート変数を作る
  3-6 分割代入/分割代入の基礎知識
   分割代入の応用
  3-7 CoffeeScriptの便利なテクニック/複数行にわたる正規表現/ JavaScriptの埋込み
   不要な戻り値を抑制する
  3-8 グローバル変数を作る/ JavaScriptにおけるグローバル変数
   方法1 グローバルオブジェクトに追加する
   方法2 コンパイル時に-bオプションを付ける
  3-9 CakeとCakefileでビルド環境を作る/ CakeとCakefile /タスクを作る
   オプションを指定する
   ほかのタスクを呼び出す
第4章クラスを作る
4-1 クラスとは何か/クラスの基礎知識/ JavaScriptにおけるクラス
   CoffeeScriptにおけるクラス
  4-2 クラスの定義/クラスとインスタンスの作成
   プロパティの参照のされ方
   メソッドの作成
   コンストラクタ
  4-3 クラスの継承/継承により新しいクラスを作成する
   親クラスのメソッドを呼び出す
   引数をインスタンスのプロパティとしてセットする
  4-4 プロパティ作成のテクニック/静的なプロパティ/ライベートなプロパティを作る
   [Note]prototypeアクセスの利点と欠点
第5章ライブラリを使って開発を楽にする
5-1 Underscore.jsの準備/ Underscore.jsの読込み/ライセンス
  5-2 コレクション用の関数/ each
   filter / all / any
   pluck / max
   min / sortBy / shuffle
  5-3 配列用の関数/ flatten / without / uniq
   range
  5-4 関数用の関数/ memoize
  5-5 オブジェクト用の関数/ keys / values / clone
   extend
  5-6 文字列用の関数/ escape / template
  5-7 非同期処理のフロー制御/ Node.jsでの読込み/ブラウザでの読込み
   使い方
   JavaScriptライブラリとの協調
第6章テストとデバッグ、開発のヒント
6-1 テストの基礎知識/ソフトウェアにおけるテスト/  テストはどのようなプログラムに必要か
   テスト駆動開発とビヘイビア駆動開発
  6-2 テスト環境の準備/ブラウザでの準備
   Node.jsでの準備
   テスト用にMakefileを作る/ Mochaのレポーター
  6-3 テストを書く/基本的なMochaのテストの書き方
   MochaのBDD/TDDインタフェース/記述したテストの確認
   BDD/TDDインタフェースの比較
   よいテストを書くには
  6-4 デバッガの使用/ Node.js環境で使えるデバッガ
   ブラウザ環境で使えるデバッガ
  6-5 ドキュメントの生成/ドキュメントを書く
   ドキュメントを生成する
   よいドキュメントを書くには/ Markdownでスタイルを付ける
  6-6 ベンチマーク
   ブラウザでの準備
   Node.jsでの準備/ Benchmark.jsの使い方
   最速の方法を探す
   Web上でベンチマークテストを行う
  6-7 よくあるエラーやミス/ ReferenceError / TypeError
   RangeError: Maximum call stack size exceeded
   深すぎる再帰呼出しによるエラーへの対処
   ブラウザのハングアップ
   [Note]node-inspectorをバックグラウンドで実行する
第7章Node.js向け開発のベストプラクティス
7-1 イベント駆動型のプログラムをきれいに作る
   EventEmitter
   EventEmitter2
   0MQ
   AMQP
  7-2 Node.jsのモジュールシステム/ Node.jsとブラウザの両方に対応したライブラリを作る
   exportsとmodule.exportsの違い
  7-3 URLからコンテンツを取得する
  7-4 コマンドラインプログラムの開発
   入力プロンプトを表示する
  194 7-5 ヘッドレスブラウザ/ PhantomJSのインストール
   CasperJSのインストール
   CasperJSの使い方
   CasperJSの主なAPI
  7-6 Webアプリケーションの開発/インストール
   ファイル構造
   クエリストリングを受け取る
   POSTデータを受け取る/静的ファイル/そのほかのメソッド
   テンプレートエンジンEco
   レスポンスを圧縮する/静的ファイルをブラウザにキャッシュさせる
   独自のエラーページを用意する
  7-7 データベースへのアクセス/ O/Rマッピング/ Sequelizeのインストール
   SQLiteに直接アクセスする
   MySQLにアクセスする
   Redisにアクセスする
  7-8 ログ出力/ winstonのインストール/ winstonの使い方
   出力オプション
   レベル一覧
  7-9 マルチプロセス化/子プロセスを起動してメッセージをやりとりする
   複数の子プロセスを同じポートで待機させる
  7-10 エラー処理
  7-11 デーモン化/ foreverのインストール/ foreverの使い方
  7-12 開発から本番運用に至るまで/バージョン管理/バグトラッカー/負荷テスト
   負荷の原因を調査する
   デプロイツール/モニタリング
   keepalived
  7-13 プロファイラ
  7-14 npmパッケージの開発
   package.jsonで記述可能なパラメータ
  7-15 ライブラリの探し方
   [Note](参考)「Too many open files」エラーが出たら
   [Note]O/Rマッパー
   [Note]スケールアウトとスケールアップ
   [Note]Semantic Versioning
第8章ウザ向け開発のベストプラクティス
8-1 JSONを扱う
   json2.jsの使い方/ JSONを見やすく表示する
  8-2 jQuery /スマートフォン向けのjQuery代替ライブラリ
  8-3 HTML5を土台を利用して作る/ HTML5 Boilerplateの使い方/ Google Chrome Frame
  8-4 UIのライブラリ/ Twitter Bootstrap
   jQuery UI
  8-5 HTML5やCSS3のサポート状況を判別する/ Modernizrの使い方
   条件によって読み込むスクリプトを変える/サポートされていないAPIを補完する
  8-6 Ajaxコンテンツのルーティング/ Sammy.jsの使い方
   AjaxコンテンツをGoogleの検索結果に出す
   ブラウザの履歴を操作する
  8-7 DOMの準備完了を待つ
   JavaScriptとCSSの最適な読込み順序
   スクリプトローダーで高速に読み込む
  8-8 パフォーマンス向上のためのテクニック/リクエスト数を減らす/  JavaScriptやCSSを外部ファイル化する/ CSSスプライト
   パーツのロードを遅らせる/画像のサイズを削減する
  8-9 検索エンジンのコントロール/ robots.txtの記述方法
   サイトの貢献者情報を提供する
   最適化チェックツール
  8-10 外部JavaScriptの文字コード
  8-11 複数のファイルに分ける
  8-12 JavaScriptを最適化する
   UglifyJSのインストール/ JavaScriptファイルを最適化する
  8-13 JavaScriptファイルの結合
  8-14 ライブラリをCDNからロードする
  8-15 ブラウザでのテストを自動化する/ Selenium
   Watir
  8-16 プロファイラを使う/ボトルネックを見つける
   メモリリークを見つける
  8-17 古いInternet Explorerでの検証
  8-18 クライアント側のエラーログを収集する
  8-19 ユーザーの行動解析ツールの設置/プライバシーポリシーの明記
  8-20 複雑なテンプレートの使用
  8-21 WebSocketをクロスブラウザで使う/ Socket.IOのインストール(サーバ側)/  Socket.IOの使い方(サーバ側)
   Socket.IOの使い方(クライアント側)
   APIサーバの実装例
   再接続パラメータの設定
   本番環境での推奨設定
  8-22 KnockoutでUIの表示を動的に変更する/ Knockoutの使い方
   ライブラリの読込み/モデルからビューへの反映
   ビューからモデルへの反映
   computed observableの作成
   ボタンクリックでアクションを実行する
   値の変更通知を受ける
  8-23 CoffeeScriptをブラウザで直接実行する/ text/coffeescriptの使い方
  8-24 CSSのトレンド
   CompassでSass開発をさらに便利にする
   [Note] 
  
付属データはこちら
        内容についてのお問い合わせは、正誤表、追加情報をご確認後に、お送りいただくようお願いいたします。
        
        正誤表、追加情報に掲載されていない書籍内容へのお問い合わせや
        その他書籍に関するお問い合わせは、書籍のお問い合わせフォームからお送りください。
      
本書の書影(表紙画像)をご利用になりたい場合は書影許諾申請フォームから申請をお願いいたします。
      書影(表紙画像)以外のご利用については、こちらからお問い合わせください。
アニー さん
2013-07-05
今のところ使う予定はないかなぁ?とは思いながら読んでみた。最低限の質問に答えられるぐらいにはなったかな。
らき さん
2012-10-28
そもそもあんまりCoffeeScriptやりたいわけじゃないのでアレだけど、本でざっと把握できるようになってるのはやっぱいい。
のぶ さん
2012-07-07
本書を誰にでもお勧めするかどうかは疑問符です。分厚い割に扱われてる話題にまとまりがない印象があるのと、Webのどこかに掲載された記事の再利用が多いので、割高感はあります。でもCoffeeScript(以下CS)自体は面白いアプローチの言語で、JavaScriptの困った点を払拭してくれ、これならプログラム書けそうな気にさせてくれる、お勧め言語の1つです。で本書がCSを主題にした最初の和書なので、ともかく何か始めてみようと思う初学者(でかつWebで勉強するコツを持ってない人)はまずは座右に置いてみましょう。