NESLab は、ファミリーコンピュータ(NES)のハードウェアを舞台に、C言語でのプログラミングを通じて「コンピュータの真の仕組み」を体感するための教育用実験環境(ラボ)です。
現代のブラックボックス化したPCやスマートフォンとは異なり、8ビットゲーム機は**「CPU、メモリ、画面表示(PPU)」の相互作用がすべて丸見え**です。本環境では、複雑な環境構築を一切行うことなく、Google Colab(ブラウザ)上でC言語のコードをコンパイルし、Webエミュレータ上で自作のプログラムをピコピコと動かすことができます。
一般的な「画面に文字を出すだけ」のC言語入門とは異なり、ハードウェア(低レイヤ)に直結した本質的なコンピュータサイエンスを学びます。
- OSと高級言語の歴史: なぜ機械語やアセンブラではなく「C言語」が必要だったのか
- プログラム内蔵方式: CPUがメモリ(ROM/RAM)から命令を読み込んで実行するメカニズム
- ハードウェア制御: メモリの「特定の住所(レジスタ)」を直接書き換えて画面や音を操る感覚
- アルゴリズムと状態遷移: 1/60秒のループの中で、入力・衝突判定・描画を処理する構造
- コンパイルの本質: 人間が書いたC言語(
.c)が、アセンブラ(.s)を経て機械語(.nes)へ翻訳されるプロセス
環境構築は不要です。Google Colab上でノートブックを開き、セルを実行するだけで開始できます。
ページ上部にある [Open In Colab] ボタンをクリックし、ご自身のGoogleドライブにコピーを保存して実行してください。
ノートブック内の「環境構築セル」を実行すると、裏側で本リポジトリがクローンされ、cc65(ファミコン用C言語コンパイラ)が自動セットアップされます。
# Colab上でのクローン・更新用コード
!git clone [https://github.com/ip-arch/NESLab.git](https://github.com/ip-arch/NESLab.git) /content/NESLab
%cd /content/NESLab