コース一覧
コンピューターサイエンス:アルゴリズム / OS / ネットワーク / DB
HTTP/2 と HTTP/3 (QUIC)

コンピューターサイエンス:アルゴリズム / OS / ネットワーク / DB

ソート、探索、再帰などのアルゴリズムに加え、OS (プロセス、メモリ、ファイルシステム)、ネットワーク (TCP/IP、HTTP、DNS、CDN)、データベースまで、Web エンジニアに必要な CS の基礎を一本で学べる総合コースです。エンジニア転職を目指す学習者や、CS 出身でない現役エンジニアを対象としています。約 34 時間 (1 日 30 分 × 68 日) で 135 レッスンを修了でき、修了後は技術選定やシステム設計の議論に自信を持って参加できるようになります。

1
再帰の基礎
0. 階乗(再帰)5分
1. フィボナッチ数(再帰)5分
2. 累乗(再帰)5分
3. 配列の合計(再帰)5分
4. 桁数を数える(再帰)5分
5. 文字列を逆順(再帰)5分
6. ユークリッドの互除法(GCD)5分
7. 第1章まとめクイズ — 再帰の基礎5分
2
第2章 探索
0. 線形探索で位置を返す5分
1. 二分探索 (反復版)5分
2. 二分探索 (再帰版)5分
3. lower_bound (最初に >= target の位置)5分
4. ピーク要素検索5分
5. 回転ソート配列での探索5分
6. 第2章まとめクイズ5分
3
ソート
0. バブルソート実装5分
1. 選択ソート5分
2. 挿入ソート5分
3. マージソート5分
4. クイックソート5分
5. カウントソート5分
6. 比較関数つきソート5分
7. 第3章まとめクイズ5分
4
配列 / 文字列の応用
0. 双方向ポインタで和 = K5分
1. スライド窓の最大和5分
2. 回文判定5分
3. 重複なし最長部分文字列5分
4. 大きな数の文字列乗算5分
5. アナグラムグルーピング5分
6. 第4章まとめクイズ — 配列 / 文字列の応用5分
5
クラスと OOP
0. 長方形クラス(面積と周長)5分
1. スタッククラス(push と pop)5分
2. キュークラス(enqueue と dequeue)5分
3. 単方向リンクリスト5分
4. 二分探索木 (BST) への挿入5分
5. カウンタクラス(機能合成)5分
6. 第 5 章クイズ — クラスと OOP5分
6
動的計画法 (基礎)
0. メモ化フィボナッチ5分
1. DP配列でフィボナッチ5分
2. 階段の登り方5分
3. コイン両替最小枚数5分
4. 0/1 ナップサック問題5分
5. 最長共通部分列 (LCS)5分
6. 第6章まとめクイズ5分
7
総合演習
0. ソート済み 2 配列のマージ5分
1. 配列の k 回転5分
2. カッコの妥当性5分
3. ローマ数字を整数に5分
4. 整数をローマ数字に5分
5. 雨水を溜める5分
6. 最終総まとめクイズ5分
8
[OS] Section 1. OS とは
0. コンピューターとOSの役割15分
1. OSの歴史(バッチ→マルチタスク→マルチユーザー)15分
2. カーネルとユーザーランド15分
3. システムコールの仕組み15分
4. Linux / macOS / Windows のアーキ比較15分
9
[OS] Section 2. プロセスとスレッド
0. プロセスとは15分
1. スレッドとプロセスの違い15分
2. コンテキストスイッチ15分
3. スケジューラとアルゴリズム15分
4. プロセス間通信(IPC)15分
10
[OS] Section 3. メモリ管理
0. メモリ階層(レジスタ→キャッシュ→RAM→ディスク)15分
1. 仮想メモリ15分
2. ページングとスワップ15分
3. mmap とメモリマップトファイル15分
4. ガベージコレクション概要15分
11
[OS] Section 4. ファイルシステム
0. ファイルシステムとは15分
1. i-node とディレクトリ15分
2. ext4 / APFS / NTFS の違い15分
3. ジャーナリングと耐障害性15分
4. パーミッションと所有者15分
12
[OS] Section 5. 同期と並行性
0. レースコンディション15分
1. Mutex と Semaphore15分
2. デッドロック15分
3. 非同期と並行15分
4. イベントループと epoll15分
13
[ネットワーク] ネットワークの全体像
0. ネットワークとは8分
1. OSI 7階層モデル10分
2. TCP/IP 4階層モデル9分
3. パケットとフレーム9分
4. ルーター・スイッチ・ハブ9分
14
[ネットワーク] IP とルーティング
0. IPアドレス (IPv4 / IPv6)10分
1. サブネットマスクと CIDR11分
2. NAT とプライベートIP9分
3. ルーティングと経路選択10分
4. ファイアウォール基礎9分
15
[ネットワーク] TCP / UDP
0. TCP と UDP の違い9分
1. 3-way ハンドシェイク9分
2. 輻輳制御と再送10分
3. UDP の用途 (DNS / 動画 / ゲーム)8分
4. ポート番号と well-known port9分
16
[ネットワーク] HTTP / HTTPS
0. HTTP の基本10分
1. HTTP メソッド9分
2. HTTPS と TLS ハンドシェイク10分
3. HTTP/2 と HTTP/3 (QUIC)10分
4. REST API の設計原則10分
17
[ネットワーク] DNS とドメイン
0. DNS とは8分
1. レコードタイプ10分
2. 名前解決の流れ10分
3. DNS キャッシュと TTL9分
4. CDN の仕組みと Anycast10分
18
[ネットワーク] 応用
0. ロードバランサ (L4 / L7)10分
1. プロキシとリバースプロキシ9分
2. WebSocket とリアルタイム通信9分
3. gRPC と HTTP/2 利用10分
19
[データベース] データベースの基礎
0. データベースとは8分
1. RDB と NoSQL の違い8分
2. データベースの歴史8分
3. エンティティ関係モデル (ER)8分
4. 主キー・外部キー・候補キー8分
20
[データベース] 正規化
0. 正規化とは何か8分
1. 第1正規形8分
2. 第2正規形8分
3. 第3正規形8分
4. 非正規化のトレードオフ8分
21
[データベース] インデックスと B-tree
0. インデックスの役割8分
1. B-tree の仕組み8分
2. B+tree(実際の DB 実装)8分
3. ハッシュインデックス8分
4. カバリングインデックス8分
22
[データベース] トランザクションと ACID
0. トランザクションとは8分
1. ACID 特性8分
2. 分離レベル8分
3. MVCC(マルチバージョン同時実行制御)8分
4. デッドロックと回避8分
23
[データベース] クエリ最適化
0. クエリプランナの役割8分
1. EXPLAIN の読み方8分
2. Nested Loop / Hash / Merge Join8分
3. インデックスチューニング8分
4. 統計情報とカーディナリティ8分
24
[データベース] スケーリング
0. レプリケーション8分
1. シャーディング8分
2. CAP 定理8分
3. 結果整合性8分
4. NewSQL と分散 SQL8分

コンピューターサイエンス:アルゴリズム / OS / ネットワーク / DB

01階乗(再帰)
02フィボナッチ数(再帰)
03累乗(再帰)
04配列の合計(再帰)
05桁数を数える(再帰)
06文字列を逆順(再帰)
07ユークリッドの互除法(GCD)
08第1章まとめクイズ — 再帰の基礎
09線形探索で位置を返す
10二分探索 (反復版)
11二分探索 (再帰版)
12lower_bound (最初に >= target の位置)
13ピーク要素検索
14回転ソート配列での探索
15第2章まとめクイズ
16バブルソート実装
17選択ソート
18挿入ソート
19マージソート
20クイックソート
21カウントソート
22比較関数つきソート
23第3章まとめクイズ
24双方向ポインタで和 = K
25スライド窓の最大和
26回文判定
27重複なし最長部分文字列
28大きな数の文字列乗算
29アナグラムグルーピング
30第4章まとめクイズ — 配列 / 文字列の応用
31長方形クラス(面積と周長)
32スタッククラス(push と pop)
33キュークラス(enqueue と dequeue)
34単方向リンクリスト
35二分探索木 (BST) への挿入
36カウンタクラス(機能合成)
37第 5 章クイズ — クラスと OOP
38メモ化フィボナッチ
39DP配列でフィボナッチ
40階段の登り方
41コイン両替最小枚数
420/1 ナップサック問題
43最長共通部分列 (LCS)
44第6章まとめクイズ
45ソート済み 2 配列のマージ
46配列の k 回転
47カッコの妥当性
48ローマ数字を整数に
49整数をローマ数字に
50雨水を溜める
51最終総まとめクイズ
52コンピューターとOSの役割
53OSの歴史(バッチ→マルチタスク→マルチユーザー)
54カーネルとユーザーランド
55システムコールの仕組み
56Linux / macOS / Windows のアーキ比較
57プロセスとは
58スレッドとプロセスの違い
59コンテキストスイッチ
60スケジューラとアルゴリズム
61プロセス間通信(IPC)
62メモリ階層(レジスタ→キャッシュ→RAM→ディスク)
63仮想メモリ
64ページングとスワップ
65mmap とメモリマップトファイル
66ガベージコレクション概要
67ファイルシステムとは
68i-node とディレクトリ
69ext4 / APFS / NTFS の違い
70ジャーナリングと耐障害性
71パーミッションと所有者
72レースコンディション
73Mutex と Semaphore
74デッドロック
75非同期と並行
76イベントループと epoll
77ネットワークとは
78OSI 7階層モデル
79TCP/IP 4階層モデル
80パケットとフレーム
81ルーター・スイッチ・ハブ
82IPアドレス (IPv4 / IPv6)
83サブネットマスクと CIDR
84NAT とプライベートIP
85ルーティングと経路選択
86ファイアウォール基礎
87TCP と UDP の違い
883-way ハンドシェイク
89輻輳制御と再送
90UDP の用途 (DNS / 動画 / ゲーム)
91ポート番号と well-known port
92HTTP の基本
93HTTP メソッド
94HTTPS と TLS ハンドシェイク
95HTTP/2 と HTTP/3 (QUIC)
96REST API の設計原則
97DNS とは
98レコードタイプ
99名前解決の流れ
100DNS キャッシュと TTL
101CDN の仕組みと Anycast
102ロードバランサ (L4 / L7)
103プロキシとリバースプロキシ
104WebSocket とリアルタイム通信
105gRPC と HTTP/2 利用
106データベースとは
107RDB と NoSQL の違い
108データベースの歴史
109エンティティ関係モデル (ER)
110主キー・外部キー・候補キー
111正規化とは何か
112第1正規形
113第2正規形
114第3正規形
115非正規化のトレードオフ
116インデックスの役割
117B-tree の仕組み
118B+tree(実際の DB 実装)
119ハッシュインデックス
120カバリングインデックス
121トランザクションとは
122ACID 特性
123分離レベル
124MVCC(マルチバージョン同時実行制御)
125デッドロックと回避
126クエリプランナの役割
127EXPLAIN の読み方
128Nested Loop / Hash / Merge Join
129インデックスチューニング
130統計情報とカーディナリティ
131レプリケーション
132シャーディング
133CAP 定理
134結果整合性
135NewSQL と分散 SQL

コンピューターサイエンス:アルゴリズム / OS / ネットワーク / DB

HTTP/2 と HTTP/3 (QUIC)

画像が 60 個あると、ブラウザは列を作って待ち始める

1 枚のページに画像や CSS や JS が数十個ぶら下がるのは普通のことです。ところが HTTP/1.1 では、ブラウザは同じドメインに対して 6 本までしか同時につなぎません。7 個目以降は、前のどれかが終わるまで順番待ちです。

当時の回避策は、画像用に別のサブドメインを切って本数を稼ぐことでした。6 本という上限は変わらないので、ドメインを増やして掛け算する、という力技です。

1 本の接続に、全部を同時に流し込む

HTTP/2 がやったのは、接続を増やすのをやめて、1 本の中を仕切ることでした。1 つの接続の上に「ストリーム」という論理的な通り道を何本も作り、リクエストとレスポンスを細切れにして混ぜて流します。受け取った側が番号を見て組み直すので、順番待ちが消えます。

もう 1 つの改善がヘッダーです。リクエストのたびに同じ Cookie や User-Agent を丸ごと送っていたのを、2 回目からは差分だけ送る形に圧縮しました。1 つ 1 つは小さくても、数十リクエストぶん積み上がると効いてきます。

ここで、昔の最適化が逆効果に変わります。画像用にサブドメインを分けていると、ドメインごとに別の接続が張られます。せっかく 1 本にまとめられるのに、わざわざ分けて、接続を張る手間と圧縮の効きを両方捨てていることになります。HTTP/2 に上げたのに速くならないときは、この手の古い工夫が残っていないかを疑います。

パケットが 1 個落ちると、関係ない画像まで止まる

ただし HTTP/2 は TCP の上に乗っています。TCP は届いた順に並べ直して渡すので、途中の 1 個が落ちると、その後ろのデータをすでに受け取っていても渡してくれません。

困るのは、この足止めがストリームの区別なく起きることです。画像 A のパケットが 1 個落ちただけで、無関係な CSS も文章も、再送が届くまで一緒に止まります。1 本にまとめたことが、そのまま弱点になりました。

電車で回線が切り替わっても、つながったまま

HTTP/3 は、この足止めを起こす層そのものを取り替えました。土台を TCP から QUIC に変え、並べ直しの管理をストリームごとに独立させています。画像 A が待っていても、CSS は先に渡せます。

QUIC は UDP の上に作られていますが、UDP に任せているわけではありません。順番の管理も再送も混雑の制御も暗号化も、QUIC が自前で持っています。UDP は、途中のルーターに通してもらうための土台として使われているだけです。

副産物として、接続の見分け方が IP アドレスから切り離されました。電車の中で Wi-Fi からモバイル回線に切り替わっても、接続は張り直さずに続きます。

自分が見ているページがどれで通信しているかは、ブラウザの開発者ツールの Network パネルで確認できます。Protocol の列に h3、h2、http/1.1 のいずれかが出ます。同じサイトでも回線や環境によって変わるので、一度見ておくと、この 3 つが今も並存していることが実感できます。

このレッスンに出てくる用語

意味があいまいなまま進んだ語は、ここから読み直せます。

  • ブラウザユーザーから見たWebのクライアント
  • CSSCascading Style Sheetsの略。
  • HTTPWeb の通信プロトコル、HTTPS は TLS で暗号化したもの
  • ドメインサイト名(example.com)
  • リクエストWeb 通信の基本単位、ブラウザの問い合わせとサーバーの返答
  • Cookieブラウザ側に小さなデータを保存させる仕組み
  • ルーターURL ごとの処理を束ねたモジュール
生田 陸人
監修生田 陸人
ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
編集 ゆめさく編集部·公開 2026/05/27·更新 2026/08/26

関連レッスン

  • REST API の設計原則

    リソース指向、ステートレス、URL 設計など REST の基本を理解します。

  • DNS とは

    人間が読める名前と IP を結びつける DNS の役割を理解します。

  • ロードバランサ (L4 / L7)

    L4 と L7 ロードバランサの違いと使い分けを理解します。

  • データベースとは

    ファイルとデータベースの違い、なぜ DBMS が必要なのかを学ぶ

分からないところは Tap (AI先生) に質問できます

24 時間いつでも、あなたのレベルに合わせて日本語で答えます。

復習ミニクイズ

HTTP/2 が HTTP/1.1 から大きく変えた点はどれですか