本記事について
当サイトを閲覧いただきありがとうございます。 本記事はシリーズ『生成AI時代のアーキテクチャ超入門』の「ソフトウェアアーキテクチャ」カテゴリ第1弾として、プログラミング言語の選び方を解説する記事です。
「言語はフレームワークを、フレームワークは採用できる人材を縛る」──一度選ぶと10年単位でプロジェクトを拘束する、後から変えにくい決定です。本記事では主要言語の特徴と、規模・用途・人材市場・AI生成精度の4軸での選定基準を解説します。
本記事のテーマについてさらに詳しく知りたい方は『世界一わかりやすい IT業界のしくみとながれ』も参考にしてみてください。
この記事の結論
- WebはTypeScript、AI・データはPython、企業系はJava / C#、クラウドネイティブはGo
- 尖った言語は趣味に留め、業務は主流に寄せる
- 「5年後に書ける人が何人いるか」を数字で見て決める
- 既存資産の言語書き直しはAI時代でも割に合わない
この記事を読む前に
本記事はプログラムやAPIといった開発寄りの話が中心です。IT用語にあまり馴染みがない方は、基礎編の「プログラムとAPIの基本」を先に読んでおくと格段に分かりやすくなると思います。また、読んでいて分からない用語が出てきたときは用語集で調べながら読み進められます。
そもそもプログラミング言語選定とは何か
プログラミング言語選定とは、ざっくり言えば「どの言語でシステムを書くかを決めること」です。
外国語を学ぶ場面を想像してください。英語(TypeScript/Python)は話者が多く情報も豊富、ドイツ語(Java)は文法が厳格で大企業向き、ラテン語(C/C++)は古典で高速だが習得が大変。一度その言語で書き始めると、チームの人材・ライブラリ・ノウハウが全てその言語に蓄積され、途中で別の言語に切り替えるのは「今まで書いた論文を全部翻訳し直す」のと同じコストがかかります。
なぜ言語選定が重要なのか
もし言語選定を軽く考えたらどうなるか。5年後にその言語を書ける人材が市場にいなければ、採用も引き継ぎもできず、システムが技術的に孤立します。現在は用途ごとに最適な言語を選ぶ時代で、フロントエンドとバックエンドで異なる言語を組み合わせるのが普通です。
言語選定は全体構造と並ぶOne-way Doorです。5年後・10年後の人材市場を見据えて決めるのが鉄則です。
実行方式の分類
言語は実行方式によって大きく3つに分類されます。実行方式が処理速度と開発スピードのトレードオフを決めるため、選定の根底にある性質です。
| 実行方式 | 対象言語 | 仕組み |
|---|---|---|
| コンパイラ型 | C・C++・Rust・Go等 | 実行前に機械語へ一括翻訳。高速だが再コンパイルが必要 |
| インタプリタ型 | Python・Ruby・PHP等 | 一行ずつ実行。すぐ確認できるが遅い |
| 実行時コンパイラ型 | Java・C#・JavaScript等 | 中間言語を実行時にコンパイル。OS非依存で速度もそこそこ |
主要言語の使いどころ
TypeScript ― Web新規の本命
JavaScriptはブラウザ上で動く唯一の言語として普及し、2009年のNode.js登場でサーバー側も書けるフルスタック言語になりました。その上位互換として2012年にMicrosoftが開発したのがTypeScriptで、静的型付けによりコンパイル時に型チェックが入り、実行時のバグを大幅に減らせます。
フロントエンドはNext.js・React・Vue等の主要フレームワークが全てTS対応で「TypeScript一強」に近い状態です。バックエンドでもNode.js・Deno・Bunの各ランタイムで動作し、フロントとバックを同一言語・同一型定義で書ける効果はチーム全体の生産性を底上げします。Web系の新規プロジェクトはフロント・バック共にTypeScriptが現在の本命です。素のJavaScriptをバックエンドで選ぶのは、小規模スクリプト以外ではもう古い選択です。
Python ― AI・データ分析の事実上の標準
Pythonは「コードの可読性を最優先した設計思想」が特徴で、記述量がJavaやC#より大幅に少なく、学習コストも低い言語です。AI・データサイエンス領域では最もライブラリが潤沢で、AI開発は事実上Pythonが標準。PyTorch・TensorFlow・pandasは全てPython前提で、この領域では他言語の出番がないと言えるレベルです。インタプリタ型のため生の処理速度は遅いものの、主要ライブラリの中身はC/C++なので実用上は問題になりにくいです。弱点は動的型付けで、大規模開発では型ヒント(mypy)の厳格運用が前提になります。
Java / C# ― 企業系の定番
Javaは企業系システムで長年圧倒的なシェアを持ち、JVM上で動くためOS非依存、処理速度・安定性も高い言語です。Spring系フレームワークが充実しており、業務アプリ開発の標準として今も現役です。注意すべきはライセンスの罠で、Oracle JDKの商用利用は従業員数比例の高額ライセンス料(1,000人規模で年間約2,700万円)が発生します。一般用途は無料のOpenJDK(Amazon Corretto / Eclipse Temurin)が本命です。
C#はMicrosoft開発のクロスプラットフォーム言語で、Microsoft製品・Azureとの相性が極めて良く、処理速度と生産性のバランスにも優れます。ゲームエンジンUnityの標準言語でもあり、Microsoft系サービスを活用する場面では本命として検討すべき言語です。
Go / Rust ― クラウドネイティブと極限性能
GoはGoogleが開発した、シンプルさを徹底追求した言語です。キーワード数わずか25個で学習コストが低く、Docker・Kubernetes・Terraformなど現代インフラの主要ツールはほぼ全てGo製です。シングルバイナリで起動が速く、コンテナ・FaaS・マイクロサービスのAPIサーバーの定番です。
Rustはガベージコレクションの代わりに「所有権」という独自機構でメモリ安全性をコンパイル時に保証する言語です。学習曲線は極めて急ですが、C/C++並の速度とモダンな書きやすさを両立し、LinuxカーネルやWindowsコンポーネントでも採用が始まった「C/C++の置き換え候補」です。性能・安全性が絶対要件の新規プロジェクトで最も勢いがあります。
Ruby / PHP / C・C++ ― 既存資産の主
Ruby on Railsは個人・少人数でWebアプリを最速で立ち上げる用途では今も有力ですが、選定機会は減少傾向です。PHPはWordPress(全Webサイトの約7割)を支える稼働数最大級の言語で、WordPress案件・既存資産の保守が主戦場です。C/C++は組み込み・OS・AIライブラリのコアで不可欠ですが、新規案件はRustへの置き換えが進行中です。いずれも「既存資産があるから選ぶ」言語と割り切るのが2026年の整理です。
どう選べばいいのか ― 用途と人材市場で決める
用途で実質的な候補はほぼ決まります。API中心の新規WebアプリならTypeScript(フロントと型共有でき、開発速度と型安全を両立)。大規模・企業系・堅牢性重視ならJava / C#(実績・人材・成熟FWの三拍子)。AI・機械学習・データ分析はPython一択。コンテナ前提の高速サーバーはGo、極限性能とメモリ安全が要件ならRust。既存システムの保守・拡張は既存言語の継続一択で、言語を変えての書き直しはほとんどの場合割に合いません。
そして最後の決め手が人材市場です。「5年後に書ける人は何人いるか」を数値で把握すると判断が一気に明確になります。
※ 2026年4月時点の日本の採用市場の肌感覚です。
| 言語 | 国内人口の目安 | 採用難易度 | 主戦場 |
|---|---|---|---|
| JavaScript / TypeScript | 50万人〜 | 低(最も集めやすい) | Web・モバイル・BFF |
| Java | 40万人〜 | 低〜中 | 企業系業務・金融・官公庁 |
| Python | 30万人〜 | 低〜中(AI需要で拡大) | AI・データ・Web |
| C# / .NET | 15万人〜 | 中 | Azure・Unity |
| Go | 5万人〜 | 中〜高 | クラウドネイティブ |
| Rust | 1万人〜 | 高 | システム・Wasm |
「国内エンジニア人口が10万人未満の言語を業務で採用すると、採用に半年以上かかる」のが経験則です。スタートアップの求人票に「Rust必須」と書くと応募が10分の1になる、という話が現場でよく聞かれます。
3つのシナリオで考える
個人開発・スタートアップの場合
この規模ではTypeScript一択だと思います。フロントとバックエンドで型を共有できるため1人開発の生産性が最大化されますし、AIの生成精度も最高クラスです。AIやデータ処理の要件が出てきたら、Pythonを部分的に足す形で対応できます。RustやElixirのような尖った選択をすると、採用と情報量の面で後から必ず苦しむことになります。
中小SaaSの場合
Web層はTypeScript、バックエンドはGoかPython、という二本立てが現実的でしょう。国内のエンジニア人口が10万人未満の言語を主軸にしてしまうと、採用に半年以上かかってしまいます。なので、この規模では人材市場の厚さを一級基準に置くべきだと考えています。
大企業の場合
JavaとC#が今でも本命です。実績・人材・成熟したフレームワーク・LTSの四拍子が揃っており、10年運用にも耐えられます。既存システムの保守・拡張であれば既存言語の継続が一択で、言語を変えての書き直しはほとんどの場合割に合いません。
AI判断軸 ― 型の強さ×学習データ量
AI駆動開発が前提になると、言語選定の軸に「AIの生成精度・型推論の効き・学習データ量」が加わります。
型がある言語でAI生成の品質が変わる
AIがコードを生成するとき、型情報は「AIへのガードレール」として機能します。TypeScriptやGoのように型が明示されている言語では、AIが型に矛盾するコードを書いた瞬間にコンパイラが弾いてくれます。つまりAIのミスを機械的に検出できます。一方、動的型付け言語では型の不整合が実行時まで分からないため、AIの生成ミスがテストを通り抜けて本番に到達するリスクがあります。ただしPythonは例外的で、学習データ量が圧倒的に多いため生成精度自体は高く、AI/ML領域で選ぶのは依然として正解です。型の強さと学習データ量の両方が揃っているのがTypeScriptとGoです。
言語の書き直しはAI時代でも割に合わない
「AIがあるから他の言語に移行できる」と考える人もいますが、現実的ではありません。言語移行の難しさは文法の変換ではなく、エコシステム全体の置き換えです。テストコード・CI設定・デプロイスクリプト・運用ツール・チームの知識──これら全てが言語に紐付いているため、コード変換だけ終わっても移行は終わりません。既存資産がある場合は、今の言語のまま型付けを強化する(Python→mypy厳格化、JavaScript→TypeScript移行)方が、言語ごと変えるより遥かにコストが低いです。
やってはいけないこと
書き直しや言語変更で事故る典型パターンを、特に危険な6つに絞ります。
| 禁じ手 | なぜダメか → どうするか |
|---|---|
| 言語を「書き直しながら」置き換える(Big Bang Rewrite) | Netscapeが書き直しで3年を失いブラウザ戦争に敗北 → 段階移行(Strangler Fig)しか現実解がない |
| 新興言語を「流行だから」と業務採用 | エンジニアが集まらず成長期に移行する羽目になる → 5年後の人材市場で選ぶ |
| 動的型付け言語で中規模超えを進める | 型不在の代償が3年後に出る → 大規模は型付け言語か型ヒント厳格運用にする |
| Oracle JDKをライセンス確認せず商用利用 | 従業員数比例の高額請求が来る → Amazon Corretto / Eclipse Temurinにする |
| 1プロジェクトで5言語以上を混在 | 保守人員が分散し全体を把握できる人が消える → フロントTS+バック1言語の2言語以内にする |
| 言語バージョンをLTS以外で本番運用 | セキュリティパッチ切れまでの猶予が短い → LTSを基本に選定する |
筆者メモ ― 「その言語、日本に何人いる?」
若手エンジニアが新興言語を気に入って「業務でも使いたい」と提案した際、先輩アーキテクトが「その言語で書ける人、日本に何人いる?」と問い返し、提案者が答えに詰まって沈黙した──多くの現場で繰り返されている場面です。書いていて楽しいという感覚と、後任を採用できるかという経営判断は別レイヤーの問題です。
教訓は、「言語選定は技術判断であると同時に採用戦略」ということです。新興言語は個人の勉強や検証用プロジェクトで楽しみ、業務では「5年後も日本で数千人以上書ける言語」に倒すのが健全です。尖った選定の代償を払うのは、たいてい後任のチームです。
決めるべきこと — 自分のプロジェクトでの答えは?
以下の項目について、自分のプロジェクトの答えを1〜2文で言語化してみてください。曖昧なまま着手すると、必ず後から「なぜそう決めたんだっけ」が問われます。
- メイン言語(TypeScript / Python / Java / C# / Go / Rust等)
- ランタイム・バージョン(最新LTSを基本に選定)
- 用途別の追加言語(AI処理はPython、インフラはGo等)
- 型付け方針(TypeScript
strictモード・Python型ヒントの徹底度) - ライセンス体系の確認(Oracle JDKかOpenJDK / Correttoか)
- 5〜10年後の人材確保見込み
決定理由の残し方
言語選定はチーム編成・採用・保守コストに直結するため、選定理由をADRとして明文化しておくことが不可欠です。以下に具体例を示します。
| 項目 | 内容 |
|---|---|
| タイトル | バックエンド主要言語にTypeScriptを採用 |
| ステータス | 承認済み |
| コンテキスト | 新規SaaSプロダクトのバックエンド言語を選定する。フロントエンドはReact(TypeScript)で確定済み |
| 決定 | バックエンドもTypeScript(Node.js LTS)で統一する |
| 理由 | ・フロントエンドと型定義・バリデーションロジックを共有でき、開発効率が上がる ・チーム6名中5名がTypeScript経験者で、追加の学習コストが最小 ・npm エコシステムが豊富で、AI コード生成の精度も高い |
| 却下した代替案 | Go:型共有ができず、フロント・バック間のスキーマ同期コストが増える。Python:型安全性が弱く、大規模になるほど実行時エラーが増加する |
| 結果 | フロント・バックのモノレポ構成を採用し、共通パッケージで型定義を一元管理する |
プロジェクト開始時は自明に思える判断でも、1年後のメンバー交代時には「なぜGoではなくTypeScriptなのか」が必ず議論になります。後から見返したとき「なぜこの選択をしたか」が一目でわかることが、ADRの最大の価値です。
この記事に関連する記事
まとめ
本記事はプログラミング言語の選び方について、主要言語の特徴・人材市場・AI時代の判断軸まで含めて解説しました。如何だったでしょうか。
WEBはTypeScript、AI・データはPython、企業系はJava/C#、クラウドネイティブはGo、極限性能はRust、という棲み分けが2026年の現実解です。尖った言語は趣味で楽しみ、業務は主流に寄せる。これが採用と長期保守の両方を救います。
次回は「全体構造」(モノリス vs マイクロサービス vs モジュラーモノリス)について解説します。
シリーズ目次に戻る → 『生成AI時代のアーキテクチャ超入門』の歩き方
本記事で扱った内容の詳細は Stack Overflow Developer Survey も合わせて参考にしてください。
それでは次の記事も閲覧いただけると幸いです。
📚 シリーズ:生成AI時代のアーキテクチャ超入門(24/95)
