実践JS サーバサイドJavaScript入門


実践JS サーバサイド JavaScript 入門


技術評論社


著者:井上誠一郎


はじめに
本書の読み方

Part1 サーバサイドJavaScript序論
1章 サーバサイドJavaScriptの動向
1.1 JavaScriptの歴史
1.1.1 JavaScriptの広がり
1.2 JavaScriptの規格と実装
1.2.1 ECMAScriptとJavaScript
1.2.2 JavaScriptのバージョン
1.2.3 JavaScript処理系
コラム JavaScriptのスピード競争
1.2.4 JavaScriptライブラリ
1.2.5 CommonJS
1.2.6 Java6のスクリプティングAPI
1.3 サーバサイドJavaScriptの背景
1.3.1 Webアプリ開発現場の言語混在
1.3.2 バリデーションコードの重複
1.3.3 AJAXとRPC
1.3.4 負荷分散としてのクライアントサイドJavaScript
1.4 JavaScriptで見るインターネットの動向
1.4.1 JSON
1.4.2 HTML5
1.4.3 クラウドコンピューティング
1.4.4 ドキュメントデータベースとREST
コラム require.js

Part2 共通API
2章 サーバサイドJavaScriptに共通APIが必要な背景
2.1 はじめに
2.2 クライアントサイドJavaScriptとサーバサイドJavaScript
2.1.1 JavaScript言語とその他のプログラミング言語
2.2.2 JavaScriptコマンドラインツール
2.3 ホストオブジェクト
2.3.1 拡張言語
2.3.2 ホスト環境
2.3.3 グローバルオブジェクトを参照する変数
2.4 標準APIの動き
2.4.1 拡張API

3章 標準オブジェクト
3.1 標準組み込みオブジェクト
3.1.1 オブジェクトの互換性
3.2 Objectクラス
3.2.1 プロトタイプチェーン
3.2.2 プロトタイプチェーンの具体例
3.3 グローバルオブジェクト
3.3.1 クライアントサイドJavaScriptにおけるグローバルオブジェクト
3.3.2 グローバルオブジェクトのプロパティ
3.4 Stringクラス
3.5 Arrayクラス
3.6 Functionクラス
3.7 Numberクラス
3.8 Booleanクラス
3.9 Mathオブジェクト
3.10 Dateクラス
3.11 RegExpクラス
3.12 JSONオブジェクト
3.12.1 JSONとは
3.12.2 JSONオブジェクト
3.13 エラークラス
3.14 E4X
3.14.1 XMLオブジェクト生成
3.14.2 XMLの読み書き
3.14.3 XMLノードの選択
3.14.4 XMLList
3.14.5 E4Xの演算
3.14.6 XMLの名前空間
3.14.7 E4XのAPI
コラム サーバサイドでDOM

4章 CommonJS
4.1 CommonJSとは
4.2 モジュール
4.2.1 CommonJSのモジュール規格
4.2.2 公開側コード
4.2.3 利用側コード
4.3 ファイル操作
4.3.1 I/Oストリーム処理
4.3.2 バイト型
4.3.3 テキスト処理
4.3.4 同期/非同期
4.4 システムAPI
4.5 ネットワーク(ソケット)
4.5.1 ネットワークAPI
4.5.2 XMLHttpRequest
4.5.3 WebSocket
4.6 並列処理(マルチスレッド)
4.6.1 排他制御
4.6.2 Web Workers
4.7 RDB操作
4.8 パッケージ
4.9 JSGI
4.9.1 JSGIの概要
4.9.2 JSGIの具体例
4.10 CommonJS実装
4.10.1 Flusspferd
4.10.2 Narwhal
4.10.3 node.js

5章 JavaのスクリプティングAPI
5.1 はじめに
5.2 Java6付属のjrunscript
5.3 JVM上のJavaScriptコード
5.4 型変換
5.4.1 配列
5.4.2 コレクション
5.6 JavaからJavaScriptコードを呼ぶ
5.7 ホストオブジェクトの渡し方
5.7.1 ホストオブジェクト経由でJavaオブジェクトにアクセス
5.7.2 JavaからJavaScriptのコンテキストにアクセス

Part3 サーバサイドJavaScript実行環境
6章 アーキテクチャ概論
6.1 Webアプリのアーキテクチャ
6.1.1 技術要素
6.1.2 Webアプリ
6.2 セッション管理
6.2.1 クッキーによるセッション管理
6.3 AJAX
6.4 MVCアーキテクチャ
6.4.1 モデル
6.5 サーバサイドJavaScriptの分類
6.5.1 サーバサイドJavaScriptの概観
6.5.2 分類のための用語整理
6.5.3 HTTP処理での分類
コラム 通信プロトコルの変換は必要?
6.5.4 JavaScript処理系での分類
コラム node.jsブーム
6.5.5 APIでの分類
コラム Aptana Jaxerについて

7章 非JVMアプリコンテナ
7.1 smjsのcgi
7.1.1 CGI
7.1.2 Apacheの設定例
7.1.3 具体例
7.1.4 まとめ
7.2 Jack
7.2.1 Jackとは
7.2.2 JSGI
7.2.3 NarwhalのAPI
7.2.4 JackのWebアプリ
7.2.5 Nitro
7.2.6 まとめ
7.3 v8cgi
7.3.1 v8cgiとは
7.3.2 v8cgiのAPI
7.3.3 v8cgiのWebアプリ
コラム ビュー技術
7.3.4 まとめ
7.4 Juice
7.4.1 Juiceとは
7.4.2 JSGIとJuice
7.4.3 Juice実行の準備
7.4.4 JuiceのWebアプリ
7.4.5 まとめ
7.5 JSEXT
7.5.1 JSEXTとは
7.5.2 JSEXTのAPI
7.5.3 モジュール
7.5.4 JSEXTのWebアプリ
7.5.5 まとめ

8章 JVM系アプリコンテナ
8.1 Myna
8.1.1 Mynaとは
8.1.2 Myna実行の準備
8.1.3 MynaのAPI
8.1.4 MynaのWebアプリ
コラム rawDataのエスケープ処理とXSS
8.1.5 まとめ
8.2 RingoJSとHelma
8.2.1 RingoJSとHelma
8.2.2 Helmaの簡単なWebアプリ
8.2.3 HelmaのMVC
8.2.4 HelmaのORM
8.2.5 RingoJS
8.2.6 RingoJSのAPI
コラム パッケージシステムの乱立
8.2.7 RingoJSの簡単なWebアプリ
8.2.8 RingoJSのMVCアーキテクチャ
8.2.9 RingoJSのJSONデータベース
8.2.10 CRUD
8.2.11 まとめ

Part4 ドキュメントDB
9章 CouchDB
9.1 NoSQLとドキュメントDB
9.2 CouchDBとは
9.2.1 CouchDBの特徴
9.2.2 CouchDBのアーキテクチャ概論
9.2.3 起動と終了
9.3 データベース操作
9.3.1 データベースの作成
9.3.2 データベース情報の取得
9.3.3 データベースの削除
9.4 ドキュメント操作
9.4.1 ドキュメントの作成
9.4.2 ドキュメントの更新
9.4.3 更新と並行処理
9.4.4 更新の注意
9.4.5 ドキュメントの削除
9.4.6 名前付きドキュメントの作成
9.4.7 添付ファイル
9.4.8 ドキュメント一括操作
9.4.9 デザインドキュメント
9.5 CouchDBとMap/Reduce
9.5.1 ビュー
9.5.2 Map/Reduce一般論
9.5.3 CouchDBのMap/Reduce
9.5.4 ビューとMap/Reduce
9.5.5 組み込みのreduce関数
9.6 クエリ
9.6.1 ビューのクエリ
9.6.2 ビューの具体例
9.6.3 ビューの具体例(reduceを使う例)
9.7 ハンドラとCouchDBアプリ
9.7.1 CouchDBアプリのアーキテクチャ分類
9.7.2 CouchDBアプリの開発
9.7.3 showハンドラ
9.7.4 listハンドラ
9.7.5 updateハンドラ
9.7.6 テンプレート言語
9.7.7 CouchDBの周辺ツール
9.8 スキーマフリー(スキーマレス)のデータ設計(データモデル)
9.8.1 1対多の関連
9.8.2 多対多の関連
9.9 まとめ

10章 MongoDB
10.1 MongoDBとは
10.1.1 MongoDBの特徴
10.1.2 MongoDBのアーキテクチャ
10.1.3 起動と終了
10.2 データベース操作
10.3 コレクション操作
10.4 ドキュメント操作
10.4.1 ドキュメント作成と更新
10.4.2 ドキュメント取得と更新
10.4.3 ドキュメント削除
10.4.4 フィールドの更新処理
10.5 クエリ
10.5.1 クエリ条件
10.5.2 埋め込み配列
10.5.3 埋め込みオブジェクト
10.5.4 インデックス
10.5.5 サーバサイドJavaScript
10.5.6 集計処理
10.6 MongoDBのMap/Reduce
10.6.1 Map/Reduceの具体例
10.7 スキーマフリー(スキーマレス)のデータ設計(データモデル)
10.8 まとめ

Part5 クラウドの拡張言語
11章 Google Apps Scriptによるクラウドコンピューティング
11.1 サーバサイドの拡張言語
11.2 Google Apps Scriptとは
11.2.1 開発環境
11.2.2 簡単なスクリプト
11.2.3 ボタンイベント
11.2.4 デバッグ
11.2.5 スクリプトギャラリー
コラム Google Apps Scriptのファイル(モジュール)分割
11.2.6 Spreadsheetプログラミング
コラム Webアンケートアプリ
11.2.7 応用
11.2.8 GoogleサイトのGoogle Apps Script
11.3 まとめ

Part6 Webアプリ実践
12章 アーキテクチャ
12.1 アーキテクチャ概要
12.1.1 コンポーネント選択について
12.2 Google App Engine for Java(GAE/J)
12.2.1 GAE/Jの開発概要
12.2.2 GAE/Jの開発手順
12.2.3 データストア
12.2.4 JDOプログラミング
12.2.5 エンティティクラス
12.2.6 PersistenceManagerクラス
12.2.7 CRUD
12.2.8 クエリ
12.2.9 関連
12.2.10 トランザクション処理
12.3 JAX.RSとJersey
12.3.1 Jerseyの概要
12.3.2 Jerseyアプリの開発手順
12.3.3 リソースクラス
12.3.4 データバインディング
12.3.5 フォワードとリダイレクト
12.4 Rhino
12.4.1 Rhino API
12.4.2 ホストオブジェクト
12.4.3 JVM上のJavaScriptコード
12.4.4 その他のRhino API
12.4.5 GAE/JとRhino
コラム PermGenに注意

13章 設計と実装
13.1 作成アプリの機能概要
13.2 設計の考え方
13.2.1 最初の設計
13.3 コードの解説
13.3.1 コード一覧
13.3.2 エンティティクラス
13.3.3 Jerseyリソースクラス
13.3.4 DI
13.3.5 イベントとサーバサイドJavaScript実行
13.3.6 ビュー処理とユーザインターフェース
13.3.7 サーバサイドJavaScriptのコード例
13.4 設計の評価
13.4.1 依存性
13.4.2 役割と分割
13.4.3 改善案
13.5 まとめ

索引
おわりに

書籍目次

Posted by shi-n