図解! JavaScriptのツボとコツがゼッタイにわかる本 プログラミング実践編 (単行本)
有名なカードゲーム「ポーカー」の作成を通して、複数のモジュールで構成される複雑なプログラムをJavaScriptで組み立てよう! 本書は、JavaScriptの基本を学んだ方を対象に、より複雑で高度なプログラムの作り方を学ぶプログラミング実践編です。オブジェクト・クラス・モジュール・ライブラリの用法と、目的に合わせた適切な組み合わせ方(設計)を自分で考える力が身につきます。サンプルプログラムのDLサービス付き。
ダウンロードファイルについて
ダウンロード可能なファイルの一覧
Chapter01 プログラミングの環境設定
01 Visual Studio Codeとは?
プログラミング用のコードエディター
VS Codeのココが便利
02 Visual Studio Codeのインストールと初期設定
Visual Studio Codeの入手とインストール
Visual Studio Codeの日本語化(拡張機能)
コード整形機能の追加(拡張機能)
インデントの強調(拡張機能)
全角スペースの強調(拡張機能)
コードのスペルチェック機能(拡張機能)
HTMLタグの入力補助機能(拡張機能)
03 ローカルサーバーを設定しよう
XAMPPのインストール
ローカルサーバーの起動と停止
ローカルサーバーでウェブページを開く
04 プロジェクトの雛形をダウンロードしよう
サンプルのダウンロード
サンプルのフォルダ構成
05 ワークスペースを作成しよう
ワークスペースとは?
ワークスペースの作成
ワークスペースの保存
ワークスペースから開く
Column サンプルを動かしてみよう!
Chapter02 オブジェクトの作り方
01 オブジェクトとは?
「モノ」を大雑把に指し示すプログラミング用語
オブジェクト指向プログラミング
02 オブジェクトの書式
JavaScriptのオブジェクト構文
オブジェクトの例
Column 連想配列
03 オブジェクトのメソッド
メソッドの定義
メソッドの例
メソッドの別の書き方
オブジェクトの入れ子
04 オブジェクトの問題点
スコープの問題
コードの再利用ができない問題
05 スコープの問題を解決する方法
即時関数を使ってプロパティを隠蔽する
なぜプロパティが隠蔽できるのか?
即時関数を使う理由
Column 複数のメソッドを持つオブジェクトを定義するには?
Column 普通の関数と即時関数の違い
Chapter03 クラスの作り方
01 クラスとは?
オブジェクトの設計図
クラスの書き方
02 コンストラクタ
インスタンスを生成する特別な関数
プロパティの初期化
03 アクセサ
プロパティにアクセスする手段を提供するメソッド
アクセサの書き方
ゲッター(getter)の例
セッター(setter)の例
04 メソッド
オブジェクトの動作を定義するもの
メソッド内でアクセサを使う
05 静的メソッド
インスタンス化しなくても使えるメソッド
静的メソッドの例
06 クラスの継承
継承とは?
継承のメリット
継承の書き方
サブクラスのコンストラクタ
スーパークラスのメソッドを呼び出す
Column super(…)を呼び出す順番に注意
07 クラスの使用例
ゲームの主人公と対戦相手
主人公クラスを作ろう
ドラゴンクラスを作ろう
メインプログラムを作ろう
ゲームを実行しよう
Column オブジェクト指向プログラミング
Chapter04 制御構文を学ぼう
01 ES6とは?
開発効率が飛躍的に向上したJavaScriptの言語仕様
何故ES6+で書くのか
02 変数と定数の書き方
letとconst
もうvarは使わない
03 関数の表記(アロー関数)
アロー関数とは?
オブジェクトを返す関数
引数の扱い
デフォルト引数
残余引数
関数内のthisが指すもの
04 配列の操作
配列の操作に役立つ豊富なメソッド
Column 破壊的・非破壊的メソッド
push()
pop()
shift()
unshift()
slice()
join()
reverse()
Column 配列をコピーするには?
fill()
from()
includes()
some()
forEach()
find()
findIndex()
filter()
sort()
map()
Column ループカウンタが欲しいとき
05 分割代入
配列に似た書式で変数を別々に代入する
分割代入の使用例
06 スプレッド構文
配列やオブジェクトを展開する
スプレッド構文の使用例
可変長引数の関数
Chapter05 モジュール化
01 モジュールとは?
アプリケーションを構成する部品
モジュール分割のメリット
02 モジュールの公開(エクスポート)
モジュールの特徴
機能を公開する基本構文
03 モジュールの読み込み(インポート)
モジュールを読み込む準備
モジュールを読み込む基本構文
04 モジュールの使用例
ドラゴン討伐ゲームの再構築
ゲームを実行しよう
Column import関数で動的に読み込む
Chapter06 ライブラリの作り方
01 ライブラリとは?
よく使う便利機能をまとめたもの
ライブラリのインポート
02 何度も使うコードを自作関数にしよう
一定時間待つ処理
Promise(プロミス)オブジェクト
async/await
03 ライブラリを作ろう
ライブラリの実装
ライブラリを利用する
Column constはdefault exportできない(ES6+の仕様)
グローバルスコープに登録する
04 ライブラリの使用例
何をライブラリ化するか?
ライブラリ関数の実装
Column 人気のライブラリとフレームワーク
Chapter07 ポーカーゲームのプログラム設計
01 ポーカーとは?
カードの強さを競うトランプゲーム
ゲームに登場する用語
ゲームの進め方
02 カードの組み合わせと強さ
ポーカーの役
03 クラス設計
ゲームに登場するオブジェクトを探す
04 ライブラリの拡張
ライブラリの機能追加
可変長の数値を合計する関数
05 モジュール設計
作成するモジュール
ディレクトリ構成
Column 開発用ディレクトリと公開用ディレクトリ
Chapter08 ポーカーゲームのプログラム実装
01 プログラムの作成順
部品を作ってから組み立てる
02 画面デザインの作成
ポーカーの画面デザイン作成
03 ユーティリティ(Util)クラスを実装しよう
Utilクラスの作成
04 カード(Card)クラスを実装しよう
Cardクラスの作成
05 役(Pair)クラスを実装しよう
Pairクラスの作成
06 プレイヤー(Player)クラスを実装しよう
Playerクラスの作成
Column DOMはECMAScriptの一部ではない
07 相手(Com)クラスを実装しよう
Comクラスの作成
Column ゲームの難易度を高くするには?
08 ゲーム(Game)クラスを実装しよう
Gameクラスの作成
起動モジュールの作成
イベントハンドラの作成
09 メインプログラムの変数を宣言しよう
必要な変数は?
変数とアクセサの追加
Column アロー関数はsuperと紐づかない
10 手札を配る処理を実装しよう
ゲーム起動時の処理
初期化処理の内容
11 カードを選択する処理を実装しよう
手札のクリックイベント
12 カードを交換する処理を実装しよう
Drawボタンのクリックイベント
Column 挑戦してみよう!
13 もう一度プレイする処理を実装しよう
Replayボタンのクリックイベント
Column インスタンスを生成する静的メソッド
ダウンロード可能なファイルの一覧
Chapter01 プログラミングの環境設定
01 Visual Studio Codeとは?
プログラミング用のコードエディター
VS Codeのココが便利
02 Visual Studio Codeのインストールと初期設定
Visual Studio Codeの入手とインストール
Visual Studio Codeの日本語化(拡張機能)
コード整形機能の追加(拡張機能)
インデントの強調(拡張機能)
全角スペースの強調(拡張機能)
コードのスペルチェック機能(拡張機能)
HTMLタグの入力補助機能(拡張機能)
03 ローカルサーバーを設定しよう
XAMPPのインストール
ローカルサーバーの起動と停止
ローカルサーバーでウェブページを開く
04 プロジェクトの雛形をダウンロードしよう
サンプルのダウンロード
サンプルのフォルダ構成
05 ワークスペースを作成しよう
ワークスペースとは?
ワークスペースの作成
ワークスペースの保存
ワークスペースから開く
Column サンプルを動かしてみよう!
Chapter02 オブジェクトの作り方
01 オブジェクトとは?
「モノ」を大雑把に指し示すプログラミング用語
オブジェクト指向プログラミング
02 オブジェクトの書式
JavaScriptのオブジェクト構文
オブジェクトの例
Column 連想配列
03 オブジェクトのメソッド
メソッドの定義
メソッドの例
メソッドの別の書き方
オブジェクトの入れ子
04 オブジェクトの問題点
スコープの問題
コードの再利用ができない問題
05 スコープの問題を解決する方法
即時関数を使ってプロパティを隠蔽する
なぜプロパティが隠蔽できるのか?
即時関数を使う理由
Column 複数のメソッドを持つオブジェクトを定義するには?
Column 普通の関数と即時関数の違い
Chapter03 クラスの作り方
01 クラスとは?
オブジェクトの設計図
クラスの書き方
02 コンストラクタ
インスタンスを生成する特別な関数
プロパティの初期化
03 アクセサ
プロパティにアクセスする手段を提供するメソッド
アクセサの書き方
ゲッター(getter)の例
セッター(setter)の例
04 メソッド
オブジェクトの動作を定義するもの
メソッド内でアクセサを使う
05 静的メソッド
インスタンス化しなくても使えるメソッド
静的メソッドの例
06 クラスの継承
継承とは?
継承のメリット
継承の書き方
サブクラスのコンストラクタ
スーパークラスのメソッドを呼び出す
Column super(…)を呼び出す順番に注意
07 クラスの使用例
ゲームの主人公と対戦相手
主人公クラスを作ろう
ドラゴンクラスを作ろう
メインプログラムを作ろう
ゲームを実行しよう
Column オブジェクト指向プログラミング
Chapter04 制御構文を学ぼう
01 ES6とは?
開発効率が飛躍的に向上したJavaScriptの言語仕様
何故ES6+で書くのか
02 変数と定数の書き方
letとconst
もうvarは使わない
03 関数の表記(アロー関数)
アロー関数とは?
オブジェクトを返す関数
引数の扱い
デフォルト引数
残余引数
関数内のthisが指すもの
04 配列の操作
配列の操作に役立つ豊富なメソッド
Column 破壊的・非破壊的メソッド
push()
pop()
shift()
unshift()
slice()
join()
reverse()
Column 配列をコピーするには?
fill()
from()
includes()
some()
forEach()
find()
findIndex()
filter()
sort()
map()
Column ループカウンタが欲しいとき
05 分割代入
配列に似た書式で変数を別々に代入する
分割代入の使用例
06 スプレッド構文
配列やオブジェクトを展開する
スプレッド構文の使用例
可変長引数の関数
Chapter05 モジュール化
01 モジュールとは?
アプリケーションを構成する部品
モジュール分割のメリット
02 モジュールの公開(エクスポート)
モジュールの特徴
機能を公開する基本構文
03 モジュールの読み込み(インポート)
モジュールを読み込む準備
モジュールを読み込む基本構文
04 モジュールの使用例
ドラゴン討伐ゲームの再構築
ゲームを実行しよう
Column import関数で動的に読み込む
Chapter06 ライブラリの作り方
01 ライブラリとは?
よく使う便利機能をまとめたもの
ライブラリのインポート
02 何度も使うコードを自作関数にしよう
一定時間待つ処理
Promise(プロミス)オブジェクト
async/await
03 ライブラリを作ろう
ライブラリの実装
ライブラリを利用する
Column constはdefault exportできない(ES6+の仕様)
グローバルスコープに登録する
04 ライブラリの使用例
何をライブラリ化するか?
ライブラリ関数の実装
Column 人気のライブラリとフレームワーク
Chapter07 ポーカーゲームのプログラム設計
01 ポーカーとは?
カードの強さを競うトランプゲーム
ゲームに登場する用語
ゲームの進め方
02 カードの組み合わせと強さ
ポーカーの役
03 クラス設計
ゲームに登場するオブジェクトを探す
04 ライブラリの拡張
ライブラリの機能追加
可変長の数値を合計する関数
05 モジュール設計
作成するモジュール
ディレクトリ構成
Column 開発用ディレクトリと公開用ディレクトリ
Chapter08 ポーカーゲームのプログラム実装
01 プログラムの作成順
部品を作ってから組み立てる
02 画面デザインの作成
ポーカーの画面デザイン作成
03 ユーティリティ(Util)クラスを実装しよう
Utilクラスの作成
04 カード(Card)クラスを実装しよう
Cardクラスの作成
05 役(Pair)クラスを実装しよう
Pairクラスの作成
06 プレイヤー(Player)クラスを実装しよう
Playerクラスの作成
Column DOMはECMAScriptの一部ではない
07 相手(Com)クラスを実装しよう
Comクラスの作成
Column ゲームの難易度を高くするには?
08 ゲーム(Game)クラスを実装しよう
Gameクラスの作成
起動モジュールの作成
イベントハンドラの作成
09 メインプログラムの変数を宣言しよう
必要な変数は?
変数とアクセサの追加
Column アロー関数はsuperと紐づかない
10 手札を配る処理を実装しよう
ゲーム起動時の処理
初期化処理の内容
11 カードを選択する処理を実装しよう
手札のクリックイベント
12 カードを交換する処理を実装しよう
Drawボタンのクリックイベント
Column 挑戦してみよう!
13 もう一度プレイする処理を実装しよう
Replayボタンのクリックイベント
Column インスタンスを生成する静的メソッド