LESSON 11

言語・フレームワーク・
ライブラリを整理しよう

HTML、CSS、JavaScript、TypeScript……と、ここまでで登場人物がずいぶん増えてきました。さらに次の Lesson 12 では Vue.js も登場します。 そこで今回は、手を動かすのをひと休みして、「言語」「フレームワーク」「ライブラリ」の関係を地図のように整理します。

1. 言語・ライブラリ・フレームワークの違い

3つの言葉を、料理にたとえて整理してみましょう。

言語

コンピュータに指示を出すための「言葉」そのもの。JavaScript、Java、Python など。

料理でいうと 日本語のレシピの「言葉」。読み書きできないと何も始まらない。

ライブラリ

よく使う処理をまとめた「道具箱」。必要なときに、自分のコードから呼び出して使う。jQuery など。

料理でいうと 包丁・ピーラー・計量カップ。いつ使うかは自分が決める。

フレームワーク

アプリの「作り方の型」と便利な機能のセット。決まった型の中に、自分のコードを書き込む。Vue.js、Spring Boot など。

料理でいうと ミールキット。手順と材料がそろっていて、そのとおりに作ればおいしくできる。

ライブラリとフレームワーク、何が違うの?

どちらも「誰かが作ってくれた便利なコード」ですが、主導権がどちらにあるかが違います。

ライブラリフレームワーク
主導権自分のコードが、必要なときにライブラリを呼び出すフレームワークが全体の流れを決めていて、決まった場所で自分のコードを呼び出す
自由度高い。使いたいところだけ使える型に従う必要がある。そのかわり迷わない
家づくりでいうと電動ドリルなどの工具ハウスメーカーの工法
例jQuery、Chart.js(グラフを描く)Vue.js、Angular、Spring Boot、Laravel
ややこしいポイント: React は、公式には自分のことを「ライブラリ」と呼んでいます。ただ実際の現場では、Vue.js や Angular と並べて「フロントエンドのフレームワーク」として語られることがほとんどです。 境界があいまいなものもある、と知っておけば十分です。

言語にも、いくつか種類がある

種類例役割
マークアップ言語HTML文章に「見出し」「段落」などの意味を付ける(Lesson 5)
スタイルシート言語CSS見た目を指定する(Lesson 8)
プログラミング言語JavaScript、Java、Python など計算や条件分岐など、処理の手順を書く(Lesson 9)
拡張した言語TypeScriptある言語(JavaScript)に機能(型)を足したもの(Lesson 10)
データベース用の言語SQLデータベースに「探して」「保存して」と指示する(Lesson 2)

HTML と CSS は「処理の手順」を書くものではないので、厳密には「プログラミング言語」とは呼ばれません。でも、Web 開発に欠かせない大切な言語です。

2. IT の言葉の地図

言語ごとに、その上で使われる主なフレームワーク・ライブラリをまとめると、次のようになります。

言語 フレームワーク ライブラリ 実行環境・ツール
画面の骨組みと見た目(どの Web サイトでも使う)
HTMLマークアップ言語
ページの骨組み・中身。フレームワークを使っても、最終的にブラウザに届くのは HTML
CSSスタイルシート言語
BootstrapTailwind CSS… CSS のフレームワークもある
画面の動き(フロントエンド)/ サーバー側でも使える
JavaScriptプログラミング言語
Vue.jsReactAngular jQueryChart.js Node.jsVite
TypeScriptJavaScript を拡張した言語
JavaScript のフレームワーク・ライブラリは、ほぼすべて TypeScript でも使える。Angular は TypeScript が前提
裏側の処理(バックエンド)
Javaプログラミング言語
Spring BootSpring Framework… 日本の業務システムで特に多い
PHPプログラミング言語
Laravel… Web サイト・Web サービスで多い。WordPress も PHP 製
Pythonプログラミング言語
DjangoFastAPIpandas… AI・データ分析でも大人気
Rubyプログラミング言語
Ruby on Rails… 日本生まれの言語
C#プログラミング言語
ASP.NET Core… Microsoft 製。Windows のアプリやゲーム(Unity)でも使う
スマホアプリ(Lesson 1)
SwiftiOS アプリの言語
SwiftUI
KotlinAndroid アプリの言語
Jetpack Compose
データ
SQLデータベース用の言語
MySQLPostgreSQLOracle Database… データベースの製品
よくある勘違い:Java と JavaScript 名前は似ていますが、まったく別の言語です。JavaScript が生まれた当時、人気のあった Java にあやかって名前が付けられた、と言われています。 「メロン」と「メロンパン」くらい別物、と覚えておきましょう。
Node.js は言語? フレームワーク? どちらでもなく、JavaScript をブラウザの外で動かすための「実行環境」です。Lesson 10 で TypeScript のコンパイラを動かしたように、 開発ツールを動かしたり、JavaScript でサーバー側の処理を書いたりするのに使います。

3. 画面(フロントエンド)のフレームワーク

画面を作る分野では、次の4つの名前をよく耳にします。jQuery だけは「ライブラリ」で、少し前の時代の主役です。

名前種類開発元特徴こんなときに
Vue.jsフレームワークEvan You 氏とコミュニティHTML に近い書き方で、学びやすい。日本でも人気が高い小〜中規模のサービス、管理画面。少しずつ導入したいとき
Reactライブラリ
(実質フレームワーク扱い)
Meta(旧 Facebook)世界でいちばん使われている。情報や関連ツールがとにかく多い大規模な Web サービス。React Native でスマホアプリも作れる
AngularフレームワークGoogle必要な機能が最初から全部そろっている。ルールが厳格で、TypeScript が前提大人数で長く保守する業務システム
jQueryライブラリjQuery チームHTML の部品を「探して書き換える」を短く書ける。2010年代に大流行既存のサイトの保守。新しく作るときに選ばれることは減っている

さらに、React の上に乗る Next.js、Vue.js の上に乗る Nuxt のように、「フレームワークの上に乗るフレームワーク」もあります。 ページの切り替えやサーバー側の処理など、Web サイト全体を作るための機能を足したものです。

4. 同じものを4通りで書いてみると

「ボタンを押すと、押した回数が増える」という同じ部品を、それぞれで書いてみるとこうなります。 細かい文法は読めなくて大丈夫。雰囲気の違いを感じてみてください。

jQuery(ライブラリ)
<button id="btn">押した回数:<span id="count">0</span></button>

<script>
  let count = 0;
  $("#btn").on("click", function () {
    count = count + 1;
    $("#count").text(count);  // 探して、書き換える
  });
</script>
Vue.js
<script setup lang="ts">
import { ref } from 'vue'
const count = ref(0)
</script>

<template>
  <button @click="count++">押した回数:{{ count }}</button>
</template>
React
import { useState } from 'react'

export function Counter() {
  const [count, setCount] = useState(0)
  return (
    <button onClick={() => setCount(count + 1)}>
      押した回数:{count}
    </button>
  )
}
Angular
import { Component, signal } from '@angular/core';

@Component({
  selector: 'app-counter',
  template: `<button (click)="increment()">押した回数:{{ count() }}</button>`,
})
export class Counter {
  count = signal(0);
  increment() {
    this.count.update((c) => c + 1);
  }
}
考え方
jQueryLesson 9 と同じく「HTML から探して、書き換える」。それを短く書けるようにした道具。
Vue.js「データ(count)を変えれば、画面が変わる」。画面の部分は HTML とほぼ同じ見た目で書ける。
React考え方は Vue.js と同じ。画面の部分も JavaScript の中に書く(JSX という書き方)。
Angular考え方は同じ。クラスという型にはめて、きっちり書く。大人数でも書き方がそろいやすい。

Vue.js・React・Angular は、書き方こそ違いますが、「データを変えれば画面が変わる」「画面を部品に分ける」という根っこの考え方は同じです。 1つを身につければ、ほかのものも覚えやすくなります。次の Lesson 12 では、その中から Vue.js を使って、ポートフォリオを作り直します。

5. 裏側(バックエンド)のフレームワーク

Lesson 2 で学んだ「AP サーバー」で動くプログラムにも、言語ごとにフレームワークがあります。 ログイン、データベースとのやりとり、セキュリティ対策など、どのシステムでも必要になる処理を引き受けてくれます。

フレームワーク言語特徴
Spring BootJavaJava の定番フレームワーク「Spring」を、すぐに使い始められるようにしたもの。日本の業務システムで特に多く使われている
LaravelPHP書きやすさと機能の豊富さで人気。Web サービスでよく使われる
Django・FastAPIPythonDjango は機能がそろった大型、FastAPI は軽くて速い。AI を使うサービスとも相性がよい
Ruby on RailsRuby「少ないコードで素早く作れる」ことで有名。スタートアップで人気
ASP.NET CoreC#Microsoft 製。Windows や Azure との相性がよい
ExpressJavaScript(Node.js)シンプルで軽い。画面と同じ JavaScript でサーバーも書ける

Spring Boot をちょっとだけのぞいてみる

Spring Boot では、たとえば「/hello にアクセスされたら Hello World! と返す」という処理が、これだけで書けます。

HelloController.java(Spring Boot)
@RestController
public class HelloController {

    @GetMapping("/hello")
    public String hello() {
        return "Hello World!";
    }
}

@ で始まる目印(アノテーション)を付けるだけで、通信の受け付けやレスポンスの作成といった面倒な部分は Spring Boot が引き受けてくれます。 Lesson 2 の「HTTP リクエスト → サーバーが処理 → HTTP レスポンス」の、「サーバーが処理」の部分を書いているわけです。 Lesson 5 の Hello World! が、今度はサーバー側から返ってくる、と思うとちょっと感慨深いですね。

6. どうやって選ぶの?

「結局どれがいちばんいいの?」という質問の答えは、残念ながら「作るもの次第」です。現場では、次のような点を考えて選びます。

何を作るか

Web サービスか、業務システムか、スマホアプリか。規模はどれくらいか。

チームが慣れているか

メンバーがすでに経験のある言語・フレームワークなら、早く確実に作れる。

長く使えるか

開発が続いていて、何年もサポートされるか。情報や経験者が多いか。

お客様・会社の方針

既存のシステムとの相性や、会社の標準として決まっている技術があるか。

このシリーズの地図

ここまでのレッスンと、次のレッスンで使うものを地図に当てはめると、こうなります。

レッスン使ったもの種類
Lesson 5・7HTML言語
Lesson 8CSS言語
Lesson 9JavaScript言語
Lesson 10TypeScript / Node.js・npm言語 実行環境・ツール
Lesson 12Vue.js / Viteフレームワーク 実行環境・ツール

確認クイズ

選択肢をクリックしてください。

Q1. jQuery はどれ?

Q2. Spring Boot は、どの言語のフレームワーク?

Q3. Java と JavaScript の関係は?

Q4. TypeScript はどんな言語?

Q5. 「全体の流れが決まっていて、決まった場所に自分のコードを書き込む」のはどれ?

まとめ