ページへ戻る

− Links

 印刷 

GUIGUI01​/memo05 のバックアップソース(No.3) :: OSASK計画

osaskwiki:GUIGUI01/memo05 のバックアップソース(No.3)

« Prev[4]  Next »[5]
* ぐいぐい01に関するメモ-05
-(by [[K]], 2008.05.18)
-メモのうち重要な部分をそのうちまとめてまともなページを作る
*** (16) OSASK計画の長期計画
-(以下の文章は6月上旬までには「川合のぼやき」に公開予定。つまりここは下書き。)
~
~
-''1.OSASK-HBと「ぐいぐい01」について''
-''2.「ぐいぐい01」の開発で見えてきたもの''
-2-1.「ぐいぐい01」導入のメリット(アプリの「ぐいぐい01」化をしていったとしたら):
--OSASKユーザにとって
---アプリが他のOS上でも使えるようになる。
---他のOSユーザがOSASKアプリを作ってくれる可能性が上がる(作ってくれる人はOSASKなんて眼中になく、WindowsとLinuxの両方で動くからという理由で作ってくれるかもしれない。でも仮にそうだとしても、それがそのままOSASKでも動くことに変わりはないのでメリット)。
--他のOSのユーザにとって
---今までは面白そうなOSASKアプリがあっても(OSASKの導入などが面倒で)アプリが使えなかった(敬遠していた)。でもefg01だけでいいのなら使える。
--OSを自作する人たちにとって
---efg01の移植はかなり容易だし、たぶんかなり変則的なAPI設計でも移植はできると思うので、OSを設計する際に思い切った設計にできる(そういう冒険をしても、初期の頃から「ぐいぐい01」アプリ資産を利用できる)。つまり、OS設計におけるアプリ互換性問題から開放される。
---ほぼ上と同じだけど、悩みのタネだった初期のアプリ不足を心配しなくてよくなる。
---これもほぼ上と同じだけど、OS設計の観点でいろいろなことを試せる。アプリ問題の心配がなくなった分だけより気楽にOS自作を始められる。だからOS開発競争が激化する。淘汰されてよいOSがどんどん出てくる(*1)。
---アプリ数でOSの優劣が決まるという、くだらない伝統からついに開放されるのかもしれない(本来はOSの優劣は性能や機能で決まるべきで、そうではない現在はOSの進歩が迷走している。使いたいアプリがあるからやむなくそのOSを使う、みたいな)。
--アプリ開発にとって
---「ぐいぐい01」用に一度作れば、末永く使える可能性(OSが打ち切りになっても他のOSに乗り換えて使えるなど)。
---なにも「ぐいぐい01」用に作ることを強制されているわけではない。つまりアプリ開発者は今までどおりそれぞれのOS向けに開発したっていい。つまり「ぐいぐい01」は新しい選択肢の一つであって、何も失うものはない。
---OSを選ばないのでユーザが増えやすい。
-2-2.「ぐいぐい01」利用のデメリット:
--たとえば○○OS用アプリを作ろうと思って、それを「ぐいぐい01」仕様で作ることにした場合
---例外を利用したアルゴリズムは使えない。
---セグメンテーションを利用したアルゴリズムも使えない。
---アドレス決めうちによる最適化もできない(リロケーション情報分だけサイズ面での性能が不利になっているともいえる)。
---ネイティブAPIよりは、どうしたってefg01分だけオーバーヘッドがある。
---また特定のOSだけが持っているような便利な機能があったとしても、それが「ぐいぐい01」でサポートされるまでは利用できない。
---新しいOSを作るたびにefg01を移植しなければいけない。APIが少ないうちはいいかもしれないが、多くなったら大変そうである。
-2-3.デメリットに対する川合の回答
--だから「ぐいぐい01」の機能の範囲でできるアプリだけを「ぐいぐい01」化すればいいのであって、その他のアプリは今までどおり各OSの固有のAPIでアプリを作ればいい。結局各OSの機能の最大公約数的なしょぼいアプリしか作れないと危惧するかもしれないが、実はそれは全くその通りである(*2)。だからすべてのアプリを無理に「ぐいぐい01」化しようなどと思ってはいけない。
--自作OS作者は、なにもefg01の移植が義務化されるわけではない。「ぐいぐい01」アプリ資産を自分のOSでも使えるようにしたいと思ったときに移植すればいいだけだ。またたとえばコンソール関係のAPIだけを移植して、他のAPIについては「未実装だよ」と表示してエラー終了させるような、半端な移植でもいいのだ。これでもコンソールアプリは利用できるわけだから、そう悪い話じゃない。メリットが手間を上回る範囲でやればいいだけなのだ。手間を負担に感じるのであれば、いっさいefg01の移植なんてしなくていいのだ。そのうちその自作OSがはやれば、誰かがefg01くらい移植してくれるかもしれない(所詮efg01はOSの特別の支援をあてにしなくてもできるようなアプリでしかないのだから)。そうなれば丸儲けである。
--「ぐいぐい01」は万能だとは言っていないし、万能であることを目指してもいない。そういう万能性よりもアプリ資産のOSを超えた共有財産化を目指している(*3)。しかもムダに大きくて性能の悪い、つまり受け継いでもあまりうれしくないボロ資産ではなく、それなりには無駄が少なくて高性能で、まあネイティブアプリのできる間までであれば受け継いでもいいかなと思えるような良資産である(優良資産とまではいえない)。
-''3.考察''
--まず''2.''のあちこちに印をつけておいたので、そこから話を始めようと思う。
--*1の部分のOSの正当な競争は、これこそOSASK計画の基本的な目的の一つであって、だから「ぐいぐい01」はOSASK計画にとって大きな前進をもたらしたといえる。
--しかし*2で指摘したように、アプリ開発者が「ぐいぐい01」用のアプリを作ることにメリットを感じすぎてしまうと、各OSのネイティブのAPIを使う人が減り、APIの改良という競争を妨げてしまうかもしれない。なんといってもAPIはOSの機能の一部であって、しかもかなり大きな要素である。その部分の競争を阻害してしまうかもしれないだから、これは危惧しなければいけない。
--しかし考えようによっては、「ぐいぐい01」はAPIセットとしての最低ラインを担保しているともいえる。つまりどのOSででも、機能的・性能的に最低でもこれくらいは予備知識なしで利用できるように整備したともいえるのだ。これを超えるAPIでなければ使われなくて当然なのだ。これを超えるAPIがあるのなら、是非そのOS専用のアプリとして世に出し、うちのOS専用アプリにすればこんなすごいことができる、と示せばいいだろう。それはそのOSのアピールとして十分だろう。
--そうはいっても、結局のところ既存のかなり多くのアプリが機能を損なうことなく「ぐいぐい01」用に移植できてしまうだろう。これはつまり、多くのアプリがその程度のAPIで十分に書けるということを意味している。そしてさらに嘆かわしいことに「ぐいぐい01」化することでサイズや速度が改善してしまうだろう。つまり既存のOSのAPIは「ぐいぐい01」以下であって、そんなバカらしいレベルで似たような機能を互いに非互換にし合って優劣の比較を阻害し、API改良競争を妨げてきたのだ。こういう低レベルな争いはもうやめよう、というのが「ぐいぐい01」がもたらす提案である。つまりはOSASK計画からの提案でもある。
--*3の万能性の否定は、基本的にはOSASK計画の目的には合致しない考え方である。OSASK計画ではハードウェアのすべての機能を最も高い効率で利用できるようにすることを目的としている。その観点で見れば「ぐいぐい01」はわざわざ手かせ・足かせを作っているようなものだ。最大公約数的なAPIセットにとどまる以上、この方法で最高の機能や最高の性能は絶対に出せないと分かっているのだから。
--これについてはこう考えてほしい。「ぐいぐい01」は100点満点を目指すのをあきらめた代わりに、まずは90点を確実に出そうというものである。というのも現状は50点や60点のレベルでの争いに終始してしまっていて、まずはこれを何とかしないとどうしようもない気がするからだ。また僕自身のプログラムレベルや設計センスも100点のAPIを作るにはまだまだ足りない。なにしろ満点というのは「もう究極でこれ以上改良の余地が全くない」ということであって、それは現時点ではとても自信を持って示せるものではないのだ。
--こんな状態のくせに最高を目指そうと思ってしまったために今まで開発が遅れてしまった。・・・えせでいいやと妥協してやっと少しずつできたものの、徐々にそのえせに我慢ができなくなって今度こそもう作り直さなくてもいいような完璧なものを作ろうと思うと、またアイデアをまとめることができずに前に進めなくなる。こういうことを何度か繰り返して僕はようやく分かった。いきなり最高を目指してはいけないんだ、と。僕には経験が少なすぎる(そんな僕にも劣るような他のOS開発者は論外だとしても)。最高を目指すには少なすぎる。そんな状態からいきなり最高を目指せば、それはかえって時間がかかってしまうだろう。・・・かわのたて、こんぼう、でやっとスライムと戦えるようになった僕が、次はお金を貯めて最高のロトのつるぎを買おうと思うようなものだ。これは進歩が遅すぎる。武器や防具を少しずつ良いものに変えていって、戦う相手も徐々にステップアップしていくほうが、結局は早くロトのつるぎを買えるのだ。なんだか途中の武器や防具を買うためのコストが無駄になる分だけ損に思えるけど、そうではないのだ。いそがば回れとはこういうことを言うのだろう。
--そもそも「最高まであともう少し」ということろまで世の中のソフトウェア技術が成熟していると僕は誤解していたようにも思う。だから僕はそれに追いついてさらにもう少しがんばれば最高になれるんじゃないかと思っていた。だからこそ次はロトのつるぎだと思ってしまったのだ。しかしここまでいろいろやってきて思ったのは、全然そうではないということだ。ロトのつるぎはまだまだ先だ。・・・そうであるならば、僕がロトのつるぎを得るまで何もリリースできずに悶々としていたら、そしてそのまま僕が引退して開発者として使い物にならなくなったら、その後に残された後世の人たちはどうすればいいだろう。そう、また僕と同じスタート地点からになってしまう。それじゃあダメなのだ。僕は登頂者だ。生涯で頂上までいける確率が非常に高いとはいえない以上、二合目、三合目、四合目と、要点で成果を分かりやすく示してチェックポイントを残していくべきだったのだ。つまりここは絶対に頂上ではないと分かっていても、あえて示すべきものがあるのだ。それが結果的にはOSASK計画の目的の達成を早めることにつながるのだ。だから「ぐいぐい01」は一見OSASK計画の目的からの後退に見えるけれども、実はより現実に即した中間解で、必要なものなのである。
--そして世のOSのレベルが上がってくれば、最大公約数もまた大きくとれるようになるだろう。そうすれば機能的なカバー範囲も性能も向上した「ぐいぐい02」(?)を設計することができるようになるだろう。そしてその繰り返しも限界が近づいてきてやがて終わりが見えてきたときに、ついに初めて究極でOSASK固有のAPIを設計して、既存のアプリをこのAPI向けに書き直して性能を上げ、他のOSのアプリをエミュレータによって受け入れるべきなのだ。おそらくこれは気の長い話だが、しかしそれでもこれこそが最短である。
--OSASK計画で僕が当初示した、まず互換性問題をエミュレーションで解決した後に性能競争・固有機能競争を始めるのは、手間が多いわりに前進が遅い。OSASKの高性能アプリを使って慣れてしまうと、そもそもエミュレーションしてまで利用したいと思えるようなアプリが少ないことに気づく(サイズが大きい、遅い=性能が悪い)。それなら利用したいと思うものだけを移植するほうが現状では手っ取り早くも思えるし性能も上がる。OSASK計画が目指すところの最終的なゴールに早く到達するには、既存のすべてのソフトウェアを利用できるようにするための努力は後回しにすべきで、とりあえず過渡期の処置として「ぐいぐい01」みたいなことをしていけばよかったのだ。こういう共有基盤があればとりあえずそこへ移植しておけば当面は満足できるからだ。・・・僕は幸いにエミュレータ周りを後回しに開発することでこのことに気づくことができた。
--こうしてみると、OSASK計画の初期の頃、エミュレータを作っていくなんて現実的ではないといっていた人たちは、論法は正しくなかったかもしれないけど、結論は正しかったことになる。まあ今だって最終的に作ることに変わりはないのだけれども、でもとにかく優先順位的にはもっと後ろで会えるべきだったことに違いはなく、だからエミュレータに批判的だった人はその意味で正しかったともいえると思う。・・・一方でエミュレータこそ早く作れと言ってきた人たちもいたけど、その人たちの意見をとりあえず保留にして優先順位を下げてきたいままでの方針は(僕の目的にとっては)正しかったように思う。僕は究極の高性能OSがほしいのであって、ろくでもないアプリが全部使えるようになったところでうれしくもなんともないのだ。究極のOSを得るために互換性問題をエミュレータで解決して競争を激しくしようと思っていたのであって、つまりエミュレータは手段であった(だって仮にOSASK専用アプリのほうがすべての面において既存アプリを上回っていたとしたら、わざわざエミュレーションさせてまでそれらを使いたいなんて思うだろうか?)。
--僕は確か工夫すればエミュレータは遅くはないとはいったし、もしかしたら最適化で本家よりも早くなるかもしれないとも言ったが、改善できるかもしれないのは実行速度だけであり、サイズについてはエミュレータはほぼ無力である(それに実行速度にしたって、OSASK用に移植されたものを超えることは絶対にできない・・・追いつくことなら万に一つくらいならありえるのかもしれないが)。しかしサイズが小さくなればHDDやFDやメモリカードなどの容量を節約することができる。バックアップもしやすくなるだろう。またメインメモリも減らすことができ、キャッシュヒットも増えて、ひいては省電力化に寄与できるのだ。そうであれば、エミュレータを作ることよりも、エミュレーションしてまで残したいアプリをいくつか選んで「ぐいぐい01」仕様にしておくことのほうがより生産的で効果があるだろう。それでもそれでカバーできないものはもちろん出てくるだろうから、それらについてはやむなくエミュレーターでカバーしよう。とこういうことである。


-''4.現時点におけるOSASK計画の長期的計画(=優先順位リスト)''


* こめんと欄
#comment

« Prev[4]  Next »[5]