OSC春の東京と神戸が終わってとりあえずひと段落したので、ちょっと最近おもったことをひとつ。


OSC神戸の展示で、「OS自作をやっていて良かったなあと思えることはなんですか?」という質問をされたのだけど、まあ良かったことは山のようにあるのだけどなかなか説明しづらいなあと思ったのだけど、Prexのコラムにこのような文章があるのを見つけた。


Prex-組み込みリアルタイムOS開発日記


Prexというのは上記ページのかたが自作している組み込みリアルタイムOSなのだけど、2007/04/03の「OS開発の愉しみ」を読んでみてください。OSを作る楽しさってのは、まさにここに書かれているようなことだと思います。


上のページでとくにぼくが「うん、そうそう」と思ったのは、「自分が神となって世界を創造する醍醐味」ってことかなあ。


たしかにOS自作は、ひとつの世界を創造しているような楽しさがあります。まあ世界と言うと大げさかもしれないけど、ひとつの「システム」のすべてを創造していることは、間違いなく確かです。で、それはちょっとミスがあったらうまく動かないし、どんなに不可解な現象が起きても、必ず原因があります。それだけに、思ったとおりに動いたときの感動は格別です。


ぼくも昔はよくBASICでゲームプログラミングなんてやってたのだけど、はじめはゲームやりたさでいっしょうけんめい本に載ってるプログラムを打ち込んでいたのだけど(そういう時代だったのです)、だんだん気がついたことがある。それは「他人が作ったきらびやかで豪勢なゲームをやるよりも、自分で作ったしょぼいチープなゲームのほうが、何百倍も面白い」ということです。


まあこれは人によるとは思いますが、少なくともぼくは、ゲーム会社が作った超面白いと言われているゲームよりも、自分で自作した超しょぼいゲームのほうが何百倍も面白い。ていうか、前者はいずれ飽きるが、後者は飽きることが無い。


というのは、自分で好きに作って、気に入らないところがあれば自分の好きなように改造するという楽しさがあるから。そりゃー面白くないところがあったら面白くなるように自分で直せるわけだから、自分にとっては最高に面白くなるのはあたりまえですな。


で、OS自作というのは、そーいう楽しさがあると思う。OS自作は、ゲームだ。だからKOZOSは、「使う楽しさ」でなく「作る楽しさ」を味わいたい人に、ぜひいじってみてほしい。LEDが光っただけで感動できる人、言い方をかえると「自分の力でLEDを光らせることに感動できる人」に、いじってみてほしい。実際にはLEDが光っただけ、それだけのことなのだけど、それで「やったー!」って思えて誰かにその感動を伝えたくてしょうがなくなるような人に、いじってほしいと思うのだ。「見てみて!LEDが光ったよ!」とか本人は言ってるのだけど、聞いてるほうはわけわからずポカーンとしてるようなナイスな感じですね。なぜなら、私がそうだから。


まあこれは「OS自作の楽しさ」なのだけど、自作してよかったなーといちばん思うのは、やっぱしOSCとかでいろんな人と話せたりつながりができたりしたことかな。ベテランのひとたちにはいろいろお世話になり、若い人たちにはたくさんの刺激を受けて、同世代のひとにはもっとたくさんの刺激を受けているのだけど、これは会社にいるだけでは得られない、外に出ないと得られない貴重な経験だなーと思う。そしてやっぱり、情報を得るだけでなく発信する、何かを作っている立場で参加したいという思いがある。


ぼく自身、いろんなひとにあこがれてここまでやってきた。たとえばクヌース先生とかマクージックとかビル・ジョイとかリチャード・ストールマンとかリーナス・トーバルズとかカーニハンとかリッチーとかケン・トンプソンとかラリー・ウォールとか村井先生とか砂原先生とか坂村先生とか高田先生とかg新部さんとかまつもとゆきひろさんとか会社のとある先輩とか、ああこのひとってすげえなあいつかこんなふうになれればなあってひとはいっぱいいる。


だけど最近思うのは、そろそろもう誰かにあこがれているだけでなくて、そういう誰かの目標になれるようなことができるといいなあ、と思う。そろそろ得るだけでなく、与えることも考えたい。とかいうと偉そうに聞こえてしまうが、まあそんなにたいしたことができるわけではないかもしれないけど、心がけとして、そう思っていきたいなあって気は、する。感動をもらうだけでなく、その恩返しとして、だれかに何かを与えることができないかと思うのだ。感動はもらった人に返すのでなく、他の人に伝えるのが一番の恩返しになると思うからだ。


だから細々ながらも、自分だけの、自分だけがやっている、自分独自の何かを作っていきたいなあって思うのだ。


OSC神戸に行ってきました。とりあえず無事に帰ってきました。今回は組込みOS自作に関するセミナーも受け持たせていただきました。

スタッフの方々、出展者の方々は、どうもおつかれさまでした。またKOZOSの展示でお話させていただいたかた、セミナーに来ていただいたかた、懇親会でお話させていただいたかた、どうもありがとうございました。


組込みOSについてまとまった時間でしゃべるのはこれで3度目だったのだけど、セミナーはいかがだったでしょうか。満席で立ち見も出て私自身ビックリ、というか私ごときのはなしを立ってまで聞いていただいて恐縮だったのですが、自分自身は、ちょっと時間配分を間違えちゃったかなーと思っています。まあまだ不慣れということで寛大な目で見てやってください。。。感想などありましたら、ブログ等で書いていただいたり、メールなどいただければ、うれしいです。内容的にはどうだったでしょうかねえ。。。


セミナーはまたやりたいですね。なんにせよ、不特定多数の方々の前でしゃべるというのは緊張感があって面白いですね。発表慣れもしたいですし。


セミナーはとりあえず1年間は同じ内容でひとまわりしようかと思っていますが、来年くらいからはちょっとレベルアップして、内部構造の詳説とか、TCP/IPなどを実装していろいろ遊んでみるとか、そういったことをやっていければなあ、と思います。


さて、いろんなかたから質問を受けた「組込みOS自作本」ですが、けっこう期待されているようでうれしい限りです。KOZOSの活動で、これが一番期待されているような気がしますので、まずはこっちを頑張って進めます。作業的には、現在最終チェック段階です。もしも「こういったことを書いてくれるとありがたい」というリクエストがあれば、メールいただければ考慮します。とはいっても必ずしも反映すると約束はできませんが、可能な範囲で対応したいと思います。


ホントはもっとOSCの感想書いたりしたいのだけど、まあ今はOS本の執筆作業に時間をかけたいのでご勘弁。次の出展は7月のOSC関西になるかなあ。そのときはすでにOS本が出ているはずなので、セミナーはそれを使ってなんかやるというのも面白いかもしれないですね。


ではみなみなさま、またぜひよろしくお願いします!


相変わらず書籍執筆中.先日のOSCで,けっこういろんなかたに「書籍待ってます」と言っていただけたので,5月出版のスケジュールを崩さないように頑張っています.休日も執筆,平日も帰宅後に執筆,飲みに行っても遊びに行ってもそのあと帰ってから執筆というタイトな日々がここ数ヵ月続いていますが,なんとか終わりが見えてきました.5月出版は大丈夫そうです.楽しみにしているひと,待っててね~

来週はOSC神戸ですね.セミナーも満員のようでよかったです.楽しみだ~

神戸までにはなんとか脱稿してしまいたいなあ.KOZOSの次ステップの構想もすでにあるので,さっさと脱稿して開発に戻りたいですな.

神戸のあとはまたちょっと間が開いてしまうので,どこかの勉強会に参加させてもらって,組込みOS自作について発表できるといいなあ.どなたか「来てしゃべって!」というかたがいれば,行ってしゃべりますので連絡ください!

OSC2010Tokyo/Springが終わりました。KOZOSのブースに来ていただいた方、セミナーを聞いていただいた方、どうもありがとうございました。スタッフの方やその他コミュニティの方々もお疲れ様でした。


KOZOSに関してですが、書籍化にともない、FreeBSDだけでなくGNU/LinuxとWindows+Cygwinの環境でも開発できることを確認しています。


これは書籍のほうで説明してあるため、まあ出版を待ってくださいということなのですが、OSCでKOZOSに興味を持っていただいたかたで「試したい」というひとのために、開発環境について、書籍原稿から説明を部分的に抜粋・修正したものを本家ホームページ のほうで公開します。GNU/LinuxやWindowsで試してみたいというかたは、そちらを参照してください。


いよいよ今週末はOSCです。さっきやっと宅急便で荷物を送りました。


今回はセミナーも受け持たせてもらいますが、どんな話をするかいろいろ考えています。とりあえず1回やってみたかった「1枚の紙にOSの全ソースコードを印刷して配布」ってのをやろうかと。。。まあ字が小さくなりすぎて読めはしないのだけれど、インパクトはあるかなあと。これだけのコード量でいいなら、OSって自分でも書けるんじゃないの?って思っていただければなあと思います。


ちなみに16upで印刷したら、両面で1枚にだいたいちょうど入りきりました。ブートローダーは片面でOKだった。


あとは肝心の話す内容だけど、うーん、KOZOSがどんなものかってのをまず話すべきなんだけど、何でこのようなものを作ったのかって話がしたいなあ、と思う。


というのは、はじめて展示会に出たのがちょうど去年のOSCTokyu/Springなのでちょうど1年前なのだけど(その節は川合さんとはりぼて友の会にお世話になりました)、その後も京都、名古屋、大阪、秋の東京と1年間出展してきていろんな人と話ができたのだけど、やっぱり多いのは「何に使えるのか?」「実用性はあるのか?」という質問だ。


これについてはその都度きちんとKOZOSの趣旨やポリシーを説明して、多くの人には理解してもらえていると思うのだが、それでもいくら説明しても「でも実用性が無いならダメじゃん」「LinuxやITRONでいいのでは?」と言われてしまうこともある。


しかしここで考えてほしいのは、「実用でないなら意味がない」という実用一点張りの考え方はどうだろうか、ってことだ。


独自OSを自作するという活動はいくつかある。しかし思うのは、ほとんどのOSは「機能追加して、実用性を高めていく」という、機能増加の方向に向かうということだ。どんどん新機能を追加して、便利に発展させていく。まあこれはこれで面白そうだしいいと思うしべつにそういうOSを否定するわけではないのだけれど、KOZOSで今からそれをやろうとしても、先発のOSを追うだけになってしまい、なかなか追いつけないだろうし面白いものにはならないだろう。その方向性でKOZOSならではの魅力を出そうとしたら、ものすごく斬新な機能を実装するとか、ものすごく魅力的な機能を積むとか、ものすごい特徴的なつくりにするとかしかない。(まあそれも面白そうだけどね)


何より、そういう方向性のものばかりってのもつまらないだろう。いろんなものがあっていいと思う。


で、KOZOSでやりたいのは、「どんどん機能追加して」というおおかたの流れとは逆行して、「削って削ってOSとして必要なエッセンスだけを残して、1行1行の意味が重い、密度の濃いものにできないか?」ということだ。これだけあればOSといえるというコア機能(ぼくが考えるところでは、スレッド管理、メモリ管理、I/O管理の3機能)だけに限定して、そのかわり読みやすく理解しやすく改造しやすいものにする。


なのでKOZOSは、教材に向いていると思う。

そんなわけで学習向けとして作っていきたいのだけど、学習向けと謳うならばそれはそれでハンパなものにはせずにきちんと考えて、日本語のドキュメントを充実させて、誰でも購入できる価格帯のボードをターゲットにする、とかいったことは考えたい。というのは、「このOSは実用向けだけど学習にも使えます」とか言っておきながら、実際に動作するボードはン十万円、とか、開発環境はン万円、とか、ボードから自作する必要があります、とか、ボードには英語のマニュアルしかありません、とかってOSがけっこう多くてちょっとどうかと思ってるところがあるからだ。少なくともボード自体がン十万円とか開発環境がン万円もするようでは、現実的には個人で学習なんてできないじゃん!って思う。


とくにKOZOSは、教えてくれる人のいない状況での独学に向いているものにしたい。ただOSがシンプルなので学習に向いていますよっていうだけでなく、動作するボードの値段とか、CPUやボードやペリフェラルのドキュメントの充実さとか、日本語ドキュメントの充実さとか、開発環境の入手しやすさとか、ボード自体の入手しやすさとか扱いやすさとか、そういったもろもろのことを含めて、個人の学習に向いているというものにしたい。なぜなら、ぼく自身がそういう個人向けにまとまったものがすごくほしかったのだけど無かったので、OS自作のためにはいろんな分野をその都度その都度つまみ食いで勉強していくしかなかったから。

そして、そういうOSは未だに(KOZOS以外に)無い、と思う。

あとは「組込みOS利用の学習」というより、「組込みOSの内部動作や自作の学習」を考えたものにしたい。世の中の「組込みOS本」のほとんどは、「OS自作」や「OS理解」でなく「OS利用」のための本のように思う。自作のための資料やサンプルがないのです。


OS初心者が「これなら自分でも読めるかも」「これくらいでいいなら、頑張れば自分でも自作できるかも」って思えるものにしたい。OSのプロや専門家が、ではなく、初心者や学生さんや志ある若い人がそういうふうに思えて、一歩を踏み出すきっかけにできるものにしたい。


ってな話ができればいいなあ。