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 インデックスの原理を理解する トランザクションを理解する 緯度と経度から住所を取得する 認可情報を削除する