riq0h.jp/content/post/文明崩壊後の世界を救う「CollapseOS」.md

112 lines
13 KiB
Markdown
Raw Normal View History

2023-08-21 10:07:01 +09:00
---
title: "文明崩壊後の世界を救う「Collapse OS」"
date: 2022-06-14T21:56:58+09:00
draft: false
tags: ["tech"]
---
## 特に読まなくてもいい三文小説
> かつては高層ビルの一部だったと思われるその地下階には、わずかながら備蓄食糧が残っていた。きっと以前は大量に用意されていたのだろう。私は手持ちの雑嚢に二、三個ばかりの缶詰を押し込み、急ぎ地上に帰還した。食糧がありそうな場所には賊が現れやすい。いざとなればこの肩に回した小銃――の模型――しかも廃材を組み合わせて作ったガラクタ――にものを言わせる手もあるが、向こうの頭数次第ではそれも通用しなくなる。被弾覚悟で襲ってくる恐れが否めないからだ。そして万が一、模型とバレた暁には――
> 私は倒壊した複数のビルによって形成された裏道を歩きながら、ひとり身震いした。
> 西暦2037年。未曾有の大災害から十余年経つ。生活のほとんどを電子やギアの運動から成る産物に依存していた私たちの世界は速やかに崩壊した。当時の私はプログラマを志す学生だったが、もうその夢が叶うことはない。日々、生きるための糧を探してさまよい歩くだけの些末な人生だ。
> 様々な地下施設を巡る過程で稀にコンピュータの残骸を見かける時があっても、もはや私の心は微動だにしない。いま私がもっとも欲しいのは確実に腹と脳髄を満たしてくれる糖分……一枚の板チョコでもあれば、他にはなにもいらない。
>「ちょっとそこのお若いの、待たれよ」
> 突然、視界の外から話しかけられて私はとっさに模型の小銃を構えた。銃口の先には灰色のフードを深くかぶり、背をひどく曲げた老人が佇んでいた。
>「おう、おう、そんな野蛮なのは下ろしなされ。わしはただの行商人。物々交換をしながら旅をしちょる」
> 老人は異様に膨らんだ外套の懐を手のひらで軽く叩いた。
>「交換できるものなんてなにも持っていない」
> 私は小銃を構えたまま冷たく告げた。
>「いや、わしは見とった。さっき地下から戻ってきたばかりじゃろ。なにか食糧があれば――」
>「ないと言ったらない」
> 私は繰り返し即答して後ずさった。このご時世に食糧と引き換えたいものなどあるわけがない。
>「話は最後まで聞きなされ。……では、これはどうかな?」
> 私の目は限界まで大きく見開かれた。模型の小銃が手からおのずとこぼれ落ち、スリングベルトに頼って腰のあたりでぶらぶらと揺れた。
> 眼前の老人の手に握られていたのは、まさしく私が欲していた板チョコだった。
>「……なにと交換したい」
> フードに顔の大半が隠されていても老人が笑みを作ったのが判った。
>「缶詰一個。乾パンだとありがたい」
> ぐううっ……高い……いくらなんでも……乾パンの缶詰一個なら丸二日は空腹をしのげる……いや、しかし……だが……。
>「……無理だ。その条件では……」
> 私は全身が発する糖分の欲求になんとか打ち勝った。うまく食糧を見つけられず餓死寸前の状態で危険地帯を歩き回っていた頃を思い出せば、とてもじゃないが缶詰とは交換できない。
>「そうか、では残念じゃが……またの縁があれば」
> 老人は板チョコを懐にしまい、フードをさらに深くかぶり直して踵を返した。ああ、チョコレートが遠のいていく……。
>「おっと、忘れとった」
> 十歩ほどいったところで、急に老人が振り返った。
>「これは会う人みんなに聞いとるんじゃが――おぬし、これがなんだか分かるかの」
> 一瞬、老人が懐から再び板チョコを取り出したように見えたので、私は馬鹿にされているのかと思って怒りだしそうになった。しかしよく見るとそれは長方形ではなく正方形に近い、樹脂製らしき硬質な物体だった。しばし考え込んだものの、ほどなくして答えに思い当たるとひどくがっかりした。少なくとも食べ物ではないからだ。
>「……フロッピーディスクだ。それは」
> 今度は老人の目が見開かれる番だったらしい。老人は深くかぶったフードを自らの手でがばっと剥ぎ取り、その萎びた白い頭髪を露わにした。
>「フロッ……ピーというのか? これは? おぬし、これがどういうものか分かるのか?」
>「ああ……分かる。私が生まれる前によく使われていたんだが……あー、なんと言えば……要するに、情報を保存するためのものだ。どうせ今は壊れている」
> いや、本当に壊れているか?
> 保存状態さえ良ければ、磁気メディアなら十年くらい持つ可能性は、ある。
>「……板チョコをやる。缶詰はいらん」
> どういう風の吹き回しか、老人は本物の板チョコを取り出して近づいてきた。歩きながら、老人は話を続けた。
>「代わりに……このフロッピーとやらを……持っていけ。それが条件じゃ」
>「そんなのを持っていてなんになるんだ? 中身も分からないし、確かめようもない」
>「今すぐでなくてもいい。いつか、きっと救いに――人類の救いになると、これをくれた人が言っとった」
> ついに老人は私の間近まで迫り、チョコレートとフロッピーディスクを半ば押しつけるようにして手渡してきた。渡し終えると、老人はすぐに立ち去った。その身のこなしの軽さからは、まるで生涯の仕事をやり遂げたとでも言いたげな清々しさが感じられた。
> 私は手元に残されたフロッピーディスクを見た。表面に設けられた記入欄には、昔の人々がそうしていたようにボールペンかなにかで文字が書かれていた。もしかすると、中身に関する情報かもしれない。
>**『Collapse OS』**
> OS――基本ソフトウェアのイントールディスクなのか、これは。そのあまりに自己言及的な、皮肉めいた横文字を見て、腹の奥底から奇妙な笑いがこみあげてきた。
> 以来、私の人生に新しい目標ができた。このOSを動かせるコンピュータを見つけるか、作る。どんなOSなのかは知らない。フロッピーディスクが生きているのかも判らない。だが、私の心は今や板チョコではなく、それと似た模様を持つキーボードの方を強く求めている。
>……
脳内の編集者「いやでもさあ、老人がフロッピーディスクを知らないのは変じゃない?」
僕「十数分かそこらで書いた話にケチつけないでくれよ」
脳内の編集者「読む方は十分でも十年でも関係ないんだよ」
僕「ぐっ……確かに。どうしよう」
脳編「老人じゃなくて女の子にしよう。文明崩壊後に生まれた子なら知らなくてもおかしくない」
僕「子供が一人で旅してるなんてそれこそ無理があるんじゃ?」
脳編「そこはほら、実は改造人間だったとかサイボーグだったとかさあ……」
僕「あーそれで主人公が後で助けられたりして強キャラヒロインに仕立てればいいのか」
脳編「そうそう。なんだかんだでド安定でしょこの展開」
僕「ん でも、そんなすごい技術がある世界なのにコンピュータもOSもないなんてありえる
脳編「やっぱやめようかこの話」
## 本題
Collapse OSはその名の通り、文明崩壊後の世界に備えて作られたOSである。より具体的には、全地球的に工業生産能力が低下した状況下でも十分に機能するように、あえて低廉なハードウェアで動くように設計されている。
[公式サイト](http://collapseos.org)の説明によると、Z80やIntel 8086などの旧式かつ知名度の高いMCUマイコンを中心に対応しているようだ。これらの製品は主に1970年代から80年代にかけて販売されていた製品なので、極めて高度な工業力を要求する最新の製品と比べれば劣悪な設備でも再生産が見込める。
また、マイコンは今日ではコンピュータの主要部品として搭載されることはないが、さほど演算性能を必要としない電化製品には組み込まれている場合が多い。文明崩壊後はそうした機器類からチップを抜き取り、動作要件が厳しい今時のOSの代わりにCollapse OSを利用するケースが考えられる。
もちろん、こうしたマイコンとOSで昨今のデスクワーカーが一般に用いるようなオフィススイートや、Webブラウザを復活させることは当面叶わない。それらを開発するには多大な性能が求められるためだ。Collapse OSの設計意図は演算とプログラミングそのものにある。
たとえ低廉な古いマイコンであっても、その計算能力はコンピュータ文明を喪った人類にとってはまさに値千金である。OSを通してマイコン用のプログラムを新たに開発すれば、なんらかの自動制御もあらかた実現できるだろう。これらの合理的アプローチは人類の再興に間違いなく役立つ。
Collapse OSの本体はわずか200KB未満で構成されているので、最悪の状況に備えてコアシステムのコードを紙媒体で保存しておくことも不可能ではない。コンピュータの先人たちはかつて本当に紙に印刷された大量のコードを手打ちしていたと言う。いざとなれば僕らもそれをやらない理由はない。
## 動作例
できれば実機で稼働させてみたかったが、さすがにZ80ワンボードを入手するのは面倒だったので仮想環境で済ませることにした。幸いにも[ここ](https://schierlm.github.io/CollapseOS-Web-Emulator/)からWeb上でエミュレータを試すことができる。まずは先頭のEmulator 1を試した。
![](/img/142.png)
アクセスするとすぐにCollapse OSが立ち上がる。リソース節約のためか表示内容はごく簡素だ。かのビル・ゲイツがMS-DOSの容量を削減すべく「OKでいいじゃん」とコマンドへの応答を2文字に削ったという逸話を思い出した。
さっそく[ドキュメント](https://schierlm.github.io/CollapseOS-Web-Emulator/2022-02/collapseos.pdf)に沿って簡単な計算をさせてみた。
```c
Collapse OS ok
4 2 + .
6 ok
10 7 - .
3 ok
33 33 * .
1089 ok
```
当然ながら即座に計算結果が出た。まごうことなきコンピュータである。他にも任意のメモリアドレスに値を格納したり、取り出したり、ループ処理を施したりなど、コンピュータとしての基本的な仕事は十分にこなせることを確認した。以下、ドキュメントを流し読みして気になった機能の紹介をする。
**■Block Server**
これはシリアル接続されたコンピュータ間で、テキストブロックを送受信するプログラムらしい。`G`または`P`コマンドで任意の文字列を16進数に変換して送信する。ただし、万が一エラーが起きても教えてくれたりとかはしない。
後者のコマンドでは受信側が受け取ったブロックを再送し、符号が一致した場合に限りローカルファイルに書き込まれる。どちらのコマンドもあくまでテキストブロック送信用なので、ドキュメント曰くこのコマンドでバイナリデータを送ると”ひどい目に遭う”とのことだ。
**■Visual Text Editor**
Emulator 4またはEmulator 0の環境では、Viに似た操作体系を持つテキストエディタを使用できる。`VE`コマンドで格納された値がロードされ、再び`VE`コマンドを入力すると起動する。
![](/img/143.gif)
さすがに快適極楽プログラミングとまではいかないものの、文明崩壊後の世界でもVi風のキーバインドでエディタを操作できるのはなかなか嬉しい。きっと諍いや飢えで荒みきった僕らの心を癒やしてくれるはずだ。
現状、僕はマイコンの知識が皆無なので解説はこの程度に留まるが、これを機会にいずれ勉強してみようかと思う。なにしろ「文明時代の遺物を自在に操る謎のおっさん」って、昔から僕の憧れだったしな。