プログラミング言語 人気ランキング - 主要言語の特徴・用途・歴史まとめ
プログラミング言語の人気度を測る主要な指標と、上位にランクインする言語の特徴・用途・歴史を体系的に整理する。
人気ランキングの主要指標
プログラミング言語の人気度は、複数の異なる指標から多角的に評価される。単一の指標だけで「最も人気のある言語」を断定することはできない。
| 指標 | 測定対象 | 特徴 |
|---|---|---|
| TIOBE Index | 検索エンジンでの言語名の検索量 | 歴史が長く、月次更新。学術・教育分野の動向も反映 |
| GitHub Octoverse | GitHubリポジトリでの使用言語 | オープンソース・実務での採用状況を反映 |
| Stack Overflow Survey | 開発者アンケート | 「使用中」「学びたい」「好き/嫌い」など多面的な調査 |
| PYPL Index | Google Trendsでの言語チュートリアル検索量 | 学習需要の指標として有用 |
| RedMonk Rankings | GitHubとStack Overflowのデータを統合 | 実務と議論の両面を反映 |
| IEEE Spectrum | 求人・論文・GitHub・Twitterなど複合指標 | カスタマイズ可能な重み付け |
主要指標別ランキング
各指標の最新データを以下に示す。指標ごとに測定対象が異なるため、順位にはばらつきがある。
TIOBE Index(2026年2月)
検索エンジンでの言語関連クエリの量に基づくランキング。
| 順位 | 言語 | レーティング |
|---|---|---|
| 1 | Python | 21.81% |
| 2 | C | 11.05% |
| 3 | C++ | 8.55% |
| 4 | Java | 8.12% |
| 5 | C# | 6.83% |
| 6 | JavaScript | 2.92% |
| 7 | Visual Basic | 2.85% |
| 8 | R | 2.19% |
| 9 | SQL | 1.93% |
| 10 | Delphi/Object Pascal | 1.88% |
Pythonが21.81%で首位を維持しているが、2025年7月のピーク(26.98%)からは低下傾向にある。2024年の「Programming Language of the Year」もPythonが受賞。
出典: TIOBE Index(2026年2月)
GitHub Octoverse(2024年)
GitHubリポジトリでの使用言語に基づくランキング。
| 順位 | 言語 |
|---|---|
| 1 | Python |
| 2 | JavaScript |
| 3 | TypeScript |
| 4 | Java |
2024年にPythonが初めてJavaScriptを抜いて首位を獲得。AI・機械学習・データサイエンス分野の拡大が背景にあり、Jupyter Notebookの使用量は前年比92%増を記録した。Rustもシステムプログラミング分野で成長が続いている。
出典: GitHub Octoverse 2024(2024年10月公開)
Stack Overflow Developer Survey(2024年)
65,437人の開発者を対象としたアンケート調査。「過去1年間に使用した言語」の回答率。
| 順位 | 言語 | 使用率 |
|---|---|---|
| 1 | JavaScript | 62.3% |
| 2 | Python | 51.0% |
| 3 | SQL | 51.0% |
| 4 | TypeScript | 38.5% |
| 5 | Java | 30.3% |
| 6 | C# | 27.1% |
| 7 | C++ | 23.0% |
| 8 | C | 20.3% |
| 9 | PHP | 18.2% |
| 10 | Go | 13.5% |
JavaScriptが62.3%で使用率トップ。「最も賞賛されている言語」ではRustが83%のスコアで首位を獲得。
PYPL Index(2026年)
Google Trendsでの言語チュートリアル検索量に基づくランキング。
| 順位 | 言語 | シェア | 前年比 |
|---|---|---|---|
| 1 | Python | 34.87% | +4.4% |
| 2 | C/C++ | 13.66% | +6.6% |
| 3 | Java | 9.82% | -5.4% |
| 4 | R | 6.49% | +1.9% |
| 5 | JavaScript | 4.90% | -3.2% |
| 6 | Swift | 3.50% | +1.1% |
| 7 | Rust | 3.08% | +0.0% |
| 8 | C# | 3.03% | -3.1% |
| 9 | PHP | 2.90% | -0.8% |
| 10 | Ada | 2.66% | +1.3% |
Pythonが34.87%で圧倒的首位。C/C++の学習需要が前年比+6.6%と大きく伸びている一方、Javaは-5.4%と低下傾向。
RedMonk Rankings(2024年Q2)
GitHubの使用量とStack Overflowの議論量を統合したランキング。
| 順位 | 言語 | 順位 | 言語 |
|---|---|---|---|
| 1 | JavaScript | 11 | Swift |
| 2 | Python | 12 | Go |
| 3 | Java | 12 | R |
| 4 | PHP | 14 | Shell |
| 5 | C# | 14 | Kotlin |
| 6 | TypeScript | 14 | Scala |
| 7 | CSS | 17 | Objective-C |
| 7 | C++ | 18 | PowerShell |
| 9 | Ruby | 19 | Rust |
| 10 | C | 19 | Dart |
Top 10は非常に安定しており、TypeScriptが単独6位に到達。JVM系言語(Kotlin、Scala)の上昇とObjective-Cの下落(過去最低の17位)が目立つ。
指標横断の総合傾向
| 順位帯 | 言語 | 根拠 |
|---|---|---|
| 1-3位 | Python, JavaScript, Java | 全指標でTop 5入り。Pythonは4指標で首位 |
| 4-6位 | TypeScript, C/C++, C# | 複数指標でTop 10常連。特定分野で圧倒的シェア |
| 7-10位 | Go, PHP, Rust, Ruby | 指標により順位の振れが大きいが、いずれも主要言語 |
| 11-15位 | Swift, Kotlin, R, Dart, Scala | 特定プラットフォームや分野で重要な役割 |
主要言語の詳細
Python
| 項目 | 内容 |
|---|---|
| 登場年 | 1991年 |
| 開発者 | Guido van Rossum |
| 型システム | 動的型付け |
| パラダイム | マルチパラダイム(手続き型、オブジェクト指向、関数型) |
| 主な実行環境 | CPython(インタプリタ) |
特徴: 可読性を重視した簡潔な文法が最大の特徴。インデントでブロックを表現し、少ないコード量で処理を記述できる。豊富な標準ライブラリと巨大なパッケージエコシステム(PyPI)を持つ。
主な用途:
- AI・機械学習(TensorFlow, PyTorch, scikit-learn)
- データ分析・科学計算(pandas, NumPy, matplotlib)
- Web開発(Django, Flask, FastAPI)
- 自動化・スクリプティング
- 教育(プログラミング入門言語として広く採用)
歴史: Guido van Rossumが1989年のクリスマス休暇中に開発を開始。名前はイギリスのコメディ番組「Monty Python’s Flying Circus」に由来する。Python 2からPython 3への移行(2008年リリース、2020年にPython 2サポート終了)は言語史上最大規模の破壊的変更の一つとなった。2010年代後半からのAI/MLブームで爆発的に普及し、TIOBEランキングで首位を獲得した。
コードサンプル:
# リスト内包表記と型ヒント(Pythonらしい書き方)
def greet(name: str) -> str:
return f"Hello, {name}!"
names = ["Alice", "Bob", "Charlie"]
messages = [greet(name) for name in names]
for msg in messages:
print(msg)
# データ分析風(pandasライクなチェーン)
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
evens_squared = [n ** 2 for n in numbers if n % 2 == 0]
print(evens_squared) # [4, 16, 36, 64, 100]
JavaScript
| 項目 | 内容 |
|---|---|
| 登場年 | 1995年 |
| 開発者 | Brendan Eich(Netscape) |
| 型システム | 動的型付け |
| パラダイム | マルチパラダイム(プロトタイプベースOOP、関数型、イベント駆動) |
| 主な実行環境 | ブラウザ、Node.js、Deno、Bun |
特徴: Webブラウザ上で動作する唯一のネイティブ言語であり、フロントエンド開発では事実上の標準。Node.jsの登場によりサーバーサイドでも使用可能になった。非同期処理(Promise、async/await)に強い。
主な用途:
- フロントエンドWeb開発(React, Vue.js, Angular, Svelte)
- サーバーサイド開発(Node.js, Express, Next.js)
- モバイルアプリ(React Native, Expo)
- デスクトップアプリ(Electron)
- サーバーレス・エッジコンピューティング
歴史: Brendan Eichがわずか10日間で最初のプロトタイプを開発。当初は「LiveScript」という名前だったが、Javaの人気にあやかり「JavaScript」に改名された(Java言語とは無関係)。ECMAScriptとして標準化され、ES6(2015年)でクラス構文、アロー関数、モジュール等が追加されたことで、大規模開発にも対応できる言語へと進化した。
コードサンプル:
// 非同期処理(async/await)と配列操作
const fetchUser = async (id) => {
const response = await fetch(`https://api.example.com/users/${id}`)
return response.json()
}
// Promise.all で並行処理
const userIds = [1, 2, 3]
const users = await Promise.all(userIds.map(fetchUser))
// 分割代入とスプレッド構文
const { name, age, ...rest } = users[0]
const updated = { ...users[0], age: age + 1 }
console.log(`Hello, ${name}!`)
TypeScript
| 項目 | 内容 |
|---|---|
| 登場年 | 2012年 |
| 開発者 | Microsoft(Anders Hejlsberg) |
| 型システム | 静的型付け(JavaScriptのスーパーセット) |
| パラダイム | マルチパラダイム |
| 主な実行環境 | JavaScriptにコンパイルして実行 |
特徴: JavaScriptに静的型付けを追加した言語。既存のJavaScriptコードとの完全な互換性を保ちつつ、型安全性・コード補完・リファクタリング支援を提供する。大規模プロジェクトでの保守性を大幅に向上させる。
主な用途:
- 大規模Webアプリケーション開発
- フロントエンド/バックエンドの統一開発
- ライブラリ・フレームワーク開発
歴史: C#の設計者であるAnders HejlsbergがMicrosoftで開発を主導。JavaScriptの型安全性の欠如という課題を解決するために生まれた。Angularが公式採用言語としたことで普及が加速し、現在ではReact、Vue、Next.jsなど主要フレームワークでTypeScriptがデファクトスタンダードになっている。
コードサンプル:
// 型定義とジェネリクス
interface User {
id: number
name: string
email: string
}
// ユーティリティ型でオプショナルなPartialを作成
type UserUpdateInput = Partial<Omit<User, 'id'>>
async function updateUser(id: number, input: UserUpdateInput): Promise<User> {
const response = await fetch(`/api/users/${id}`, {
method: 'PATCH',
body: JSON.stringify(input),
})
if (!response.ok) throw new Error(`HTTP ${response.status}`)
return response.json() as Promise<User>
}
// 型推論が効いた呼び出し
const updated = await updateUser(1, { name: 'Alice' })
console.log(updated.name) // string として推論される
Java
| 項目 | 内容 |
|---|---|
| 登場年 | 1995年 |
| 開発者 | James Gosling(Sun Microsystems) |
| 型システム | 静的型付け |
| パラダイム | オブジェクト指向(クラスベース) |
| 主な実行環境 | JVM(Java Virtual Machine) |
特徴: 「Write Once, Run Anywhere」を掲げ、JVM上で動作することでプラットフォーム非依存を実現。強い型付けとオブジェクト指向設計により、大規模エンタープライズシステムの構築に適している。ガベージコレクションによる自動メモリ管理を提供。
主な用途:
- エンタープライズシステム(Spring Boot, Jakarta EE)
- Androidアプリ開発(現在はKotlinが推奨)
- 金融・銀行システム
- ビッグデータ処理(Hadoop, Spark, Kafka)
- マイクロサービスアーキテクチャ
歴史: Sun Microsystemsの「Green Project」から誕生。当初は家電向け組込み言語として開発されたが、Webアプレットで注目を集め、エンタープライズ分野で急速に普及した。2010年にOracleがSunを買収しJavaの所有権を取得。2017年からは6ヶ月ごとのリリースサイクルに移行し、レコード型(Java 14)、パターンマッチング(Java 16〜)、仮想スレッド(Java 21)など、モダンな機能の追加が続いている。
コードサンプル:
// レコード型(Java 14+)とストリームAPI
record User(int id, String name, String email) {}
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
var users = List.of(
new User(1, "Alice", "alice@example.com"),
new User(2, "Bob", "bob@example.com"),
new User(3, "Charlie", "charlie@example.com")
);
// ストリームで絞り込み・変換
var names = users.stream()
.filter(u -> u.id() > 1)
.map(User::name)
.collect(Collectors.toList());
names.forEach(System.out::println);
// Bob
// Charlie
}
}
C言語
| 項目 | 内容 |
|---|---|
| 登場年 | 1972年 |
| 開発者 | Dennis Ritchie(ベル研究所) |
| 型システム | 静的型付け |
| パラダイム | 手続き型 |
| 主な実行環境 | ネイティブコンパイル |
特徴: ハードウェアに近い低レベル操作が可能でありながら、高水準言語としての抽象化も備える。ポインタによる直接的なメモリ操作が可能で、実行速度が極めて高い。OSやシステムソフトウェアの実装言語として不可欠。
主な用途:
- OS開発(Linux, Windows, macOS)
- 組込みシステム・IoT
- デバイスドライバ
- データベースエンジン(SQLite, PostgreSQL)
- 言語処理系(CPython, Ruby MRI)
歴史: UNIXの開発過程でB言語の後継として誕生。Dennis RitchieとBrian Kernighanの共著『The C Programming Language』(K&R本、1978年)が事実上の標準となった。1989年にANSI C(C89)として標準化。50年以上経った現在でもTIOBEランキング上位に位置し続けており、システムプログラミングの基盤言語としての地位は揺るがない。
コードサンプル:
#include <stdio.h>
#include <stdlib.h>
// ポインタによる動的メモリ管理
int* create_array(int size) {
int* arr = (int*)malloc(size * sizeof(int));
if (arr == NULL) return NULL;
for (int i = 0; i < size; i++) {
arr[i] = i * i; // 二乗値を格納
}
return arr;
}
int main(void) {
int size = 5;
int* arr = create_array(size);
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]); // 0 1 4 9 16
}
printf("\n");
free(arr); // 手動でメモリ解放
return 0;
}
C++
| 項目 | 内容 |
|---|---|
| 登場年 | 1985年 |
| 開発者 | Bjarne Stroustrup(ベル研究所) |
| 型システム | 静的型付け |
| パラダイム | マルチパラダイム(手続き型、OOP、ジェネリック、関数型) |
| 主な実行環境 | ネイティブコンパイル |
特徴: C言語の拡張として設計され、オブジェクト指向・テンプレート・例外処理などを追加。ゼロコスト抽象化の哲学により、高い抽象度とC言語並みの実行速度を両立する。メモリ管理は手動だが、スマートポインタ(C++11〜)により安全性が向上。
主な用途:
- ゲームエンジン(Unreal Engine, Unity内部)
- ブラウザエンジン(Chrome, Firefox)
- 高頻度取引(HFT)システム
- 3Dグラフィックス・CAD
- 競技プログラミング
歴史: Bjarne Stroustrupが「C with Classes」として開発を開始。C++11(2011年)で大幅なモダン化が行われ、ラムダ式、ムーブセマンティクス、autoキーワードなどが導入された。以後3年ごとに改訂が続き(C++14, 17, 20, 23)、コンセプト、コルーチン、モジュールなど、現代的な機能が追加されている。
コードサンプル:
#include <iostream>
#include <vector>
#include <algorithm>
#include <memory>
// スマートポインタとラムダ式(モダンC++)
struct Point {
double x, y;
double distance() const { return std::sqrt(x*x + y*y); }
};
int main() {
std::vector<std::unique_ptr<Point>> points;
points.push_back(std::make_unique<Point>(3.0, 4.0));
points.push_back(std::make_unique<Point>(1.0, 1.0));
points.push_back(std::make_unique<Point>(5.0, 12.0));
// ラムダ式でソート
std::sort(points.begin(), points.end(),
[](const auto& a, const auto& b) {
return a->distance() < b->distance();
});
for (const auto& p : points) {
std::cout << p->distance() << "\n"; // 1.41, 5, 13
}
}
C#
| 項目 | 内容 |
|---|---|
| 登場年 | 2000年 |
| 開発者 | Microsoft(Anders Hejlsberg) |
| 型システム | 静的型付け |
| パラダイム | マルチパラダイム(OOP、関数型、ジェネリック) |
| 主な実行環境 | .NET CLR |
特徴: JavaとC++の影響を受けつつ、より洗練された構文と機能を持つ。LINQ(統合クエリ)、async/await(非同期処理)、パターンマッチングなど、生産性の高い機能が豊富。.NETのクロスプラットフォーム化により、Windows以外でも利用可能に。
主な用途:
- Windowsアプリケーション(WPF, WinUI, MAUI)
- ゲーム開発(Unity)
- Web API・Webアプリ(ASP.NET Core)
- クラウドサービス(Azure)
- エンタープライズシステム
歴史: Microsoftが.NET Frameworkの中核言語として開発。当初はJavaの対抗馬と見られていた。2016年に.NET Coreがオープンソース化・クロスプラットフォーム化されたことで、「Windows専用言語」のイメージを払拭。Unityゲームエンジンの標準スクリプト言語として採用されたことも、広範な普及に寄与した。
コードサンプル:
// LINQとパターンマッチング(C# 9+)
record User(int Id, string Name, string Role);
var users = new List<User>
{
new(1, "Alice", "admin"),
new(2, "Bob", "user"),
new(3, "Charlie", "admin"),
};
// LINQによるクエリ
var admins = users
.Where(u => u.Role == "admin")
.Select(u => u.Name)
.ToList();
// パターンマッチング
foreach (var user in users)
{
var message = user switch
{
{ Role: "admin" } => $"{user.Name} は管理者です",
{ Role: "user" } => $"{user.Name} は一般ユーザーです",
_ => "不明なロール",
};
Console.WriteLine(message);
}
Go(Golang)
| 項目 | 内容 |
|---|---|
| 登場年 | 2009年 |
| 開発者 | Google(Robert Griesemer, Rob Pike, Ken Thompson) |
| 型システム | 静的型付け |
| パラダイム | 手続き型、並行プログラミング |
| 主な実行環境 | ネイティブコンパイル |
特徴: シンプルさを徹底的に追求した設計。goroutineとチャネルによる軽量な並行処理が言語レベルで組み込まれている。コンパイルが高速で、シングルバイナリを生成するためデプロイが容易。ジェネリクスはGo 1.18(2022年)で追加。
主な用途:
- クラウドインフラ・DevOpsツール(Docker, Kubernetes, Terraform)
- マイクロサービス
- API/Webサーバー
- CLI ツール
- 分散システム
歴史: GoogleのRob Pike、Ken Thompson(UNIXの共同開発者)、Robert Griesemerが、C++のビルド時間の長さとコードの複雑さに不満を感じて開発を開始。意図的に継承やジェネリクス(当初)を省き、シンプルさと実用性を最優先した。Docker、Kubernetesなどのクラウドネイティブツールの実装言語として採用されたことで、インフラ分野でのデファクトスタンダードとなった。
コードサンプル:
package main
import (
"fmt"
"sync"
)
// goroutineとchannelによる並行処理
func worker(id int, jobs <-chan int, results chan<- int, wg *sync.WaitGroup) {
defer wg.Done()
for j := range jobs {
results <- j * j // 受け取った値を二乗して返す
}
}
func main() {
jobs := make(chan int, 10)
results := make(chan int, 10)
var wg sync.WaitGroup
// 3つのgoroutineを起動
for w := 0; w < 3; w++ {
wg.Add(1)
go worker(w, jobs, results, &wg)
}
for i := 1; i <= 9; i++ {
jobs <- i
}
close(jobs)
go func() {
wg.Wait()
close(results)
}()
for r := range results {
fmt.Println(r)
}
}
Rust
| 項目 | 内容 |
|---|---|
| 登場年 | 2015年(1.0リリース) |
| 開発者 | Mozilla(Graydon Hoare)→ Rust Foundation |
| 型システム | 静的型付け |
| パラダイム | マルチパラダイム(関数型、並行、手続き型) |
| 主な実行環境 | ネイティブコンパイル |
特徴: 所有権(ownership)と借用(borrowing)の概念により、ガベージコレクションなしでメモリ安全性を保証する。C/C++並みのパフォーマンスを維持しつつ、メモリ関連のバグ(use-after-free、データ競合等)をコンパイル時に防止する。
主な用途:
- システムプログラミング(OS、ブラウザエンジン)
- WebAssembly
- CLIツール(ripgrep, fd, bat)
- 暗号・ブロックチェーン
- 組込みシステム
歴史: Mozillaの社員Graydon Hoareが個人プロジェクトとして開始し、後にMozillaが公式に支援。Firefoxのレンダリングエンジン「Servo」の開発を通じて実証された。Stack Overflow Surveyで「最も愛されている言語」を連続受賞。Linuxカーネル(6.1以降)でRustのサポートが追加され、Microsoft、Google、AmazonなどがRust採用を拡大している。
コードサンプル:
// 所有権と借用、イテレータチェーン
fn main() {
let numbers = vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
// 所有権を移動せず借用(&)して処理
let result: Vec<i32> = numbers.iter()
.filter(|&&n| n % 2 == 0)
.map(|&n| n * n)
.collect();
println!("{:?}", result); // [4, 16, 36, 64, 100]
// numbers の所有権はまだここにある(moveされていない)
println!("元のvec: {:?}", numbers);
}
// Result型によるエラーハンドリング
fn divide(a: f64, b: f64) -> Result<f64, String> {
if b == 0.0 {
Err(String::from("ゼロ除算"))
} else {
Ok(a / b)
}
}
PHP
| 項目 | 内容 |
|---|---|
| 登場年 | 1995年 |
| 開発者 | Rasmus Lerdorf |
| 型システム | 動的型付け(PHP 7以降で型宣言対応) |
| パラダイム | マルチパラダイム(手続き型、OOP) |
| 主な実行環境 | PHPインタプリタ(サーバーサイド) |
特徴: Webサーバーサイド開発に特化した言語。HTMLに直接埋め込めるテンプレート構文を持ち、Web開発の敷居が低い。CMS(WordPress)やフレームワーク(Laravel)の巨大なエコシステムを持つ。
主な用途:
- CMS・ブログ(WordPress — Web全体の約40%が使用)
- Webアプリケーション(Laravel, Symfony)
- ECサイト(WooCommerce, Magento)
- API開発
歴史: Rasmus Lerdorfが個人のホームページ管理用ツール「Personal Home Page Tools」として開発。PHP 5(2004年)でオブジェクト指向を本格的にサポートし、PHP 7(2015年)でパフォーマンスが約2倍に向上。PHP 8(2020年〜)ではJITコンパイラ、名前付き引数、Union型など、モダンな言語機能が追加されている。
コードサンプル:
<?php
// 型宣言とアロー関数(PHP 7.4+)
declare(strict_types=1);
class UserRepository
{
private array $users = [
['id' => 1, 'name' => 'Alice', 'role' => 'admin'],
['id' => 2, 'name' => 'Bob', 'role' => 'user'],
['id' => 3, 'name' => 'Charlie', 'role' => 'admin'],
];
public function findByRole(string $role): array
{
return array_values(array_filter(
$this->users,
fn(array $user): bool => $user['role'] === $role
));
}
}
$repo = new UserRepository();
$admins = $repo->findByRole('admin');
foreach ($admins as $admin) {
echo "{$admin['name']} は管理者です\n";
}
// Alice は管理者です
// Charlie は管理者です
Swift
| 項目 | 内容 |
|---|---|
| 登場年 | 2014年 |
| 開発者 | Apple(Chris Lattner) |
| 型システム | 静的型付け |
| パラダイム | マルチパラダイム(OOP、関数型、プロトコル指向) |
| 主な実行環境 | ネイティブコンパイル(LLVM) |
特徴: Appleプラットフォーム向けの安全性・高速性・表現力を兼ね備えた言語。Optional型による null安全性、プロトコル指向プログラミング、値型(struct)の積極的な活用が特徴。Playgroundによるインタラクティブな学習環境も提供。
主な用途:
- iOS / macOS / watchOS / tvOS アプリ開発
- サーバーサイド(Vapor, Hummingbird)
- システムプログラミング
歴史: LLVM開発者のChris LattnerがApple社内で開発を開始。Objective-Cの後継言語として設計され、2014年のWWDCで発表された。2015年にオープンソース化。SwiftUIの登場(2019年)により、宣言的UIの記述が可能になり、Apple開発エコシステムの中核言語としての地位を確立した。
コードサンプル:
// Optional型と関数型プログラミング
struct User {
let id: Int
let name: String
let age: Int? // Optional — nilの可能性あり
}
let users = [
User(id: 1, name: "Alice", age: 30),
User(id: 2, name: "Bob", age: nil),
User(id: 3, name: "Charlie", age: 25),
]
// compactMap で nil を除外
let ages = users.compactMap(\.age)
let average = Double(ages.reduce(0, +)) / Double(ages.count)
print("平均年齢: \(average)") // 平均年齢: 27.5
// Optional chaining と nil合体演算子
let greeting = users.first { $0.name == "Bob" }?.age.map { "年齢: \($0)" } ?? "年齢不明"
print(greeting) // 年齢不明
Kotlin
| 項目 | 内容 |
|---|---|
| 登場年 | 2011年(1.0は2016年) |
| 開発者 | JetBrains |
| 型システム | 静的型付け |
| パラダイム | マルチパラダイム(OOP、関数型) |
| 主な実行環境 | JVM、JavaScript、Native |
特徴: Javaとの完全な相互運用性を持ちつつ、null安全性、データクラス、拡張関数、コルーチンなど、より簡潔で安全な記述を可能にする。Javaの冗長さを解消する「Better Java」として位置づけられる。
主な用途:
- Androidアプリ開発(Google推奨言語)
- サーバーサイド開発(Spring Boot, Ktor)
- マルチプラットフォーム開発(Kotlin Multiplatform)
歴史: IntelliJ IDEAの開発元であるJetBrainsが、Java開発の課題を解決するために開発。2017年にGoogleがAndroid開発の公式サポート言語として採用し、2019年にはAndroid開発の推奨言語(Kotlin-first)に昇格。これによりAndroid開発者コミュニティで爆発的に普及した。
コードサンプル:
// データクラス、拡張関数、コルーチン
data class User(val id: Int, val name: String, val role: String)
// 拡張関数でStringにメソッドを追加
fun String.isValidEmail(): Boolean =
contains('@') && contains('.')
// コルーチンによる非同期処理
import kotlinx.coroutines.*
suspend fun fetchUser(id: Int): User {
delay(100) // 非同期で待機(スレッドをブロックしない)
return User(id, "User$id", "user")
}
fun main() = runBlocking {
val users = (1..3).map { id ->
async { fetchUser(id) } // 並行実行
}.awaitAll()
users
.filter { it.role == "user" }
.forEach { println("${it.name}: ${it.id}") }
}
Ruby
| 項目 | 内容 |
|---|---|
| 登場年 | 1995年 |
| 開発者 | まつもとゆきひろ(Matz) |
| 型システム | 動的型付け |
| パラダイム | オブジェクト指向(純粋OOP) |
| 主な実行環境 | CRuby(MRI)インタプリタ |
特徴: 「プログラマの幸福」を設計哲学に掲げ、直感的で自然な記述を重視。すべてがオブジェクトであり、ブロック構文による柔軟なDSL(ドメイン固有言語)の構築が得意。メタプログラミング機能も強力。
主な用途:
- Webアプリケーション(Ruby on Rails)
- スクリプティング・自動化
- DevOpsツール(Chef, Vagrant)
- プロトタイピング
歴史: 日本発のプログラミング言語で、Perl、Smalltalk、Lispなどの影響を受けている。2004年にRuby on Railsが登場し、「Convention over Configuration」の思想とともにWeb開発の常識を変えた。Twitter、GitHub、Shopifyなど多くのサービスがRailsで構築された。近年はRuby 3.x でのパフォーマンス改善(YJIT JITコンパイラ)や並行処理(Ractor)の強化が進んでいる。
コードサンプル:
# ブロック構文とEnumerableによる自然な記述
users = [
{ id: 1, name: 'Alice', role: 'admin' },
{ id: 2, name: 'Bob', role: 'user' },
{ id: 3, name: 'Charlie', role: 'admin' },
]
admins = users
.select { |u| u[:role] == 'admin' }
.map { |u| u[:name] }
puts admins.join(', ') # Alice, Charlie
# Rubyらしいメタプログラミング(DSL例)
class Config
def initialize(&block)
instance_eval(&block)
end
def set(key, value)
instance_variable_set("@#{key}", value)
self.class.attr_reader key
end
end
config = Config.new do
set :host, 'localhost'
set :port, 3000
end
puts config.host # localhost
puts config.port # 3000
言語の分類
型システムによる分類
| 分類 | 特徴 | 代表的な言語 |
|---|---|---|
| 静的型付け | コンパイル時に型チェック。バグの早期発見が可能 | Java, C, C++, C#, Go, Rust, TypeScript, Swift, Kotlin |
| 動的型付け | 実行時に型が決まる。柔軟だが実行時エラーのリスク | Python, JavaScript, Ruby, PHP |
実行方式による分類
| 分類 | 特徴 | 代表的な言語 |
|---|---|---|
| コンパイル型 | 事前にネイティブコードに変換。高速に実行 | C, C++, Go, Rust, Swift |
| インタプリタ型 | ソースコードを逐次解釈して実行 | Python, Ruby, PHP |
| VM型 | 中間コードに変換し、仮想マシンで実行 | Java, C#, Kotlin |
| トランスパイル型 | 別の言語のコードに変換して実行 | TypeScript → JavaScript |
用途別の推奨言語
| 用途 | 第一候補 | 代替候補 |
|---|---|---|
| Web フロントエンド | TypeScript / JavaScript | Dart(Flutter Web) |
| Web バックエンド | Python, TypeScript, Go | Java, C#, PHP, Ruby |
| モバイル(iOS) | Swift | React Native, Flutter |
| モバイル(Android) | Kotlin | React Native, Flutter |
| モバイル(クロスプラットフォーム) | Dart(Flutter) | TypeScript(React Native) |
| AI / 機械学習 | Python | R, Julia |
| データ分析 | Python, R | Julia, SQL |
| ゲーム開発 | C#(Unity), C++(Unreal) | GDScript(Godot) |
| システムプログラミング | C, C++, Rust | Go |
| クラウドインフラ / DevOps | Go | Python, Rust |
| 組込みシステム | C, C++ | Rust |
| 競技プログラミング | C++ | Python, Java |
言語の人気推移トレンド
近年の上昇トレンド
- Python: AI/MLブームの恩恵で急上昇。TIOBEで首位、GitHub Octoverseでも2024年に初めてJavaScriptを抜いて首位を獲得
- TypeScript: RedMonkで単独6位に到達(2024年Q2)。Stack Overflowでも使用率38.5%で4位
- Rust: Stack Overflow Surveyで「最も賞賛されている言語」首位(83%)。Linuxカーネルでの採用やMicrosoft・Google・Amazonの支持拡大が追い風
- Go: Stack Overflowで使用率13.5%(10位)。クラウドネイティブツール(Docker, Kubernetes, Terraform)の実装言語として定着
- C/C++: PYPLで前年比+6.6%と学習需要が大幅増。TIOBEでも2位・3位を維持
安定・成熟した言語
- JavaScript: Stack Overflowで使用率62.3%と圧倒的首位。RedMonkでも1位を維持
- Java: 全指標でTop 5入り。PYPLでは-5.4%と低下傾向だが、エンタープライズ分野での需要は健在
- C#: 全指標でTop 8に安定。Unity採用と.NETのクロスプラットフォーム化が寄与
縮小トレンド
- Objective-C: RedMonkで過去最低の17位(2024年Q2)。SwiftへのApple公式移行が進行
- Perl: PYPLではTop 20圏外。ただしTIOBEでは一時的にTop 10に再浮上する変動も
- Ruby: Stack Overflowで使用率5.2%(19位)まで低下。ただしRedMonkでは9位を維持しており、Web開発分野では依然として一定のシェアを保つ
言語選択の指針
言語を選ぶ際に考慮すべき要素は以下の通り。
- 目的に合っているか — 用途別推奨言語を参照し、やりたいことに適した言語を選ぶ
- エコシステムの充実度 — ライブラリ、フレームワーク、ツールの豊富さ
- 求人・市場の需要 — 就職・転職を考慮する場合は求人数も重要な指標
- 学習コスト — 初心者にはPython、JavaScript/TypeScriptが取り組みやすい
- コミュニティの活発さ — 質問への回答が得られやすいか、情報が充実しているか
- チーム・組織の方針 — 既存プロジェクトとの親和性、チームメンバーのスキルセット
出典・参考資料
本記事のランキングデータは以下のソースに基づく。各指標は定期的に更新されるため、最新の順位は各サイトを直接確認されたい。
| ソース | データ時点 | URL |
|---|---|---|
| TIOBE Index | 2026年2月 | https://www.tiobe.com/tiobe-index/ |
| GitHub Octoverse | 2024年(2024年10月公開) | https://github.blog/news-insights/octoverse/octoverse-2024/ |
| Stack Overflow Developer Survey | 2024年(回答者65,437人) | https://survey.stackoverflow.co/2024/ |
| PYPL Index | 2026年 | https://pypl.github.io/PYPL.html |
| RedMonk Programming Language Rankings | 2024年Q2(2024年9月公開) | https://redmonk.com/sogrady/2024/09/12/language-rankings-6-24/ |