ハンズオンJavaScript

Book description

JavaScriptの入門書。対象読者は、完全なプログラミング初心者からプログラミングの初級者です。また、中級以上の方のクライアントサイドJavaScriptの知識の更新にも利用できます。本書ではChrome DevToolsのコンソールにコマンドを入力してその動作を確認しながら、JavaScriptの基本や多種多様なWeb APIをひとつひとつハンズオン形式で学びます。また、コードの背景にある設計思想や、プログラムの挙動の仕組みについてもしっかり掘り下げます。本書のゴールは、読者がJavaScriptの全体像を掴み、業務の内容や興味に応じて必要な知識を自分自身で探求できるようになることです。

Table of contents

  1.  大扉
  2.  クレジット
  3.   
  4.  まえがき
  5.   本書のコンセプト
  6.   誰のための本か
  7.   誰のための本ではないか
  8.   本書の構成
  9.   動作環境
  10.   表記上のルール
  11.   意見と質問
  12.   謝辞
  13.  1章 学び始めるまえに
  14.   1.1 プログラムについて
  15.   1.2 JavaScriptについて
  16.    1.2.1 JavaScriptを始める
  17.    1.2.2 JavaScriptを続ける
  18.    1.2.3 JavaScriptの価値
  19.   1.3 Chrome DevToolsの概要を理解する
  20.    1.3.1 起動する
  21.    1.3.2 コンソールを開く
  22.    1.3.3 JavaScriptのコードを実行する
  23.   1.4 JavaScript文法の概要を理解する
  24.    1.4.1 各概念の関係を理解する
  25.    1.4.2 1次元セルオートマトン
  26.    1.4.3 セルオートマトン実装を確認する
  27.     1.4.3.1 index.html
  28.     1.4.3.2 ca.js
  29.   1.5 Chrome DevToolsの実践的な使い方を理解する
  30.   1.6 まとめ
  31.   1.7 練習問題
  32.  2章 データを学ぶ
  33.   2.1 データの種類
  34.   2.2 リテラル
  35.   2.3 定数
  36.      名前重要
  37.    2.3.1 識別子に利用できる文字
  38.    2.3.2 識別子に利用できない語
  39.   2.4 変数
  40.    2.4.1 変数を宣言する
  41.    2.4.2 変数に値を代入する
  42.    2.4.3 変数と定数の使い分け
  43.   2.5 Undefined
  44.   2.6 Null
  45.   2.7 真偽値
  46.    2.7.1 論理演算子
  47.    2.7.2 論理演算
  48.    2.7.3 論理演算子を真偽値型以外に適用する
  49.    2.7.4 デフォルト値の設定に論理演算子を使用する
  50.    2.7.5 等価演算子
  51.     2.7.5.1 厳密な等価演算子
  52.     2.7.5.2 厳密な不等価演算子
  53.     2.7.5.3 抽象的な等価演算子
  54.     2.7.5.4 抽象的な不等価演算子
  55.   2.8 数値
  56.    2.8.1 指数表現
  57.    2.8.2 10進数以外の数
  58.    2.8.3 数値演算
  59.    2.8.4 ビット演算
  60.    2.8.5 代入演算子
  61.    2.8.6 関係演算子
  62.    2.8.7 演算子の優先順位
  63.   2.9 長整数
  64.   2.10 文字列
  65.    2.10.1 文字列を連結する
  66.    2.10.2 文字を取り出す
  67.   2.11 テンプレート
  68.    2.11.1 文字列に改行を含める
  69.    2.11.2 文字列にJavaScriptの式を埋め込む
  70.   2.12 配列
  71.    2.12.1 配列を作成する
  72.    2.12.2 配列の要素を取得する
  73.     2.12.2.1 複数の要素をまとめて取得する
  74.    2.12.3 配列の要素を設定する
  75.   2.13 オブジェクト
  76.    2.13.1 オブジェクトを作成する
  77.    2.13.2 プロパティの値を取得する
  78.    2.13.3 プロパティの値をまとめて取得する
  79.    2.13.4 複雑な構造のオブジェクトから値をまとめて取得する
  80.    2.13.5 プロパティに値を設定する
  81.    2.13.6 プロパティの有無を確認する
  82.    2.13.7 プロパティを削除する
  83.    2.13.8 オブジェクトの同一性を比較する
  84.   2.14 まとめ
  85.   2.15 練習問題
  86.  3章 処理を学ぶ
  87.   3.1 構造化定理
  88.   3.2 文と式
  89.   3.3 処理をつなげる
  90.    3.3.1 文をつなげる
  91.    3.3.2 文をまとめる
  92.    3.3.3 式をまとめる
  93.   3.4 処理を分岐する
  94.    3.4.1 if
  95.    3.4.2 switch
  96.    3.4.3 条件演算子
  97.   3.5 処理を繰り返す
  98.    3.5.1 for
  99.    3.5.2 for-of
  100.    3.5.3 for-in
  101.    3.5.4 while
  102.    3.5.5 do ... while
  103.   3.6 関数
  104.    3.6.1 関数を実行する
  105.    3.6.2 関数を定義する
  106.     3.6.2.1 関数名
  107.     3.6.2.2 仮引数リスト
  108.     3.6.2.3 関数定義の中で関数自身を呼び出す
  109.    3.6.3 式で関数を定義する
  110.     3.6.3.1 通常の関数宣言の代わりに関数式を使用する
  111.     3.6.3.2 関数式を引数として使用する
  112.     3.6.3.3 関数式を戻り値として使用する
  113.     3.6.3.4 再帰関数を関数式で定義する
  114.     3.6.3.5 アロー関数
  115.    3.6.4 タグ関数を使用してテンプレート文字列を処理する
  116.   3.7 エラーを処理する
  117.    3.7.1 エラーの種類
  118.    3.7.2 エラーを投げる
  119.    3.7.3 エラーを捕捉する
  120.   3.8 まとめ
  121.   3.9 練習問題
  122.  4章 オブジェクトを学ぶ
  123.   4.1 オブジェクト指向
  124.    4.1.1 オブジェクトの型同士の関係
  125.   4.2 オブジェクト指向プログラミング
  126.   4.3 関数から自身が所属するオブジェクトにアクセスする
  127.   4.4 クラスを定義する
  128.    4.4.1 スーパークラスを継承する
  129.    4.4.2 インスタンスを生成する
  130.    4.4.3 ゲッター/セッターを定義する
  131.    4.4.4 静的メソッドを定義する
  132.    4.4.5 クラスを式で定義する
  133.   4.5 オブジェクトリテラル再び
  134.    4.5.1 メソッドを定義する
  135.    4.5.2 継承
  136.   4.6 Objectクラス
  137.    4.6.1 すべてのオブジェクトのメソッドとして利用できる機能
  138.     4.6.1.1 プロパティを調べる
  139.     4.6.1.2 文字列に変換する
  140.    4.6.2 Objectクラス経由で利用する機能
  141.     4.6.2.1 オブジェクトを生成する
  142.     4.6.2.2 オブジェクトの拡張性を管理する
  143.     4.6.2.3 プロパティを一覧する
  144.     4.6.2.4 プロパティを管理する
  145.     4.6.2.5 プロパティをコピーする
  146.     4.6.2.6 オブジェクトの同一性を確認する
  147.     4.6.2.7 オブジェクトのクラスを確認する
  148.   4.7 まとめ
  149.   4.8 練習問題
  150.  5章 モジュールを学ぶ
  151.   5.1 HTMLファイルでモジュールとしてJavaScriptファイルを読み込む
  152.   5.2 他のモジュールで外部公開されたオブジェクトを使用する
  153.    5.2.1 オブジェクトを指定してインポートする
  154.     5.2.1.1 別名を付けてインポートする
  155.     5.2.1.2 モジュールオブジェクトのプロパティとしてインポートする
  156.    5.2.2 デフォルトエクスポートをインポートする
  157.   5.3 動的にモジュールをインポートする
  158.   5.4 モジュール内で定義されたオブジェクトをエクスポートする
  159.    5.4.1 名前付きエクスポートする
  160.    5.4.2 デフォルトエクスポートする
  161.   5.5 インポートしたオブジェクトをエクスポートする
  162.    5.5.1 インポートした名前付きエクスポートをエクスポートする
  163.    5.5.2 インポートしたデフォルトエクスポートをエクスポートする
  164.   5.6 まとめ
  165.   5.7 練習問題
  166.  6章 基本的な標準オブジェクトを学ぶ
  167.   6.1 プリミティブに対応するオブジェクト
  168.    6.1.1 オブジェクトとプリミティブを相互に変換する
  169.    6.1.2 Booleanオブジェクト
  170.    6.1.3 Numberオブジェクト
  171.     6.1.3.1 数値の内部的な表現を理解する
  172.     6.1.3.2 さまざまな最大値と最小値
  173.     6.1.3.3 特殊な数を利用する
  174.      無限大と非数の内部表現
  175.     6.1.3.4 文字列から数値に変換する
  176.     6.1.3.5 数値から文字列に変換する
  177.      数値のプロパティアクセスについて
  178.     6.1.3.6 数学の関数を利用する
  179.    6.1.4 BigIntオブジェクト
  180.    6.1.5 Stringオブジェクト
  181.     6.1.5.1 文字列の内部的な表現を理解する
  182.     6.1.5.2 文字列の一部を取り出す
  183.     6.1.5.3 文字列を調べる
  184.     6.1.5.4 文字列を変更する
  185.     6.1.5.5 文字列を分割/結合する
  186.     6.1.5.6 Unicodeを扱う
  187.    6.1.6 Symbolオブジェクト
  188.     6.1.6.1 シンボルをプロパティのキーとして使用する
  189.     6.1.6.2 グローバルシンボルレジストリを利用する
  190.     6.1.6.3 Well-Known Symbol
  191.   6.2 直接生成できるオブジェクト
  192.    6.2.1 Functionオブジェクト
  193.    6.2.2 RegExpオブジェクト
  194.     6.2.2.1 繰り返しを指定する
  195.     6.2.2.2 パターンの分岐を指定する
  196.     6.2.2.3 正規表現の一部をグループ化する
  197.     6.2.2.4 文字種を指定する
  198.     6.2.2.5 位置を指定する
  199.     6.2.2.6 オプションフラグを指定する
  200.     6.2.2.7 文字列のメソッドで正規表現を利用する
  201.     6.2.2.8 正規表現オブジェクトを使用する
  202.   6.3 globalThisオブジェクト
  203.    6.3.1 組み込み関数
  204.   6.4 まとめ
  205.   6.5 練習問題
  206.  7章 コレクションを学ぶ
  207.   7.1 Array
  208.    7.1.1 配列を生成する
  209.      配列風オブジェクトとArray.from()
  210.    7.1.2 配列を調べる
  211.    7.1.3 配列を検索する
  212.    7.1.4 配列を並べ替える
  213.    7.1.5 配列の要素を順に処理する
  214.    7.1.6 配列の要素をまとめて更新する
  215.    7.1.7 配列から異なる配列を生成する
  216.    7.1.8 配列の各要素を処理してひとつの値を返す
  217.    7.1.9 配列を結合する
  218.    7.1.10 配列をスタックやキューとして扱う
  219.   7.2 TypedArray
  220.    7.2.1 型付き配列の種類
  221.    7.2.2 配列と共通する機能
  222.    7.2.3 配列にあり型付き配列にはない機能
  223.    7.2.4 配列になく型付き配列にある機能
  224.   7.3 Map
  225.    7.3.1 Mapを生成する
  226.    7.3.2 Mapのエントリ数を取得する
  227.    7.3.3 Mapの値にアクセスする
  228.    7.3.4 Mapの要素を削除する
  229.    7.3.5 Mapの要素を順に処理する
  230.   7.4 Set
  231.    7.4.1 Setを生成する
  232.    7.4.2 Setのエントリ数を取得する
  233.    7.4.3 Setのエントリにアクセスする
  234.    7.4.4 Setのエントリを削除する
  235.    7.4.5 Setの要素を順に処理する
  236.   7.5 WeakMap
  237.    7.5.1 メモリ管理と弱参照
  238.    7.5.2 WeakMapの特徴
  239.    7.5.3 WeakMapのメソッド
  240.   7.6 WeakSet
  241.    7.6.1 WeakSetのメソッド
  242.   7.7 イテレータ
  243.      クロージャ
  244.    7.7.1 イテラブル
  245.   7.8 ジェネレータ関数
  246.    7.8.1 ジェネレータ関数宣言
  247.    7.8.2 ジェネレータ式
  248.    7.8.3 ジェネレータメソッド
  249.    7.8.4 ジェネレータオブジェクトのメソッド
  250.   7.9 まとめ
  251.   7.10 練習問題
  252.  8章 複雑なデータの扱いを学ぶ
  253.   8.1 バイナリデータ
  254.    8.1.1 バイナリデータとテキストデータ
  255.    8.1.2 バイナリデータをそのまま保持する
  256.    8.1.3 バイナリデータを読み書きする
  257.     8.1.3.1 ひとつの型からなるバイナリデータを扱う
  258.     8.1.3.2 さまざまな型のバイナリデータを統一的に扱う
  259.   8.2 JavaScript Object Notation(JSON)
  260.    8.2.1 JSONとオブジェクトリテラルの違い
  261.    8.2.2 JSON形式の文字列をオブジェクトに変換する
  262.    8.2.3 オブジェクトをJSON形式の文字列に変換する
  263.    8.2.4 オブジェクトをディープコピーする
  264.   8.3 まとめ
  265.   8.4 練習問題
  266.  9章 国際化を学ぶ
  267.   9.1 日時を扱う
  268.    9.1.1 日付を作成する
  269.    9.1.2 Dateオブジェクトのプロパティにアクセスする
  270.   9.2 言語や地域を指定する
  271.   9.3 日時の表記を国際化する
  272.   9.4 数値の表記を国際化する
  273.    9.4.1 数値の桁数を指定する
  274.    9.4.2 通貨の表記を国際化する
  275.   9.5 文字列の並べ替え順を国際化する
  276.   9.6 まとめ
  277.   9.7 練習問題
  278.  10章 非同期処理を学ぶ
  279.      イベントループ
  280.   10.1 コールバック関数
  281.    10.1.1 コールバック関数の問題
  282.   10.2 Promise
  283.    10.2.1 Promiseの状態
  284.    10.2.2 Promiseを作成する
  285.    10.2.3 完了時の処理を記述する
  286.    10.2.4 複数の非同期処理をまとめて扱う
  287.    10.2.5 非同期処理を同期処理のように記述する
  288.    10.2.6 非同期処理を繰り返す
  289.   10.3 まとめ
  290.   10.4 練習問題
  291.  11章 メタプログラミングを学ぶ
  292.      インタプリタ型言語とコンパイラ型言語
  293.   11.1 Proxy
  294.    11.1.1 プロキシを作成する
  295.    11.1.2 プロパティアクセスをプロキシする
  296.    11.1.3 関数やコンストラクタの呼び出しをプロキシする
  297.    11.1.4 拡張可能性へのアクセスをプロキシする
  298.    11.1.5 プロパティ定義へのアクセスをプロキシする
  299.    11.1.6 取り消し可能なProxyを作成する
  300.   11.2 Reflect
  301.    11.2.1 トラップの実装に利用する
  302.    11.2.2 単独で利用する
  303.   11.3 まとめ
  304.   11.4 練習問題
  305.  12章 Webを学ぶ
  306.   12.1 Web(ウェブ)
  307.    12.1.1 HTML
  308.    12.1.2 CSS
  309.    12.1.3 JavaScript
  310.   12.2 グローバルオブジェクト
  311.    12.2.1 console
  312.    12.2.2 location
  313.    12.2.3 navigator
  314.   12.3 ドキュメントオブジェクトモデル
  315.    12.3.1 DOMの構造
  316.    12.3.2 主要なオブジェクト
  317.    12.3.3 要素の階層をたどる
  318.    12.3.4 要素を検索する
  319.    12.3.5 要素の情報を調べる
  320.    12.3.6 要素の属性を操作する
  321.    12.3.7 要素のコンテンツを操作する
  322.    12.3.8 要素を削除する
  323.    12.3.9 要素を追加する
  324.    12.3.10 要素を入れ替える
  325.      contentEditable
  326.   12.4 CSSオブジェクトモデル
  327.    12.4.1 主要なオブジェクト
  328.    12.4.2 ルールを確認する
  329.    12.4.3 ルールを書き換える
  330.    12.4.4 新しいルールを追加する
  331.    12.4.5 既存のルールを削除する
  332.   12.5 イベント
  333.    12.5.1 イベントを処理する
  334.    12.5.2 代表的なイベントを使用する
  335.     12.5.2.1 キーボードイベント
  336.     12.5.2.2 マウスイベント
  337.    12.5.3 イベントを作成する
  338.    12.5.4 イベントハンドラの探索順序を理解する
  339.     12.5.4.1 イベントの伝播を止める
  340.     12.5.4.2 イベントのデフォルトの動作を止める
  341.   12.6 Web Components
  342.    12.6.1 Custom Elements
  343.    12.6.2 Shadow DOM
  344.    12.6.3 HTML Template
  345.   12.7 まとめ
  346.   12.8 練習問題
  347.  13章 ネットワークを学ぶ
  348.   13.1 Webにおけるネットワーク通信の基礎を理解する
  349.    13.1.1 URI
  350.    13.1.2 HTTP
  351.     13.1.2.1 HTTPの概要を理解する
  352.     13.1.2.2 HTTPリクエストを送信する
  353.     13.1.2.3 HTTPレスポンスを確認する
  354.     13.1.2.4 Chrome DevToolsでリクエスト/レスポンスを確認する
  355.   13.2 Web API
  356.    13.2.1 REST
  357.   13.3 リソースを取得する
  358.    13.3.1 レスポンスを確認する
  359.   13.4 リソースを追加する
  360.   13.5 リクエストの失敗を処理する
  361.   13.6 ビーコンを送信する
  362.   13.7 HTTP以外のプロトコルを把握する
  363.   13.8 まとめ
  364.   13.9 練習問題
  365.  14章 ストレージを学ぶ
  366.   14.1 Cookie
  367.    14.1.1 Cookieの内容を確認する
  368.    14.1.2 Cookieに値を設定する
  369.    14.1.3 Cookieに属性を設定する
  370.   14.2 Web Storage
  371.    14.2.1 Storageの値を読み取る
  372.    14.2.2 Storageに値を設定する
  373.    14.2.3 Storageの値を削除する
  374.    14.2.4 Storageのキーをすべて確認する
  375.    14.2.5 Storageのイベントを処理する
  376.   14.3 IndexedDB
  377.    14.3.1 全体像を理解する
  378.    14.3.2 データベースに接続する
  379.    14.3.3 オブジェクトストアを作成する
  380.    14.3.4 インデックスを定義する
  381.      インデックスの原理を理解する
  382.    14.3.5 オブジェクトを追加する
  383.      トランザクションを理解する
  384.    14.3.6 キーを使用してオブジェクトを取得する
  385.    14.3.7 インデックスを使用してオブジェクトを取得する
  386.    14.3.8 カーソルを使用してオブジェクトを取得する
  387.    14.3.9 オブジェクトを更新する
  388.    14.3.10 オブジェクトを削除する
  389.   14.4 まとめ
  390.   14.5 練習問題
  391.  15章 マルチメディアを学ぶ
  392.   15.1 DOM
  393.    15.1.1 画像タグを利用する
  394.    15.1.2 動画タグを利用する
  395.     15.1.2.1 イベントを監視する
  396.    15.1.3 音声タグを利用する
  397.   15.2 CSS
  398.    15.2.1 CSSを使用して画像を移動する
  399.    15.2.2 CSSを使用して画像処理する
  400.    15.2.3 CSSを使用してアニメーションする
  401.    15.2.4 クラスを利用する
  402.   15.3 SVG
  403.   15.4 Canvas
  404.    15.4.1 図形を書く
  405.    15.4.2 描画のスタイルを設定する
  406.    15.4.3 画像を表示する
  407.    15.4.4 ピクセルを操作する
  408.    15.4.5 オフスクリーンバッファを利用する
  409.   15.5 WebGL
  410.    15.5.1 WebGLの利点
  411.    15.5.2 GPU
  412.    15.5.3 ポリゴン
  413.    15.5.4 シェーダー
  414.    15.5.5 レンダリングパイプライン
  415.    15.5.6 ポリゴンを描画する
  416.   15.6 Web Audio
  417.    15.6.1 音の内部表現を理解する
  418.    15.6.2 音を再生する
  419.    15.6.3 音にフィルタをかける
  420.    15.6.4 音を重ね合わせる
  421.    15.6.5 音を合成する
  422.    15.6.6 周波数を分析する
  423.   15.7 マルチメディア系のアプリケーションでよく使用されるAPI
  424.    15.7.1 定期的に処理を繰り返す
  425.    15.7.2 フルスクリーンでアプリケーションを利用する
  426.    15.7.3 マウスポインタをロックする
  427.     15.7.3.1 マウスイベントを使用する
  428.   15.8 まとめ
  429.   15.9 練習問題
  430.  16章 センサーとデバイスを学ぶ
  431.   16.1 Chrome DevToolsをAndroid端末に接続する
  432.    16.1.1 Android端末のUSBデバッグを有効にする
  433.    16.1.2 Chrome DevToolsをリモートデバイスに接続する
  434.   16.2 センサー
  435.    16.2.1 デバイスの位置を取得する
  436.      緯度と経度から住所を取得する
  437.    16.2.2 デバイスの向きを取得する
  438.     16.2.2.1 デバイスの位置や向きの変化をテストする
  439.    16.2.3 画面の向きの変化を取得する
  440.     16.2.3.1 画面の向きの変化をテストする
  441.    16.2.4 センサーを利用する
  442.     16.2.4.1 デバイスの加速度を捕捉する
  443.     16.2.4.2 デバイスの角加速度を捕捉する
  444.     16.2.4.3 デバイスの動きを捕捉する
  445.   16.3 デバイス
  446.    16.3.1 デバイスを振動させる
  447.    16.3.2 Webカメラを利用する
  448.   16.4 まとめ
  449.   16.5 練習問題
  450.  17章 PWAを学ぶ
  451.   17.1 Service Worker
  452.    17.1.1 Service Workerのライフサイクルを理解する
  453.    17.1.2 Service Workerの利用を開始する
  454.    17.1.3 HTTPリクエストをプロキシする
  455.    17.1.4 キャッシュを利用してオフラインで動作させる
  456.    17.1.5 プッシュ通知を利用する
  457.     17.1.5.1 プッシュ通知の仕組みを理解する
  458.     17.1.5.2 プッシュ通知を登録する
  459.     17.1.5.3 プッシュ通知を受け取る
  460.     17.1.5.4 通知ダイアログを表示する
  461.   17.2 Web App Manifest
  462.    17.2.1 アプリに関する情報を提供する
  463.    17.2.2 アプリをホーム画面に追加する
  464.   17.3 ネイティブアプリを超える
  465.    17.3.1 Web Share API
  466.    17.3.2 Payment Request API
  467.   17.4 まとめ
  468.   17.5 練習問題
  469.  18章 セキュリティを学ぶ
  470.   18.1 サンドボックス
  471.    18.1.1 同一オリジンポリシー
  472.     18.1.1.1 CORS
  473.   18.2 代表的な攻撃
  474.    18.2.1 クロスサイトスクリプティング
  475.    18.2.2 クロスサイトリクエストフォージェリ
  476.    18.2.3 セキュリティ機能
  477.   18.3 ブラウザに保存された認証情報を利用する
  478.    18.3.1 パスワード認証を自動的に行う
  479.    18.3.2 IDプロバイダを使用した認証を自動的に行う
  480.    18.3.3 ログインに使用するアカウントを選択する
  481.      認可情報を削除する
  482.   18.4 公開鍵暗号を使用してログインする
  483.    18.4.1 公開鍵暗号方式を理解する
  484.    18.4.2 WebAuthnの処理の流れを理解する
  485.     18.4.2.1 公開鍵登録の流れを理解する
  486.     18.4.2.2 認証の流れを理解する
  487.    18.4.3 WebAuthnの認証情報を生成する
  488.    18.4.4 WebAuthnの認証情報を取得する
  489.   18.5 まとめ
  490.   18.6 練習問題
  491.  19章 パフォーマンスを学ぶ
  492.   19.1 パフォーマンスを定義する
  493.   19.2 パフォーマンスを評価する
  494.    19.2.1 Chrome DevToolsを使用する
  495.     19.2.1.1 [Lighthouse]タブを使用する
  496.     19.2.1.2 [Performance]タブを使用する
  497.    19.2.2 独自に評価する
  498.     19.2.2.1 詳細な時間を測定する
  499.     19.2.2.2 リソース読み込みのパフォーマンスを確認する
  500.     19.2.2.3 Webサイト表示のパフォーマンスを確認する
  501.     19.2.2.4 独自のパフォーマンスを測定する
  502.     19.2.2.5 パフォーマンスエントリの追加を監視する
  503.   19.3 パフォーマンスを改善する
  504.    19.3.1 Web Worker
  505.     19.3.1.1 ワーカーを開始する
  506.     19.3.1.2 ワーカーとメッセージをやりとりする
  507.     19.3.1.3 ワーカーで発生した例外を捕捉する
  508.     19.3.1.4 ワーカーとやりとりするデータについて理解する
  509.     19.3.1.5 ワーカーに別のスクリプトファイルを取り込む
  510.     19.3.1.6 ワーカーでcanvasに描画する
  511.     19.3.1.7 ワーカーを共有する
  512.    19.3.2 WebAssembly
  513.     19.3.2.1 JavaScriptからwasmで記述された関数を呼び出す
  514.   19.4 まとめ
  515.   19.5 練習問題
  516.  20章 学び続けるために
  517.   20.1 ECMAScript
  518.    20.1.1 標準化プロセス
  519.   20.2 Web API
  520.    20.2.1 標準化プロセス
  521.   20.3 参考サイト
  522.    20.3.1 TC39
  523.    20.3.2 JavaScriptエンジン
  524.    20.3.3 Web技術全般
  525.   20.4 まとめ
  526.   20.5 練習問題
  527.  付録A JavaScriptのオブジェクト指向
  528.   A.1 プロトタイプチェーン
  529.   A.2 コンストラクタ
  530.   A.3 継承
  531.   A.4 クラス
  532.  付録B ローカル環境でサポートサイトを動作させる
  533.   B.1 サポートサイトのコードを取得する
  534.   B.2 Webサーバを起動する
  535.  付録C 練習問題の解答
  536.   C.1 1章 学び始めるまえに
  537.   C.2 2章 データを学ぶ
  538.   C.3 3章 処理を学ぶ
  539.   C.4 4章 オブジェクトを学ぶ
  540.   C.5 5章 モジュールを学ぶ
  541.   C.6 6章 基本的な標準オブジェクトを学ぶ
  542.   C.7 7章 コレクションを学ぶ
  543.   C.8 8章 複雑なデータの扱いを学ぶ
  544.   C.9 9章 国際化を学ぶ
  545.   C.10 10章 非同期処理を学ぶ
  546.   C.11 11章 メタプログラミングを学ぶ
  547.   C.12 12章 Webを学ぶ
  548.   C.13 13章 ネットワークを学ぶ
  549.   C.14 14章 ストレージを学ぶ
  550.   C.15 15章 マルチメディアを学ぶ
  551.   C.16 16章 センサーとデバイスを学ぶ
  552.   C.17 17章 PWAを学ぶ
  553.   C.18 18章 セキュリティを学ぶ
  554.   C.19 19章 パフォーマンスを学ぶ
  555.   C.20 20章 学び続けるために
  556.  奥付

Product information

  • Title: ハンズオンJavaScript
  • Author(s): あんどうやすし
  • Release date: November 2020
  • Publisher(s): O'Reilly Japan, Inc.
  • ISBN: 9784873119229

You might also like

book

初めてのGo言語 ―他言語プログラマーのためのイディオマティックGo実践ガイド

by Jon Bodner, 武舎 広幸

イディオマティックなGo言語の解説書。構文がシンプル、静的型付け、タイプセーフでメモリセーフ、バグが入り込みにくい、並行処理が得意、実行速度が速い……これらの魅力的な特徴を生かすためには、Go言語らしい書き方を可能にする「イディオム」を学ぶ必要があります。Go言語のイディオムをマスターすれば、効率的で読みやすいコードを書けます。本書では、Go言語の基本機能を明快かつ簡潔に説明しつつ、イディオマティックなGoコードの書き方やGoプロジェクトの設計方法を解説します。読者はベテランのGo開発者のように考える術を学べます。

book

AI技術を活かすためのスキル ―データをビジネスの意思決定に繋げるために

by Daniel Vaughan, 西内 啓, 長尾 高弘

現代社会は多くのデータで溢れていますが、価値はデータや予測ではなく、意思決定によって生まれます。本書では、データの分析スキルを、ビジネス上の課題をより良い意思決定をもって処方的に解決するための能力であるとし、多くのユースケースを交えて解説します。ビジネス上の問いの立て方からスタートし、達成したい成果を明らかにした上でそのためのアクションを逆算していく。不確実性や因果関係の処理によって生み出される問題なども詳しく論じます。

book

ハイパフォーマンスPython 第2版

by Micha Gorelick, Ian Ozsvald, 中山 光樹

Pythonの高速化技法を学ぶロングセラー書の改訂版。待望のPython 3対応。本書ではCPUやメモリ使用量の観点からハイパフォーマンスなコードを書くための考え方や手法を解説します。そのために、パフォーマンスのボトルネックを測定する方法から、最適なデータ構造の選択方法、CythonやNumbaなどのコンパイラの比較、非同期処理、マルチコアCPUの活用法といった最適化のノウハウを、シンプルなサンプルプログラムを使って実際に効果を確認しながら学びます。本書で学べる考え方や手法はPython以外にも適用できるので、ハイパフォーマーを目指すプログラマーは必携の一冊です。

book

Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎

by Andreas C. Muller, Sarah Guido, 中田 秀基

Pythonの機械学習用ライブラリの定番、scikit-learnのリリースマネージャを務めるなど開発に深く関わる著者が、scikit-learnを使った機械学習の方法を、ステップバイステップで解説します。ニューラルネットを学ぶ前に習得しておきたい機械学習の基礎をおさえるとともに、優れた機械学習システムを実装し精度の高い予測モデルを構築する上で重要となる「特徴量エンジニアリング」と「モデルの評価と改善」について多くのページを割くなど、従来の機械学習の解説書にはない特長を備えています。