このリポジトリは、お気に入りのテクノロジをゼロから再作成するための、よく書かれたステップバイステップのガイドをまとめたものです。
私に創造できないものは理解できません — リチャード・ファインマン。
それは素晴らしい学習方法です。
3D レンダラー
拡張現実
ビットトレントクライアント
ブロックチェーン / 暗号通貨
ボット
コマンドラインツール
データベース
ドッカー
エミュレータ/仮想マシン
フロントエンドフレームワーク/ライブラリ
ゲーム
Git
ネットワークスタック
ニューラルネットワーク
オペレーティング·システム
物理エンジン
プログラミング言語
正規表現エンジン
検索エンジン
シェル
テンプレートエンジン
テキストエディタ
視覚認識システム
ボクセルエンジン
ウェブブラウザ
ウェブサーバー
未分類
3D Renderer
を構築するC++ :レイ トレーシングの概要: 3D イメージを作成する簡単な方法
C++ : OpenGL の仕組み: 500 行のコードでソフトウェアをレンダリングする
C++ : Wolfenstein 3D のレイキャスティング エンジン
C++ :物理ベースのレンダリング:理論から実装まで
C++ :レイ トレーシングを週末で
C++ :ラスタライゼーション: 実用的な実装
C# / TypeScript / JavaScript : C#、TypeScript、または JavaScript で 3D ソフト エンジンを最初から作成する方法を学習します。
Java / JavaScript :独自の 3D レンダラーを構築する
Java :純粋な Java で独自のシンプルな 3D レンダリング エンジンを作成する方法
JavaScript / 疑似コード:ゼロからのコンピューター グラフィックス
Python : 3D モデラー
Augmented Reality
を構築するC# :ハウツー: Vuforia と Unity 3D を使用した初心者向け拡張現実アプリのチュートリアル[ビデオ]
C# : ARCore を Unity に統合する方法[ビデオ]
C# : Unity を使用した AR ポータル チュートリアル[ビデオ]
C# : Unity ARCore の拡張現実でドラゴンを作成する方法[ビデオ]
C# :拡張現実 AR チュートリアルの使い方: ARKit ポータルを逆さまにする方法[ビデオ]
Python : Python と OpenCV による拡張現実
BitTorrent Client
を構築するC# : C# で BitTorrent クライアントを最初から構築する
Go : Go で BitTorrent クライアントをゼロから構築する
Nim : Bencode パーサーの作成
Node.js :独自の bittorrent クライアントを作成する
Python : Python 3.5 の BitTorrent クライアント
Blockchain / Cryptocurrency
を構築するATS :機能的ブロックチェーン
C# : C# でのブロックチェーンのプログラミング
Crystal : Crystal を使用して独自のブロックチェーンと PoW アルゴリズムを作成する
Go : Go でブロックチェーンを構築する
Go : 200 行未満の Go で独自のブロックチェーンをコーディング
Java : Java を使用して最初のブロックチェーンを作成する
JavaScript : 1500 行未満のコードで暗号通貨を実装
JavaScript : JavaScript で独自のブロックチェーンを構築する
JavaScript : JavaScript ブロックチェーンを学習して構築する
JavaScript : JavaScript でブロックチェーンを作成する
JavaScript :本番環境に対応した独自の暗号通貨を起動する方法
JavaScript : Node.js でブロックチェーンを作成する
Kotlin : Kotlin で暗号通貨を実装してみましょう
Python :ブロックチェーンを構築して学ぶ
Python :独自のブロックチェーンを構築する: Python チュートリアル
Python : Python を使用したブロックチェーンの実践的な入門
Python :最も小さなブロックチェーンを構築しましょう
Ruby :ブロックチェーンのステップバイステッププログラミング (原稿書籍版)
Scala :シンプルなアクターベースのブロックチェーンを構築する方法
TypeScript : Naivecoin: 暗号通貨を構築するためのチュートリアル
TypeScript : NaivecoinStake: Proof of Stake コンセンサスを使用して暗号通貨を構築するためのチュートリアル
Rust : Rust と Substrate でブロックチェーンを構築する
Bot
を構築するHaskell :独自の IRC ボットをロールアウトする
Node.js : Node.js で API.ai を使用してシンプルな Facebook Messenger AI ボットを作成する
Node.js :応答性の高い電報ボットを作成する方法
Node.js : Discord ボットを作成する
Node.js : gifbot - GitHub アプリの構築
Node.js : Web Speech API と Node.js を使用したシンプルな AI チャットボットの構築
Python : Python を使用して最初の Slack ボットを構築する方法
Python : Slack イベント API と Django を使用して Python で Slack ボットを 20 分以内に構築する方法
Python : Reddit ボットを構築する
Python : Reddit ボットの作り方[ビデオ]
Python : Python を使用して Telegram ボットを作成する方法
Python : Tweepy を使用して Python で Twitter ボットを作成する
Python : Python と PRAW を使用して Reddit ボットを作成する[ビデオ]
R : R を使用して暗号通貨取引ボットを構築する
Rust : Rust、C、またはその他の言語で作成された Starcraft 用のボット
Command-Line Tool
を構築するGo : Go を使用してローカル git の貢献を視覚化する
Go : Go でコマンド ライン アプリを構築する: lolcat
Go : Go を使用して cli コマンドを構築する: Cowsay
Go : Go CLI チュートリアル: Fortune clone
Nim :ドットファイルを管理するための stow の代替コードを作成する
Node.js : Javascript で CLI ツールを作成する
Rust : Rustのコマンドラインアプリ
Rust : Rust でコマンドラインツールを書く
Database
を構築するC :簡単なデータベースを構築してみよう
C++ :独自の Redis をゼロから構築する
C# :独自のデータベースを構築する
Clojure :考古学にヒントを得たデータベース
Crystal :独自の NoSQL データベースを構築する必要がある理由
Go :独自のデータベースをゼロから構築する: 永続性、インデックス作成、同時実行性
Go :独自の Redis をゼロから構築する
JavaScript : Dagoba: インメモリ グラフ データベース
Python : DBDB: 犬用ベッド データベース
Python : Python で独自のミニチュア Redis を作成する
Ruby : Ruby で独自の高速かつ永続的な KV ストアを構築する
Rust :独自の Redis クライアントとサーバーを構築する
Docker
構築するC : 500 行のコードで構成される Linux コンテナー
Go : 100 行未満の Go を使用して独自のコンテナを構築する
Go : Go でコンテナを最初から構築する[ビデオ]
Python : Linux コンテナに関するワークショップ: Docker をゼロから再構築する
Python : 100% Python で書かれた Docker の概念実証模倣
シェル:約 100 行の bash で実装された Docker
Emulator / Virtual Machine
構築するC :自作のバイトコード インタプリタ
C : C の仮想マシン
C :独自の仮想マシンを作成する
C :ゲームボーイエミュレータ、Cinoop の作成
C++ :エミュレータ (CHIP-8 インタープリタ) の書き方
C++ :エミュレーション チュートリアル (CHIP-8 インタープリター)
C++ :エミュレーションチュートリアル (ゲームボーイエミュレータ)
C++ :エミュレーション チュートリアル (マスター システム エミュレーター)
C++ : NES エミュレータをゼロから[ビデオ]
Common Lisp : Common Lisp の CHIP-8
JavaScript : JavaScript でのゲームボーイエミュレーション
Python :エミュレーションの基礎: 独自の Chip 8 エミュレータ/インタープリタを作成する
Rust : 0dmg: 部分的なゲームボーイエミュレータを構築して Rust を学ぶ
Front-end Framework / Library
構築するJavaScript :なんと JSX です (JSX レンダラーを構築しましょう)
JavaScript :独自の React を構築するための DIY ガイド
JavaScript : React をゼロから構築する[ビデオ]
JavaScript : Gooact: 160 行の JavaScript で反応する
JavaScript :独自の軽量 React DOM を構築して、React Reconciler パッケージがどのように機能するかを学びます
JavaScript : Redux を自分で構築する
JavaScript : Redux を書いてみよう!
JavaScript : Redux: ストアを最初から実装する[ビデオ]
JavaScript : 200 行の JavaScript で独自の簡略化された AngularJS を構築する
JavaScript :独自の AngularJS を作成する
JavaScript :独自の仮想 DOM を作成する方法
JavaScript :コンポーネント (テンプレート、状態、VDOM) を使用してフロントエンド フレームワークを最初から構築する
JavaScript :独自の React を構築する
JavaScript :カスタム React レンダラーの構築[ビデオ]
Game
を構築するC :ハンドメイドヒーロー
C : C で NES ゲームをプログラムする方法
C : C のチェス エンジン[ビデオ]
C :作ろう:デンジャラス・デイブ[ビデオ]
C : C でビデオ ゲーム プログラミングを学ぶ[ビデオ]
C : C での数独ソルバーのコーディング[ビデオ]
C : C で Rogue/Nethack RPG をコーディングする[ビデオ]
C :テトリスと再実装について
C++ :ブレイクアウト
C++ :初心者向けゲーム プログラミング v2.0
C++ :初心者向けのゲーム ロジックに焦点を当てた C++ プラットフォーム非依存のテトリス チュートリアル
C++ : C++ で洞窟物語をリメイクする[ビデオ]
C++ :洞窟物語の再構築[ビデオ]
C++ :ゼロからのスペースインベーダー
C# :簡単な RPG を構築して C# を学びましょう
C# : C# でローグライク ゲームを作成する
C# : C#/WPF RPG を構築する
囲碁:囲碁ゲーム[ビデオ]
Java : Java を使用して 2D ゲーム エンジンをコーディングする - 初心者向けのフル コース[ビデオ]
Java : LWJGL 3 を使用した 3D ゲーム開発
JavaScript : Phaser を使用した 2D ブレイクアウト ゲーム
JavaScript : Phaser を使用して HTML5 で Flappy Bird を作成する方法
JavaScript : React、Redux、SVG を使用したゲーム開発
JavaScript :独自の 8 ボール プール ゲームをゼロから構築する[ビデオ]
JavaScript :初めてのローグライクの作り方
JavaScript :プログラマーのように考える: JavaScript、HTML、CSS のみを使用して Snake を構築する方法
Lua :バイトパス
Python : PyGame を使用したゲーム開発
Python : Python と Pygame を使用したゲームの作成[pdf]
Python :ローグライク チュートリアルの改訂版
Ruby : Ruby を使用したゲーム開発
ルビー:ルビースネーク
Rust : Rust の冒険: 基本的な 2D ゲーム
Rust : Rust + tcod のローグライク チュートリアル
Git
構築するHaskell : Haskell で「git clone」をボトムアップから再実装する
JavaScript : Gitlet
JavaScript : GIT を構築する - GIT を学ぶ
Python :リポジトリを作成し、コミットし、それ自体を GitHub にプッシュするのに十分な Git クライアント
Python :自分で Git を書いてみましょう!
Python : ugit: 自分で Git を構築して Git の内部を学ぶ
Ruby : Ruby で Git を再構築する
Network Stack
を構築するC : Beej のネットワーク プログラミング ガイド
C : TCP/IP スタックをコーディングしましょう
C / Python :独自の VPN/仮想スイッチを構築する
Ruby : Ruby でネットワーク スタックを構築する方法
Neural Network
を構築するC# :ニューラルネットワーク OCR
F# : F# でニューラル ネットワークを構築する
Go : Golang を使用して多層パーセプトロンを構築する
Go : Go でシンプルな人工ニューラル ネットワークを構築する方法
Go : Go でニューラル ネットワークをゼロから構築する
JavaScript / Java :ニューラル ネットワーク - コードの性質[ビデオ]
JavaScript : JavaScript 言語学者のためのゼロからのニューラル ネットワーク (パート 1 — パーセプトロン)
Python : 11 行の Python で構成されるニューラル ネットワーク
Python :ニューラル ネットワークを最初から実装する
Python :光学式文字認識 (OCR)
Python :畳み込みネットワークによる交通標識分類
Python : Keras で LSTM ニューラル ネットワークを使用して音楽を生成する
Python :畳み込みニューラル ネットワークの概要
Python :ニューラル ネットワーク: ゼロからヒーローまで
Operating System
を構築するアセンブリ:小さな x86 ブートローダーの作成
アセンブリ: Pi のベーキング – オペレーティング システムの開発
C :シンプルなコンピューター用のソフトウェアとハードウェアのスタックを最初から構築する[ビデオ]
C :オペレーティング システム: 0 から 1
C : OS 開発に関する小さな本
C :自分のおもちゃを転がす UNIX クローン OS
C :カーネル 101 – カーネルを書いてみよう
C :カーネル 201 – キーボードと画面をサポートするカーネルを作成しましょう
C : ARM 用の最小限のマルチタスク カーネルを最初から構築する
C : OSをゼロから作る方法
C : Malloc チュートリアル
C :仮想メモリをハッキングする
C : Linux カーネルと Raspberry Pi を使用したオペレーティング システム開発の学習
C :ダミー向けのオペレーティング システム開発
C++ :独自のオペレーティング システムを作成する[ビデオ]
C++ :ブートローダーの作成
Rust : Rust で OS を書く
Rust : RISC-V の追加 Rust オペレーティング システムのチュートリアル
(任意) : Linux をゼロから作る
Physics Engine
を構築するC :ビデオゲームの物理チュートリアル
C++ :ゲーム物理シリーズ (Allen Chou 著)
C++ :カスタム物理エンジンを作成する方法
C++ : 3D 物理エンジン チュートリアル[ビデオ]
JavaScript :物理エンジンの仕組み
JavaScript :空間分割を使用した広範な位相衝突検出
JavaScript : JavaScript ゲーム用のシンプルな 2D 物理エンジンを構築する
Programming Language
を構築する(任意) : mal - Lisp を作成する
アセンブリ:ジョーンズフォース
C :赤ちゃんの初めてのガベージコレクター
C :独自の Lisp を構築する: C を学び、1000 行のコードで独自のプログラミング言語を構築します
C : C で単純なガベージ コレクターを作成する
C :自身を解釈する C インタプリタ。
C : Jack Crenshaw 著「Let's Build a Compiler」の AC および x86 バージョン
C :コンパイラーをゼロから構築する方法を説明する旅
C++ : Flex を使用した独自の Toy コンパイラの作成
C++ :コンパイラーの作成方法[ビデオ]
C++ :カレイドスコープ: LLVM を使用した言語の実装
F# :パーサー コンビネータを理解する
Elixir :独自のコンパイラを作成して分かりやすく解説する[ビデオ]
Go :超小型コンパイラー
Go : Go での字句スキャン[ビデオ]
Haskell :コンパイラを作ろう
Haskell : Haskell を書いてください
Haskell : 48 時間で自分でスキームを書く
Haskell :スキームを書いてください
Java :インタプリタの作成: プログラミング言語作成のためのハンドブック
Java : JVM 言語の作成
JavaScript :超小型コンパイラー
JavaScript :超小型インタプリタ
JavaScript : Little Lisp インタープリタ
JavaScript : JavaScript でプログラミング言語を実装する方法
JavaScript : Lisp を書いてみましょう
OCaml : C コンパイラの作成
OCaml : Lisp の書き方、シリーズ
Pascal :コンパイラを作ろう
Python : Python で書かれた Python インタプリタ
Python : lisp.py: 独自の Lisp インタープリタを作成する
Python : Python で Lisp インタプリタを作成する方法
Python :簡単なインタプリタを構築してみよう
Python :独自の単純な解釈型プログラミング言語を作成する[ビデオ]
Python :ソース コードからマシン コードへ: 独自のコンパイラーを最初から構築する
Racket : Beautiful Racket: Racket を使って独自のプログラミング言語を作成する方法
Ruby :ゼロからのコンパイラ
Ruby : Ruby でゼロから作成した Markdown コンパイラ
Rust :言語 VM を構築したいということ
Rust : Rust でパーサー コンビネータを学習する
Swift : Swift を使用して LISP を最初から構築する
TypeScript :独自の WebAssembly コンパイラを構築する
Regex Engine
を構築するC :正規表現マッチャー
C :正規表現のマッチングは簡単かつ高速に行うことができます
Go :正規表現エンジンを最初から構築する方法
JavaScript : 40 行未満のコードで正規表現エンジンを構築する
JavaScript :派生関数を使用して関数型 JavaScript に正規表現を実装する方法
JavaScript :正規表現エンジンの実装
Perl :正規表現の仕組み
Python :独自の正規表現エンジンを構築する: バックトラッキング、NFA、DFA
Scala :魔法なし: 正規表現
Search Engine
を構築するCSS : CSS の検索エンジン
Python : Redis と redis-py を使用した検索エンジンの構築
Python : Python でベクトル空間インデックス エンジンを構築する
Python : Python ベースの検索エンジンの構築[ビデオ]
Python :テキスト検索をフィードバックから学習させる
Python : TF-IDF を使用してテキスト内の重要な単語を検索する
Shell
を構築するC :チュートリアル - C でシェルを作成する
C :シェルを作ろう!
C : UNIX シェルの作成
C :独自のシェルを構築する
C : C でシェルを書く
Go : Go で単純なシェルを作成する
Rust : Rust を使用して独自のシェルを構築する
Template Engine
を構築するJavaScript :わずか 20 行の JavaScript テンプレート エンジン
JavaScript : JavaScript マイクロテンプレートを理解する
Python :アプローチ: Python でおもちゃのテンプレート エンジンを構築する
Python :テンプレート エンジン
Ruby : 30 行未満のコードでテンプレート エンジンを記述する方法
Text Editor
を構築するC :独自のテキスト エディタを構築する
C++ :単純なテキスト エディターの設計
Python : Python チュートリアル: 独自のテキスト エディターを作成する[ビデオ]
Python :シンプルな Python テキスト エディターを作成します。
Ruby : Rails を使用して共同テキスト エディターを構築する
Rust : Hecto: Rust で独自のテキスト エディタを構築する
Visual Recognition System
を構築するPython : Python での機械学習を使用したナンバー プレート認識システムの開発
Python : Tensorflow のディープラーニングを使用した顔認識パイプラインの構築
Voxel Engine
を構築するC++ :ボクセルエンジンを作ってみよう
Java : Java ボクセル エンジン チュートリアル[ビデオ]
Web Browser
を構築するRust :ブラウザエンジンを作ってみよう
Python :ブラウザエンジニアリング
Web Server
を構築するC# : Web サーバーを最初から作成する
Node.js : JavaScript で独自の Web サーバーを最初から構築する
Node.js : NodeJS ストリームを使用して Web サーバーを最初からコーディングしてみましょう
Node.js : lets-build-express
PHP :純粋な PHP で Web サーバーを作成する
Python :シンプルな Web サーバー
Python : Web サーバーを構築しましょう。
Python : Web アプリケーションをゼロから作る
Python : Python で基本的な HTTP サーバーを最初から構築する
Python : Python と Flask を使用した RESTful Web API の実装
Ruby : Ruby でシンプルな WebSocket サーバーをゼロから構築する
(任意) : NAND からテトリスまで: 第一原理に基づいた最新のコンピューターの構築
合金:同一起源ポリシー
C : 1000 行未満でビデオ プレーヤーを作成する方法
C : C でハッシュ テーブルを作成する方法を学びます
C :ターミナルエミュレータの基本
C :システムコールを書く
C : Sol - ゼロからの MQTT ブローカー
C++ : 200 ドルで独自の VR ヘッドセットを構築
C++ : X ウィンドウ マネージャーの仕組みとその作成方法
C++ : Linux デバッガの作成
C++ : 64k イントロの作り方
C++ :独自のゲーム エンジンを作成する
C# : C# ネットワーキング: TCP チャット サーバー、TCP ゲーム、UDP Pong などを作成する
C# : C# および GLSL で 3D スケルトン アニメーションを最初からロードしてレンダリングする
Clojure :スペルチェッカーの構築
Go : 100 行の Golang でシンプルなターミナル エミュレータを構築する
Go :シンプルなロード バランサーを作成してみましょう
Go :ゼロからのビデオ エンコーディング
Java : Android Reddit アプリを構築する方法[ビデオ]
JavaScript :独自のモジュール バンドラーの構築 - ミニパック
JavaScript : Promise をゼロから構築して JavaScript Promise を学ぶ
JavaScript : Promise を最初から実装する (TDD 方法)
JavaScript : JavaScript で独自の call()、apply()、bind() メソッドを実装します。
JavaScript : JavaScript のアルゴリズムとデータ構造
JavaScript : React Native を使用して配車アプリを構築する
JavaScript : (文字通り) 10 分で独自の AdBlocker を構築
Kotlin :独自のキャッシュを構築する
Lua : CDN について学ぶために CDN をゼロから構築する
Nim : Redis プロトコル パーサーの作成
Nim :ビルド システムの作成
Nim : MiniTest フレームワークの作成
Nim : DMIDecode パーサーの作成
Nim : INI パーサーの作成
Nim :リンク チェッカーを作成する
Nim : URL 短縮サービスの作成
Node.js : Node.js を使用して 40 行で静的サイト ジェネレーターを構築する
Node.js : Node.js でシンプルなシングル サインオン (SSO) サーバーとソリューションを最初から構築します。
Node.js : Node を使用して実際の Node CLI アプリを作成する方法
Node.js : Node.js で DNS サーバーを構築する
PHP : PHP で独自の MVC を最初から作成する
PHP :自分のブログを作成する
PHP :フレームワークのない最新の PHP
PHP : PHP で Web 検索エンジンをコーディングする
Python :深層学習ライブラリを構築する[ビデオ]
Python :わずか 5 分でキックアス モバイル ドキュメント スキャナーを構築する方法
Python :継続的インテグレーション システム
Python : Python のレコメンダー システム: 初心者向けチュートリアル
Python : Scikit-learn を使用して SMS スパム検出器を作成する
Python : Python のシンプルなコンテンツベースのレコメンデーション エンジン
Python : Python の LSTM を使用した株式市場予測
Python : Tensorflow を使用した単純な敵対的生成ネットワーク (GAN) の構築
Python :コーディングによって ML アルゴリズムを学ぶ: デシジョン ツリー
Python : JSON デコード アルゴリズム
Python : Python を使用して独自の Git プラグインを構築する
Ruby :現実世界の歩数計
Ruby : Ruby を使用した Linux デスクトップ アプリケーションの作成
Rust : Rust で DNS サーバーを構築する
Rust :スケーラブルなチャット サービスを最初から作成する
Rust : WebGL + Rust: 基本的な水のチュートリアル
TypeScript : Tiny Package Manager: npm または Yarn がどのように機能するかを学びます
提出は歓迎です。PR を送信するか、問題を作成してください。
コメントや「反応」を残して、保留中の提出物のレビューにご協力ください。
このリポジトリは多くの寄稿者の成果です。これは Daniel Stefanovic によって開始され、現在は CodeCrafters, Inc. によって維持されています。CodeCrafters, Inc. は、法律に基づいて可能な範囲で、この作品に対するすべての著作権および関連または隣接する権利を放棄しています。