JavaScriptの入門書。対象読者は、完全なプログラミング初心者からプログラミングの初級者です。また、中級以上の方のクライアントサイドJavaScriptの知識の更新にも利用できます。本書ではChrome DevToolsのコンソールにコマンドを入力してその動作を確認しながら、JavaScriptの基本や多種多様なWeb APIをひとつひとつハンズオン形式で学びます。また、コードの背景にある設計思想や、プログラムの挙動の仕組みについてもしっかり掘り下げます。本書のゴールは、読者がJavaScriptの全体像を掴み、業務の内容や興味に応じて必要な知識を自分自身で探求できるようになることです。
ハンズオンJavaScript
あんどうやすし 著
- TOPICS
- Programming , Web , JavaScript
- 発行年月日
- 2020年11月
- PRINT LENGTH
- 740
- ISBN
- 978-4-87311-922-9
- FORMAT
- Print PDF EPUB
関連ファイル
目次
まえがき
1章 学び始めるまえに
1.1 プログラムについて
1.2 JavaScriptについて
1.2.1 JavaScriptを始める
1.2.2 JavaScriptを続ける
1.2.3 JavaScriptの価値
1.3 Chrome DevToolsの概要を理解する
1.3.1 起動する
1.3.2 コンソールを開く
1.3.3 JavaScriptのコードを実行する
1.4 JavaScript文法の概要を理解する
1.4.1 各概念の関係を理解する
1.4.2 1次元セルオートマトン
1.4.3 セルオートマトン実装を確認する
1.5 Chrome DevToolsの実践的な使い方を理解する
1.6 まとめ
1.7 練習問題
2章 データを学ぶ
2.1 データの種類
2.2 リテラル
2.3 定数
2.3.1 識別子に利用できる文字
2.3.2 識別子に利用できない語
2.4 変数
2.4.1 変数を宣言する
2.4.2 変数に値を代入する
2.4.3 変数と定数の使い分け
2.5 Undefined
2.6 Null
2.7 真偽値
2.7.1 論理演算子
2.7.2 論理演算
2.7.3 論理演算子を真偽値型以外に適用する
2.7.4 デフォルト値の設定に論理演算子を使用する
2.7.5 等価演算子
2.8 数値
2.8.1 指数表現
2.8.2 10進数以外の数
2.8.3 数値演算
2.8.4 ビット演算
2.8.5 代入演算子
2.8.6 関係演算子
2.8.7 演算子の優先順位
2.9 長整数
2.10 文字列
2.10.1 文字列を連結する
2.10.2 文字を取り出す
2.11 テンプレート
2.11.1 文字列に改行を含める
2.11.2 文字列にJavaScriptの式を埋め込む
2.12 配列
2.12.1 配列を作成する
2.12.2 配列の要素を取得する
2.12.3 配列の要素を設定する
2.13 オブジェクト
2.13.1 オブジェクトを作成する
2.13.2 プロパティの値を取得する
2.13.3 プロパティの値をまとめて取得する
2.13.4 複雑な構造のオブジェクトから値をまとめて取得する
2.13.5 プロパティに値を設定する
2.13.6 プロパティの有無を確認する
2.13.7 プロパティを削除する
2.13.8 オブジェクトの同一性を比較する
2.14 まとめ
2.15 練習問題
3章 処理を学ぶ
3.1 構造化定理
3.2 文と式
3.3 処理をつなげる
3.3.1 文をつなげる
3.3.2 文をまとめる
3.3.3 式をまとめる
3.4 処理を分岐する
3.4.1 if
3.4.2 switch
3.4.3 条件演算子
3.5 処理を繰り返す
3.5.1 for
3.5.2 for-of
3.5.3 for-in
3.5.4 while
3.5.5 do ... while
3.6 関数
3.6.1 関数を実行する
3.6.2 関数を定義する
3.6.3 式で関数を定義する
3.6.4 タグ関数を使用してテンプレート文字列を処理する
3.7 エラーを処理する
3.7.1 エラーの種類
3.7.2 エラーを投げる
3.7.3 エラーを捕捉する
3.8 まとめ
3.9 練習問題
4章 オブジェクトを学ぶ
4.1 オブジェクト指向
4.1.1 オブジェクトの型同士の関係
4.2 オブジェクト指向プログラミング
4.3 関数から自身が所属するオブジェクトにアクセスする
4.4 クラスを定義する
4.4.1 スーパークラスを継承する
4.4.2 インスタンスを生成する
4.4.3 ゲッター/セッターを定義する
4.4.4 静的メソッドを定義する
4.4.5 クラスを式で定義する
4.5 オブジェクトリテラル再び
4.5.1 メソッドを定義する
4.5.2 継承
4.6 Objectクラス
4.6.1 すべてのオブジェクトのメソッドとして利用できる機能
4.6.2 Objectクラス経由で利用する機能
4.7 まとめ
4.8 練習問題
5章 モジュールを学ぶ
5.1 HTMLファイルでモジュールとしてJavaScriptファイルを読み込む
5.2 他のモジュールで外部公開されたオブジェクトを使用する
5.2.1 オブジェクトを指定してインポートする
5.2.2 デフォルトエクスポートをインポートする
5.3 動的にモジュールをインポートする
5.4 モジュール内で定義されたオブジェクトをエクスポートする
5.4.1 名前付きエクスポートする
5.4.2 デフォルトエクスポートする
5.5 インポートしたオブジェクトをエクスポートする
5.5.1 インポートした名前付きエクスポートをエクスポートする
5.5.2 インポートしたデフォルトエクスポートをエクスポートする
5.6 まとめ
5.7 練習問題
6章 基本的な標準オブジェクトを学ぶ
6.1 プリミティブに対応するオブジェクト
6.1.1 オブジェクトとプリミティブを相互に変換する
6.1.2 Booleanオブジェクト
6.1.3 Numberオブジェクト
6.1.4 BigIntオブジェクト
6.1.5 Stringオブジェクト
6.1.6 Symbolオブジェクト
6.2 直接生成できるオブジェクト
6.2.1 Functionオブジェクト
6.2.2 RegExpオブジェクト
6.3 globalThisオブジェクト
6.3.1 組み込み関数
6.4 まとめ
6.5 練習問題
7章 コレクションを学ぶ
7.1 Array
7.1.1 配列を生成する
7.1.2 配列を調べる
7.1.3 配列を検索する
7.1.4 配列を並べ替える
7.1.5 配列の要素を順に処理する
7.1.6 配列の要素をまとめて更新する
7.1.7 配列から異なる配列を生成する
7.1.8 配列の各要素を処理してひとつの値を返す
7.1.9 配列を結合する
7.1.10 配列をスタックやキューとして扱う
7.2 TypedArray
7.2.1 型付き配列の種類
7.2.2 配列と共通する機能
7.2.3 配列にあり型付き配列にはない機能
7.2.4 配列になく型付き配列にある機能
7.3 Map
7.3.1 Mapを生成する
7.3.2 Mapのエントリ数を取得する
7.3.3 Mapの値にアクセスする
7.3.4 Mapの要素を削除する
7.3.5 Mapの要素を順に処理する
7.4 Set
7.4.1 Setを生成する
7.4.2 Setのエントリ数を取得する
7.4.3 Setのエントリにアクセスする
7.4.4 Setのエントリを削除する
7.4.5 Setの要素を順に処理する
7.5 WeakMap
7.5.1 メモリ管理と弱参照
7.5.2 WeakMapの特徴
7.5.3 WeakMapのメソッド
7.6 WeakSet
7.6.1 WeakSetのメソッド
7.7 イテレータ
7.7.1 イテラブル
7.8 ジェネレータ関数
7.8.1 ジェネレータ関数宣言
7.8.2 ジェネレータ式
7.8.3 ジェネレータメソッド
7.8.4 ジェネレータオブジェクトのメソッド
7.9 まとめ
7.10 練習問題
8章 複雑なデータの扱いを学ぶ
8.1 バイナリデータ
8.1.1 バイナリデータとテキストデータ
8.1.2 バイナリデータをそのまま保持する
8.1.3 バイナリデータを読み書きする
8.2 JavaScript Object Notation(JSON)
8.2.1 JSONとオブジェクトリテラルの違い
8.2.2 JSON形式の文字列をオブジェクトに変換する
8.2.3 オブジェクトをJSON形式の文字列に変換する
8.2.4 オブジェクトをディープコピーする
8.3 まとめ
8.4 練習問題
9章 国際化を学ぶ
9.1 日時を扱う
9.1.1 日付を作成する
9.1.2 Dateオブジェクトのプロパティにアクセスする
9.2 言語や地域を指定する
9.3 日時の表記を国際化する
9.4 数値の表記を国際化する
9.4.1 数値の桁数を指定する
9.4.2 通貨の表記を国際化する
9.5 文字列の並べ替え順を国際化する
9.6 まとめ
9.7 練習問題
10章 非同期処理を学ぶ
10.1 コールバック関数
10.1.1 コールバック関数の問題
10.2 Promise
10.2.1 Promiseの状態
10.2.2 Promiseを作成する
10.2.3 完了時の処理を記述する
10.2.4 複数の非同期処理をまとめて扱う
10.2.5 非同期処理を同期処理のように記述する
10.2.6 非同期処理を繰り返す
10.3 まとめ
10.4 練習問題
11章 メタプログラミングを学ぶ
11.1 Proxy
11.1.1 プロキシを作成する
11.1.2 プロパティアクセスをプロキシする
11.1.3 関数やコンストラクタの呼び出しをプロキシする
11.1.4 拡張可能性へのアクセスをプロキシする
11.1.5 プロパティ定義へのアクセスをプロキシする
11.1.6 取り消し可能なProxyを作成する
11.2 Reflect
11.2.1 トラップの実装に利用する
11.2.2 単独で利用する
11.3 まとめ
11.4 練習問題
12章 Webを学ぶ
12.1 Web(ウェブ)
12.1.1 HTML
12.1.2 CSS
12.1.3 JavaScript
12.2 グローバルオブジェクト
12.2.1 console
12.2.2 location
12.2.3 navigator
12.3 ドキュメントオブジェクトモデル
12.3.1 DOMの構造
12.3.2 主要なオブジェクト
12.3.3 要素の階層をたどる
12.3.4 要素を検索する
12.3.5 要素の情報を調べる
12.3.6 要素の属性を操作する
12.3.7 要素のコンテンツを操作する
12.3.8 要素を削除する
12.3.9 要素を追加する
12.3.10 要素を入れ替える
12.4 CSSオブジェクトモデル
12.4.1 主要なオブジェクト
12.4.2 ルールを確認する
12.4.3 ルールを書き換える
12.4.4 新しいルールを追加する
12.4.5 既存のルールを削除する
12.5 イベント
12.5.1 イベントを処理する
12.5.2 代表的なイベントを使用する
12.5.3 イベントを作成する
12.5.4 イベントハンドラの探索順序を理解する
12.6 Web Components
12.6.1 Custom Elements
12.6.2 Shadow DOM
12.6.3 HTML Template
12.7 まとめ
12.8 練習問題
13章 ネットワークを学ぶ
13.1 Webにおけるネットワーク通信の基礎を理解する
13.1.1 URI
13.1.2 HTTP
13.2 Web API
13.2.1 REST
13.3 リソースを取得する
13.3.1 レスポンスを確認する
13.4 リソースを追加する
13.5 リクエストの失敗を処理する
13.6 ビーコンを送信する
13.7 HTTP以外のプロトコルを把握する
13.8 まとめ
13.9 練習問題
14章 ストレージを学ぶ
14.1 Cookie
14.1.1 Cookieの内容を確認する
14.1.2 Cookieに値を設定する
14.1.3 Cookieに属性を設定する
14.2 Web Storage
14.2.1 Storageの値を読み取る
14.2.2 Storageに値を設定する
14.2.3 Storageの値を削除する
14.2.4 Storageのキーをすべて確認する
14.2.5 Storageのイベントを処理する
14.3 IndexedDB
14.3.1 全体像を理解する
14.3.2 データベースに接続する
14.3.3 オブジェクトストアを作成する
14.3.4 インデックスを定義する
14.3.5 オブジェクトを追加する
14.3.6 キーを使用してオブジェクトを取得する
14.3.7 インデックスを使用してオブジェクトを取得する
14.3.8 カーソルを使用してオブジェクトを取得する
14.3.9 オブジェクトを更新する
14.3.10 オブジェクトを削除する
14.4 まとめ
14.5 練習問題
15章 マルチメディアを学ぶ
15.1 DOM
15.1.1 画像タグを利用する
15.1.2 動画タグを利用する
15.1.3 音声タグを利用する
15.2 CSS
15.2.1 CSSを使用して画像を移動する
15.2.2 CSSを使用して画像処理する
15.2.3 CSSを使用してアニメーションする
15.2.4 クラスを利用する
15.3 SVG
15.4 Canvas
15.4.1 図形を書く
15.4.2 描画のスタイルを設定する
15.4.3 画像を表示する
15.4.4 ピクセルを操作する
15.4.5 オフスクリーンバッファを利用する
15.5 WebGL
15.5.1 WebGLの利点
15.5.2 GPU
15.5.3 ポリゴン
15.5.4 シェーダー
15.5.5 レンダリングパイプライン
15.5.6 ポリゴンを描画する
15.6 Web Audio
15.6.1 音の内部表現を理解する
15.6.2 音を再生する
15.6.3 音にフィルタをかける
15.6.4 音を重ね合わせる
15.6.5 音を合成する
15.6.6 周波数を分析する
15.7 マルチメディア系のアプリケーションでよく使用されるAPI
15.7.1 定期的に処理を繰り返す
15.7.2 フルスクリーンでアプリケーションを利用する
15.7.3 マウスポインタをロックする
15.8 まとめ
15.9 練習問題
16章 センサーとデバイスを学ぶ
16.1 Chrome DevToolsをAndroid端末に接続する
16.1.1 Android端末のUSBデバッグを有効にする
16.1.2 Chrome DevToolsをリモートデバイスに接続する
16.2 センサー
16.2.1 デバイスの位置を取得する
16.2.2 デバイスの向きを取得する
16.2.3 画面の向きの変化を取得する
16.2.4 センサーを利用する
16.3 デバイス
16.3.1 デバイスを振動させる
16.3.2 Webカメラを利用する
16.4 まとめ
16.5 練習問題
17章 PWAを学ぶ
17.1 Service Worker
17.1.1 Service Workerのライフサイクルを理解する
17.1.2 Service Workerの利用を開始する
17.1.3 HTTPリクエストをプロキシする
17.1.4 キャッシュを利用してオフラインで動作させる
17.1.5 プッシュ通知を利用する
17.2 Web App Manifest
17.2.1 アプリに関する情報を提供する
17.2.2 アプリをホーム画面に追加する
17.3 ネイティブアプリを超える
17.3.1 Web Share API
17.3.2 Payment Request API
17.4 まとめ
17.5 練習問題
18章 セキュリティを学ぶ
18.1 サンドボックス
18.1.1 同一オリジンポリシー
18.2 代表的な攻撃
18.2.1 クロスサイトスクリプティング
18.2.2 クロスサイトリクエストフォージェリ
18.2.3 セキュリティ機能
18.3 ブラウザに保存された認証情報を利用する
18.3.1 パスワード認証を自動的に行う
18.3.2 IDプロバイダを使用した認証を自動的に行う
18.3.3 ログインに使用するアカウントを選択する
18.4 公開鍵暗号を使用してログインする
18.4.1 公開鍵暗号方式を理解する
18.4.2 WebAuthnの処理の流れを理解する
18.4.3 WebAuthnの認証情報を生成する
18.4.4 WebAuthnの認証情報を取得する
18.5 まとめ
18.6 練習問題
19章 パフォーマンスを学ぶ
19.1 パフォーマンスを定義する
19.2 パフォーマンスを評価する
19.2.1 Chrome DevToolsを使用する
19.2.2 独自に評価する
19.3 パフォーマンスを改善する
19.3.1 Web Worker
19.3.2 WebAssembly
19.4 まとめ
19.5 練習問題
20章 学び続けるために
20.1 ECMAScript
20.1.1 標準化プロセス
20.2 Web API
20.2.1 標準化プロセス
20.3 参考サイト
20.3.1 TC39
20.3.2 JavaScriptエンジン
20.3.3 Web技術全般
20.4 まとめ
20.5 練習問題
付録A JavaScriptのオブジェクト指向
A.1 プロトタイプチェーン
A.2 コンストラクタ
A.3 継承
A.4 クラス
付録B ローカル環境でサポートサイトを動作させる
B.1 サポートサイトのコードを取得する
B.2 Webサーバを起動する
付録C 練習問題の解答
C.1 1章 学び始めるまえに
C.2 2章 データを学ぶ
C.3 3章 処理を学ぶ
C.4 4章 オブジェクトを学ぶ
C.5 5章 モジュールを学ぶ
C.6 6章 基本的な標準オブジェクトを学ぶ
C.7 7章 コレクションを学ぶ
C.8 8章 複雑なデータの扱いを学ぶ
C.9 9章 国際化を学ぶ
C.10 10章 非同期処理を学ぶ
C.11 11章 メタプログラミングを学ぶ
C.12 12章 Webを学ぶ
C.13 13章 ネットワークを学ぶ
C.14 14章 ストレージを学ぶ
C.15 15章 マルチメディアを学ぶ
C.16 16章 センサーとデバイスを学ぶ
C.17 17章 PWAを学ぶ
C.18 18章 セキュリティを学ぶ
C.19 19章 パフォーマンスを学ぶ
C.20 20章 学び続けるために
索引
コラム目次
名前重要
無限大と非数の内部表現
数値のプロパティアクセスについて
配列風オブジェクトとArray.from()
クロージャ
イベントループ
インタプリタ型言語とコンパイラ型言語
contentEditable
インデックスの原理を理解する
トランザクションを理解する
緯度と経度から住所を取得する
認可情報を削除する