Skip to content

Instantly share code, notes, and snippets.

@tenpoku1000
Last active April 19, 2024 10:10
Show Gist options
  • Save tenpoku1000/424c8aeb83cf0f8c121f442b0e56baea to your computer and use it in GitHub Desktop.
Save tenpoku1000/424c8aeb83cf0f8c121f442b0e56baea to your computer and use it in GitHub Desktop.
2 年以上かけて自作 OS 開発のための資料を集めた話

2 年以上かけて自作 OS 開発のための資料を集めた話

2024/04/19 更新

この記事は、自作OS Advent Calendar 2017の 12/2 の記事として書かれました。

2015 年以降に収集・整理した資料

ブックマーク(サイズは 10MB 超)の収集を先行させ、それを整理することで Gist にメモを書いたり、非公開のテキストファイルにメモをするなどしました。

ブックマークのリポジトリのバックアップの都合で、リポジトリが肥大化した際に過去の歴史を改ざんして、古い履歴を捨てているので一部の情報は消失しています

自作OS Advent Calendar 2017向けに書いた他の主な記事は、以下の通りです。

なぜ OS を自作するのか

自作してみたいから・学習目的で、という以外に OS を自作する意味は無いと思います。

なぜならば、すでに世の中に多数の OS が存在し、新規性のある OS を開発することも難しいのが現状です。

それでも OS を自作するのであれば、自分らしい OS(常用可能でセルフ開発可能な自作 OS)の構造を設計することを試みるのが良いと考えて、作業を進めています。

過去に OS を開発したいと思っても、忙しくなったり資料が入手出来なかったりして、何度か断念していたことも心残りになっていました。

趣味で開発するということ

趣味で開発する場合、他者(企業や個人)に対して契約という行為が無いのが普通だと思います。スケジュールや作業範囲は自由に決めることが出来ます。

仕事として行うプログラミングでは、できるだけ早く、確実に動くものを提供出来るのかということが、重視されているように思います。

それに対して、趣味で開発するということは、仕事を他者から担当させられているわけではないので、仕上がりの早さを競技のように競う必要はありません。

もちろん、できるだけ早く完成出来たほうが良いでしょうし、現実的な作業範囲を決めることが出来たほうが良いでしょうが、趣味というのはワナビ的な世界観の一面があります。

作業範囲を決めずに無制限で情報収集を始めた

ここ十数年ほど、特定業界向けのシステム開発で消耗していて勉強不足だったので、世の中に存在する規格やライブラリなどを知りたくなって、必要な情報をブックマークすることから始めました。

資料収集で特別なことはしていません。見落としがちな点を挙げるなら、日本工業規格(JIS)が制定されている規格の場合、日本規格協会から印刷された規格票を購入することを検討するようにしています。その際、冒頭だけ和訳されて残りの文章が全部英文の場合は JIS を入手する意味がないので、除外するようにしています。それなら、最新の ISO を入手した方が良いです。JIS 規格票は、一般の書店でも注文すれば購入できるようですが、個人でも日本規格協会から直接、購入が可能です。書店よりも届くのが早いです。通常は PDF 版も併売されているので、紙よりも PDF が良い人は PDF 版を選ぶと良いでしょう。

入手済み、または入手を検討している JIS 規格票は以下の通りです。

また、必要なら業界団体が発行している仕様書(Exif 等)を入手することも検討してみてください。

ある程度、書籍が収集できたので書棚を公開してみた

古い本がメインだったこともあってか、あまり反響は無かったのですが、記録しておくと書棚に本を戻す時の参考になると気づきました。

デバイスの購入計画を確定させるため、Gist にメモを書いた

自作 OS で使えそうなデバイスをリストアップしているメモを探しても、見つからなかったので書いてみました。Kernel/VM探検隊の Slack で Bluetooth デバイスについて助言してくれる人がいて助かりました。

デバイスの購入計画が確定できたので、OS 開発予定(基本機能)を更新

実現すべき機能の依存関係に基いて、実現しないと先に進めなくなるものから順に開発していくように開発計画のメモの書き直しを行いました。

やらないこと・低優先度のリストを作成し、不要なブックマークを削除

基本的に企業向けだったり、Server の維持管理費がかかるものや、評価が定まっていないものを除外するようにしています。趣味としてやっていますし、新規分野を開拓する余力は無いためです。

紙の資料の整備

ダイソーで質の良いファイルばかり買っていたら、なぜか入荷されなくなりました。100 円商品としては、赤字の商品だったのかもしれません。当面の作業で必要な量は確保できています。

  • 利用を想定している規格の仕様書を印刷し、ファイリング
  • 技術雑誌(Interface, Software Design)のバックナンバーを解体し、分野別にファイリング
  • やらないこと・低優先度のリストを参照し、不要な資料を廃棄

2017/12/02 現在の今後の予定

  • 電子書籍の執筆環境の開発
  • 電子書籍の UEFI の章の執筆を再開(商品として販売する予定はありません。永久に無料です)
  • OS 開発予定(基本機能)の計画に沿って調査・開発
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment