初めてのJavaScript 第3版 ―ES2015以降の最新ウェブ開発

Book description

ECMAScript 2015(ES2015)の入門書。シンプルな例題を多用しブラウザやnodeコマンドで試しながら新しいJavaScriptを楽しく学びます。本書を読めば、letやconstによる宣言とスコープ、関数の基本と高度な使い方、オブジェクトとオブジェクト指向プログラミング、イテレータやジェネレータやプロキシといったES2015の新機能、非同期プログラミング、クライアントサイドのDOMやjQuery、サーバーサイドのNode.jsなど、JavaScriptの最新バージョンを使った開発に関する総括的な知識をバランスよく得られます。日本語版では、ES2016およびES2017の新機能の紹介も加えました。

Table of contents

  1.  大扉
  2.  原書大扉
  3.  献辞
  4.  訳者まえがき
  5.  まえがき
  6.   この本の対象読者
  7.   この本の非対象読者
  8.   意見と質問
  9.   表記上のルール
  10.   謝辞
  11.  1章 JavaScriptの歴史と開発環境
  12.   1.1 JavaScriptの簡単な歴史
  13.   1.2 ES2015
  14.   1.3 開発環境とツール
  15.   1.4 ES2015での開発
  16.   1.5 ES2015の機能
  17.   1.6 Node.jsのインストールと実行
  18.    1.6.1 Node.jsによるJavaScriptプログラムの実行
  19.    1.6.2 nodeコマンド
  20.  2章 初めてのJavaScriptアプリ
  21.   2.1 準備
  22.   2.2 ツール
  23.   2.3 コメント
  24.   2.4 3つのファイルに分解
  25.   2.5 jQuery
  26.   2.6 簡単な図形の表示
  27.   2.7 繰り返し
  28.   2.8 クリックの検知
  29.   2.9 Hello, World
  30.  3章 変数、定数、リテラル、データ型
  31.   3.1 変数と定数
  32.   3.2 変数か定数か
  33.   3.3 識別子
  34.   3.4 リテラル
  35.   3.5 プリミティブ型とオブジェクト
  36.   3.6 数値
  37.   3.7 文字列
  38.    3.7.1 エスケープ
  39.    3.7.2 特殊文字
  40.    3.7.3 テンプレートリテラル
  41.    3.7.4 複数行にわたる文字列
  42.    3.7.5 文字列としての数値
  43.   3.8 論理値
  44.   3.9 シンボル
  45.   3.10 nullとundefined
  46.   3.11 オブジェクト
  47.   3.12 数値、文字列、論理値に対応するオブジェクト
  48.   3.13 配列
  49.   3.14 配列やオブジェクトの最終要素のあとの「,」
  50.   3.15 日時
  51.   3.16 正規表現
  52.   3.17 マップ(Map)とセット(Set)
  53.   3.18 データの型変換
  54.    3.18.1 数値への変換
  55.    3.18.2 文字列への変換
  56.    3.18.3 論理値への変換
  57.   3.19 まとめ
  58.  4章 制御フロー
  59.   4.1 制御フロー入門
  60.    4.1.1 whileループ
  61.    4.1.2 ブロック文
  62.    4.1.3 ホワイトスペース
  63.    4.1.4 ヘルパー関数
  64.    4.1.5 if...else文
  65.    4.1.6 do...while ループ
  66.    4.1.7 forループ
  67.    4.1.8 if文
  68.    4.1.9 すべてを統合
  69.   4.2 JavaScriptの制御フロー文
  70.    4.2.1 制御フローの例外
  71.    4.2.2 if...else文のつなぎ方
  72.    4.2.3 構文の詳細
  73.    4.2.4 while文
  74.    4.2.5 if...else文
  75.    4.2.6 do...while文
  76.    4.2.7 for文
  77.    4.2.8 その他のforループパターン
  78.    4.2.9 switch文
  79.    4.2.10 for...inループ
  80.    4.2.11 for...ofループ
  81.   4.3 便利な制御フローパターン
  82.    4.3.1 条件の入れ子を減らすためにcontinueを使う方法
  83.    4.3.2 不要な計算を避けるためにbreakやreturnを使う方法
  84.    4.3.3 ループ終了後のループ変数の値を使う方法
  85.    4.3.4 リストを変更するときにチェックを降順に行う方法
  86.   4.4 まとめ
  87.  5章 式と演算子
  88.   5.1 演算子
  89.   5.2 算術演算子
  90.   5.3 演算子の優先順位
  91.   5.4 比較演算子
  92.    5.4.1 厳密等価演算子と等価演算子
  93.    5.4.2 関係演算子
  94.    5.4.3 数値を比較する際の留意点
  95.   5.5 文字列連結
  96.   5.6 論理演算子
  97.    5.6.1 真と見なされる値と偽と見なされる値
  98.    5.6.2 AND、OR、NOT
  99.    5.6.3 短絡評価
  100.    5.6.4 論理値ではない被演算子を用いた論理演算
  101.   5.7 条件演算子
  102.   5.8 カンマ演算子
  103.   5.9 グループ化演算子
  104.   5.10 ビット演算子
  105.   5.11 typeof演算子
  106.   5.12 void演算子
  107.   5.13 代入演算子
  108.   5.14 分割代入(デストラクチャリング)
  109.   5.15 オブジェクト演算子と配列演算子
  110.   5.16 テンプレートリテラル内の式
  111.   5.17 式と制御フローのパターン
  112.    5.17.1 if...else文を条件演算子を使った構文に変換
  113.    5.17.2 if文の短絡論理ORへの変換
  114.   5.18 まとめ
  115.  6章 関数
  116.   6.1 戻り値
  117.   6.2 呼び出しと参照
  118.   6.3 関数の引数
  119.    6.3.1 引数と関数
  120.    6.3.2 引数の分割代入
  121.    6.3.3 デフォルト引数
  122.   6.4 オブジェクトのメソッド
  123.    6.4.1 メソッドの省略記法
  124.   6.5 this
  125.   6.6 関数式と無名関数
  126.   6.7 アロー関数
  127.   6.8 call、apply、bind
  128.   6.9 まとめ
  129.  7章 スコープ
  130.   7.1 スコープと存在
  131.   7.2 静的スコープと動的スコープ
  132.   7.3 グローバルスコープ
  133.   7.4 ブロックスコープ
  134.   7.5 変数の隠蔽
  135.   7.6 関数、クロージャ、静的スコープ
  136.   7.7 IIFE——即座に実行される関数式
  137.   7.8 関数のスコープと巻き上げ
  138.   7.9 関数の巻き上げ
  139.   7.10 TDZ(Temporal Dead Zone)
  140.   7.11 strictモード
  141.   7.12 まとめ
  142.  8章 配列
  143.   8.1 配列の基本
  144.   8.2 配列要素の操作
  145.    8.2.1 先頭あるいは最後の要素に対する操作
  146.    8.2.2 複数要素の追加
  147.    8.2.3 部分配列
  148.    8.2.4 途中の要素の削除や途中への要素の追加
  149.    8.2.5 配列内の要素の削除や置換
  150.    8.2.6 配列を特定の値で埋める
  151.    8.2.7 逆転とソート
  152.   8.3 検索
  153.   8.4 mapとfilter
  154.   8.5 reduce
  155.   8.6 配列関連のメソッドと削除された要素、定義されていない要素
  156.   8.7 join
  157.   8.8 まとめ
  158.  9章 オブジェクトとオブジェクト指向プログラミング
  159.   9.1 プロパティの列挙
  160.    9.1.1 for...in
  161.    9.1.2 Object.keys
  162.   9.2 オブジェクト指向プログラミング
  163.    9.2.1 クラスとインスタンス生成
  164.    9.2.2 アクセッサプロパティ
  165.    9.2.3 クラスは関数
  166.    9.2.4 プロトタイプ
  167.    9.2.5 静的メソッド
  168.    9.2.6 継承
  169.    9.2.7 ポリモーフィズム
  170.    9.2.8 プロパティの列挙(補足)
  171.    9.2.9 文字列による表現
  172.   9.3 多重継承、ミックスイン、インタフェース
  173.   9.4 まとめ
  174.  10章 マップとセット
  175.   10.1 マップ(Map)
  176.   10.2 ウィークマップ(WeakMap)
  177.   10.3 セット(Set)
  178.   10.4 ウィークセット(WeakSet)
  179.   10.5 オブジェクトかマップか
  180.  11章 例外とエラー処理
  181.   11.1 Errorオブジェクト
  182.   11.2 例外処理(try...catch)
  183.   11.3 例外のスロー
  184.   11.4 例外処理とコールスタック
  185.   11.5 try...catch...finally
  186.   11.6 例外処理は例外に限る
  187.  12章 イテレータとジェネレータ
  188.   12.1 イテレータ
  189.    12.1.1 配列とイテレータ
  190.    12.1.2 イテレータのプロトコル
  191.    12.1.3 無限の値を供給するイテレータ
  192.   12.2 ジェネレータ
  193.    12.2.1 yield式と双方向コミュニケーション
  194.    12.2.2 ジェネレータとreturn
  195.   12.3 まとめ
  196.  13章 関数のさまざまな利用方法
  197.   13.1 サブルーチンとしての関数
  198.   13.2 値を返すサブルーチンとしての関数
  199.   13.3 純粋関数としての関数
  200.   13.4 なぜ純粋関数か
  201.    13.4.1 関数はオブジェクト
  202.   13.5 IIFEと非同期のコード
  203.   13.6 関数と変数
  204.    13.6.1 関数を配列に記憶
  205.    13.6.2 関数に関数を渡す
  206.    13.6.3 関数から関数を返す
  207.   13.7 再帰
  208.   13.8 まとめ
  209.  14章 非同期プログラミング
  210.   14.1 非同期処理のアナロジー
  211.   14.2 コールバック
  212.    14.2.1 setIntervalとclearInterval
  213.    14.2.2 スコープと非同期の実行
  214.    14.2.3 エラーファースト・コールバック
  215.    14.2.4 コールバック地獄
  216.   14.3 プロミス(Promise)
  217.    14.3.1 プロミスの生成
  218.    14.3.2 プロミスの利用
  219.    14.3.3 プロミスの基本パターン
  220.    14.3.4 プロミスのチェイニング
  221.    14.3.5 Promise.allとPromise.race
  222.    14.3.6 未確定の(unsettled)プロミスを防止する
  223.   14.4 ジェネレータ
  224.    14.4.1 ジェネレータランナー
  225.    14.4.2 ジェネレータランナーの例外処理
  226.   14.5 まとめ
  227.  15章 日時
  228.   15.1 タイムゾーン、タイムスタンプ、UNIXエポック
  229.   15.2 Dateオブジェクトの生成
  230.   15.3 Moment.js
  231.   15.4 JavaScriptによる日時関連の処理
  232.   15.5 日時の生成
  233.    15.5.1 サーバーにおける日時の生成
  234.    15.5.2 ブラウザにおける日時の生成
  235.   15.6 日時の受け渡し
  236.   15.7 日時関連の文字列の表示
  237.   15.8 月、日、曜日、時、分の取得
  238.   15.9 日時の比較
  239.   15.10 日時の演算
  240.   15.11 相対的な日時の利用
  241.   15.12 まとめ
  242.  16章 Math
  243.   16.1 数値のフォーマット指定
  244.    16.1.1 固定小数点数
  245.    16.1.2 指数表現
  246.    16.1.3 精度の指定
  247.    16.1.4 基数の指定
  248.    16.1.5 より細かなフォーマット指定
  249.   16.2 定数
  250.   16.3 代数関連の関数
  251.    16.3.1 累乗
  252.    16.3.2 対数関連の関数
  253.    16.3.3 その他の関数
  254.    16.3.4 擬似乱数発生
  255.   16.4 三角関数
  256.   16.5 双曲線関数
  257.  17章 正規表現
  258.   17.1 単純なマッチングと置換
  259.   17.2 正規表現の生成
  260.   17.3 正規表現を用いた検索
  261.   17.4 正規表現を用いた置換
  262.   17.5 入力文字列の「消費」
  263.   17.6 ORを表す正規表現
  264.   17.7 正規表現によるマッチングの限界
  265.   17.8 文字集合
  266.   17.9 文字集合の略記法
  267.   17.10 繰り返し
  268.   17.11 メタ文字「.」とエスケープ
  269.    17.11.1 ワイルドカード
  270.   17.12 グループ化
  271.   17.13 最長マッチ、最短マッチ
  272.   17.14 後方参照
  273.   17.15 グループの置換
  274.   17.16 関数を用いた置換
  275.   17.17 行頭や行末とのマッチング
  276.   17.18 英単語の境界のマッチング
  277.   17.19 先読み
  278.   17.20 正規表現の動的な生成
  279.   17.21 まとめ
  280.  18章 ウェブブラウザのJavaScript
  281.   18.1 ES5かES2015か
  282.   18.2 ドキュメントオブジェクトモデル(DOM)
  283.   18.3 DOMのgetメソッド
  284.   18.4 DOM要素に関するクエリー
  285.   18.5 DOM要素の操作
  286.   18.6 DOM要素の生成
  287.   18.7 要素のスタイル
  288.   18.8 data属性
  289.   18.9 イベント
  290.    18.9.1 イベントのキャプチャリングとバブリング
  291.    18.9.2 イベントの種類
  292.   18.10 Ajax
  293.   18.11 まとめ
  294.  19章 jQuery
  295.   19.1 jQueryと「$」
  296.   19.2 jQueryの利用
  297.   19.3 DOMのロードを待つ
  298.   19.4 jQueryにラップされたDOM要素
  299.   19.5 要素の操作
  300.   19.6 jQueryオブジェクトのアンラップ
  301.   19.7 Ajax
  302.   19.8 まとめ
  303.  20章 Node.js
  304.   20.1 Nodeの基本
  305.   20.2 モジュール
  306.   20.3 コアモジュール、ファイルモジュール、npmモジュール
  307.   20.4 関数モジュールを使ったモジュールのカスタマイズ
  308.   20.5 ファイルシステムへのアクセス
  309.   20.6 プロセス
  310.   20.7 OS
  311.   20.8 子プロセス
  312.   20.9 ストリーム
  313.   20.10 ウェブサーバー
  314.   20.11 まとめ
  315.  21章 オブジェクトのプロパティに関する詳細
  316.   21.1 ゲッターとセッター
  317.   21.2 プロパティのディスクリプタ
  318.   21.3 オブジェクトの保護
  319.   21.4 プロキシ
  320.   21.5 まとめ
  321.  22章 JavaScript関連の情報源
  322.   22.1 オンラインのドキュメント
  323.   22.2 ニュースレター
  324.   22.3 ブログおよびチュートリアル
  325.   22.4 オープンソースプロジェクトへの貢献
  326.   22.5 まとめ
  327.  付録A 予約語
  328.  付録B 演算子の優先順位
  329.  付録C 開発ツールのインストール
  330.   C.1 ターミナル
  331.   C.2 Gitのインストール
  332.    C.2.1 macOS
  333.    C.2.2 Windows
  334.    C.2.3 Linux
  335.   C.3 プロジェクトルート
  336.   C.4 Gitを使ったバージョン管理
  337.   C.5 npmによるパッケージ管理
  338.   C.6 ビルドツールのGulp
  339.   C.7 プロジェクトの構成
  340.   C.8 トランスパイラー
  341.   C.9 GulpでBabelを実行
  342.   C.10 lint
  343.  付録D ES2016とES2017の動向
  344.   D.1 ECMAScript 2016
  345.    D.1.1 累乗を表す演算子「**」
  346.    D.1.2 Array.prototype.includes
  347.   D.2 ECMAScript 2017
  348.    D.2.1 関数構文の末尾カンマの許容
  349.    D.2.2 文字列用のメソッドpadStartとpadEnd
  350.    D.2.3 Object.entriesおよびObject.values
  351.    D.2.4 Object.getOwnPropertyDescriptors
  352.    D.2.5 async/await
  353.  著者紹介
  354.  奥付

Product information

  • Title: 初めてのJavaScript 第3版 ―ES2015以降の最新ウェブ開発
  • Author(s): Ethan Brown, 武舎 広幸, 武舎 るみ
  • Release date: January 2017
  • Publisher(s): O'Reilly Japan, Inc.
  • ISBN: 9784873117836

You might also like

book

詳説 イーサネット 第2版

by Charles E. Spurgeon, Joann Zimmerman, 三浦 史光, 豊沢 聡

イーサネット技術についての解説書。本書では、ファーストイーサネットやギガビットイーサネットなどの従来技術だけでなく、10ギガ、40ギガ、100ギガビットなど最新のイーサネット仕様を詳しく解説します。また、全二重イーサネット、オートネゴシエーション、Power over Ethernet、Energy Efficient Ethernet、構造化ケーブリングシステム、スイッチを用いたネットワークの設計、ネットワーク管理、ネットワークのトラブルシューティングのテクニックなども解説します。ネットワークの設計、監視、保守、障害時対応までを網羅し、信頼性の高いネットワークの構築を支援します。

book

データサイエンス講義

by Rachel Schutt, Cathy O'Neil, 瀬戸山 雅人, 石井 弓美子, 河内 崇, 河内 真理子, 古畠 敦, 木下 哲也, 竹田 正和, 佐藤 正士, 望月 啓充

コロンビア大学のデータサイエンス入門講義をベースとした本書では、データサイエンスを行う上で、どのようなプロセスが必要か、データサイエンティストとしてはどのようなスキルセットが必要で、どのような思考方法を選択する必要があるのかを実例とともに紹介します。Google、Microsoft、Facebookをはじめとした有名企業で使われているアルゴリズムや分析手法の紹介など、興味深い話題や事例を豊富に収録。幅広い解説で、データサイエンティストの参考になるトピックが満載の一冊です。

book

レガシーコードからの脱却 ―ソフトウェアの寿命を延ばし価値を高める9つのプラクティス

by David Scott Bernstein, 吉羽 龍太郎, 永瀬 美穂, 原田 騎郎, 有野 雅士

レガシーコードとは、バグを多く含み、壊れやすく拡張が難しいコードを指します。このようなコードの保守と管理には多大な労力がつぎ込まれることになります。しかも一度作ってしまったレガシーコードの質を上げるには、初めから質の高いコードを作るよりも膨大なコストがかかります。 本書では、ソフトウェア開発において、初めからレガシーコードを作りださないためのプラクティスを9つ挙げて解説します。プロダクトオーナーは目的を語り、やり方は開発者に任せること、小さなバッチで開発を進めること、継続的に統合すること、チームメンバーで協力することなど、日々の開発に取り入れる考え方と具体的な実践について各章で分かりやすく解説します。 信頼性や拡張性が高いソフトウェアをリリースしたい開発者、運用管理者、マネージャに必携の一冊です。

book

戦略的データサイエンス入門 ―ビジネスに活かすコンセプトとテクニック

by Foster Provost, Tom Fawcett, 竹田 正和, 古畠 敦, 瀬戸山 雅人, 大木 嘉人, 藤野 賢祐, 宗定 洋平, 西谷 雅史, 砂子 一徳, 市川 正和, 佐藤 正士

ビッグデータ時代とも言われる昨今においては、膨大なデータをビジネスの枠組みの中に組み込んで活用することが重要課題となっています。つまり、データ収集を行ってビジネスの全体像を把握し、適切なデータ分析を行って正確な予測をした上でビジネス戦略を決めることが求められています。本書は、データをビジネスに活かすために身に付けておくべき基本的な考え方と、データマイニングやモデリングの根底に存在するコンセプトについて、体系的に解説しています。データサイエンスの重要性とその威力を学べる一冊です。