プログラミング言語 人気ランキング - 主要言語の特徴・用途・歴史まとめ

プログラミング言語の人気度を測る主要な指標と、上位にランクインする言語の特徴・用途・歴史を体系的に整理する。

人気ランキングの主要指標

プログラミング言語の人気度は、複数の異なる指標から多角的に評価される。単一の指標だけで「最も人気のある言語」を断定することはできない。

指標測定対象特徴
TIOBE Index検索エンジンでの言語名の検索量歴史が長く、月次更新。学術・教育分野の動向も反映
GitHub OctoverseGitHubリポジトリでの使用言語オープンソース・実務での採用状況を反映
Stack Overflow Survey開発者アンケート「使用中」「学びたい」「好き/嫌い」など多面的な調査
PYPL IndexGoogle Trendsでの言語チュートリアル検索量学習需要の指標として有用
RedMonk RankingsGitHubとStack Overflowのデータを統合実務と議論の両面を反映
IEEE Spectrum求人・論文・GitHub・Twitterなど複合指標カスタマイズ可能な重み付け

主要指標別ランキング

各指標の最新データを以下に示す。指標ごとに測定対象が異なるため、順位にはばらつきがある。

TIOBE Index(2026年2月)

検索エンジンでの言語関連クエリの量に基づくランキング。

順位言語レーティング
1Python21.81%
2C11.05%
3C++8.55%
4Java8.12%
5C#6.83%
6JavaScript2.92%
7Visual Basic2.85%
8R2.19%
9SQL1.93%
10Delphi/Object Pascal1.88%

Pythonが21.81%で首位を維持しているが、2025年7月のピーク(26.98%)からは低下傾向にある。2024年の「Programming Language of the Year」もPythonが受賞。

出典: TIOBE Index(2026年2月)

GitHub Octoverse(2024年)

GitHubリポジトリでの使用言語に基づくランキング。

順位言語
1Python
2JavaScript
3TypeScript
4Java

2024年にPythonが初めてJavaScriptを抜いて首位を獲得。AI・機械学習・データサイエンス分野の拡大が背景にあり、Jupyter Notebookの使用量は前年比92%増を記録した。Rustもシステムプログラミング分野で成長が続いている。

出典: GitHub Octoverse 2024(2024年10月公開)

Stack Overflow Developer Survey(2024年)

65,437人の開発者を対象としたアンケート調査。「過去1年間に使用した言語」の回答率。

順位言語使用率
1JavaScript62.3%
2Python51.0%
3SQL51.0%
4TypeScript38.5%
5Java30.3%
6C#27.1%
7C++23.0%
8C20.3%
9PHP18.2%
10Go13.5%

JavaScriptが62.3%で使用率トップ。「最も賞賛されている言語」ではRustが83%のスコアで首位を獲得。

出典: Stack Overflow Developer Survey 2024

PYPL Index(2026年)

Google Trendsでの言語チュートリアル検索量に基づくランキング。

順位言語シェア前年比
1Python34.87%+4.4%
2C/C++13.66%+6.6%
3Java9.82%-5.4%
4R6.49%+1.9%
5JavaScript4.90%-3.2%
6Swift3.50%+1.1%
7Rust3.08%+0.0%
8C#3.03%-3.1%
9PHP2.90%-0.8%
10Ada2.66%+1.3%

Pythonが34.87%で圧倒的首位。C/C++の学習需要が前年比+6.6%と大きく伸びている一方、Javaは-5.4%と低下傾向。

出典: PYPL PopularitY of Programming Language Index

RedMonk Rankings(2024年Q2)

GitHubの使用量とStack Overflowの議論量を統合したランキング。

順位言語順位言語
1JavaScript11Swift
2Python12Go
3Java12R
4PHP14Shell
5C#14Kotlin
6TypeScript14Scala
7CSS17Objective-C
7C++18PowerShell
9Ruby19Rust
10C19Dart

Top 10は非常に安定しており、TypeScriptが単独6位に到達。JVM系言語(Kotlin、Scala)の上昇とObjective-Cの下落(過去最低の17位)が目立つ。

出典: RedMonk Programming Language Rankings: June 2024

指標横断の総合傾向

順位帯言語根拠
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 / JavaScriptDart(Flutter Web)
Web バックエンドPython, TypeScript, GoJava, C#, PHP, Ruby
モバイル(iOS)SwiftReact Native, Flutter
モバイル(Android)KotlinReact Native, Flutter
モバイル(クロスプラットフォーム)Dart(Flutter)TypeScript(React Native)
AI / 機械学習PythonR, Julia
データ分析Python, RJulia, SQL
ゲーム開発C#(Unity), C++(Unreal)GDScript(Godot)
システムプログラミングC, C++, RustGo
クラウドインフラ / DevOpsGoPython, 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開発分野では依然として一定のシェアを保つ

言語選択の指針

言語を選ぶ際に考慮すべき要素は以下の通り。

  1. 目的に合っているか — 用途別推奨言語を参照し、やりたいことに適した言語を選ぶ
  2. エコシステムの充実度 — ライブラリ、フレームワーク、ツールの豊富さ
  3. 求人・市場の需要 — 就職・転職を考慮する場合は求人数も重要な指標
  4. 学習コスト — 初心者にはPython、JavaScript/TypeScriptが取り組みやすい
  5. コミュニティの活発さ — 質問への回答が得られやすいか、情報が充実しているか
  6. チーム・組織の方針 — 既存プロジェクトとの親和性、チームメンバーのスキルセット

出典・参考資料

本記事のランキングデータは以下のソースに基づく。各指標は定期的に更新されるため、最新の順位は各サイトを直接確認されたい。

ソースデータ時点URL
TIOBE Index2026年2月https://www.tiobe.com/tiobe-index/
GitHub Octoverse2024年(2024年10月公開)https://github.blog/news-insights/octoverse/octoverse-2024/
Stack Overflow Developer Survey2024年(回答者65,437人)https://survey.stackoverflow.co/2024/
PYPL Index2026年https://pypl.github.io/PYPL.html
RedMonk Programming Language Rankings2024年Q2(2024年9月公開)https://redmonk.com/sogrady/2024/09/12/language-rankings-6-24/