「ピコーン…… MEMORY CHECK OK」
「READY.」
昔のコンピュータって、起動するだけでワクワクしませんでしたか?
最近のPCは速くて便利ですが、電源を入れた瞬間に”何が起きているのか”はほとんど見えません。
だからこそ今回は、Pythonで“アセンブラ風のマイクロOS”を作ってみました。
もちろん本物のOSではありません。でも、
- 起動演出
- メモリチェック
- コマンド入力
- 疑似ファイルシステム
- BASIC風画面
- REBOOT演出
これらを組み込むと、かなり“それっぽい世界”が体験できます。
この記事では、Python初心者でも楽しめるように「なぜ作ったのか」「どう作ったのか」「どこが面白いのか」を順番に紹介していきます。
なぜ作ろうと思ったのか
Pythonといえば、WebアプリやAI、データ分析、業務自動化のイメージが強いですよね。
でも実は、Pythonは「遊び心のある世界観」を作るのも得意なんです。
今回やりたかったのは、”昔のコンピュータを触っている感覚”でした。
たとえば昔のPCは、起動時にこんな表示が出ます。
MEMORY R/W TEST
ADDR 1F00 W:AA R:AA OK
MEMORY CHECKSUM FFF0 OK
これだけで「コンピュータが動いている感」がありますよね。
GUIが全盛の今の時代とは違い、文字だけなのに妙にカッコいい。
そんな雰囲気をPythonだけで再現してみたくなったのが、今回の出発点です。
今回作ったもの
こんな感じの“マイクロOS風画面”です。
==============================================================
MICRO DESK OS / ASM MODE
v1.0 [2026-05-09 18:53:49]
==============================================================
>> SYSTEM READY. TYPE [HELP] FOR COMMAND LIST.
--------------------------------------------------------------
ASM>
コマンドを入力すると動きます。
ASM> help
+==========================================================+
| COMMAND REFERENCE |
+==========================================================+
| LDA TODO Show TODO list |
| STA TODO <text> Add item to TODO |
| DEL TODO <no> Delete TODO by index |
| LDA MEMO Show MEMO list |
| STA MEMO <text> Add item to MEMO |
| DEL MEMO <no> Delete MEMO by index |
| CALC <expr> Calculator e.g. CALC 1200 * 3 |
| CALL URL <name> Open bookmark URL in browser |
| CALL URLS Show URL bookmark list |
| PRT <text> Print text to screen |
| NOP No operation |
| CLS Clear screen |
| REBOOT / RST Reboot monitor |
| HLT Halt / Exit |
+==========================================================+
ASM> dir
?ILLEGAL OPCODE
OPCODE : DIR
TYPE HELP FOR COMMAND LIST
ASM> rst
REBOOT REQUESTED ...
かなり”昔のPC感”があると思いませんか?
実はOSではない(ここ大事)
今回作ったものは、「本物のOS」ではありません。
実態は、Pythonで動くコンソールアプリで、OSっぽく見せているだけです。
つまり、Windows上で動く “OS風プログラム”です。
でも、それで十分楽しいんです。むしろ初心者にはこのくらいがちょうど良くて、
- 画面制御
- 状態管理
- コマンド解析
- 疑似メモリ
- 起動シーケンス
など、プログラムの基礎がたっぷり学べます。
一番こだわったのは「起動演出」
今回もっとも時間をかけたのが、起動シーケンスの演出です。
たとえばメモリテスト。単純に表示するだけでなく、MEMORY R/W TEST のあとにアドレスをカウントアップしながら改行せずに更新しました。
print(f"{addr:04X}", end="")たったこれだけで、急に”昭和コンピュータ感”が出ます。
REBOOT演出も追加
再起動演出も作り込みました。
> reboot
と入力すると、
LOADING ASM MONITOR ...
MONITOR READY.
OK
と表示されて、再び起動シーケンスがスタートします。
中身は単純なループですが、雰囲気はかなりそれっぽいです。
この「演出を作る感覚」は、ゲーム制作やUI設計にも通じる大切な視点だと思います。
Pythonなのに低レイヤっぽい
Pythonは高級言語です。でも、16進数表示・メモリアドレス風の数値・レジスタ風の変数・疑似命令を組み合わせると、一気に”低レイヤ感”が出ます。
たとえば、こんな命令風の構文も作れます。
MOV A,10
ADD A,5
PRINT A内部ではPythonで処理しているだけですが、見た目は完全にアセンブラ。
こういう“世界観づくり”は、Pythonでも十分できます。
Web版も面白そう
作っている途中で気づいたのですが、これをWeb化したらかなり面白そうです。
- HTML + JavaScript版
- ブラウザ上で起動
- CRT風エフェクト(緑文字・走査線)
- ビープ音
- BIOS風画面
といった要素を加えると、雰囲気がさらに増します。しかもGitHub Pagesで無料公開できます。
Python版(EXEに変換して配布)とWeb版の両方を作るのも楽しそうです。
こういう作品は「技術力」以上に楽しい
最近はAI・Web開発・クラウド・自動化ばかりに触れていたので、久しぶりに”趣味全開”のプログラムを作りました。
でも、こういう遊びって大事なんですよね。
「好きだから作る」が、一番学習効率が高い。
実際、文字表示・画面更新・ループ・入力処理・状態遷移など、かなりの基礎を自然に身につけられました。
まとめ
Pythonは実用ツールだけではありません。
今回のような「レトロPC風・アセンブラ風・BIOS風の世界観を作る遊び」にも最高です。
こんな人には特に刺さると思います。
- 黒い画面が好き
- レトロコンピュータが好き
- MZ-80KやPC-8801に憧れがある
- コマンド入力が好き
「OSを作る」は難しくても、“OSっぽいものを作る” ならPythonでも十分できます。
そして、これがめちゃくちゃ楽しいんです。
おまけ:起動演出サンプルコード
import time
print("BOOTING SYSTEM...")
print("MEMORY R/W TEST")
for i in range(0, 65535, 1024):
print(f"{i:04X}", end="", flush=True)
time.sleep(0.05)
print("SYSTEM READY")これだけでも、かなり”それっぽい”です。黒い画面は、やっぱりロマンがありますね。
ソースコード公開中
今回作成した「Python Micro OS」のコードはGitHubで公開しています。
レトロPC風の起動演出や、アセンブラ風CLIに興味がある方はぜひ見てみてください。
GitHub
▶ ソースコードはこちら
黒い画面にはキーボードも合わせたくなる
