SlideShare a Scribd company logo
OSを手作りするという
趣味と仕事
2021年11月14日
サイボウズ・ラボ株式会社 内田公太
自己紹介
内田公太 @uchan_nos
サイボウズ・ラボ株式会社
教育用OS、言語処理系の研究開発
趣味1:自作OSコミュニティ「osdev-jp」の運営
「自作OSもくもく会」をたまに開催
「自作OSアドベントカレンダー」の設置
趣味2:「uchanの電子工作ラボ」運営
電子回路のはんだ付けや計測の設備
https://uchan.net/lab/
OSとは
Operating System
Microsoft Windows 11 のスクリーンショット Google Android
OS自作とは
ほかのOSの力を借りずに起動する
ソフトウェアを作る
各ハードウェアを制御し、アプリが
動くようにする
ハードウェアに近い世界
パソコンを支配する感覚
「大きな組み込みマイコン」と評す
る人もいる パソコンを支配する人と
支配されるパソコン
※「OS自作」により作られたソフトが「自作OS」
私とOS自作との出会い:OSASK
2000年に初リリース
2005年頃まで開発されていた
国産OS
川合氏が主担当
100KB以下の極小OSイメージ
ウィンドウシステム
プリエンプティブ・マルチタス
ク
OSASKのスクリーンショット
私とOS自作との出会い:初めてのML投稿
中学2年生の11月
OSASKと川合氏に出会って
しばらく後
インターネットコミュニティ
に初めて触れた瞬間
2003年というのは、各家庭に
常時接続インターネットが普
及し始めた頃
皆さんには想像し難いでしょ
うが……
OSASK-MLに私が送った初めてのメール
※ML(メーリングリスト)とは、今でいうDiscordサーバーやLINEグループみたいな感じ
私とOS自作との関わり
2000年 小5:「OS」に出会う
パソコンのOS再インストールがきっかけ
2003年 中2:OSASKに出会う
2005年 高1:「30日でできる!OS自作入門」に出会う
執筆途中の原稿を読ませてもらった
2007年 高3:「はりぼて友の会」として活動
2009年 大2:OS自作の演習講義の補佐
セキュリティ&プログラミングキャンプ2009のOS自作組チューター
2013年 修2:OS自作熱が再燃
2016年 社2:osdev-jpを立ち上げ
2021年 社7:「ゼロからのOS自作入門」を出版
MikanOS:私の自作OS
「ゼロからのOS自作入門」のサ
ンプルOS
現代のPCで起動
64ビットモードで動作
USBマウス、キーボード対応
プリエンプティブ・マルチタスク
FAT32ファイルシステム
ページングによるメモリ管理
30章後のMikanOS
趣味としてのOS自作
趣味としてのOS自作
2000年 小5:OSに出会う
パソコンのOS再インストールがきっかけ
2003年 中2:OSASKに出会う
2005年 高1:「30日でできる!OS自作入門」に出会う
執筆途中の原稿を読ませてもらった
2007年 高3:「はりぼて友の会」として活動
2009年 大2:OS自作の演習講義の補佐
セキュリティ&プログラミングキャンプ2009のOS自作組チューター
2013年 修2:OS自作熱が再燃
2016年 社2:osdev-jpを立ち上げ
2021年 社8:「ゼロからのOS自作入門」を出版
「OS自作」に触れる前
小学3年の頃:自分専用のパソコンを手に入れる
小学5年の頃:パソコンが壊れ、OSの再インストールに挑戦
このときに「OS」というものの存在をうっすら認識
小学6年の頃:親と一緒にPICマイコンを学ぶ
中学1年の頃:C言語に入門、のちにDelphiも
DelphiはGUIソフトを作れるという触れ込みで学んだ
中学2年の頃:フリーソフト探しに熱中
「フリーソフト」とは無料で使えるソフト
• この頃(2000年頃)は「オープンソース」は流行前
Linuxをインストールしたのもこの頃
フリーソフトの宝庫
Vectorのバナー
「OS自作」との遭遇前夜
中学2年の頃、フリーソフト探し中に「OSASK」と出会った
Vectorを徘徊していたら、偶然「OSASK」を発見
国産OSということで興味を持つ
OSASK作者(川合氏)へ連絡を取った
Vector登録版は少々古く、最新版を使う方法を聞いた気がする
当時の最新版は「OSASK/AT 4.5」とかだった気がする
今でもVectorには当時のまま登録されている
「OS自作」との遭遇
OSASKコミュニティでしばらく活動
OSASKのIntroシリーズでプログラミングを学ぶ
Introシリーズ:C言語でOSASKアプリを作る教材
標準Cから飛び出した本格的なアプリ開発ができる
文字の表示から始まり、キー入力、サウンド、グラフィック、…
そのうち、自分でもOSを作ってみたくなる
川合氏にチャット(IRC)で相談
「30日でできる!OS自作入門」を執筆中であると
明かされる
原稿を読ませてもらえることに!
伝説の書籍
仕事としてのOS自作
仕事としてのOS自作
2000年 小5:OSに出会う
パソコンのOS再インストールがきっかけ
2003年 中2:OSASKに出会う
2005年 高1:「30日でできる!OS自作入門」に出会う
執筆途中の原稿を読ませてもらった
2007年 高3:「はりぼて友の会」として活動
2009年 大2:OS自作の演習講義の補佐
セキュリティ&プログラミングキャンプ2009のOS自作組チューター
2013年 修2:OS自作熱が再燃
2016年 社2:osdev-jpを立ち上げ
2021年 社8:「ゼロからのOS自作入門」を出版
サイボウズ・ラボでの仕事
2014年にサイボウズへ新卒入社
2020年にサイボウズ・ラボへ転籍
サイボウズ・ラボではOSや言語処理系(≒コンパイラ)を軸とし
た教育活動が仕事のテーマ
「ゼロからのOS自作入門」の執筆
サイボウズ・ラボユースのメンター
セキュリティ・キャンプの講師
実製品に搭載されるようなOSや言語処理系をがりがり作っている、
というわけではない
自作言語処理系
自作OS
仕事の例:OpeLaプロジェクト
2020年後半~2021年前半
自作OS上で自作言語処理系を動かし、
OSと言語処理系をビルドする
というロマンあふれるプロジェクト
言語処理系を作る途中で、路線変更
OpeLaプロジェクトは凍結
今やってること
「ゼロからのOS自作入門」サポート
質問掲示板(GitHub Issues)に来た質問に回答
毎週土曜日の夜に雑談会を開催し、質問を受け付け
新たな教材づくり
「Cコンパイラの自作」あたりを軸に
「OS自作」ではないけど、関連した技術
FPGAと戯れたりもしている
詳細はまだ秘密
先日開催したFPGA勉強会
何か質問ありますか?
OS自作の何が楽しいの?
普段使っている「OS」の役割、仕組みが分かる
ブラックボックスの中を解明する楽しみ
例:ファイルシステムって具体的に何をしているのか
例:複数のアプリを同時に動かす仕組みとは
PCを自分で操れる
他のOSに邪魔されず、CPUの全機能が使える
USBコントローラも自分で制御する
マイコン組み込み開発が好きな人はハマるかも
他の人にはない開発経験を得られる
OS自作している人は少数派、希少な存在
OSとは
定義はいろいろ
https://e-words.jp/w/OS.html
「OSとは、ソフトウェアの種類の
一つで、機器の基本的な管理や制
御のための機能や、多くのソフト
ウェアが共通して利用する基本的
な機能などを実装した、システム
全体を管理するソフトウェア。」
https://en.wikipedia.org/wiki/Operating
_system#/media/File:Kernel_Layout.svg
OSとは
『30日でできる! OS自作入門』の定義
結局のところ、それぞれの作者が
「これはOSなんだ」と言い張っ
て、周囲の人も「まあそうかな」
と思えばどんなソフトでもOSな
んです。
osdev-jpの立ち上げ
時は過ぎて2012年、サイボウズへインターンに行く
「サイボウズ・ラボユース」というインターン制度
お金をもらって好きなものを開発できるという神制度
2014年、サイボウズへ入社
インフラ基盤のソフトを開発する部署へ
毎年3月に、ラボユースの卒業式&成果発表会に出席
2016年の成果発表会に自作OSメンバーが集結→osdev-jp結成
hikaliumさん、Livaさん、そして私
その場に川合氏もいた
言語処理系とは
プログラミング言語を実行するための基盤
C言語の世界で説明すると……
コンパイラ:C言語で書いたプログラムをアセンブリ言語に変換
アセンブラ:アセンブリ言語プログラムをオブジェクトコードに変換
リンカ:オブジェクトコードをつなぎ合わせて実行ファイルを生成
ライブラリ:よく使う関数などを提供
CPU:実行ファイルに含まれる機械語を実行
コンパイラ
C言語
プログ
ラム
アセンブラ リンカ
CPU
実行
ファイ
ル
言語処理系
ライブラリ
OpeLaはどこまで作ったの?
OpeLa言語のコンパイラを途中まで作った
四則演算はもちろん、if文やfor文、関数などをサポート
ジェネリクスも若干サポート
func main() int {
printf("hello, worldn");
}
extern "C" printf func(*byte, ...) int;
OpeLa言語で書いたハローワールド

More Related Content

PDF
30分で分かる!OSの作り方 ver.2
PDF
Kubernetesによる機械学習基盤への挑戦
PPTX
30分で分かる!OSの作り方
PDF
C++でできる!OS自作入門
PPTX
DockerコンテナでGitを使う
PPTX
イベント駆動プログラミングとI/O多重化
PPTX
本当は恐ろしい分散システムの話
PDF
[DL輪読会]Learning Transferable Visual Models From Natural Language Supervision
30分で分かる!OSの作り方 ver.2
Kubernetesによる機械学習基盤への挑戦
30分で分かる!OSの作り方
C++でできる!OS自作入門
DockerコンテナでGitを使う
イベント駆動プログラミングとI/O多重化
本当は恐ろしい分散システムの話
[DL輪読会]Learning Transferable Visual Models From Natural Language Supervision

What's hot (20)

PDF
テスト文字列に「うんこ」と入れるな
PDF
Rustに触れて私のPythonはどう変わったか
PPTX
SPAセキュリティ入門~PHP Conference Japan 2021
PDF
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
PDF
コールバックと戦う話
PDF
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PDF
Dockerからcontainerdへの移行
PPTX
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
PDF
C/C++プログラマのための開発ツール
PDF
最近の単体テスト
PPTX
Docker超入門
PPTX
JIRA / Confluence の 必須プラグインはこれだ
PDF
使ってみて気づいた AGPL ライセンスの メリット・デメリット
PDF
Ethernetの受信処理
PPTX
Slurmのジョブスケジューリングと実装
PDF
Autoware: ROSを用いた一般道自動運転向けソフトウェアプラットフォーム
PPTX
ゲームインフラコンテナ実践導入
PDF
目grep入門 +解説
PDF
DockerとPodmanの比較
PDF
プログラムを高速化する話
テスト文字列に「うんこ」と入れるな
Rustに触れて私のPythonはどう変わったか
SPAセキュリティ入門~PHP Conference Japan 2021
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
コールバックと戦う話
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
Dockerからcontainerdへの移行
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
C/C++プログラマのための開発ツール
最近の単体テスト
Docker超入門
JIRA / Confluence の 必須プラグインはこれだ
使ってみて気づいた AGPL ライセンスの メリット・デメリット
Ethernetの受信処理
Slurmのジョブスケジューリングと実装
Autoware: ROSを用いた一般道自動運転向けソフトウェアプラットフォーム
ゲームインフラコンテナ実践導入
目grep入門 +解説
DockerとPodmanの比較
プログラムを高速化する話
Ad

Similar to OSを手作りするという趣味と仕事 (7)

PDF
やってよかったOS作り
PPTX
サイボウズ・ラボへ転籍して1年を振り返る
PPTX
最小セット
PDF
apasec001-kawai
PDF
DIY(~2015)
PDF
私とOSSの25年
PDF
OSC2023 Tokyo/Fall展示内容(予定)と技術書典15向け新刊(執筆中)のご紹介
やってよかったOS作り
サイボウズ・ラボへ転籍して1年を振り返る
最小セット
apasec001-kawai
DIY(~2015)
私とOSSの25年
OSC2023 Tokyo/Fall展示内容(予定)と技術書典15向け新刊(執筆中)のご紹介
Ad

More from uchan_nos (20)

PPTX
MikanOSと自作CPUをUSBで接続する
PPTX
小型安価なFPGAボードの紹介と任意波形発生器
PPTX
トランジスタ回路:エミッタ接地増幅回路
PPTX
OpeLa: セルフホストなOSと言語処理系を作るプロジェクト
PPTX
自作言語でお絵描き
PPTX
OpeLa 進捗報告 at 第23回自作OSもくもく会
PPTX
USB3.0ドライバ開発の道
PPTX
Security Nextcamp remote mob programming
PPTX
Langsmith OpeLa handmade self-hosted OS and LPS
PPTX
OpeLa セルフホストなOSと言語処理系の自作
PPTX
自動でバグを見つける!プログラム解析と動的バイナリ計装
PDF
1を書いても0が読める!?隠れた重要命令INVLPG
PDF
レガシーフリーOSに必要な要素技術 legacy free os
PDF
Building libc++ for toy OS
PDF
プランクトンサミットの歴史2019
PDF
Introduction of security camp 2019
PDF
Timers
PDF
USB3 host driver program structure
PPTX
業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)
PPTX
1TB/dayのログを収集・蓄積する技術
MikanOSと自作CPUをUSBで接続する
小型安価なFPGAボードの紹介と任意波形発生器
トランジスタ回路:エミッタ接地増幅回路
OpeLa: セルフホストなOSと言語処理系を作るプロジェクト
自作言語でお絵描き
OpeLa 進捗報告 at 第23回自作OSもくもく会
USB3.0ドライバ開発の道
Security Nextcamp remote mob programming
Langsmith OpeLa handmade self-hosted OS and LPS
OpeLa セルフホストなOSと言語処理系の自作
自動でバグを見つける!プログラム解析と動的バイナリ計装
1を書いても0が読める!?隠れた重要命令INVLPG
レガシーフリーOSに必要な要素技術 legacy free os
Building libc++ for toy OS
プランクトンサミットの歴史2019
Introduction of security camp 2019
Timers
USB3 host driver program structure
業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)
1TB/dayのログを収集・蓄積する技術

OSを手作りするという趣味と仕事