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

[表紙]実践JS サーバサイドJavaScript入門 

紙版発売
電子版発売

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 まとめ

著者プロフィール

井上誠一郎(いのうえせいいちろう)

アリエル・ネットワーク株式会社CTO。米国でLotus Notes開発に携わり,帰国後,アリエル・ネットワーク株式会社を創業。企業向けP2Pソフトウェアやエンタープライズ製品の開発に従事。主な著書は「P2P教科書」「パーフェクトJava」。技術評論社Software Design誌で「Emacsのトラノマキ」連載中。

ありえるえりあで技術情報を発信中。