1章 React 初心者の方へ

1章 React 初心者の方へ

1.1 本書のねらい

Reactとは、Webサイトやアプリを作るための「ライブラリ」と呼ばれるツールです。Facebookが作ったもので、以下のような特徴があります:

  • コンポーネント: Webページを「パーツ」に分けて作れるので、管理がしやすい。例えば、「ヘッダー」「ボタン」「リスト」などの部品を再利用できます。
  • 効率的な更新: Reactは「必要な部分だけ」を更新する仕組みがあるので、アプリが速く動きます。
  • 学びやすい: JavaScriptを基本としているので、特別な知識がなくても始められます。

なぜReactを学ぶのか?

  • 人気がある: Reactは世界中で使われており、Reactを使えるプログラマーは需要が高いです。
  • 現代のWeb開発の標準: 大規模なアプリから小さな個人プロジェクトまで幅広く使われています。
  • 豊富なツールとライブラリ: Reactと一緒に使える便利なツールがたくさんあります。

Reactを学ぶことで、こういった技術や考え方を習得し、Web開発が楽しく効率的になります。本書では、Reactの基本から実用的な知識まで、初心者でもステップバイステップで学べる内容になっています。

1.2 Reactの過去と未来

1.2.1 Reactの誕生と背景

Reactは2013年にFacebookによって公開されました。当時、Webアプリは大規模化・複雑化が進んでいて、以下のような課題がありました:

  • 更新のたびに全体を再描画するため、動作が遅い。
  • コードが複雑でメンテナンスが大変。

Reactはこの問題を解決するために登場しました:

  • 「仮想DOM (Virtual DOM)」という技術を使い、効率的に画面を更新。
  • ページを小さな部品(コンポーネント)に分けて管理することで、コードが整理しやすくなりました。

未来に向けたReactの進化

Reactは登場から現在まで、継続的にアップデートされ、新しい機能が追加されています。その例を挙げると:

  • フック(Hooks): Reactバージョン16.8で導入。コードを簡潔に書けるようになり、開発が楽に。
  • コンカレントモード(Concurrent Mode): ユーザー操作に対してよりスムーズに動作する仕組み。
  • サーバーサイドレンダリング(SSR): サーバー側でページを事前に生成し、表示速度を向上。

1.2.2 第2版の変更点(この書籍における)

書籍の第2版では、以下のような最新のトピックが含まれています:

  • Hooksを中心とした解説
  • クラスベースからHooksベースのスタイルへ進化。
  • 最新のツールや環境に対応: Create React App、Next.js、Viteなど、最新の技術スタックに対応。
  • パフォーマンス向上のテクニック: Reactをさらに速く効率的に使うための方法を解説。

Reactは今後も進化し続ける技術であり、それを学ぶことで「未来のWeb開発」に対応できるスキルが身につきます。

1.3 環境の構築

Reactを学び、使うためにはまず環境を整える必要があります。以下の手順で進めます。

1.3.1 GitHubリポジトリ

GitHubはコードを保存・共有するためのプラットフォームです。プロジェクトの管理に使います。

  • GitHubの利点:
    • コードを保存して他の人と共有できる。
    • 変更履歴を記録するので、ミスがあっても以前の状態に戻せる。

使い方の概要:

  1. GitHubアカウントを作成する(無料)。
  2. プロジェクト用の「リポジトリ」を作成する。
  3. 自分のコードをGitを使ってリポジトリにアップロードする。

1.3.2 React Developer Tools

React Developer Toolsは、ブラウザにインストールして使うツールです。Reactで開発したアプリケーションを確認・デバッグするのに役立ちます。

  • インストール方法:
    1. ChromeやFirefoxの拡張機能ストアで「React Developer Tools」を検索。
    2. 「インストール」をクリックしてセットアップ。
  • できること:
    • Reactコンポーネントの構造を確認。
    • 各コンポーネントの「ステート」や「プロパティ」の内容をチェック。
    • パフォーマンスの問題を見つける。

1.3.3 Node.jsのインストール

Node.jsはJavaScriptをパソコン上で実行するためのソフトウェアで、Reactを使うための土台になります。

Node.jsのインストール手順:

  1. Node.js公式サイト(https://nodejs.org)にアクセス。
  2. 推奨版(LTS)をダウンロードしてインストール。
  3. インストール後、コマンドラインで以下を入力して確認:
    node -v

    バージョン番号が表示されれば成功。

npmとnpx:

  • npm(Node Package Manager): ライブラリを管理するツール。
  • npx: 一時的にコマンドを実行するためのツール。Reactプロジェクトの作成で使います。

 

React環境の構築を試す

環境が整ったら、Reactプロジェクトを作成して動かしてみましょう。


npx create-react-app my-app
cd my-app
npm start

ブラウザで「http://localhost:3000」にアクセスすると、Reactの初期画面が表示されます。

macでvpn接続するときに、「すべてのトラフィックをvpn接続経由で送信」をオンにしたりオフにする機能があります。 windowsでも同じようなことできますか?

macでvpn接続するときに、「すべてのトラフィックをvpn接続経由で送信」をオンにしたりオフにする機能があります。
windowsでも同じようなことできますか?

 

はい、Windowsでも「すべてのトラフィックをVPN接続経由で送信」するかどうかを制御する機能があります。この機能は、WindowsのVPN設定で「デフォルトゲートウェイをリモートネットワークに使用する」というオプションで管理されます。

以下に手順を示します。

 

手順:WindowsでVPNのトラフィック設定を変更する方法
VPN接続の設定を開く

「スタート」メニューから「設定」を開きます。
「ネットワークとインターネット」を選択します。
左側の「VPN」を選択し、設定済みのVPN接続を見つけます。
VPNプロパティを開く

接続済みのVPNを選択し、「詳細オプション」または「変更する」リンクをクリックします。
もしくは、「コントロールパネル」 → 「ネットワークと共有センター」 → 「アダプターの設定の変更」を開きます。
VPN接続を右クリックし、「プロパティ」を選択します。
IP設定を変更する

「プロパティ」ウィンドウが開いたら、「ネットワーク」タブに移動します。
「インターネットプロトコル バージョン4 (TCP/IPv4)」を選択し、「プロパティ」をクリックします。
「詳細設定」ボタンをクリックします。
デフォルトゲートウェイの設定を変更する

「IP設定」タブで、「リモートネットワーク上のデフォルトゲートウェイを使用する」というチェックボックスがあります。
オンにする: すべてのトラフィックをVPN経由で送信します。
オフにする: 必要なトラフィックだけがVPNを経由します。
設定を保存する

「OK」ボタンを押して設定を保存し、ウィンドウを閉じます。

 

JavaScript 即時実行関数(IIFE: Immediately Invoked Function Expression)

JavaScript 即時実行関数(IIFE: Immediately Invoked Function Expression)

1. IIFEの基本構文

IIFEは、定義と同時に実行されるJavaScriptの関数です。以下が基本的な構文です。

(function () {
    console.log("This function runs immediately!");
})();

2. IIFEを分解して理解する

以下の例を見て、IIFEの構造を分解して考えましょう。

// 1. 通常の無名関数
function () {
    console.log("IIFE!");
}

// 2. 無名関数を丸括弧で囲む
(function () {
    console.log("IIFE!");
})

// 3. 即時実行のためにもう一つの括弧を追加
(function () {
    console.log("IIFE!");
})();

3. 必要最小限に注目する

IIFEは以下の2つのカッコに注目すると覚えやすいです。

  • 外側の括弧: 関数全体を「式」に変換
  • 内側の括弧: 関数を即時実行

4. 実践例で練習

スコープを分ける

IIFEを使って変数のスコープを限定できます。

(function () {
    let temp = "Temporary Variable";
    console.log(temp); // "Temporary Variable"
})();

console.log(typeof temp); // "undefined"

引数付きのIIFE

IIFEに引数を渡すこともできます。

(function (name) {
    console.log(`Hello, ${name}!`);
})("Alice");

モダンな書き方

アロー関数を使うとスッキリ書けます。

(() => {
    console.log("Hello, modern IIFE!");
})();

5. 練習問題

問題1

IIFEを使って”Hello, World!”を出力してください。

(function () {
    console.log("Hello, World!");
})();

問題2

引数付きIIFEを作り、2つの数を足した結果を出力してください。

(function (a, b) {
    console.log(a + b);
})(3, 4);

6. 記憶のコツ

「(関数)実行するよ!」と覚えるとわかりやすいです。

// 覚えやすい流れ
(function() { console.log("実行するよ!"); })();

7. 実際に手を動かす

コードを自分で書いて慣れることが一番重要です。上記の問題を試してみましょう!

 

JavaScript: this, arguments, newについて

JavaScript: this, arguments, newについて

thisとは?

thisは、関数が呼び出された際の文脈(コンテキスト)を指します。関数の呼び出し方によって、thisが何を指すかが変わります。

例1: オブジェクト内のメソッドでのthis


const obj = {
name: 'Alice',
greet: function () {
console.log(this.name); // 'Alice'
}
};
obj.greet();

例2: 通常の関数でのthis


function showThis() {
console.log(this); // グローバルオブジェクト(strictモードではundefined)
}
showThis();

例3: 矢印関数でのthis


const obj = {
name: 'Alice',
greet: () => {
console.log(this.name); // 外側のスコープのthisを指すためundefined
}
};
obj.greet();

argumentsとは?

argumentsは、通常の関数内で利用できる特別なオブジェクトで、関数に渡されたすべての引数を保持します。


function sum() {
console.log(arguments); // 配列のようなオブジェクト
return Array.from(arguments).reduce((total, num) => total + num, 0);
}
console.log(sum(1, 2, 3)); // 6

矢印関数での代替


const sum = (...args) => args.reduce((total, num) => total + num, 0);
console.log(sum(1, 2, 3)); // 6

newとは?

newは、コンストラクタ関数やクラスを基に新しいオブジェクトを作成するためのキーワードです。


function Person(name, age) {
this.name = name;
this.age = age;
}
const person1 = new Person('Alice', 25);
console.log(person1); // { name: 'Alice', age: 25 }

まとめ

キーワード説明主な特徴
this関数の呼び出し方によって異なるコンテキストを参照します。オブジェクトのメソッドやスコープを示す。
arguments関数に渡されたすべての引数を保持します。通常の関数でのみ使用可能(矢印関数では使用不可)。
newコンストラクタ関数やクラスを基に新しいオブジェクトを作成します。thisを新しいオブジェクトにバインド。

 

javascriptで、()とか{}とか[]の使い方違いなど教えて欲しい

javascriptで、()とか{}とか[]の使い方違いなど教えて欲しい
JavaScriptで使われる(), {}, []には、それぞれ異なる役割があります。それぞれの意味や使い方を以下で詳しく解説します。

1. ( )(丸括弧)
主な用途
1 関数の呼び出し: 関数を実行するために使用します。
function greet() {
console.log(“Hello!”);
}
greet(); // 関数の呼び出し

2 引数の指定:関数にデータを渡すときに使用します。
function add(a, b) {
return a + b;
}
console.log(add(2, 3)); // 5

3 グループ化(演算の優先順位):数学的な演算で優先順位を明確にするために使用します。
const result = (2 + 3) * 4; // 20

4 即時関数 (IIFE):関数を定義すると同時に実行します。
(function () {
console.log(“即時実行される関数”);
})();

2. { }(中括弧)
主な用途
1 ブロックの定義:条件分岐やループの処理をまとめるために使用します。
if (true) {
console.log(“条件が真の場合に実行される”);
}

2 オブジェクトリテラル:キーと値のペアを持つデータ構造を定義します。
const person = { name: “Alice”,
age: 25,
};
console.log(person.name); // Alice

3 スコープの定義:変数や関数のスコープを制限します。
{ let x = 10;
console.log(x); // 10
}
// console.log(x); // エラー: xはブロック外では未定義

4 関数やクラスのボディ:関数やクラスの中身を囲むために使います。
function greet() {
console.log(“Hello!”);
}

3. [ ](角括弧)
主な用途
1 配列の定義:順序を持つデータのリストを作ります。
const numbers = [1, 2, 3, 4];
console.log(numbers[0]); // 1

2 配列の要素のアクセス:配列内の特定の位置にある要素にアクセスします。
const fruits = [“apple”, “banana”, “cherry”];
console.log(fruits[1]); // banana

3 オブジェクトのプロパティアクセス:角括弧を使うことで、文字列キーや動的なプロパティにアクセスできます。
const obj = { key: “value” };
console.log(obj[“key”]); // value

4 デストラクチャリング:配列の値を取り出して、変数に代入します。
const [a, b] = [10, 20];
console.log(a); // 10
console.log(b); // 20

それぞれの違いをまとめた例

以下の例では、(), {}, []をすべて使用しています:

// 関数定義 ({} を使う)
function calculate(arr) {
// 配列にアクセスする ([])
const [a, b] = arr;

// 演算の優先順位を指定 (())
return (a + b) * 2;
}

// 関数呼び出し (())
const result = calculate([10, 20]); // 配列を渡す ([] を使う)

console.log(result); // 60

使い分けのポイント
• ( ):
◦ 関数を呼び出す、または演算のグループ化。
• { }:
◦ コードブロック、オブジェクトの定義、またはスコープの制御。
• [ ]:
◦ 配列の定義や要素のアクセス、または動的プロパティの取得。

用途がはっきりしているので、覚えれば混乱しにくくなります