雑記帳

電子計算機の"明後日"から、他愛もない話まで。

近況など

また暫く間が空いてしまいました。

 

この間色々ありまして、正直コード書く気力も無くなってたりしたのですが、ふと見たファミコンの解析資料からファミコンプログラミングを始めまして、おかげさまでみるみる回復しました。これめっちゃ楽しいですよ。なんというか、少ない命令とシンプルなハードの組み合わせで何でもやってやろうというのは、プログラミングの面白さの本質に限りなく近いのではないかと思います(最も、HWを省略し過ぎているが故に、一見不可解な動きをされたりしてハマることも多々ありましたが…。資料としてはこちらも見ると良さげです)。まだ暫くは何か公開できるようなものはできないと思いますが、そのうちゲームか何か作ってこっそり乗せるかもしれません。

 

しかし向こう約1年程、クソチップ・クソ環境・クソジジイ達の三連コンボに疲弊しきった身にはこれ以上ない位の回復薬でしたね。もし私のような趣味上がりのソフト屋の方で、タチが悪い方の役所仕事しかできないみみっちい秩序LOVEな連中に囲まれて辟易している方がいらっしゃったら、こういった方向で童心を回復しつつウサ晴らしすると良いのではと思います。そんでもって、千葉の稲毛海岸辺りで夕日に向かって「全部焼け野原になっちまえ! その後立ち上がって次を作り出すことができるのは俺たちだけだ!」とでも叫んでやりましょう(ぇ。

 

さて、こんな状況なので、電脳文庫プロジェクトの方もかなり停滞気味です。いや、全く進展が無い訳ではなく、例えばUEFI用のブートローダを書いたとか(このお蔭で、Intel Galileo Gen2ボードから自前のカーネルをブートできるようになりました)成果が無いこともないのですが、アプリケーション環境におけるリソースや各種モジュール・オブジェクトの表現方法というか見せ方というか、そういったところで良いアイディアが出ず足踏みしている状態です。そこのところに限れば、UnixとかPlan9ファイルシステムって絶妙なバランスだったんですねぇ…とつくづく感じます。決して完璧とは思いませんが。

 

昔、OSASK計画の川合さんから例の緑本(と、カオちゃんのバンダナ!)を頂いて以来、長らくOSの研究的なことを趣味でこっそり続けてきたのですけど、post Unix世代とでも呼べるものがなかなか世に広まらない理由って結局この辺なのかなと思います。単純に、手持ちの環境で動くOSと呼べるものを作り、その上で走るアプリを用意して見せるだけなら、例の緑本で川合さんが示したようにそこまで難しい話ではないはずです(実際、海外フォーラムとかでも多くのプロジェクトを見かけられますし)。ただ「多くの人に使ってもらえるような良くできたアプリケーションプラットフォームを作る」となると別問題なだけで。なので、結局多くのOSプロジェクトは、例え革新的な設計だったとしても「POSIX準拠のユーザランド載せました☆」とか言い出しちゃって、折角「そのOSを使うことでできる面白いこと」があっても殆どユーザランドから使えず(使えたとしてもベンチ結果がちょっと良くなったとか、メンテ性向上とか)、「別にLinuxで良くね?」 or 「一部機能だけLinuxにマージ」という流れに行き着いてしまうのではないでしょうか(主にマイクロカーネル勢の瓦礫の山を横目に見ながら)。

 

尤も、ただアプリケーションを走らせるだけならば、抽象化レイヤを積み重ねていくことで下層レイヤのことなどいくらでも忘れられるので(ぇ)、単純にもっと新しい設計のプラットフォームを求める人たちの多くは、より上層に新世界を積み重ねていくことで理想を実現する方向に移って行った…というだけのことかもしれません。

 

しかし、ハードウェアと密に組んで何か面白い物を作ろうとするとそうはいきません。当たり前ですけど、「生まれたてのHW」みたいな抽象化されたこともないようなのが出てきたとき、こいつを上層から扱おうとするには、最下層に降りてデバドラ作るところから、最悪はAPIやらもっと上位のラッパまで用意してやらないといけなかったりします。
まぁLinuxだったら、デバドラから見せるI/Fを上手くファイルアクセス(read/write)として表現できる場合に限り、上層から触るハードルが随分低くなるのでまだマシなのですが(例えば、Intel Galileoだと、/sys/class/以下のファイルにアクセスすることで諸々のI/O操作が行えるようになっているそうです)、それでもデバドラの開発とI/F上の制約が付きまといますし(割り込みがなぁ…POSIXのシグナル周りはどうもしっくり来ない記憶が…)、そもそも文字列ベースのデータのやりとりは個人的に嫌いなので、この辺何とかしたいところです。

 

こういったように、電脳文庫の場合、ソフトウェアプラットフォームとしての既存OS(特にPOSIX環境)に不満を感じた上での新規開発なので、(一番問題と考えている)モジュール間I/F部分の改良が要となる訳です。他にももっと野心的な試みを内に秘めていたりもするのですが、最低限ここだけは妥協ができません。通信の仕組みそのものについてはかなり前から固まっているだけに、あとは上手いモジュール表現の方法が固まればなぁ…というところです。たかがコード書き歴20年弱程度だと、まだまだ思うようなモノを作れないもんだと痛感しますね…。

 

このため、しばらく(何かブレイクスルーがあるまで)はこちらを止めて、何か気分転換になるような軽いものを作るのが続くかと思います。

 

本当はここまでマクラのつもりだったのですが、長くなったので本文にしようと思った話は改めて書きます(ぇ。