「OS を自作すれば OS が分かる」「コンパイラを書けばコンパイラが分かる」といった言い回しがあります。低レイヤ技術(OS・データベース・コンパイラ・ネットワークスタック等)は、既存のライブラリや SaaS を組み合わせるだけでは実感がつかみにくく、独学のとっかかりが難しい領域です。
その独学に向いたリソースとして名前が挙がるのが、GitHub 上のリポジトリ codecrafters-io/build-your-own-x です。スター数は 538,480、フォーク数は 50,854(記事執筆時点)と GitHub 全体でも最上位クラスの awesome-list ですが、収録数が 28 分野・数百件と非常に多く、選び方や類似リポジトリとの違いを整理せずに読み始めると、途中で迷子になりがちです。似た性格の学習リソースには practical-tutorials/project-based-learning や kamranahmedse/developer-roadmap があり、これらとの棲み分けもわかりにくい要因のひとつです。
本記事では、codecrafters-io/build-your-own-x の README と GitHub のメタデータを一次情報として、リポジトリの位置づけ・収録分野・類似 OSS との違い・活用パターン・メンテナンス状況を整理します。読み終える頃には、「学習リソースとして自分に採用すべきか」「どの分野から始めればよいか」「別のリポジトリの方が合うか」を自分で判断できる状態を目指します。
なお本記事は、リポジトリと公式サイトの公開情報をもとにした調査であり、収録されている個別チュートリアルを実行・検証したものではありません。数値・事実は記事執筆時点(2026 年 8 月)の GitHub API 取得値と、README の記載内容に基づきます。
build-your-own-x とは何か
codecrafters-io/build-your-own-x は、「〇〇をゼロから自作する」タイプの外部チュートリアルへのリンクを、技術分野別に整理した awesome-list 型のキュレーションリポジトリです。リポジトリの説明文には「Master programming by recreating your favorite technologies from scratch.(好きな技術をゼロから作り直すことでプログラミングを習熟する)」と記載されています(GitHub リポジトリ)。
このリポジトリ自体がコードやチュートリアル本体を提供するわけではありません。OS・データベース・コンパイラ・Web ブラウザ・Web サーバー等、各分野を「スクラッチで作る」ための外部記事・書籍・GitHub 実装へのリンク集として機能します。「タイトル / 使用言語 / リンク」の 3 要素で外部リソースが列挙されるフォーマットで構成されています。
運営元は CodeCrafters, Inc.(Y Combinator 出身)です。同社は有償の実装型プログラミング学習プラットフォーム codecrafters.io を提供しており、その周辺プロジェクトとして本リポジトリを維持しています。掲げている哲学として、Richard Feynman 氏の「What I cannot create, I do not understand(自分で作れないものは理解していない)」という言葉が README 冒頭に引用されており、これがリポジトリ全体のコンセプトを端的に表しています。
初見のエンジニアがまず押さえておきたい点は、次の 2 つです。第一に、本リポジトリは「アプリケーションを作るためのフレームワーク集」ではなく、「システムや技術そのものを再実装するためのチュートリアル集」であること。第二に、本リポジトリを直接動かすものではなく、リンク先の外部チュートリアルを一つずつ参照して学習する構造であることです。この 2 点が、後述する類似 OSS との違いを判断する際の起点になります。
数字で見る build-your-own-x の位置づけ
学習リソースを採用するかどうかを判断するうえで、リポジトリの規模とメンテナンス状況は重要な材料になります。GitHub API から取得した客観値は以下の通りです。
基本メタデータ
項目 | 値 |
|---|---|
説明 | Master programming by recreating your favorite technologies from scratch. |
主要言語 | Markdown |
スター数 | 538,480 |
フォーク数 | 50,854 |
ライセンス(GitHub API 自動判定) | 空欄(未判定) |
ライセンス(README・GitHub UI 表記) | Creative Commons Zero v1.0 Universal(CC0) |
可視性 | public |
archived | false |
fork | false |
disabled | false |
最終プッシュ | 2026-07-14 |
スター数 53 万超は、GitHub 全体でも最上位クラスに位置します。ユーザー向け awesome-list として見ても最大級で、それだけ多くの開発者が学習リソースとして評価していることの目安になります。フォーク数 5 万超も、コンテンツの追加・翻訳の派生活動が活発であることを示唆します。
archived=false・fork=false・disabled=false であり、リポジトリは読み取り専用化されていません。他リポジトリのフォーク(派生版)でも凍結リポジトリでもなく、独立した本体リポジトリとして継続運用されています。最終プッシュは 2026-07-14 と本記事執筆から 1 か月以内で、README の更新やリンク追加が現在も続いていることが確認できます。
ライセンス表記の注意点
上表で「GitHub API 自動判定は空欄」「README・UI 表記は CC0」と分けて記載したのは、両者の間に見かけ上の齟齬があるためです。GitHub の license 自動検出は LICENSE ファイルの形式が SPDX のパターンと厳密に一致しない場合に空欄を返すことがあり、本リポジトリではその状態になっています。一方で、README 末尾および GitHub UI 上の License 表示には Creative Commons Zero v1.0 Universal(CC0)と明記されており、実質的には CC0 として公開されています(GitHub リポジトリ)。
CC0 は「著作権をパブリックドメインに近い形で放棄する」ライセンスで、原則として引用・派生物の作成・商用利用のいずれも制約がありません。ただし、リポジトリ本体が CC0 であることと、リンク先の外部チュートリアル・記事・書籍・実装のライセンスは別物です。個々のリンク先を利用・引用する際は、そのリンク先の著作権表示に従う必要があります。
収録される 28 分野と代表チュートリアル
本リポジトリの中心的な価値は、収録範囲の広さにあります。README では、以下の 28 分野に加え「Uncategorized(未分類)」がカテゴリ見出しとして立てられ、各カテゴリの下に外部チュートリアルが列挙されています(GitHub リポジトリ README)。
カテゴリ分類(低レイヤ系 / 言語処理系 / アプリ系 / インフラ系)
理解しやすさのため、README 記載の 28 分野を性格別に整理すると次のようになります(分類は本記事の便宜的なもので、README の記載順ではありません)。
分類 | 収録カテゴリ(例) |
|---|---|
低レイヤ・ハードウェア寄り | Operating System / Memory Allocator / Emulator (Virtual Machine) / Network Stack / Voxel Engine |
言語処理・ランタイム系 | Programming Language / Regex Engine / Shell / Command-Line Tool / Template Engine |
アプリケーション・ツール系 | Text Editor / Web Browser / Game / Bot / Front-end Framework (Library) |
インフラ・分散系 | Docker / Git / Web Server / Search Engine / Blockchain (Cryptocurrency) / BitTorrent Client |
データ・ML 系 | Database / AI Model / Neural Network / Visual Recognition System |
描画・体験系 | 3D Renderer / Physics Engine / Augmented Reality |
分野数が多いだけでなく、カテゴリごとに複数言語の実装が並列で用意されている点も特徴です。網羅する言語は C / C++ / C# / Go / Java / JavaScript / Python / Rust / Ruby / Haskell / Kotlin / Lua / Nim / TypeScript / Scala / Swift / Elixir / OCaml / Pascal / Racket / Assembly / Clojure / F# / PHP / R / Zig 等、25 種類以上に及びます。
代表的なチュートリアル 5 選
README に掲載されているチュートリアルのうち、Web 上の言及頻度が高いものを分野別に抜粋すると、次のような一覧が得られます(詳細な一覧は README を参照してください)。
分野 | 代表チュートリアル | 主要言語 |
|---|---|---|
プログラミング言語 | Build Your Own Lisp | C |
言語処理系 / インタプリタ | Crafting Interpreters | Java |
オペレーティングシステム | Writing an OS in Rust | Rust |
グラフィックス / レンダラー | Ray Tracing in One Weekend | C++ |
コンパイラ | Let's Build a Compiler | 複数言語 |
「Build Your Own Lisp」は C で Lisp インタプリタを段階的に実装する書籍・オンラインチュートリアル、「Crafting Interpreters」は Java および C でツリー実装型・バイトコード VM 型の 2 種類のインタプリタを扱う書籍、「Writing an OS in Rust」は Rust で x86_64 向け OS カーネルの基礎を組み立てるオンライン連載で、いずれも英語圏の Zenn・Reddit・Hacker News 等で頻繁に参照される定番リソースです。
「Programming Language」カテゴリは 25 件以上のガイドが並ぶ最大カテゴリで、Game・Blockchain・Database・3D Renderer もこれに次ぐ規模で収録されています。README を眺めるだけで「どの分野は選択肢が豊富か」「どの言語で書かれた実装があるか」を俯瞰できる作りになっています。
類似 OSS との違い(比較選定の判断軸)
「自作系の学習リソース」というくくりでは、build-your-own-x 以外にも著名なリポジトリがいくつかあります。ここでは、比較検討で名前が挙がりやすい 2 つとの違いを整理します。
project-based-learning との違い(アプリ開発 vs. システム自作)
practical-tutorials/project-based-learning は、約 278,000 スターを集める学習系 OSS の代表格です。「プロジェクトベース(動くアプリを作る)で学べるチュートリアル集」を 言語別 に整理しており、ライセンスは MIT です。
build-your-own-x との違いを整理すると次のようになります。
- 提供物の性格: project-based-learning は「Chat アプリ・EC クローン・SNS クローン」など実用アプリケーションを作るチュートリアルが中心です。一方 build-your-own-x は「OS・DB・コンパイラ・レンダラー」などシステムや基盤技術そのものを再実装するチュートリアルが中心です
- 分類軸: project-based-learning は「C++ で作れるプロジェクト」「Python で作れるプロジェクト」といった言語別の目次構造、build-your-own-x は「Operating System 分野」「Database 分野」といった技術分野別の目次構造です
- 想定読者: project-based-learning は「新しい言語やフレームワークを、実用アプリを作りながら学びたい」層に向いており、build-your-own-x は「特定の技術分野の内部構造を理解したい」層に向いています
developer-roadmap との違い(学ぶ順序 vs. 実装リソース)
kamranahmedse/developer-roadmap は、約 364,100 スターを集める学習系 OSS で、「フロントエンド・バックエンド・DevOps・AI エンジニア等のキャリア別に、何を学ぶべきかの順序(ロードマップ)」をインタラクティブな図として提供しています。ライセンスは Creative Commons Attribution-NonCommercial 4.0 です。
build-your-own-x との違いは、提供物の性格そのものにあります。
- 提供物の性格: developer-roadmap は「学ぶ順序を可視化した地図」を提供します。build-your-own-x は「実装するためのチュートリアルへのリンク集」を提供します
- 粒度: developer-roadmap は「HTML / CSS / JS / React / Node / Docker …」といったトピック単位、build-your-own-x は「Docker を自作するチュートリアル」というリソース単位です
- 想定読者: developer-roadmap は「自分のキャリアパスで次に学ぶべきものを知りたい」層、build-your-own-x は「学ぶべきトピックはある程度分かっているが、実装しながら学べる具体的なリソースを探している」層に向いています
3 種の使い分け早見表
3 つを 1 枚の表にまとめると、棲み分けが見えやすくなります。
観点 | build-your-own-x | project-based-learning | developer-roadmap |
|---|---|---|---|
提供物 | 実装チュートリアルへのリンク集 | 実用アプリのチュートリアル集 | 学ぶ順序のロードマップ図 |
分類軸 | 技術分野別(28 分野) | 言語別 | キャリア別(Frontend / Backend / DevOps 等) |
主眼 | 低レイヤ・システムを自作 | アプリケーションを作る | 何を学ぶか可視化 |
使う場面 | 特定の技術を深く理解したい | 実用アプリを作りながら学びたい | キャリア方針に沿った学習項目を洗い出したい |
ライセンス | CC0(README 表記) | MIT | CC BY-NC 4.0 |
スター数 | 538,480 | 約 278,000 | 約 364,100 |
3 つは競合というより補完関係にあります。「キャリア方針で学ぶ項目を洗い出す(developer-roadmap)」→「アプリを作りながら言語やフレームワークを習熟する(project-based-learning)」→「特定技術の内部構造まで踏み込む(build-your-own-x)」といった順序で組み合わせると、目的別に無駄なく学べます。
挫折しない選び方(活用パターン)
awesome-list 型のリポジトリを前にしたときの最大の落とし穴は、「膨大すぎて何から始めればよいか分からず、READ 直後に閉じてしまう」ことです。build-your-own-x を採用する際に、挫折を避けるための選び方の軸を 3 つ紹介します。いずれも、リポジトリの README 上のリスト構造から自分に合ったチュートリアルを絞り込むための考え方です。
分野の絞り方(低レイヤ寄り or アプリ寄り)
まず「今の自分が最も関心を持てる分野は何か」を 1 つに絞ります。build-your-own-x は 28 分野をカバーしているため、全部門を並行して進めるのは現実的ではありません。「Operating System」「Database」「Programming Language」「Web Browser」のような低レイヤ寄りに惹かれるのか、「Game」「Bot」「Text Editor」のような触っていて楽しさが分かりやすい分野に惹かれるのかで、最初の一歩の作り方が変わります。
推奨は「業務では絶対に自分では書かないが、内部を理解しておきたい分野」を選ぶことです。仕事で使っている抽象の 1 段下(例: Web アプリ実務者なら Web Server や HTTP 実装、DB 利用側なら Database)を自作対象に選ぶと、学びが業務にも波及しやすくなります。
言語の絞り方(既習言語 or 新規言語)
各カテゴリには、複数言語による実装が並列で掲載されています。ここで「既習言語で自作する」か「新規言語で自作する」かを決める必要があります。
- 既習言語で選ぶ: すでに使い慣れた言語(例: 業務で使う Python や JavaScript)で書かれたチュートリアルを選ぶと、言語仕様に迷わずアルゴリズム・データ構造の学びに集中できます
- 新規言語で選ぶ: Rust や C・アセンブリなど、業務で触れない言語のチュートリアルを選ぶと、低レイヤ言語のスキルも同時に獲得できます。一方で、言語習熟と技術習熟の 2 軸を同時にこなす必要があるため、負荷は高くなります
「まず 1 本完走する」を最優先にするなら、既習言語のチュートリアルを選ぶのが無難です。1 本目を完走したあとに、別分野・別言語で 2 本目を選ぶ運用が現実的です。
難易度の見極め方
README 上のリスト情報から難易度を大まかに推定するには、次の 3 点を参照するとよいでしょう。
- ガイド分量: リンク先が「1 記事完結」か「章分割された連載・書籍」かで、想定所要時間が大きく変わります
- 言語の抽象度: C・アセンブリ・Rust など、メモリ管理を自分で扱う言語のチュートリアルは、Python・JavaScript のものよりも前提知識が求められる傾向があります
- 前提知識: 「Operating System」「Compiler」「Neural Network」等の分野は、その分野の入門書 1 冊分程度の前提知識を要求するチュートリアルが少なくありません
複数のチュートリアルを比較し、「最短で完走できそうなもの」から着手すると、達成感を得やすくなります。特定分野を深く理解したい場合でも、まずは短めのガイドを 1 本走り切ってから、より重い連載・書籍に進む方が挫折リスクが低くなります。
有償プラットフォーム CodeCrafters.io との関係
build-your-own-x を運営する CodeCrafters, Inc. は、有償の実装型プログラミング学習プラットフォーム codecrafters.io を運営しています。無償の GitHub リポジトリと有償プラットフォームの関係を整理しておくと、「無償で始めて有償に移行すべきか」の判断がしやすくなります。
公式サイトの説明では、codecrafters.io は「シニアエンジニア向けの実装型プログラミングチャレンジ」を提供するプラットフォームとされています。ユーザーは自分の IDE で実装し、Git push すると自動テストによって段階ごとにフィードバックが返る、というワークフローです。提供されているトラック(記事執筆時点で公開サイト上に確認できるもの)には、Shell・Redis・Grep・Interpreter・BitTorrent・Kafka・Git・HTTP Server・SQLite・DNS Server 等が含まれます。
無償の GitHub リポジトリ(build-your-own-x)と有償プラットフォーム(codecrafters.io)は、性格が明確に異なります。
観点 | build-your-own-x(無償) | codecrafters.io(有償) |
|---|---|---|
提供物 | 外部チュートリアルへのリンク集 | 段階(stage)別チャレンジ + 自動テスト環境 |
学習スタイル | 自習型(進度・題材は自分で選ぶ) | 伴走型(stage ごとにフィードバックが返る) |
対象範囲 | 28 分野・数百のチュートリアル | 数十のトラック(特定技術に限定) |
コスト | 無料 | 有料(サブスクリプション) |
挫折リスク | 高い(進度管理は自己責任) | 低め(stage 分割 + テストで進捗が可視化) |
無償の GitHub リポジトリで自習を始め、途中で挫折した場合や、「特定技術(例: Redis の再実装)を体系的に、外れなく学びたい」場合に、有償プラットフォームへの移行が選択肢になります。逆に、「まず幅広く見て回り、自分が関心を持てる分野を探す」段階では、無償のリンク集で十分です。
利用時の注意点とメンテナンス状況
学習リソースとして採用するかどうかを判断する最後の段階として、リポジトリ本体と収録内容のメンテナンス状況を確認します。
リンク先の外部チュートリアルは本リポジトリではメンテされない
本リポジトリはあくまでリンク集のため、リンク先の外部チュートリアル・記事・書籍・GitHub 実装が最新であることを保証するものではありません。リンク切れ、あるいは記載内容がリンク先の元記事の更新に追いつかず情報が古くなっているケースは、一般に awesome-list 型のリポジトリで起こり得ます。リンク先が個人ブログ・古い書籍・アーカイブ済み GitHub リポジトリの場合、最新のバージョンや推奨手法と乖離している可能性があります。
チュートリアルを始める前に、リンク先の最終更新日・使用言語のバージョン・依存ライブラリの最新性を軽く確認しておくと、途中で詰まりにくくなります。
リポジトリ本体のメンテナンス状況
一方で、リポジトリ本体(README・カテゴリ構成・リンク追加)は活発に更新されています。最終プッシュは 2026-07-14 と本記事執筆から 1 か月以内で、GitHub 上で公開されている Open Issues・Open PRs も一定数存在します。PR の多くはコンテンツ追加提案(新しいチュートリアルへのリンク追加)で、コミュニティによる継続的な整備が続いていることが確認できます(GitHub リポジトリ)。
「リポジトリ本体は活発に更新されている」ことと、「収録された個々のチュートリアルが最新である保証はない」ことは、区別して認識する必要があります。前者は健全ですが、後者はリンクごとに確認が必要という理解が実務的です。
ライセンスの再確認
前述の通り、GitHub の license 自動判定は空欄ですが、README・GitHub UI では CC0 と明記されています(GitHub リポジトリ README)。CC0 のもとで、リポジトリの構造・カテゴリ分類・README の記述内容を引用・翻訳・派生物としてまとめ直すことに大きな制約はありません。一方、リンク先の各チュートリアル・記事・書籍のライセンスは個別に定められており、そのリンク先の著作権表示に従う必要があります。
build-your-own-x が向いている読者・向いていない読者
ここまでの判断軸を統合すると、build-your-own-x の向き・不向きは次のように整理できます。
向いている読者
- 実務では抽象化されて隠れている低レイヤ技術(OS・DB・コンパイラ・ネットワーク等)を、実装を通じて理解したい人
- 特定分野に限定せず、まず幅広く「自作系のチュートリアル」を俯瞰し、自分の関心分野を探したい人
- 自習に慣れており、進度管理・題材選定を自分で行える人
- 使い慣れた言語だけでなく、新しい低レイヤ言語(C・Rust・アセンブリ等)にも取り組みたい人
向いていない読者・別の選択肢が合いそうな読者
- 「実用的な Web アプリや SaaS クローンを、言語別に作りながら学びたい」人は project-based-learning の方が合います
- 「自分のキャリアパスに沿って、次に何を学ぶべきかの順序を知りたい」人は developer-roadmap の方が合います
- 「stage 別の課題と自動テストで、伴走されながら特定技術を体系的に学びたい」人は、有償プラットフォーム codecrafters.io を検討する価値があります
- リポジトリを開いた瞬間に情報量に圧倒されて動けなくなる場合は、まず「向いていない側」の選択肢に一度移り、慣れてから戻ってくる運用も現実的です
次の一歩としては、まず GitHub リポジトリ を開いて README を通読し、興味を持てる分野を 1 つに絞ってみるのがおすすめです。そのうえで、上で示した「言語の絞り方」「難易度の見極め方」に沿って最初の 1 本を選び、まずは短めのガイドを完走することを目標にすると、リポジトリ全体を効率的に活用できます。本記事の内容は執筆時点(2026 年 8 月)の公開情報に基づいており、収録内容・スター数・ライセンス表記は今後変更される可能性があります。
関連情報
外部人材・受託開発の活用や、社内での技術教育プログラム設計をご検討中の方は、お問い合わせフォームからご相談ください。要件の整理段階からご相談いただけます。
低レイヤ技術の実装スキルを活かせるフリーランス・複業案件をお探しのエンジニアの方は、Workee で案件を探すからご確認いただけます。



