OSASK計画のここまでの総括

  • (by K, 2018.10.26)

(1) 歴史的経緯

  • 結果的に何もリリースできなかった開発や些細なものは全て省略しています。
  • [1996年??月〜] FM-TOWNSはNECのPC-98よりも優秀なんだということを言いふらしていたKが、それを実証するためにV98というエミュレータを作った。フルアセンブラで実行ファイルは60KB程度。
    • エミュレータを作っているうちに、もっといろいろなエミュレータを作りたくなり、そのためにはOSから作り直したほうがいいという構想を打ち立てた。これが元祖の「OSASK計画」である。
  • [1996年??月〜] OSを作るには書きやすいアセンブラがあったほうがいいということで、KはASKAというC言語風のアセンブラ仕様を提唱。ODP氏、RisaPapa氏が実装した。
  • [2000年04月〜] OSASKの開発が本格化し、毎月どこまでできたかを公開した。
    • 最終的にインストールサイズが100KB程度の、超軽量型のPC向けのOSができた。
  • [2002年02月〜] OSを開発するために普通のx86のアセンブラが必要になったので、開発した。naskと命名。win32版でnask.exeが27,648バイト。第二世代OSASK用のバイナリではnask.g01が22,824バイト。自称で「世界最小x86アセンブラ」を主張している。
  • [2003年10月〜] LZMAをベースにした可逆データ圧縮を開発してtek5と命名。デコーダがかなりコンパクト。
  • [2005年04月〜] 「30日でできる!OS自作入門」のための教材自作OSを開発。名前は「はりぼてOS」。サイズは30KB程度(.com化してUPXすると17.0KB)。
  • [2008年04月〜] 数年かけてプログラミングスキルが上がったKはOSの作り直しをやりたくなり、「第二世代OSASK」を開発。第二世代OSASKアプリは、WindowsやLinux上からも容易に実行できるように工夫されている。実際efg01.exeという14.5KBのプログラムを使うことで、第二世代OSASKのアプリはWindows上で動作した。そして第二世代OSASKアプリはx86のOSのアプリとしては驚異的な機能密度を達成した。
  • [2010年07月〜] Windows上でC言語のプログラミングをするときに、グラフィックを扱うのがとても面倒で、他人に教えるのもとても難しいと感じた。だからblikeというグラフィックライブラリを作った。これもグラフィックライブラリとしては非常にコンパクト。世間のものと比較して1桁くらい違う。Linuxにも移植された。
  • [2013年03月〜] アプリケーションを小さくすることが面白くてたまらなくなり、x86の限界を超えるために独自の機械語を考案して、それをエミュレータ実行。イメージとしてはJavaに近い。OSECPU-VM(第三世代OSASK)と命名。osecpu.exeは29.0KBで、これを使うと極小のアプリが問題なく実行できる。圧倒的世界最小。
  • [2017年06月〜] インタプリタなプログラミング言語を作りはじめる。途中から速度を上げるためにシンプルなインタプリタからJITコンパイラに変更。最初の一歩である最小の言語は65行!そこから段階的に大きくして行った。TLシリーズ、TJシリーズと呼んでいる。最終的にはEssenという名前にしようと思っている。
  • [2018年05月〜] blikeライブラリは初心者向き過ぎて使いにくくなってきたので、アドバンスということでblaライブラリを開発。

(2) 現時点から見た説明

  • 結局、基本的に行き当たりばったりで開発している。当初はOSASKというOSを作るためにあれこれ作っているという説明もそれなりに説得力があったが、今となってはそれも適切な説明であるとは言い難い。
  • だから今から知る人に対して、OSASK計画とはなんであるか、特徴は何なのかと考えると、「とにかくコンパクトなソフトウェア開発」ということになると思う。
    名称説明サイズ補足開発時期
    V98NEC PC-9801VX2エミュレータ60KB程度1996年??月〜
    第一世代OSASKPC向けの超軽量OS100KB程度ウィンドウシステム、シェル・ドライバを含む2000年04月〜
    naskx86用アセンブラ27.0KB第二世代OSASK用なら22.3KB2002年02月〜
    「はりぼてOS」PC向け教材用OS30KB程度ウィンドウシステム、シェル・ドライバを含む2005年04月〜
    efg01第二世代OSASKアプリローダ14.5KB2008年04月〜
    OSECPU-VM第三世代OSASKアプリローダ29.0KBJava実行エンジンみたいなもの2013年03月〜
    TL-01シンプルなインタプリタ65行C言語で実装2017年06月〜
    TJ-03シンプルなJITコンパイラ156行C言語で実装2018年05月〜
  • 小さく作ることがいいことなのか悪いことなのか、それはどちらでも構わない。単にここまで小さく作ることができました、というだけの話である。
  • 私(=K)は小さく作ろうと思って意図的にやっているのかというと、まあそういうこともあるが、たいていは無意識にやっている。自分としてはごく自然に作っているつもりなのだが、そうするとそれだけでもかなり小さくなる。そうすると「じゃあ小ささを極めてみよう」と感じて、そこで初めて小さくすることを意識する。

(3) 何のために小さくしているのか

  • 正直今まで小さくする理由はほとんど考えていなかったが、もし私に小さく作るスキルがなかったら、そもそも私はこれらのものを作れなかったのかもしれない。
  • たとえばOSECPU-VMはバイトコードの仕様がJava互換ではないことを除けばJREみたいなものだが、JREのインストーラは63MBくらいある。単純に比較すればその比は2千倍だ。OSにしてもこちらでは100KBとか30KBとかになっているが、ご存知の通り普通はそんなサイズではない。
  • でももし63MBのプログラムを作れなんてことになったら、それはきっと無理だろう、と、そういうことである。
  • 世間では大きなものを作るためにソフトウェア工学が研究されているが、私は大きなものを作るために自分が作れる規模まで小さくするという技術を持っているのかもしれない。
  • しかし、その技術がどのようなものなのか、まだよくわかっていない。
  • まあ他人に伝承するほどの価値がある技術なのかどうかは分からないが・・・。

こめんと欄


コメントお名前NameLink

リロード   新規 編集 差分 添付   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS
Last-modified: 2018-10-26 (金) 19:52:23 (82d)