ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
JavaScript とは
JavaScript (JS) は、Web ブラウザの動的な挙動を実現するために 1995 年に Brendan Eich が Netscape Navigator 向けに 10 日間で開発した言語です。当初は Java の人気にあやかった命名で、Java とは無関係です。
現在は ECMA International が ECMAScript として標準化し、毎年 6 月に新バージョン(ES2015、ES2016...)がリリースされます。Node.js の登場以降、サーバーサイド・モバイル・デスクトップアプリ(Electron)まで広がる汎用言語となりました。
ECMAScript のバージョン進化
| バージョン | 年 | 主な追加機能 |
|---|---|---|
| ES5 | 2009 | strict mode、JSON、Array.forEach/map |
| ES6 (ES2015) | 2015 | let/const、アロー関数、Class、Promise、Module、Map/Set、テンプレートリテラル |
| ES2016 | 2016 | Array.includes、** 演算子 |
| ES2017 | 2017 | async / await、Object.values/entries |
| ES2018 | 2018 | spread/rest for objects、非同期 iteration |
| ES2019 | 2019 | Array.flat、Object.fromEntries、try-catch optional binding |
| ES2020 | 2020 | ?.(optional chaining)、??(nullish coalescing)、BigInt |
| ES2021 | 2021 | String.replaceAll、Promise.any、論理代入演算子 |
| ES2022 | 2022 | top-level await、Class fields、at() |
| ES2023 | 2023 | Array.findLast、配列の non-mutating メソッド |
モダン構文(ES6+)の例
// let / const(var は使わない)
const PI = 3.14;
let count = 0;
count++;
// テンプレートリテラル
const name = "JavaScript";
console.log(`Hello, ${name}!`);
// アロー関数
const add = (a, b) => a + b;
const square = x => x * x;
// 分割代入
const user = { name: "Alice", age: 30 };
const { name: userName, age } = user;
const [first, second, ...rest] = [1, 2, 3, 4, 5];
// スプレッド構文
const arr1 = [1, 2, 3];
const arr2 = [...arr1, 4, 5];
const merged = { ...user, role: "admin" };
// クラス
class Animal {
constructor(name) { this.name = name; }
speak() { return `${this.name} makes a sound`; }
}
class Dog extends Animal {
speak() { return `${this.name} barks`; }
}
// Promise / async-await
async function fetchUser(id) {
try {
const res = await fetch(`/api/users/${id}`);
if (!res.ok) throw new Error("Network error");
return await res.json();
} catch (err) {
console.error(err);
}
}
// Optional chaining と Nullish coalescing
const city = user?.address?.city ?? "Unknown";
// 配列メソッド(イミュータブル)
const nums = [1, 2, 3, 4, 5];
const doubled = nums.map(n => n * 2);
const evens = nums.filter(n => n % 2 === 0);
const sum = nums.reduce((acc, n) => acc + n, 0);
// モジュール(ESM)
// utils.js
export const greet = name => `Hello ${name}`;
export default function add(a, b) { return a + b; }
// main.js
import add, { greet } from './utils.js';
ブラウザ JS と Node.js
| 項目 | ブラウザ JS | Node.js |
|---|---|---|
| 実行環境 | Chrome / Firefox / Safari 等のブラウザ | サーバー(V8 エンジン上で動作) |
| グローバルオブジェクト | window / document | global / process |
| I/O | fetch、DOM API | fs、http、net 等 |
| モジュール | ESM() | CommonJS(require)/ ESM |
| 用途 | UI、SPA、PWA | API サーバー、CLI、ツール |
DOM 操作の基礎
// 要素の取得
const btn = document.getElementById("myBtn");
const items = document.querySelectorAll(".item");
const first = document.querySelector(".item:first-child");
// イベント
btn.addEventListener("click", (e) => {
console.log("Clicked!", e.target);
});
// 要素の作成・追加
const div = document.createElement("div");
div.textContent = "Hello";
div.classList.add("greeting");
document.body.appendChild(div);
// 属性とスタイル
btn.setAttribute("disabled", "");
btn.style.color = "red";
btn.classList.toggle("active");
// Fetch API でデータ取得
fetch("/api/data")
.then(res => res.json())
.then(data => console.log(data))
.catch(err => console.error(err));
TypeScript との関係
TypeScript (TS) は Microsoft 製のJavaScript の上位互換言語。静的型付け、インターフェース、Generics 等を追加し、コンパイル時に JavaScript に変換されます。大規模アプリでは TS が事実上の標準です。
// TypeScript の例
interface User {
id: number;
name: string;
email?: string; // optional
}
function getUser(id: number): Promise {
return fetch(`/api/users/${id}`).then(res => res.json());
}
const users: User[] = [
{ id: 1, name: "Alice" },
{ id: 2, name: "Bob", email: "bob@example.com" }
];
エコシステム
| カテゴリ | 代表ツール |
|---|---|
| パッケージマネージャ | npm(標準)、yarn(高速)、pnpm(省ディスク) |
| UI フレームワーク | React(Meta)、Vue、Angular(Google)、Svelte、Solid |
| SSR / メタフレームワーク | Next.js(React)、Nuxt(Vue)、Remix、Astro |
| ビルドツール | Vite(高速)、Webpack、esbuild、Rollup、Parcel |
| テスト | Jest、Vitest、Playwright、Cypress |
| Lint / Format | ESLint、Prettier、Biome |
| Node.js ランタイム | Node.js、Deno、Bun |
Hello World と簡単な動作確認
# Node.js インストール(macOS)
brew install node
node --version # v20.x
npm --version
# 1 行実行
node -e "console.log('Hello, JavaScript!')"
# ファイル実行
echo "console.log('Hello')" > hello.js
node hello.js
# npm でプロジェクト初期化
mkdir my-app && cd my-app
npm init -y
npm install express
FAQ
Q: JavaScript と Java の関係は?
A: 全く別物。1995 年当時の Java ブームに便乗した命名というだけで、文法も思想も異なります。
Q: var / let / const どれを使う?
A: const をデフォルト、再代入が必要なときだけ let。var は変数の巻き上げ・関数スコープの罠があり使わないこと。
Q: jQuery はまだ必要?
A: ES6+ で多くの jQuery の機能(querySelector、fetch、classList)がネイティブ実装されました。新規プロジェクトでは不要。
Q: TypeScript を学ぶべき?
A: 規模が大きくなる予定があるなら必須。型による補完・リファクタリング支援は強力。React + TS が現在の Web 開発標準です。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Laravel キャッシュクリア完全ガイド(cache:clear / config:clear / 2026-05-18 07:42:07
- プロジェクトの作成と削除 2026-05-18 07:42:07
- インストール直後にNetbeansが反応しない 2026-05-18 07:42:07
- 動画やチャンネルの検索 2026-05-18 07:42:07
- APIキー取得方法 2026-05-18 07:42:07
- チャンネル情報の取得 2026-05-18 07:42:07
- API 入門 — Web API(REST / GraphQL / gRPC / 2026-05-18 07:42:07
- インストール(eclipseプラグイン) 2026-05-18 07:42:07
- Laravel「Dotenv values containing spaces must be surrounded 2026-05-18 07:42:07
- エラー一覧 2026-05-18 07:42:07
- curl: (51) SSL: certificate subject name '~' does not match 2026-05-18 07:42:07
- インストール方法(Windows版) 2026-05-18 07:42:07
- JSONから配列に変換 2026-05-18 07:42:07
- 処理を一定時間待つ 2026-05-18 07:42:07
- A non well formed numeric value encountered 2026-05-18 07:42:07
コメントを削除してもよろしいでしょうか?