コンテンツにスキップ

TypeScriptで学ぶ関数型プログラミング

ようこそ! 👋

この教材は、TypeScriptを使って関数型プログラミング(関数を中心にプログラムを組み立てる考え方)の基礎から実践までを学ぶためのガイドです。

この教材の特徴

  • 🎯 実践的 - 実際のコードを書きながら学習
  • 📚 段階的 - 基礎から応用まで順を追って解説
  • 🛠️ TypeScript特化 - TypeScriptの型システムを活用した実装
  • 🔰 初心者にやさしい - 専門用語を丁寧に解説

関数型プログラミングって何? 🤔

関数型プログラミングとは、プログラムを「関数の組み合わせ」で作る考え方です。

たとえば、料理で考えてみましょう: - 従来の方法:鍋の中身を直接かき混ぜながら調理(データを直接変更) - 関数型の方法:材料を新しいボウルに移して調理(新しいデータを作成)

なぜ関数型プログラミングを学ぶのか?

🛒 実例:ECサイトのカート機能で考える

従来の書き方では、こんなバグが起きやすいです:

// 😰 バグが起きやすい例
let cartTotal = 0;
function addToCart(price) {
    cartTotal += price;  // 直接変更するので、どこで変わったか追いにくい
}

関数型なら:

// 😊 安全な例
function addToCart(currentTotal, price) {
    return currentTotal + price;  // 新しい合計を返すだけ
}

メリットまとめ

  • 🎯 予測可能なコード - 関数の動作が入力だけで決まる
  • 🧪 テストしやすい - 同じ入力なら必ず同じ結果
  • 🚀 並行処理に強い - データを変更しないので同時実行OK
  • 🐛 バグの減少 - どこでデータが変わったか明確

この教材で学べること

🌱 入門編

🏗️ 基礎編

🚀 応用編

前提知識

この教材を始める前に必要な知識:

必須

  • JavaScriptの基本 - 変数、関数、配列の使い方
  • TypeScriptの基本 - 型の指定方法(numberstringなど)

あると良い(なくても大丈夫!)

  • 📝 配列のmapfilterの使用経験(教材内で詳しく説明します)
  • 📝 Promiseの基礎知識(第8章で必要ですが、そこで説明します)

初めての方へ

TypeScriptが初めての方は、先にTypeScript入門で基本を学ぶことをおすすめします。 でも、JavaScriptがわかれば、この教材を読みながら学ぶこともできます!

環境構築

# サンプルコードのセットアップ
git clone https://github.com/kmizu/easy-fp.git
cd easy-fp/examples
npm install

サンプルコードの実行

各章にはサンプルコードが含まれています。以下のコマンドで実行できます:

# TypeScriptコードの実行
npm run dev

# テストの実行
npm test

学習の進め方

📖 効果的な学習方法

  1. 順番に読む - 各章は前の章の知識を積み上げていきます
  2. コードを実行 - 読むだけでなく、必ず手を動かしましょう
  3. エラーを恐れない - エラーメッセージは学習のチャンス!
  4. 練習問題に挑戦 - 段階的なヒントを活用して考えてみよう

🎯 学習のコツ

こんな風に学ぼう

// 1. まずコードを読んで予想
const numbers = [1, 2, 3];
const doubled = numbers.map(n => n * 2);
// 予想:[2, 4, 6]になるはず...

// 2. 実行して確認
console.log(doubled); // 実際の結果を見る

// 3. 少し変えて実験
const tripled = numbers.map(n => n * 3);
console.log(tripled); // どうなるか試してみる

⏱️ 学習時間の目安

  • 入門編(1-3章): 各章30分〜1時間
  • 基礎編(4-6章): 各章1〜2時間
  • 応用編(7-9章): 各章2〜3時間

無理せず、自分のペースで進めましょう!

フィードバック

質問や提案がある場合は、GitHubのIssueでお知らせください。

🔤 用語について

この教材では、専門用語が出てきたときは必ず日本語で説明します。

例: - イミュータブル(不変性) → データを変更しない性質 - 純粋関数 → 同じ入力なら必ず同じ結果を返す関数 - 副作用 → 関数が計算以外のことをすること

わからない用語があったら、用語集も参照してください!


それでは、関数型プログラミングの世界へ踏み出しましょう! 🎉

第1章: 関数型プログラミングの基礎 →

困ったときは