Skip to content

Latest commit

 

History

History
480 lines (380 loc) · 17.7 KB

File metadata and controls

480 lines (380 loc) · 17.7 KB

各章のスキルチェックリスト

このファイルには、第3章から第11章までのスキルチェックリストの内容を含みます。 各章のREADME.mdに挿入するためのテンプレートです。

第3章: JavaScript基礎

## この章で習得すべきスキル

学習を完了したら、以下の項目をチェックしてください:

### 基礎知識の理解
- [ ] JavaScriptエンジン(V8など)の役割を理解している
- [ ] DOMとは何か、なぜ必要なのかを説明できる
- [ ] イベント駆動プログラミングの概念を理解している
- [ ] 同期処理と非同期処理の違いを理解している
- [ ] イベントループの基本的な仕組みを理解している

### JavaScript 基本文法
- [ ] 変数の宣言(const, let, var)と使い分けができる
- [ ] 基本的なデータ型(string, number, boolean, null, undefined)を理解している
- [ ] 配列の基本操作(push, pop, map, filter)ができる
- [ ] オブジェクトの作成とプロパティアクセスができる
- [ ] 関数の定義と呼び出しができる
- [ ] アロー関数の書き方を理解している

### DOM操作
- [ ] `document.querySelector()`で要素を取得できる
- [ ] `element.textContent`でテキストを変更できる
- [ ] `element.classList.add/remove()`でクラスを操作できる
- [ ] `element.style`でスタイルを変更できる
- [ ] 新しい要素を作成して追加できる

### イベント処理
- [ ] `addEventListener()`でイベントリスナーを登録できる
- [ ] クリックイベントを処理できる
- [ ] input/changeイベントを処理できる
- [ ] イベントオブジェクトの使い方を理解している

### 実践スキル
- [ ] ボタンクリックで画面の内容を変更できる
- [ ] フォーム入力を取得して処理できる
- [ ] カウンターアプリを作成できる
- [ ] ブラウザの開発者ツールでデバッグできる

### 次のステップへの準備
- [ ] JavaScriptの型安全性の問題を理解している
- [ ] TypeScriptがなぜ必要なのかを理解している

第4章: TypeScript入門

## この章で習得すべきスキル

学習を完了したら、以下の項目をチェックしてください:

### 基礎知識の理解
- [ ] 静的型付けと動的型付けの違いを理解している
- [ ] TypeScriptがJavaScriptのスーパーセットであることを理解している
- [ ] コンパイル時の型チェックの利点を理解している
- [ ] TypeScriptの型推論の仕組みを理解している

### 基本的な型
- [ ] プリミティブ型(string, number, boolean)を使える
- [ ] 配列の型(string[], number[])を定義できる
- [ ] オブジェクトの型を定義できる
- [ ] union型(string | number)を使える
- [ ] optional型(?)を使える

### インターフェースと型エイリアス
- [ ] interfaceで型を定義できる
- [ ] type で型エイリアスを作成できる
- [ ] interface と type の違いを理解している

### 関数の型付け
- [ ] 引数の型を指定できる
- [ ] 戻り値の型を指定できる
- [ ] voidとundefinedの違いを理解している

### 実践スキル
- [ ] TypeScriptファイル(.ts)を作成できる
- [ ] 型エラーを読んで修正できる
- [ ] `npm run build`でコンパイルできる
- [ ] 型定義を見てAPIの使い方を理解できる

### React との統合
- [ ] Props の型を定義できる
- [ ] State の型を定義できる
- [ ] イベントハンドラの型を理解している

### 次のステップへの準備
- [ ] Reactで型安全なコンポーネントを書く準備ができている

第5章: React基礎

## この章で習得すべきスキル

学習を完了したら、以下の項目をチェックしてください:

### 基礎知識の理解
- [ ] 宣言的UIと命令的UIの違いを理解している
- [ ] Virtual DOMの仕組みと利点を理解している
- [ ] コンポーネントベースアーキテクチャの利点を理解している
- [ ] Reactの再レンダリングの仕組みを理解している

### JSX
- [ ] JSXの基本的な書き方を理解している
- [ ] {} で JavaScript式を埋め込める
- [ ] 条件分岐(&&, 三項演算子)を使える
- [ ] map()でリストをレンダリングできる
- [ ] key propsの重要性を理解している

### コンポーネント
- [ ] 関数コンポーネントを作成できる
- [ ] Propsを受け取って使用できる
- [ ] Props の型を TypeScript で定義できる
- [ ] コンポーネントを分割して再利用できる

### State管理
- [ ] useStateフックを使える
- [ ] 状態の更新方法を理解している
- [ ] 状態が変更されると再レンダリングされることを理解している
- [ ] イベントハンドラで状態を更新できる

### イベント処理
- [ ] onClickイベントを処理できる
- [ ] onChangeイベントを処理できる
- [ ] onSubmitイベントを処理できる
- [ ] event.preventDefault()の使い方を理解している

### 実践スキル
- [ ] カウンターコンポーネントを作成できる
- [ ] TodoアプリのUIを実装できる
- [ ] フォームの入力を管理できる
- [ ] React Developer Toolsを使ってデバッグできる

### 次のステップへの準備
- [ ] ルーティングが必要な理由を理解している
- [ ] Next.jsの利点を理解している

第6章: Next.js入門

## この章で習得すべきスキル

学習を完了したら、以下の項目をチェックしてください:

### 基礎知識の理解
- [ ] CSR, SSR, SSG, ISRの違いを理解している
- [ ] Hydrationの概念を理解している
- [ ] ファイルベースルーティングの仕組みを理解している
- [ ] App Routerの基本概念を理解している

### ルーティング
- [ ] app/ディレクトリの構造を理解している
- [ ] page.tsxの役割を理解している
- [ ] layout.tsxの役割を理解している
- [ ] 動的ルート([id])を作成できる
- [ ] Linkコンポーネントでナビゲーションできる

### データフェッチング
- [ ] Server Componentでデータを取得できる
- [ ] async/awaitでデータフェッチングできる
- [ ] loading.tsxでローディング状態を表示できる
- [ ] error.tsxでエラーハンドリングできる

### 画像最適化
- [ ] next/imageのImageコンポーネントを使える
- [ ] 画像の最適化の利点を理解している
- [ ] widthとheightを指定できる
- [ ] priorityプロパティの使い方を理解している

### スタイリング
- [ ] CSS Modulesを使える
- [ ] Tailwind CSSを使える
- [ ] グローバルスタイルとローカルスタイルを使い分けられる

### 実践スキル
- [ ] 複数ページのサイトを作成できる
- [ ] ナビゲーションを実装できる
- [ ] レイアウトを共通化できる
- [ ] ブログのような記事一覧・詳細ページを作成できる

### 次のステップへの準備
- [ ] フォームバリデーションの必要性を理解している
- [ ] APIとの連携方法を理解している

第7章: UX向上

## この章で習得すべきスキル

学習を完了したら、以下の項目をチェックしてください:

### 基礎知識の理解
- [ ] UXと技術実装の関係を理解している
- [ ] フォームの状態管理の複雑さを理解している
- [ ] 制御されたコンポーネントと非制御コンポーネントの違いを理解している
- [ ] クライアント側とサーバー側バリデーションの役割の違いを理解している
- [ ] 非同期処理の必要性を理解している

### フォーム処理
- [ ] useState でフォームデータを管理できる
- [ ] 入力値の変更を処理できる
- [ ] フォーム送信を処理できる
- [ ] バリデーションロジックを実装できる

### バリデーション
- [ ] 必須項目のチェックができる
- [ ] メールアドレスの形式チェックができる
- [ ] 文字数制限のチェックができる
- [ ] エラーメッセージを表示できる

### 非同期処理
- [ ] async/awaitを使ってAPIリクエストできる
- [ ] try-catch-finallyでエラーハンドリングできる
- [ ] Promiseの基本を理解している

### ローディング状態
- [ ] loadingステートを管理できる
- [ ] ローディングインジケーターを表示できる
- [ ] ボタンの disabled 状態を制御できる

### エラーハンドリング
- [ ] エラーステートを管理できる
- [ ] ユーザーフレンドリーなエラーメッセージを表示できる
- [ ] HTTPステータスコードに応じた処理ができる

### API通信
- [ ] fetch APIを使ってデータを取得できる
- [ ] POSTリクエストを送信できる
- [ ] レスポンスのJSONを解析できる

### 実践スキル
- [ ] お問い合わせフォームを実装できる
- [ ] カスタムフックを作成できる
- [ ] 簡単なWebサービス(天気アプリなど)を作成できる

### 次のステップへの準備
- [ ] デプロイの必要性を理解している
- [ ] 本番環境とローカル環境の違いを理解している

第8章: 公開と運用

## この章で習得すべきスキル

学習を完了したら、以下の項目をチェックしてください:

### 基礎知識の理解
- [ ] デプロイの意味を理解している
- [ ] ローカル環境と本番環境の違いを理解している
- [ ] DNSの仕組みを理解している
- [ ] CDNの役割と利点を理解している
- [ ] CI/CDの概念を理解している

### Vercel デプロイ
- [ ] Vercelアカウントを作成できる
- [ ] GitHubリポジトリと連携できる
- [ ] プロジェクトをインポートできる
- [ ] 自動デプロイの仕組みを理解している
- [ ] プレビューデプロイを活用できる

### 環境変数
- [ ] .env.localファイルを作成できる
- [ ] NEXT_PUBLIC_プレフィックスの意味を理解している
- [ ] Vercelで環境変数を設定できる
- [ ] 秘密情報を適切に管理できる

### ドメイン設定
- [ ] カスタムドメインの設定方法を理解している
- [ ] DNSレコードの設定ができる

### SEO対策
- [ ] metadataオブジェクトを設定できる
- [ ] titleとdescriptionを最適化できる
- [ ] Open Graphタグを設定できる
- [ ] sitemap.xmlを生成できる
- [ ] robots.txtを設定できる

### パフォーマンス最適化
- [ ] next/imageで画像を最適化できる
- [ ] next/fontでフォントを最適化できる
- [ ] dynamic importでコード分割できる
- [ ] Core Web Vitalsの概念を理解している

### アナリティクス
- [ ] Google Analyticsを設定できる
- [ ] Vercel Analyticsを有効化できる

### トラブルシューティング
- [ ] ビルドエラーを解決できる
- [ ] 環境変数の問題を解決できる
- [ ] PageSpeed Insightsでパフォーマンスを確認できる

### 実践スキル
- [ ] 自分のWebサイトを公開できる
- [ ] GitHubにコードをpushできる
- [ ] デプロイの状況を確認できる
- [ ] 本番URLにアクセスして動作確認できる

### 次のステップへの準備
- [ ] 継続的な改善の重要性を理解している
- [ ] ユーザーフィードバックの収集方法を理解している

第9章: 応用・総合制作

## この章で習得すべきスキル

学習を完了したら、以下の項目をチェックしてください:

### プロジェクト計画
- [ ] チュートリアルと実践の違いを理解している
- [ ] MVP思考でプロジェクトを計画できる
- [ ] プロジェクトのスコープを定義できる
- [ ] 要件を明確化できる

### 設計スキル
- [ ] ワイヤーフレームを描ける(紙でもツールでも)
- [ ] データ構造を設計できる
- [ ] TypeScriptの型定義から設計を始められる
- [ ] コンポーネント構成を考えられる

### アーキテクチャ
- [ ] Atomic Designの概念を理解している
- [ ] コンポーネントを適切に分割できる
- [ ] 状態管理の設計ができる
- [ ] Props Drilling問題を理解し、対処できる

### 開発プロセス
- [ ] ウォーターフォールとアジャイルの違いを理解している
- [ ] Git のブランチ戦略を理解している
- [ ] コミットメッセージを適切に書ける

### テストとデバッグ
- [ ] テストの重要性を理解している
- [ ] console.logで効果的にデバッグできる
- [ ] ブラウザの開発者ツールを使いこなせる
- [ ] エラーメッセージから問題を特定できる

### コード品質
- [ ] 単一責任の原則を理解している
- [ ] コードの可読性を意識できる
- [ ] 再利用可能なコンポーネントを作成できる
- [ ] 適切な命名ができる

### 実践スキル
- [ ] ゼロから個人プロジェクトを立ち上げられる
- [ ] プロジェクト構成を自分で決められる
- [ ] 問題を分解して解決できる
- [ ] 完成したプロジェクトをデプロイできる

### 継続的改善
- [ ] フィードバックを収集できる
- [ ] 優先順位をつけて改善できる
- [ ] パフォーマンスを測定できる
- [ ] アクセシビリティを考慮できる

### 次のステップへの準備
- [ ] さらに学ぶべき技術を特定できる
- [ ] 自分の強みと弱みを理解している
- [ ] 継続的な学習の重要性を理解している

第10章: Three.js入門

## この章で習得すべきスキル

学習を完了したら、以下の項目をチェックしてください:

### 基礎知識の理解
- [ ] WebGLとは何かを理解している
- [ ] GPUアクセラレーションの利点を理解している
- [ ] 3D座標系(X, Y, Z軸)を理解している
- [ ] Three.jsの3要素(Scene, Camera, Renderer)を理解している

### Three.js 基本
- [ ] Three.jsをプロジェクトにインストールできる
- [ ] Scene(シーン)を作成できる
- [ ] Camera(カメラ)を設定できる
- [ ] Renderer(レンダラー)を設定できる

### 3Dオブジェクト
- [ ] 基本的なジオメトリ(Box, Sphere, Plane)を作成できる
- [ ] マテリアルを設定できる
- [ ] Mesh(メッシュ)を作成できる
- [ ] シーンにオブジェクトを追加できる

### アニメーション
- [ ] requestAnimationFrame を理解している
- [ ] オブジェクトを回転させられる
- [ ] オブジェクトを移動させられる
- [ ] アニメーションループを実装できる

### ライティング
- [ ] ライトの種類を理解している
- [ ] AmbientLight(環境光)を追加できる
- [ ] DirectionalLight(平行光源)を追加できる

### インタラクション
- [ ] マウスイベントを処理できる
- [ ] カメラを制御できる
- [ ] OrbitControls を使える

### 実践スキル
- [ ] 回転する立方体を作成できる
- [ ] 簡単な3Dシーンを作成できる
- [ ] Reactと Three.js を統合できる

### 次のステップへの準備
- [ ] より高度な3D表現の可能性を理解している
- [ ] React Three Fiber の存在を知っている

第11章: アニメーション

## この章で習得すべきスキル

学習を完了したら、以下の項目をチェックしてください:

### 基礎知識の理解
- [ ] 60 FPSとフレームレートの概念を理解している
- [ ] requestAnimationFrame の利点を理解している
- [ ] ハードウェアアクセラレーションを理解している
- [ ] transformとopacityが高速な理由を理解している

### CSS アニメーション
- [ ] CSS transitionを使える
- [ ] transition のプロパティ(duration, timing-function)を理解している
- [ ] @keyframes でアニメーションを定義できる
- [ ] animation プロパティを設定できる

### JavaScript アニメーション
- [ ] requestAnimationFrame を使える
- [ ] setInterval との違いを理解している
- [ ] アニメーションの開始・停止を制御できる
- [ ] イージング関数の概念を理解している

### React アニメーション
- [ ] 状態変化によるアニメーションを実装できる
- [ ] 条件付きレンダリングでアニメーションできる

### Framer Motion
- [ ] Framer Motion をインストールできる
- [ ] motion コンポーネントを使える
- [ ] animate プロップでアニメーションできる
- [ ] variants でアニメーションを定義できる
- [ ] whileHover, whileTap を使える

### スクロールアニメーション
- [ ] スクロール位置を取得できる
- [ ] Intersection Observer API を理解している
- [ ] スクロールに応じたアニメーションを実装できる

### パフォーマンス
- [ ] will-change プロパティの使い方を理解している
- [ ] レイアウトシフトを避ける方法を理解している
- [ ] アニメーションのパフォーマンスを測定できる

### 実践スキル
- [ ] ボタンのホバーアニメーションを実装できる
- [ ] ページ遷移アニメーションを実装できる
- [ ] モーダルの開閉アニメーションを実装できる
- [ ] スクロールで要素をフェードインできる

### 次のステップへの準備
- [ ] UXを向上させるアニメーションの使い方を理解している
- [ ] やりすぎないアニメーションの重要性を理解している