実践JS サーバサイドJavaScript入門
2011年4月20日紙版発売
2012年5月24日電子版発売
井上誠一郎 著
B5変形判/400ページ
定価3,740円(本体3,400円+税10%)
ISBN 978-4-7741-4629-4
ただいま弊社在庫はございません。
書籍の概要
この本の概要
クラウド,並行処理に代表される次世代を意識したWebアプリ開発の現場では,サーバサイド技術として,関数型言語と並びJavaScriptが注目されています。クライアント/サーバサイドをJavaScriptに統一することで,完全なRPCプログラミングが可能になります。本企画は,注目されているJavaScriptのサーバサイド技術を中心に,クラウド化を見据えた次世代Webアプリ開発のノウハウを紹介する書籍です。
こんな方におすすめ
- サーバサイドJavaScriptに興味ある人
この書籍に関連する記事があります!
- 今サーバサイドJavaScriptが人気の理由
- JavaScriptが1995年に誕生して今年で15年を超えます。誕生当初しばらくはWebブラウザ側でプログラムを実行する補助的な言語としての役割しかありませんでした。
目次
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 まとめ
この本に関連する書籍
-
パーフェクトJavaScript
1冊で言語仕様から最新の技術までを網羅した内容です。本書はJavaScriptで本格的なWebアプリケーションを作りたい人を対象に,前半でJavaScriptの言語仕様を掘り下げて...
-
実践 DLR .NET活用テクニック入門
近年RubyやPythonに代表される動的言語が人気を集めています。一方C#に代表される.NETプログラミングは静的言語と言われています。動的言語には動的言語の便利性があり...
-
プログラミングGROOVY
GroovyはJavaと抜群の親和性を持つハイブリッド言語です。簡潔で強力な記述力と高い柔軟性を持っており,Javaを補完・強化する究極のパートナーになります。 本書はGro...
-
実践F# 関数型プログラミング入門
.NETで使われているジェネリックやラムダ式は,関数型言語では早くから提供されていた機能であり,.NET向けに実装されたものといえます。関数型言語は、古くから存在す...
-
JavaScript本格入門 ~モダンスタイルによる基礎からAjax・jQueryまで
最も手軽でありながら,いまやネットのプログラミングに最も欠かせないJavaScriptの見落としがちな基礎から応用までしっかり解説。オブジェクト指向をベースにしたモダ...