Skip to content

多言語統合解説

本章では、12 言語(Java, Python, TypeScript, Ruby, Go, PHP, Rust, C#, F#, Clojure, Scala, Elixir, Haskell)による FizzBuzz TDD 実装を横断的に比較し、言語の設計思想、テストフレームワーク、TDD パターン、型システム、開発環境を統合的に解説します。

本章の目的

各言語の個別解説では、その言語固有の文法や開発フローに焦点を当てました。本章では視点を上げて、以下の問いに答えます。

  • パラダイムの違いは TDD にどのような影響を与えるか
  • テストフレームワークの設計は言語の哲学をどう反映しているか
  • 型システムの強さはエラーハンドリングにどう影響するか
  • Nix による統一開発環境は多言語プロジェクトにどう貢献するか

対象言語一覧

言語 テスト FW ビルドツール リンター パラダイム
Java JUnit 5 Gradle Checkstyle, PMD OOP
Python pytest pip/venv Ruff マルチ
TypeScript Vitest npm ESLint, Prettier マルチ
Ruby Minitest Bundler RuboCop OOP/FP
Go testing go mod golangci-lint 構造化
PHP PHPUnit Composer PHP_CodeSniffer, PHPStan, PHPMD OOP
Rust cargo test Cargo Clippy, rustfmt マルチ
C# xUnit .NET SDK dotnet format OOP
F# xUnit .NET SDK FSharpLint FP/OOP
Clojure clojure.test Leiningen Eastwood, Kibit FP
Scala ScalaTest sbt scalafmt, WartRemover OOP/FP
Elixir ExUnit Mix Credo FP
Haskell HSpec Stack HLint 純粋 FP

Note: C# と F# は dotnet 環境として 1 つのイテレーションにまとめています。

章構成

タイトル 内容
1 12 言語の概要と分類 パラダイム分類、型システム、ランタイム、FizzBuzz コア実装比較
2 テストフレームワーク比較 テスト構造、アサーション、実行コマンドの比較
3 パラダイム別 TDD パターン比較 OOP/FP の TDD、ポリモーフィズム、コマンドパターン比較
4 型システムとエラーハンドリング比較 静的/動的型付け、Option/Result パターン、型安全性
5 開発環境と CI/CD 比較 Nix 統一環境、ビルド/リンター比較、CI/CD パターン
6 学習ロードマップ 推奨学習順序、概念マップ、次のステップ

読み方のガイド

本章は以下の 3 通りの読み方を想定しています。

通読

第 1 章から順に読み進めることで、12 言語の全体像を俯瞰できます。

リファレンス

特定のトピック(テストフレームワーク、型システムなど)に興味がある場合は、該当する章を直接参照してください。

言語選択の参考

新しい言語を学ぶ際のガイドとして、第 6 章の学習ロードマップから始めることをお勧めします。

前提知識

  • 少なくとも 1 つの言語の個別解説を読了済み(推奨: Java または Python)
  • TDD の基本サイクル(Red-Green-Refactor)の理解
  • FizzBuzz 問題の仕様を把握済み

凡例

本章のコード例は、各言語の apps/ ディレクトリにある実装から抽出しています。すべての開発環境は Nix(nix develop .#{lang})で統一されています。