コース一覧
コンピューターサイエンス:アルゴリズム / OS / ネットワーク / DB
ext4 / APFS / NTFS の違い

コンピューターサイエンス:アルゴリズム / 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

ext4 / APFS / NTFS の違い

Mac では動いたのに、デプロイしたら Module not found

import UserCard from "./components/userCard" と書いたコードが、手元の Mac では通り、Linux のサーバーでは落ちる。実体のファイル名は UserCard.tsx です。Web 開発で最も多く踏まれる環境差の 1 つです。

原因は言語でもビルドツールでもなく、名前を突き合わせるときの規則です。macOS の APFS は既定で大文字と小文字を同じ文字として扱い、Linux の ext4 は別の文字として扱います。ディレクトリの表を引く処理が、片方は大小を無視する比較で、もう片方はバイト列そのままの比較だ、という違いです。

名前の扱いが揃わない理由

ファイル名は結局バイト列ですが、それを何とみなすかは各実装が決めます。ext4 はバイト列をそのまま比較します。何も解釈しないので、日本語だろうが絵文字だろうが、バイトが 1 つ違えば別ファイルです。

APFS は Unicode として解釈します。しかも macOS には「が」を か と濁点の 2 文字に分解した形で保存してきた経緯があり、同じ名前に見えるのに Git が延々と差分を出す、ZIP を Windows で開くと名前が崩れる、といった事故はここから来ます。

この差は好みの問題ではなく、設計時の要請の違いです。GUI を前提とする macOS や Windows は「利用者が Memo.txt と memo.txt を別物だと思わない」ことを優先しました。サーバー用途で育った ext4 は、余計な解釈をしないことを優先しました。どちらも、その場では正しい判断でした。

前提とする装置の違いも効いています。ext4 が広まったのは HDD が主流の時代で、磁気ヘッドの移動を減らすためにブロックをなるべく連続させる設計です。APFS は SSD しか無い前提で作られ、書き換えのたびに別の空き場所へ書く方式を採っています。どこが速いかは装置で変わるので、答えも 1 つに収束しません。

揃えられるのは呼び方までで、名前の規則は漏れてくる

VFS のおかげで、open や read の呼び方は下にどの実装が居ても同じです。だから普段は種類を意識せずに済みます。

しかし共通化できるのは手続きの形までで、名前をどう突き合わせるかは各実装の内側にあります。ここだけは上のアプリまで漏れてきます。ファイル名の大小を意識しないコードは、動く環境と動かない環境ができてしまいます。

ターミナル

touch UserCard.tsx cat userCard.tsx

プレーンテキスト

macOS (APFS) 中身が表示される Linux (ext4) cat: userCard.tsx: No such file or directory

対策は環境をそろえることに尽きます。Linux へデプロイするプロジェクトは Docker や Lima の中で開発する、あるいは大小を区別する設定の APFS ボリュームを別に切って、そこにリポジトリを置きます。

解説

現場の話 外付け SSD を Mac と Windows で共用したいときは exFAT を選びます。NTFS は macOS からは読めても書けず、APFS は Windows が認識しません。ただし exFAT は障害に弱いので、消えて困るデータの唯一の置き場所にはしないでください。

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

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

  • デプロイ本番環境へアプリを配置し公開する作業
  • サーバークライアント(ブラウザなど)がリクエストを送り、サーバーがレスポンスを返す。
  • ディレクトリファイルを整理するフォルダのこと。
  • 処理計算や代入を表す長方形
  • Gitファイル変更履歴を管理するツール
  • 設計何をどう作るかを決める前工程
  • 判断YES/NO 分岐を表す菱形
  • ロック「他の人触らないでね」と DB に予約する
生田 陸人
監修生田 陸人
ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
編集 ゆめさく編集部·公開 2026/05/27·更新 2026/08/26

関連レッスン

  • ジャーナリングと耐障害性

    操作を書き込みログに先に記録するジャーナリングで電源断やクラッシュからデータを守る仕組みと、コピーオンライト方式との違いまで分かりやすく整理します。

  • パーミッションと所有者

    UNIX 系 OS のファイル権限を所有者・グループ・その他の三区分と読み書き実行の観点から整理し、chmod や chown、ACL の使いどころまで解説します。

  • レースコンディション

    複数スレッドが同じ資源を同時に変更し実行順で結果が変わるレースコンディションの正体と、アトミック操作やロックで防ぐ具体策を実務目線で解説します。

  • ネットワークとは

    コンピューターどうしをつなぐ仕組み「ネットワーク」の基本概念を学びます。

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

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