実行環境がエッジ(Cloudflare Workers等)
選ぶ言語TypeScript
§2
最終確認:2026年9月
strict: true)Railsの標準構成(「Rails omakase」)にできるだけ乗る。外部依存を増やさないことが最大のメリットになる。
既存のJava資産との連携、複雑な業務ルール、大規模バッチ、Kafkaなどのストリーム処理で選ぶ。
大量の常時接続、プレゼンス(誰がオンラインか)、障害からの自動復旧が中心の常駐サービスで選ぶ。
Unityのクライアントとサーバーでコードを共有したいとき、Microsoft/Azure中心の環境、Windows前提の業務システムで選ぶ。
言語は「何を作るか」で決まる。下表で当てはまる行を探して既定を使い、右の列の条件に当てはまるときだけ乗り換える。バックエンドはさらに細かく §2-10 で判断する。
バックエンドは「どんな負荷がかかるか」と「何に依存するか」で最適な言語が変わる。以下の順に確認し、最初に当てはまったところで決める。
実行環境の制約、コードを共有する相手の制約、組織の制約、ライブラリの制約の順に確認する(実行できない言語は、ライブラリがあっても選べないため)。
選ぶ言語TypeScript
選ぶ言語C#
選ぶ言語Kotlin
選ぶ言語C#
選ぶ言語その言語(機械学習ならPython)
選ぶ言語Go
第一候補TypeScript(画面の多い業務システムなら Rails)
次点Go(3人以上で公開APIを長期運用するとき)
典型例管理画面、予約、受発注、SaaSの大半
理由ボトルネックはDB。言語の性能差はほぼ効かないので、開発速度とチームで選ぶ
第一候補TypeScript
次点Go
典型例BFF、複数APIの集約、Webhook中継
理由非同期I/Oの書きやすさと、フロントとの型共有
第一候補Elixir
次点Go
典型例チャット、プレゼンス、通知配信、共同編集
理由軽量プロセスで数十万規模の接続を扱え、落ちた処理を自動で再起動する仕組みが言語に組み込まれている。それ未満のチャットや通知はマネージド(§19-9)で足りる
第一候補Go
次点Rust
典型例APIゲートウェイ、プロキシ、ゲームのロビー
理由goroutineで並行処理が簡潔に書け、運用も単純
第一候補Rust
次点Go
典型例広告入札、取引、リアルタイム対戦の判定
理由GCによる停止がない
第一候補Rust
次点Go
典型例画像・動画変換、圧縮、暗号、シミュレーション
理由ネイティブ性能とメモリ効率
第一候補Python
次点Rust(推論のみ)
典型例推論API、レコメンド、特徴量計算
理由ライブラリがPythonに集中している
第一候補Kotlin
次点Go、TypeScript
典型例会計、金融、保険、大規模な在庫・物流
理由sealed classなどで状態を型で表現しやすく、トランザクションやバッチの基盤が成熟している
第一候補Kotlin(Spring Batch)
次点Go、Python
典型例夜間の一括計算、請求締め、データ移行
理由再実行・中断再開・分割実行の仕組みが揃っている
第一候補Kotlin(Kafka Streams)
次点Go
典型例Kafkaのイベント集計、リアルタイム分析
理由Kafka周辺のエコシステムがJVM中心
第一候補言語よりエンジンで決める:Temporal(Go/TypeScript)
次点Step Functions
典型例決済→発送→通知、人の承認待ち
理由リトライ・待機・状態保持をエンジンに任せる
第一候補TypeScript
次点Go、Python
典型例SQS消費、S3トリガー、定期実行
理由起動が速く、AWS SDKが充実。起動速度を詰めるならGo
第一候補TypeScript
次点Go(gqlgen)
典型例多様なクライアント向けの集約API
理由GraphQLのツール群がTypeScript中心
第一候補Go(Connect)
次点Kotlin、Rust
典型例社内マイクロサービス
理由Protocol Buffers周りのツールが充実し、単一バイナリで配りやすい