# TypeScript

分類：言語
公式：https://www.typescriptlang.org/

言語別の既定：§2-1（/s/2.md）

## 選ぶ場面（§2-10）
- 実行環境がエッジ（Cloudflare Workers等）
- DBの読み書きと業務ロジックが中心：ボトルネックはDB。言語の性能差はほぼ効かないので、開発速度とチームで選ぶ
- 外部APIの待ち時間が中心：非同期I/Oの書きやすさと、フロントとの型共有
- サーバーレスのイベント処理：起動が速く、AWS SDKが充実。起動速度を詰めるならGo
- GraphQLサーバー：GraphQLのツール群がTypeScript中心

## 既定として使う役割
- 一般的なWeb API・SaaSのバックエンド（§2-9）：TypeScript（フロントと1言語に揃う）
  - 代替 Go：3人以上で公開APIを長期運用するとき（§2-10 手順3）
  - 負荷の性質で決まる場合は §2-10 を優先する
- エッジ関数（§2-9）：TypeScript（Cloudflare Workers）
  - 代替 Rust→WebAssembly：CPU負荷の高い処理がある
- LLM API呼び出し中心のAIアプリ（§2-9）：TypeScript
  - 代替 Python：埋め込み処理や評価などML系ライブラリを本格的に使うとき
- スクリプト・社内の小さな自動化（§2-9）：TypeScript（Node.jsで直接実行、またはBun）
  - 代替 Go：単一バイナリで配りたいとき
  - 代替 シェルスクリプト：数行で済むとき

## 代替として使う条件
- CRUD中心のWebアプリ・管理画面（§2-9、既定はRails（画面の多い業務システムを最も速く作れる））：外部API連携が中心、またはReactで画面を作り込みたいとき
- CLIツール（§2-9、既定はGo）：社内向けでnpmの資産を使いたい
- ブラウザ内の重い処理（画像・動画処理、暗号、大量データの解析）（§2-9、既定はRust → WebAssembly）：処理がそこまで重くないとき

## 採用の根拠（§22-2）
GitHubのOctoverse 2025（https://octoverse.github.com/）で、2025年8月に月間コントリビューター数でPythonとJavaScriptを抜き最も使われる言語になった。Next.jsやAstroなど主要フレームワークが既定でTypeScriptのプロジェクトを生成する。型によって多くの不具合をリリース前に検出でき、AIによるコード生成の誤りも型チェックで拾いやすい。フロントとバックエンドを1言語で書ける
懸念と回答：「JavaScriptより難しいのでは」→ 型は段階的に導入でき、エディタ補完が効くぶん学習もしやすい

## 成長したときの移行（§24）→ 一部をGo／Rustに切り出し
- きっかけ：CPU負荷・レイテンシがボトルネックになった
- 最初からの備え：APIをOpenAPIで定義しておき、実装言語を差し替えられるようにする

## ケース別の構成（§19）
- EC（独自要件が多い）：コマースエンジン＝Medusa（TypeScript）
- AI／LLMプロダクト：AIバックエンド＝LLM API呼び出し中心ならHono（TS）、埋め込み・ML処理があるならFastAPI（uv、Ruff、Pydantic）
