「Copilotが8割書いてくれる時代に、いまさら自分でデータベースを実装して何になるのか」——そう感じる若手エンジニアは少なくありません。しかしGitHubで約52万スターを集める build-your-own-x の人気が落ちないのには理由があります。生成AIがコードを量産するほど、その生成物を評価・デバッグ・改善できる人の希少性が上がるからです。本記事では build-your-own-x を単に翻訳するのではなく、日本人開発者がキャリアで伸ばすために選ぶべき『自分で作る』TOP10として選書し、学習順序(ロードマップ)とAI時代の意義まで一気に整理します。
AIエンジニアとしての学習全体の地図が欲しい方は 2026年版Agentic AIエンジニアのロードマップ も合わせてどうぞ。本記事はその「基礎体力」に相当する、低レイヤ〜システム理解を自作で身につける道筋を扱います。
build-your-own-xとは——約52万スターの「自分で作る」学習カタログ
build-your-own-x は、CodeCrafters(codecrafters.io)が運営するGitHubリポジトリで、コンセプトは非常にシンプルです。「お気に入りの技術をゼロから作り直して(build from scratch)プログラミングを習得する」。Markdownで書かれたキュレーションリストで、GitHub上でもっともスターの多いリポジトリのひとつに数えられます。
重要なのは、これ自体が教材ではなく良質な自作チュートリアルへの入口を集めたリンク集だという点です。世界中のエンジニアが書いた「〇〇をゼロから作ってみた」系の記事・リポジトリのうち、実際に手を動かして完成まで導ける質の高いものだけが、30のカテゴリに整理されて並んでいます。
現在カバーされているカテゴリは次の30種です。
・3D Renderer(3Dレンダラー)/ AI Model(AIモデル)/ Augmented Reality(AR)
・BitTorrent Client / Blockchain・Cryptocurrency / Bot
・Command-Line Tool / Database / Docker
・Emulator・VM / Front-end Framework / Game
・Git / Memory Allocator / Network Stack / Neural Network
・Operating System / Physics Engine / Processor / Programming Language
・Regex Engine / Search Engine / Shell / Template Engine / Text Editor
・Visual Recognition System / Voxel Engine / Web Browser / Web Server / Distributed Systems
各カテゴリの下には、CやGo、Python、Rust、JavaScriptなど複数言語のチュートリアルが併記されているのが特徴です。たとえばDatabaseなら、Cで書かれた「Let’s Build a Simple Database」、C++/Goの「Build Your Own Redis from Scratch」、Goの「Build Your Own Database from Scratch: From B+Tree To SQL in 3000 Lines」といった具合に、同じテーマを異なる言語・粒度で学べます。自分の得意な言語を選べるので、言語の学習コストを払わずに「作る対象」の本質に集中できます。
読者がまず知りたい問いに答えると、build-your-own-x で学べること(何ができるようになるか)は、「普段ブラックボックスとして使っている技術の内部構造を、自分の手で再実装して理解すること」です。Gitのコミットが実際どうオブジェクトとして保存されるのか、Dockerのコンテナがどうやってプロセスを隔離するのか、ニューラルネットが誤差からどう学習するのか——抽象の一段下を、読むのではなく作って体得します。
AIが書く時代に、なぜ「自分で作る」学習が市場価値を生むのか
ここが本記事の核心です。Claude・Copilot・Cursorがコードを生成する2026年に、なぜ手間のかかる自作学習がむしろ重要なのか。煽らず、事実と論理で整理します。
第一に、生成物を評価・デバッグできる人材が相対的に希少になっているという構造変化があります。AIはコードを大量に出力しますが、その正しさ・効率・安全性を最終判断するのは人間です。B+Treeのバランスがなぜ崩れるのか、TCPの再送がどのタイミングで走るのか、コンテナのnamespace分離が何を隔離して何を隔離しないのか——こうした抽象の下を知っている人だけが、AIの生成物のバグや設計ミスを見抜けます。書く仕事が自動化されるほど、レビューと判断の価値は上がります。
第二に、AIへの適切な指示(プロンプト・仕様)を書く力は、対象領域の理解に比例します。「なんとなく動くもの」を頼むだけなら誰でもできますが、「この部分はB+TreeよりLSM-treeの方が書き込み負荷に強い」と方向づけられるのは中身を知る人です。AIは方向を与える人の解像度以上のものは出力しません。
第三に、自作経験は面接とキャリアで差別化される具体的な実績になります。「Redisのミニ版を作ってRESPプロトコルとイベントループを実装した」「100行のコンテナランタイムでcgroupsとnamespaceを触った」という話は、フレームワークを使っただけの経験より遥かに強い信号です。とくに日本の中堅以上のポジションでは、低レイヤの理解が待遇に直結しやすい傾向があります。
具体例を挙げます。あるチームが生成AIに「Redis互換のキャッシュを軽量実装して」と頼んだとします。AIはそれらしいコードを返しますが、SETとGETのプロトコル(RedisのRESP)や、TTL(有効期限)の扱い、同時アクセス時の競合をどう捌くかまで正しく設計できているかは、レビューする人間の理解に依存します。もし過去に自分でRESPを一度パースし、キー・バリューストアのイベントループを書いた経験があれば、生成コードの「ここはGETのnil応答が抜けている」「有効期限のチェックが読み取り時に走っていない」といった欠陥が一目で見えます。作った経験の有無が、そのままレビュー速度と品質の差になります。
さらにもう一段、キャリアの時間軸で見ると重要な点があります。フレームワークやAIツールは数年で入れ替わる一方、TCP・B+Tree・プロセス・勾配降下といった基礎は10年単位で陳腐化しません。流行のツールを追いかけ続ける学習は消耗戦になりますが、build-your-own-x で身につく「抽象の下」の知識は、次にどんなAIツールや言語が来ても土台として効き続けます。移り変わりの速い時代だからこそ、変わらないものに投資する価値が上がっています。
要するに、AIが「書く」を担うほど、人間には「わかる・見抜く・方向づける」が求められる。build-your-own-x は、その「わかる」を最短で鍛える実践場です。翻訳された概念を読むだけでは到達できない理解が、実際に動くものを作る過程で身につきます。
日本人開発者向け「自分で作る」TOP10——選書基準と早見表
30カテゴリのうち、どれを選ぶか。ここは翻訳ではなく筆者の編集判断としてはっきり主張します。選定の軸は3つです。
・①つぶしが効く基礎:Git/Database/Shell/HTTP Web Serverなど、どんな職場でも毎日触る技術。理解が一生効く
・②AI時代に直接効く:LLM from scratch/Neural Network/RAGなど、生成AIの中身を掴み、AIを操る側に回るための土台
・③システム理解が一段深まる:Docker/OS/分散システム(Kafka)など、インフラ・大規模設計の解像度を上げる
この3軸で、日本の若手〜中堅エンジニアがキャリアを伸ばす費用対効果が高い順に並べたのが次のTOP10早見表です。難易度は★1〜5、目安時間はミニ版を一通り完成させる想定です。
| 順位 | 作るもの | 主に身につく力 | 難易度 | 目安時間 | おすすめ言語 | AI時代の効き |
|---|---|---|---|---|---|---|
| 1 | Git | オブジェクトモデル/差分・履歴の仕組み | ★★☆☆☆ | 10〜20h | Python | 中:バージョン管理の内部を掴む |
| 2 | HTTP Web Server | TCP/HTTP/並行処理 | ★★★☆☆ | 10〜25h | Go / Python | 高:AI生成APIの土台を理解 |
| 3 | Database | B+Tree/WAL/SQLパース | ★★★★☆ | 30〜50h | C / Go | 高:RAGやデータ層の判断力 |
| 4 | Shell | プロセス/fork・exec/パイプ | ★★☆☆☆ | 5〜15h | C / Rust | 中:実行環境の基礎 |
| 5 | Docker/Container | namespace/cgroups/isolation | ★★★☆☆ | 10〜20h | Go | 高:デプロイと隔離の本質 |
| 6 | Neural Network | 勾配降下/誤差逆伝播 | ★★★☆☆ | 20〜40h | Python | 最高:学習の仕組みそのもの |
| 7 | LLM | Transformer/Attention/tokenizer | ★★★★★ | 40〜80h | Python | 最高:生成AIの中核を自作 |
| 8 | RAG/検索 | embedding/ベクトル検索/再ランク | ★★★☆☆ | 15〜30h | Python | 最高:実務のAI検索を実装 |
| 9 | 分散システム(Kafka風) | ログ/レプリケーション/整合性 | ★★★★☆ | 30〜60h | Java / Go | 高:大規模設計の解像度 |
| 10 | OS | ブート/メモリ管理/割り込み | ★★★★★ | 50h〜 | Rust / C | 中:計算機の最下層を体得 |
上位ほど「短時間で効果が大きい(コスパが高い)」順に寄せています。1〜5は基礎として万人におすすめ、6〜8はAI領域でキャリアを作りたい人、9〜10は骨太なシステム理解を武器にしたい人向けです。すべてやる必要はなく、上位から2〜3本を選んで深く作り込むのが現実的な戦略です。
TOP10を深掘り——各テーマで「実際に何を実装するのか」
早見表だけでは中身が掴めないので、各テーマで具体的に何を作るのかに踏み込みます。ここを読めば「自分が何を手に入れるか」がイメージできるはずです。
1. Git を作る。 バージョン管理を「なんとなくコマンドで使う」段階から卒業します。実装するのは、ファイルをハッシュ(SHA-1)で名付けて保存するblobオブジェクト、ツリー構造を表すtree、履歴をつなぐcommitの3種のオブジェクトと、それらを.gitディレクトリに書き込む処理です。「Write yourself a Git!」(Python)や「ugit: Learn Git Internals by Building Git Yourself」(Python)、JavaScriptの「Gitlet」が定番です。たとえばblobの保存は、中身をヘッダ付きでハッシュ化してオブジェクトとして書くだけ、というのが実際に手を動かすと腹に落ちます。
# git のオブジェクト保存の核心(擬似コード)
import hashlib, zlib
data = b"hello"
store = b"blob " + str(len(data)).encode() + b"\x00" + data
oid = hashlib.sha1(store).hexdigest() # これがコミットにも使われるID
# .git/objects/<oid[:2]>/<oid[2:]> に zlib 圧縮して書き込む
git addとgit commitが内部でこのオブジェクトをどう積み上げているかが腹落ちすると、rebaseやcherry-pick、detached HEADで事故らなくなります。
2. HTTP Web Server を作る。 ソケットをlistenし、TCP接続を受け取り、HTTPリクエストの行とヘッダをパースして、ステータスコードとボディを返す——この一連を自分で書きます。さらに複数接続を捌くためのスレッド/イベントループ/非同期I/Oに踏み込むと、なぜ本番サーバでコネクション数やタイムアウトが問題になるのかが体でわかります。フレームワークが隠している層を一度開けておくと、AIが生成したAPIコードのボトルネックも読めるようになります。
3. Database を作る。 TOP10で最もリターンが大きいテーマのひとつです。Cの「Let’s Build a Simple Database」はSQLiteを模してREPL→トークナイザ→B-Treeによるページ管理まで段階的に作ります。Goの「Build Your Own Database from Scratch: From B+Tree To SQL in 3000 Lines」は、その名の通りB+Treeから始めてSQLの実行まで3000行で到達します。ここで学ぶB+Tree(範囲検索に強い木構造)やWAL(Write-Ahead Log)、インデックスの効き方は、RAGのベクトルDB選定やスロークエリのチューニングにそのまま効きます。
4. Shell を作る。 プロンプトを出し、入力をパースし、forkで子プロセスを作ってexecでコマンドを差し替え、waitで待つ——UNIXの根幹であるプロセスモデルを最短で学べます。パイプ(|)やリダイレクト(>)を実装すると、ファイルディスクリプタの付け替えという概念が手に入ります。5〜15時間と軽量なわりに、得られる「OSプロセスの基礎」の価値が非常に高いコスパ枠です。
5. Docker/Container を作る。 「Build Your Own Container Using Less than 100 Lines of Go」や「Linux containers in 500 lines of code」(C)、Pythonの「Rebuild Docker from Scratch」が有名です。実装の肝は、コンテナが魔法ではなくLinuxカーネルの機能の組み合わせだと体得すること。プロセス・ネットワーク・マウントを隔離するnamespace、リソースを制限するcgroups、ルートを差し替えるchroot/pivot_root——これらを叩くだけで「隔離」が成立します。実際、100行足らずのGoでも、syscall.CLONE_NEWUTSなどのフラグ付きで子プロセスを起動し、ホスト名やファイルシステムを分離するだけでコンテナの原型ができます。この理解があると、「なぜコンテナ内からホストのプロセスが見えないのか」「なぜメモリ制限を超えるとOOM Killerが走るのか」が腹落ちし、本番のセキュリティ設計やネットワーク不通の原因切り分けが段違いに速くなります。Dockerというプロダクトへの依存度が下がり、Kubernetesを含むコンテナ基盤全体の理解が地に足のついたものになります。
6. Neural Network を作る。 AndrejKarpathyの「Neural Networks: Zero to Hero」は、微小な自動微分エンジン(micrograd)から始めて、順伝播→損失計算→誤差逆伝播(backprop)→勾配降下でのパラメータ更新を一切のフレームワークなしで実装します。「A Neural Network in 11 lines of Python」のような極小実装や、PyTorchの内部を34段階で再実装する「Build Deep Learning From Scratch」もあります。loss.backward()が裏で何をしているかを一度自分で書くと、学習が回らないときのデバッグ勘が身につきます。
7. LLM を作る。 TOP10で最難関かつ最もAI時代に効くテーマです。rasbt/LLMs-from-scratch の「A Large Language Model (LLM)」(Python)は、トークナイザ→埋め込み→Self-Attention→Transformerブロック→事前学習→ファインチューニングまでをステップごとに手を動かして作ります。「Diffusion Models for Image Generation」で画像生成側を、langchainの「rag-from-scratch」でRAGを学ぶ道もあります。Attentionが「どのトークンにどれだけ注目するか」を計算する仕組みを自分で書くと、プロンプト設計やコンテキスト長の話が地に足のついた理解になります。
8. RAG/検索を作る。 実務直結度が高い一本です。文書をチャンクに分割し、embeddingでベクトル化し、クエリとの近傍をベクトル検索で引き、必要に応じて再ランク(reranking)して、LLMのプロンプトに注入する——この一連をライブラリに頼らず組みます。langchainの「rag-from-scratch」が入口として定番です。なぜ検索がヒットしないのか、なぜ関係ない文書が混ざるのかを、自分の実装で観察できるのが強みです。
9. 分散システム(Kafka風)を作る。 Javaの「Building Your Own Kafka-like System From Scratch」では、追記専用ログ(append-only log)、パーティション、プロデューサ/コンシューマ、レプリケーションといった分散メッセージングの基本要素を作ります。ここで触れる「ログを中心に据える設計」「順序保証とレプリケーション」「障害時の整合性」は、マイクロサービスやイベント駆動アーキテクチャの設計判断に直結します。上級者がシステム設計面接で戦うための武器になります。
10. OS を作る。 最も骨太で、計算機の最下層を体得できます。「Writing an OS in Rust」(ブログ連載)、Cの「The little book about OS development」「Operating Systems: From 0 to 1」、そして環境を丸ごと組む「Linux from scratch」が代表です。ブートローダからカーネルを立ち上げ、メモリ管理、割り込み、簡単なスケジューラを実装していく過程で、これまで作ってきたプロセス・メモリ・I/Oの知識がすべて繋がります。時間はかかりますが、「コンピュータが何をしているか」の解像度が根本的に変わります。
なお、TOP10には惜しくも入りませんでしたが、Programming Language / Interpreter(Crafting Interpreters系が関連リンクにある)は「言語がどう動くか」を学ぶ王道で、11位級の価値があります。ほかにもBitTorrent Client(P2Pとネットワーク)、Text Editor(データ構造とターミナル制御)、Regex Engine(オートマトン)、Blockchain(ハッシュチェーンと合意)など、目的に応じて選べる良テーマが揃っています。
学習ロードマップ——依存順序とコスパで選ぶ順番
TOP10を「どの順で」やるかは、成果を大きく左右します。テーマ間には依存関係があり、下地なしに難所へ挑むと挫折します。次のフローは、無理なく積み上がる推奨順序です。
Git / Shell"] --> B["中級
HTTP Web Server / Database"] B --> C["中〜上級
Docker / Interpreter"] C --> D["上級
OS / 分散システム(Kafka)"] B --> E["AI基礎
Neural Network"] E --> F["AI応用
LLM / RAG"] A -.->|毎日使う技術で挫折しにくい| B C -.->|プロセス理解が土台| D
流れを言葉にすると、まず毎日使っていて挙動をイメージしやすいGit・Shellで「自分で作る」体験に慣れます。次にHTTP Web ServerとDatabaseで、通信とデータ永続化という実務の二大基礎を固めます。ここまで来るとプロセスやI/Oの土台ができるので、DockerやInterpreterで一段深い抽象へ、さらにOSや分散システムという上級テーマへと積み上がります。AI方向に進みたい人は、Databaseで得たデータ感覚を土台にNeural Network→LLM/RAGへ分岐すると、embeddingやベクトル検索の話が自然に繋がります。
コスパ(短時間で効果大)の観点で優先順位をつけると、次のようになります。
・最優先(軽量で効果大):Shell(5〜15h)→ Git(10〜20h)。低コストで「作る筋力」と基礎理解が付く
・次点(実務直結):HTTP Web Server(10〜25h)→ RAG/検索(15〜30h)。現場でそのまま効く
・中量級(システム理解):Docker(10〜20h)→ Database(30〜50h)。インフラとデータの解像度が上がる
・重量級(差別化):Neural Network→LLM、分散システム、OS。時間は要るが市場価値の差別化に直結
レベル別に整理すると次の通りです。まず1段目を完走してから次段へ進むのが安全です。
| レベル | 作るテーマ | 目的・得られるもの | 目安の合計時間 |
|---|---|---|---|
| 初級 | Shell → Git | 「自分で作る」体験に慣れる/プロセスとバージョン管理の基礎 | 15〜35h |
| 中級 | HTTP Web Server → Database | 通信とデータ永続化という実務の二大基礎 | 40〜75h |
| 中〜上級 | Docker → Interpreter | 隔離・実行環境と、言語の動作原理 | 30〜60h |
| 上級 | OS → 分散システム | 計算機最下層と大規模設計の解像度 | 80h〜 |
| AI特化 | Neural Network → LLM → RAG | 生成AIの中身を掴み、AIを操る側に回る | 75〜150h |
散在教材・有料スクールと何が違うのか——build-your-own-xの立ち位置
最後に、読者が気になる「これは何を代替できるのか」に答えます。build-your-own-x の立ち位置は、散在する学習教材のキュレーションと、体系的な選書・順序づけにあります。
Zenn・Qiita・技術ブログには「〇〇を作ってみた」系の良記事が無数にありますが、どれが完走できる質か、どういう順で取り組むべきかは個々の読者が判断するしかありません。build-your-own-x はその「良質な自作チュートリアルへの入口」を一箇所に集め、本記事はさらに日本人開発者のキャリア視点で順位と学習順序を与えます。つまり、教材そのものを置き換えるのではなく、教材選びと道順の迷子を減らす役割です。
有料プログラミングスクールとの関係もはっきりさせておきます。スクールが提供する価値は主に「強制力・メンター・添削・仲間」です。一方 build-your-own-x が提供するのは、世界最高峰の題材と、無料でアクセスできる圧倒的な選択肢です。自走できる人にとっては、数十万円のスクールで得る低レイヤ理解を、build-your-own-x のDatabase・OS・Networkチュートリアルで(時間はかかるものの)無料で獲得できます。逆に、独学の強制力が続かない人はスクールの伴走が向きます。両者は代替というより、自走型の学習者にとっての最強の無料ルートという位置づけが正確です。
日本人開発者にとっての固有の価値も補足しておきます。build-your-own-x のチュートリアルの多くは英語ですが、これは障壁というより英語技術ドキュメントへの良質な入口として機能します。手を動かして作るという明確なゴールがあるぶん、抽象的な英語記事を漫然と読むより格段に読み進めやすく、結果として英語で技術を吸収する力そのものが鍛えられます。Zenn・Qiitaの体験談が「個々人の作ってみた」の集積であるのに対し、本記事は体系的なロードマップと選定基準という別軸で価値を出しています。両者は競合せず、まず本記事で全体地図と順序を掴み、実際に詰まったら日本語の体験談で個別の落とし穴を補う、という併用が効率的です。
そして本記事が繰り返し主張してきた通り、その価値はAIの普及でむしろ高まっています。読者の3つの問いに最終的な答えを置くと——①何が学べるか:普段ブラックボックスにしている技術の内部構造を、作って理解する力。②何を解決するか:AI生成物を評価・デバッグ・方向づけできない、という現代エンジニア最大のボトルネック。③何を代替するか:散在する教材選びの迷いと、低レイヤ理解のための高額な出費。build-your-own-x のTOP10から一本、今日選んで作り始めることが、AIが書く時代にあなたの市場価値を上げるもっとも確実な投資です。まずは軽量なShellかGitを、この週末に着手してみてください。
参照ソース
・codecrafters-io/build-your-own-x — GitHub
・CodeCrafters 公式サイト
・rasbt/LLMs-from-scratch — ゼロからLLMを実装するリポジトリ
・Neural Networks: Zero to Hero — Andrej Karpathy
・Crafting Interpreters — Robert Nystrom
・Let’s Build a Simple Database(SQLite クローンを作る)