horizon, 2024年を語る
2024年のSurvey
horizonです. せっかくBlogを開設したのにあまり記事が書けていないのはまずい, ということで2024年の振り返りをしていきます.
TL; DR : 未踏!業務!大学!アイマス!
1月 / January
未踏ジュニアが終わり, A9N MicrokernelのModernizeを開始しました. 採択期間中に妥協していた部分を改善すべく, Capability*1というSecurity Modelの実装をし始めたのがこの頃です.
seL4ライクなCapability Nodeの実装に成功した. これでようやく次の実装に移れるぞ.
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年1月10日
アイデア : 「世界」をもとにBlenderを用いて30分で地球を構築するチャレンジをしました. 今思うと世界->地球は安直すぎてつまらないですね. Blenderをもっと触っていきたいなあ.
今日は1万と2000年ぶりにBlenderで遊ぶなどした pic.twitter.com/ChWnMw5U6c
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年1月21日
Functionalな言語とMonadのお気持ちを知りたくなり, Haskellに入門しました. この選択は大正解で, 今思えばA9Nの開発に必要なプロセスでした.
すごいH本を買いました pic.twitter.com/ymtnTpsj1B
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年1月21日
2月 / February
2024年, 18歳にもなってFrontendを触っていないのはまずいだろう, ということで人生初のPortfolioを作成しました. 技術StackとしてはReact + Three.js + Tailwind CSSです. Frontendのメンタルモデルを多少知ることが出来てよかったかも*2.
React + Three.js + Tailwindでポートフォリオを作成している. pic.twitter.com/PZ62nhqCG5
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年2月2日
ぐるぐる.mp4 pic.twitter.com/3xSrOqeG49
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年2月2日
30分以内で1フレーズ作曲する, といったこともしていました.
NeuroFunkを書いた pic.twitter.com/3ghLaYRDMj
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年2月5日
コーディングをしないでBass Houseを書きましたの札を下げています.
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年2月1日
SERUMのDrag Exportは便利だね pic.twitter.com/GI16mchpbA
A9N Microkernelで全体的に使用することになるliba9nを実装すべく, C++の大いなる力を学び始めました.
freestanding C++でのエラーハンドリングが余りにもつらい. Resultがあればなあ.
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年2月15日
std::functionやstd::optional, std::expectedなどの実装を試みているが, 今のところ全てが分からない.
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年2月21日
アイドルマスター ミリオンライブ!という素晴らしいコンテンツの集大成ともいえるLive*3を観てしまい, 人生へのMotivationが大幅に上昇しました. ミリオンライブはいいぞおじさんの爆誕です.
すべてのミリオンライブに ありがとう
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年2月25日
3月 / March
IPAによる未踏IT人材発掘・育成事業への応募をしました. 詳細は 未踏IT(2024)に応募し, 一次審査を通過した - userland of horizon2k38 に書いています.
未踏本体に応募するプロダクトの案が絞れず困っている. やりたいことが多すぎるのが問題; 速く決めなければならない.
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年2月26日
学習能力が欠如しているため, 永久に夏休みの宿題パラダイムから抜けだせず, ギリギリになって未踏本体への提案書を書いている.
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年3月14日
未踏本体への応募をDoneした 長い一日だったなあ
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年3月14日
C++と向き合い, 如何にC++が分かっていなかったか, を理解してしまい絶望していました. とはいえ, 慣れというのは恐ろしいものです. 異世界語に見えた標準C++ Libraryの実装も段々と読めるようになっていきます.
llvm-project/libcxxを眺めている https://t.co/yX3utUdBXa
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年3月7日
std::moveやstd::forward, remove系のtype_traitsなどを実装した.
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年3月8日
独習C++とEffective Modern C++により息を吹き返した.
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年3月8日
My new book... pic.twitter.com/uScxU7Xt1u
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年3月22日
未踏会議2024に未踏ジュニア スーパークリエータとして出展しました. 自分に興味を持ってくれる人が現れ, 好きなだけMicrokernelオタク語りをし, それを聞いてもらえるという環境が最高でした*4. また出展したいなあ.
#未踏会議 pic.twitter.com/LIFMfOGwCP
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年3月9日
テスト pic.twitter.com/V7qjNqmAh4
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年3月10日
#未踏会議
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年3月10日
展示に興味を持ってくれた皆さん, ありがとうございました! pic.twitter.com/cWtTUORsc4
自作マイクロカーネル!!
— 三峰スズ🔔🛠️VTuber@C105(月)東7-w19b (@verylowfreq) 2024年3月10日
(狭義の)システムコールはipc()とyield()だけで、そのほかの機能はマイクロカーネル自身からは切り離しているとのこと。
ケーパビリティやメモリ管理、ハードウェア依存関係についての設計を、動くところまで実装できていてすごい!@horizon2k38 #未踏会議 #未踏ジュニア pic.twitter.com/PifaNC2Wkf
1時間ぐらいでBrainfuckのInterpreterを書きました. コーディング適正テストにはFizzbuzzではなくBrainfuck Interpreterを書かせるのが良いのでは, と思ったり思わなかったり.
恐ろしく雑に書いたBrainfuck InterpreterでFizzBuzzが動く様子 pic.twitter.com/Tg1a6Q3TtN
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年3月16日
2年強ぶりにロゴとヘッダーを更新しました. 何だかんだで気に入っています.
horizon v0.4.0
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年3月16日
- アイコンとヘッダーの更新 https://t.co/4aUuTCOVDb pic.twitter.com/h27l3MnOoY
4月 / April
シンプルな電子音楽(Dance Musicではないもの)が書きたくなり, 突発的に曲を書きました. Ping-Pong Delayが好きすぎる.
‘3xperimental Things’ by horizon2k38 is on #SoundCloud https://t.co/W8ZmIAbVVq
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年4月9日
曲を書いた
未踏の一次審査を通過し, 二次審査に挑みました. 謎の自信に満ち溢れていたため心配はしていなかった記憶があります.
未踏IT : 一次審査を通過しました. 頑張るぞ.
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年4月11日
未踏ITの二次審査が終了しました! もっと圧を感じるのかな, と思っていたのですが, 楽しく話せました(カーネル周りの技術的なトークが出来たため, めちゃくちゃ面白かった).
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年4月21日
5月 / May
Version 1として, やっと満足の行くoption<T>を実装できました. このときはMonadicな操作をSupportしていなかったのですが, Trivial性を引き継いでくれるような*5 (要するに, Kernelでの使用に耐えうる) ものが出来てかなり嬉しさがありました.
やっとoption<T>がすべてのテストに通った. pic.twitter.com/PKaa6vKEK1
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年5月11日
Haskellを知り, そこから更に数学的バックグラウンドが知りたくなったため圏論にプチ入門しました. なお, この後これでは満足できなくなり, 本格的に数学の学習を開始しました.
久しぶりのMy new book…… pic.twitter.com/t1zSsuhe9C
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年5月15日
未踏ジュニア代表である@yuukaiさんにApple Vision Proを試させてもらいました. 裸眼だったのでかなりボヤけていたのですが, それでも未来を実感しました. 電脳コイルじゃん.
𝑨𝒑𝒑𝒍𝒆 𝑽𝒊𝒔𝒊𝒐𝒏 𝑷𝒓𝒐を体験するなど pic.twitter.com/PyiwgtOFRp
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年5月25日
6月 / June
未踏ジュニアに応募しようという記事を書き, 良さを広める活動<いわゆる布教>をしました. 未踏ジュニアはいいぞ.
はてなブログに投稿しました
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年6月1日
未踏ジュニアに応募しよう - userland of horizon2k38 https://t.co/jCLO1LHvjo#はてなブログ
夢だったTHE IDLEM@STER MOVIE 輝きの向こう側へ!を友人と観ることができました. 自分がアイマスを知ったのは2016年頃で, 当然ながら劇場で観ることはできていませんでした*6が, 再上映という素晴らしい企画のおかげでそれを達成できました. M@STERPIECEを聴くと無条件で泣く体に改造されました.
夢を初めて願って 今日までどの位経っただろう pic.twitter.com/0mpggUkFDd
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年6月4日
未踏IT人材発掘・育成事業に採択されました. 自信はあったんですが, やっぱり嬉しいものです. これにより, 国からMicrokernelやOSを書いてもよいというお墨付きを得ました.
2024年度の未踏IT人材発掘・育成事業に採択されました. Capability-Basedな3rd-gen Microkernelと, POSIX LayerとしてのOS, そしてUser-LevelのBuddy SystemやSLAB Allocatorを実装します. 頑張るぞ〜!https://t.co/p5u3sbc6Cr pic.twitter.com/I3dWDQGPfy
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年6月7日
未踏ジュニアのブースト合宿→未踏ITのキックオフMTGをdone. 驚くほど面白かった; 最高の刺激を受けた. pic.twitter.com/pM3O7ioNUM
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年6月16日
未踏ジュニアの合宿に修了生として参加したりしました.
未踏ジュニアのブースト合宿に来ています
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年6月15日
書いていたError Handling LibraryがMonadicな操作をSupportするようになりました. Do記法やError Propagation Operatorなどは無いので完璧とは言えないですが, それでも例外機構を使用しないModernなError Handlingができるようになったのは大きいです. option<T>, result<T, E>最高!*7
カーネルのためにエラーハンドリングライブラリ(C++)を実装しているのだが, 遂にresult<T, E>へMonadicな操作を実装できた. Freestandingなので標準ライブラリは一切使用していない. pic.twitter.com/QzIOQpPEYH
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年6月13日
7月 / July
名刺を作成しました. これまでは人と会う機会があまり無かったため不要だったのですが, 必要な場面が増えてきたためです. *8
名刺が届くなど pic.twitter.com/f5SuaGmlES
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年7月3日
未踏の合宿に参加しました. これは最高で, 同期・PM陣・ゲストから受けるインスピレーションは通常の比ではありません. こればっかりは採択者にしか分からないと思うので, これを読んでいる皆さんも未踏に応募してください.
ありがとうございました pic.twitter.com/KSyV0ztqKM
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年7月7日
また, オファーを受けてこの時期からDiver-Xで働きはじめました. C, C++, Rustなんかを書いています. 結構楽しいですよ.
慶應義塾大学 環境情報学部に合格しました. 2025-04より学生という身分を手に入れることになります. 未踏採択 + 大学合格で人生の不安度をかなり下げられたように思います. 良かった〜〜〜
面接 明日らしい
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年7月19日
無事大学生になれそうです 応援ありがとうございました#春からSFC pic.twitter.com/hFeIYszDSA
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年7月23日
19歳になりました. 秋月律子さんと同年なことに気が付き, 慟哭.
祝ってくれた皆さん, ありがとうございました!19歳になりました!時間の流れが早すぎる. pic.twitter.com/qScSxoDzmo
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年7月27日
@yasulab
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年7月30日
安川さんから本を頂きました!!!CS以外も頑張ります!!! ありがとうございます!!! https://t.co/jMfeC5uwxX pic.twitter.com/9NivsV2PqK
@ukkaripon
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年8月1日
鵜飼さんに本を頂きました!!! 全ジャンルを極め, 質の高い知的生産を目指します!!!ありがとうございます!!! https://t.co/jMfeC5uwxX pic.twitter.com/EvqySiH1jJ
誕生日プレゼントとして雪江先生の代数本を頂いたため, 数学を本格的に始めました. Motivationとしては楕円曲線暗号を(理論を理解しつつ)実装したい, というところから始まりました.
@Yam_xeon
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年7月28日
迫田さんに雪江本を頂きました!!!ありがとうございます!!!頑張ります!!! https://t.co/jMfeC5uwxX pic.twitter.com/VidL7wCq6w
8月 / August
Kernel/VM探検隊に初オフライン参加しました. 本当は発表したかったのですが, チキってしまい出来ませんでした. 精神が弱すぎるだろ.
GoogleのTシャツを着ているのがぼくです. https://t.co/sTiLDn3tbf
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年8月10日
C104(Day1)に友人と参加しました. 何も考えずに行ったため, アイマスの島がDay2であることを知らず終わりました. そのため, 結果として公式ブースだけを回ることになりました. とはいえ, Giftさんのののぬいやリーリヤぬいを得ることができ, QOLがかなり向上しました. ぬいぐるみは健康に良い.
コミケ+秋葉原に行くなどしました. pic.twitter.com/h71bSWIKGg
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年8月11日
Googleに行きました(おそらく3回目). 駅から渋谷ストリーム直結なのが羨ましい.
Googleに来ています pic.twitter.com/rPw1L0ip21
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年8月15日
未踏ジュニアの中間合宿に参加しました. 新幹線が止まるという状況に遭遇し焦るなどしました.
お疲れ様でした. pic.twitter.com/XsWBvv4ima
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年8月25日
新幹線が止まり, かなり終わりの状況. まずいかも.
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年8月25日
9月 / September
もともとAudio InterfaceとしてApollo Solo USBをWindows機で使用していたのですが, メインをMacBook Proに切り替えたため買い替えが必要でした*9. そのため, 純粋な憧れもありUniversal AudioのApollo Twinを導入しました. Apollo Seriesの何が良いかというとUnisonです. 可変Impedanceのため, HWのEmulateを高クオリティかつ低レイテンシーで行える点が素晴らしいです.
My new gear...
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年9月5日
Universal Audio Apollo Twin X pic.twitter.com/bfTltNeXPA
iPad Air + Apple Pencil Proを導入しました. MicrokernelやHypervisor, OSを実装する関係上論文を読む機会が増え, 従来の読み方*10では耐えられなくなったためです. 結論から言うとかなり買って正解でした. 論文に一瞬で書き込みができ, アイデアスケッチもでき, SidecarでMacのSub Displayとしても使用することができます. 電車移動中, ノーストレスで論文を読める環境はかなり生産性を拡大させました.
My new gear... (2)
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年9月7日
iPad Air 11” (6th gen) + Apple Pencil Pro pic.twitter.com/KXUZBdtVEK
10月 / October
型システム入門 (通称TAPL)を読み始めました. 物理本にこだわったせいで1.6万円ほどしましたが, 今のところ後悔はないです. 問題を解きつつ読み進めているのでまだ読了していませんが, 近いうちにHindley-Milner Type Systemを実装する予定です.
My new book...
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年10月1日
TaPLくんこんにちは pic.twitter.com/atPDNS0bBU
TaPLくんの演習問題が難しくてワロタ
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年10月14日
Bambu Labの3D PrinterであるA1 miniを導入しました. ヘッドフォンスタンドや小物入れなんかを自分でモデリングして印刷するのが楽しくて, モノづくり欲求が絶賛向上中です.
買ってしまった https://t.co/84iGsbPOcO pic.twitter.com/eWZiiX4gxG
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年10月22日
My new gear... pic.twitter.com/1bFQCZWiBE
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年10月24日
11月 / November
OSC 2024 Tokyo/Fallに参加しました. ゼロからのOS自作入門 著者である内田さんや, ハロー"Hello, World"の著者である坂井さんに直接感謝*11を伝えられて嬉しかったです. また, 人生初の同人誌を購入しました. セガサターンによる自作シンセサイザーという響きはあまりにも魅力的じゃないですか?
#osc24tk
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年10月26日
戦利品です pic.twitter.com/a2Hr92SFVY
選挙権の行使はしたほうが良いことが知られています.
選挙権を行使するなど
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年10月27日
未踏の8合目会議に参加しました. 先述の通り, 未踏の合宿というものは最高に楽しいものです. ここから残りの8割作業する, という落合先生の話を聞いて気合を入れ直すなどしました.
お疲れ様でした pic.twitter.com/V0Cq2VSa84
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年11月3日
A9N Microkernel上で動作させるOSをRustで作り直していたのですが, それが動作した様子です. RustのLinker Script指定周りで時間を溶かしてしまい最悪でした.
A9N Microkernel上のKOITO RuntimeでRust製Binaryが動作 Userlandは100%Rustで行きます pic.twitter.com/4bq8E89S90
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年11月4日
BehringerのTD-3というTB-303 Cloneを買ったので, テストを兼ねて演奏してみました. Knobと脳が直結していく感覚が心地良いですね.
Acid Time pic.twitter.com/mzENysyP6q
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年11月5日
12月 / December
CMakeでLinkerを指定するのに死ぬほど失敗していました. かけた労力に対して結果が見合っておらず, 記事執筆時点では未だにMakeを使用しています.
数日CMakeと戦っているんだけど, 触れば触るほど怒りが湧いてくる.
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年12月4日
重い腰を上げてmacOSにTiling Window ManagerであるYabaiと, その操作用としてskhdを導入しました. 結果としてはマウスを捨てられそうな勢いで, これに関してはそのうち記事を書く予定です.
yabai + JankyBorders + skhd + SketchyBar とても良い感じ pic.twitter.com/GB0K9IkMQ7
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年12月7日
謎のプチバズが発生しました. 本当になんで???
飴と鞭というやつ pic.twitter.com/sV92zJHMBq
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年12月10日
THE IDOLM@STER M@STER EXPO (通称アイマスエキスポ) に友人と参加しました. 開始してすぐ, 天海春香さんのソロであるM@STER EXPO LIVE SHOWCASE HARUKA AMAMI SOLO LIVE "START"に参加したのですが, これがあまりにも良すぎて忘れられそうにありません. 正真正銘の, トップアイドル天海春香としての輝きを浴びてしまいました.
Day2はOnlineで秋月律子さんのソロであるM@STER EXPO LIVE SHOWCASE RITSUKO AKIZUKI SOLO LIVE "Let me hear"を観ましたが, あまりの可愛さに椅子から転げ落ちました. 現地で観たかったなあ. アイドルマスターに言えることはただ一つ, ありがとう.
アイマス最高 pic.twitter.com/RWfarYuf42
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年12月14日
まだ天海春香ソロのことを考えている
— inline constexpr h5n_p (@spectr0gram) 2024年12月14日
本当の, 正真正銘のトップアイドルだった 眩しかった
無限に手を動かすしかないことを再度実感するなどしました.
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年12月18日
2025年の目標
2025年にはやりたいことがかなりあります. というのも, 学生という身分を手に入れると出来ることが広がるからです. 例えばセキュリティ・キャンプ, SecHack, GSoCなどに挑戦してみたいですし, 未踏AdvによるBusiness化も考えています.
また, 今年やり残したSMT/SAT Solverの実装, Hindley-Milner Type Systemの実装, Regex Engineの実装, 楕円曲線暗号の実装もします. というのも, 前提知識の収集が大まかに終わり, いよいよ全体が見えてきたからです. さらにはJITなRISC-V Emulatorの実装もしていきたいため, 前提知識を得るためにQEMUのTCG実装なんかを読んだりしています.
ただ, その前に未踏を納得の行く形で完遂させたいです. A9N Projectは未踏で終わらせるつもりはないですが, DemoDayという明確な区切りがあります. 後悔したくありません.
無限に手を動かすぞ!やるぞ!
*1:近代的なMicrokernel (3rd-Generation Microkernelはほぼ全てがCapability-Based Securityを導入しています. 代表的なものでいえばseL4, Zircon, NOVA(これはMicrohypervisorだけど)など.
*2:なお, 作りかけで放置されている模様
*3:Act-4 あまりにも最高だったなあ
*4:展示を見てくださった皆様, 本当にありがとうございました!!!
*5:C++20では, Containerのような型の実装にConditionally Trivial Special Member Functionsを使用するとTemplate ParameterからTrivial性を引き継ぐことができる. TrivialであるとRegisterに乗せられるため(cf., Itanium C++ ABI)うれしい.
*6:ムビマスの公開年は2014年
*7:HaskellではMaybeやEitherが, RustではResultやOptionが該当します. C++にも23から標準ライブラリとしてstd::optionalやstd::expectedが提供されるようになりました.
*8:readelfリスペクトです
*9:Apollo Solo USBはWindowsのみ対応
*10:Mac上のPreview.appとスマホで読んでいました
*11:お二方には過去に著書を頂いています
慶應義塾大学 環境情報学部の春AOに合格した
人生 : 大学生編が始まろうとしている
中卒(高卒認定)から巻き返しを図り, 慶應義塾大学の環境情報学部 (SFC) に春AOで合格した. 自分のような境遇の人間に向け, 受験から合格までを記す.
受験前の状態
自分は大学に行くか/行かないかを決めかねていたのだが, その理由は大きく分けて2つ存在する.
1つめに, 自分が最もやりたいこと, それは研究であったということだ. "大学というやつは必修授業が多く, そこまで好きなことに取り組む時間が無いらしい" そんな話を聞き及んでいたため, 時間的制約の面から不安があった. そのため, エンジニアとして第一線で活躍している大人数名に助言を仰いだところ:
- 大学生の籍だけでも持っておいたほうがよい
- 私立大学なら必修も(ある程度)少なく, やりたいことに取り組みやすい
という解答を得た. 納得の得られるものであったため, ここで進学を決意した.
個人的には, 学生籍を持っていないことを後悔したことが多々ある. 例えば, 高レベルな低レイヤー系の講義を受けることができるセキュリティ・キャンプへの参加資格が無い. SNSのTLに面白そうな講義の様子が流れてくるたび, 苦しい気持ちになったことを覚えている. 同様に, 高校生対象の研究プログラムに参加できなかったり, 様々なサービスの学割を当然ながら使用できなかったりした. 全くもって面白くない話である.
2つめに, 学費を支払う能力が無かったということ. ぼくの実家は細く, 両親ともに中卒だ. 学費の援助を打診してみたものの, 現在の経済状況では厳しいらしく, 謝罪されてしまった. 自力で稼ごうにも, 専門とする分野の特性上なかなか仕事が見つからず, かなり絶望の状況だった. 仕方が無いので奨学金を駆使し, なんとかやっていこうと覚悟を決めた.
一次選考の免除
悩んだ結果, SFCを受験することに決めた. 未踏ジュニアの同期が複数人進学していたし, 多様なジャンルを学べ, 尚且つ好きなこともできるという良い噂を聞いていたからだ. 未踏ジュニアのスーパークリエータは一次選考が免除されるのもうれしいポイントだ. 一次選考が免除されるといっても, 書類(いわゆる自己推薦書)は通常の受験者と同じものを書く必要がある. 0次選考とでも言うべき受験費の振込みを行い, それらの作成を開始した. しかしながら, この間も学費の不安が常に付き纏っていた.
未踏IT
そんな中, 詳しくはこの記事を参照してほしいのだが, 未踏IT人材発掘・育成事業というものに採択された. 好きにコードを書きながら金銭を得る, という夢のような話を実現してしまったのだ. これなら大学の学費を自力で支払いつつ, 生活を維持できる.
副次的なものとして, 未踏同期のSFC生であるたーるさんからSFCに纏わる助言を得ることができた. 例えば, 9月入学を避けるべきだ, ということを教えてもらった. SFCのAOでは4月入学/9月入学を選択できるのだが, ここには書かないものの問題が複数あるらしく, 最終的に4月入学を決定した.
また, 期限がギリギリだった自己推薦書のクオリティ・アップを手伝ってもらい, 締め切り30分前に提出できた. 非常にありがたい話である.
二次選考 : 面接
2024-07-20*1, SFCのα館で面接は行われた. 不思議と緊張しなかった. 未踏ジュニアの成果報告会より平気だな, と考えながら順番を待った. 係員に呼ばれ, 該当するドアを開けた瞬間から面接が始まった.
面接の結果として, 未踏IT二次選考ほどの手応えがあるわけではなかった. 聞き間違いが複数回発生し時間を無駄にしてしまったし, 抽象概念を説明するのに若干の難を感じた.
1つ挙げるとするならば, 印象に残っている会話がある. ある面接官に:
伊組さんは頭の切れる方だと思うのですが, 小中時代友人とどのように付き合っていましたか? 知識や知能のレベルに差があると辛い部分があるのでは?
と聞かれたことだ. 確かに小学校の低学年時は辛かった部分がある. 話は噛み合わないし, とにかく退屈だった. でも, 目標に対する理念であったり, 趣味との向き合い方を見てみると共通項が存在することに気がついた. 技術や学問に関する議論*2は出来ないかもしれない. ただ, 遊んだゲームやアニメなどの感想であったり, モノづくりに対する情熱などは共有して楽しむことが出来る. それらを見出すことで楽しく過ごせた, と回答した.
結果
とまあ, 面接が(手応えは微妙だったが)無事に終わった. 面接日から僅か3日で合否が出るので, あまり考える時間はなかった. 落ちていたら筑波ACか一般受験を頑張ろう, とは思っていた.
そして当日, 間髪を入れずに勢いのままページを確認した. 合格だった. 思っていたより嬉しかった自分に驚いた. 意外と人生なんとかなるなあ, という実感を得た.無事大学生になれそうです 応援ありがとうございました#春からSFC pic.twitter.com/hFeIYszDSA
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年7月23日
仕事
実は, 二次選考の少し前に(未踏つながりのおかげか)仕事を見つけることができた. 現在はその企業でCやC++を書いている. 学費や生活に対する余裕が更に生まれたし, 業務も今のところ楽しい. これに関しては運が良かったのだろう.
結論
この2ヶ月で中卒ニート危機を脱し, { 未踏採択, 職, 大学合格 }を得ることができた. AO入試という制度には賛否あるが, 専門とする分野があり, やりたいことのある自分のような人間にとってはありがたいものだと感じる. エッジケースなのだろうが, やりようによってはチャンスを掴むことができる, ということを伝えたい. これからも頑張っていこう.
未踏IT(2024)に採択された
2024 未踏ITに採択
当Blogでの報告が遅れたが, 未踏IT人材発掘・育成事業に採択された. IPA公式からの概要については, 未踏IT人材発掘・育成事業:2024年度採択プロジェクト概要(伊組PJ)を参考にしてほしい.
2024年度の未踏IT人材発掘・育成事業に採択されました. Capability-Basedな3rd-gen Microkernelと, POSIX LayerとしてのOS, そしてUser-LevelのBuddy SystemやSLAB Allocatorを実装します. 頑張るぞ〜!https://t.co/p5u3sbc6Cr pic.twitter.com/I3dWDQGPfy
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年6月7日
なにをつくるか
なにをつくるか, 簡単にまとめると:
- Capability-Based MicrokernelであるA9N
- A9NをコアとするPOSIX-CompatibleなOSであるKOTIO
- そのためのUser-Level Memory Management System (ULMM)
これらを実装する.
A9N
A9Nは, ぼくが未踏ジュニア時代から開発しているMicrokernelだ. 未踏ではこのKernelをObject-Capability Modelというセキュリティモデルを用いてCapability-Basedなものへ書き換える. Capabilityというのはオブジェクトに対する操作権限を表すトークンのようなものだ. 従来のセキュリティモデルとは異なり, 最小特権の原則を満たして安全に特権操作できる.
Capabilityを用いたMicrokernel/OSというのは昔から存在する. 古くはHydraやKeyKOS, そして現代においてはTSのseL4やGoogleのZircon, そしてHuaweiのHarmony Kernelなどがある.
KOITO
KOITOはA9N上に構築されるシステムだ. A9NはIPCを主体とするシステム*1であり, UNIXやLinux由来のKernel-Level API : システムコールは持ち合わせていない. そのため, KOITOはそれを扱いやすくするためのWrapper的側面を持つ. POSIXのシステムコールはUser-Levelで実現される. そのため, Hookも自由自在であり柔軟なシステムとなる.
ULMM
既存のシステムであるUNIXやLinuxは, メモリのFrame単位で見ればBuddy Systemを持つ. また, Kernel-Object単位で見ればSLAB/SLOB/SLUBをKernel-Levelで持つ. Kernelに必要なデータをユーザーに漏らさないため, Kernel自体で機構を持つ, というのは自然なことのように思える. 実際, 過去多くのMicrokernelではKernel内でメモリのAllocationを実行していた. これは純粋なMicrokernelでは無いように見えるし, 未踏ジュニア期間中ずっとそのように感じていた.
Capability-Based MicrokernelではKernelの情報を漏らさず, セキュアにFrameやKernel Objectを管理できる. 抽象メモリCapabilityを用意して, それを必要なObjectへ分割する操作を実装すれば良いのだ. この美しい仕組みにより, Buddy SystemやSLAB/SLOB/SLUBなどをServerとしてUser-Levelで実現できる.
思想
結局のところ, 美しく純粋なMicrokernel*2を書きたい, というモチベがこのプロジェクトを始めたきっかけだ. その点においては未踏ジュニアと何も変わらず, 低レイヤー x ソフトウェアアーキテクチャ というアイデアを組み合わせただけに過ぎない. 夢を語るとするなら, いずれLinux Kernelを置き換えられるような存在にしていきたい.
未踏IT(2024)の二次審査を終了した
未踏IT
詳細は前回の記事を参考にしてほしいのだが, 要するにIPAのやっている 好きに開発をすると, なぜかお金がもらえ, メンタリングを受けられる というものである. 自分は一次 (書類審査), 二次 (面接/プレゼンテーション) *1 という二段階審査のうち, 一次審査を通過したため二次審査に進んだ.
二次審査フロー
1. メール
一次審査の結果通知メールには:
- 二次審査の会場
- 仮の日付/時刻
- 詳細情報を記載するためのフォーム
- プレゼンの形式
- 審査の詳細が書かれたドキュメントへのリンク
が記載されている.
2. フォームの記入
で通知されたフォームには:
都合のよい時間帯
- 当日連絡先
- 参加方法
- 使用機材
を記入する.
会場は東京のセミナールームだった. 自分は東京都に在住しているので現地参加を選択したが, 参加が難しい場合に備えZOOM参加が許可されている.
フォームに詳細情報を記入すると, 確定された日付/時刻と, スライド共有用リンクの記載されたメールが通知される.
3. プレゼンテーションの準備
二次審査で唯一残念な部分は, 準備時間が極めて短いことである. 自分の場合, 10日しか与えられなかった (通知 : 4/11, プレゼン : 4/21). そのため, やや急ぎ足でプレゼンを仕上げる必要がある. 未踏ジュニアでやっていたようにGoogle Slideでスライドを作成し, 5回ほど練習をした. ここでポイントなのだが, 出来れば第三者にフィードバックをもらったほうがよい. 自分だけでは気付けない改善すべき箇所というのは存在する.
4. プレゼンテーション
二次審査が明日あるのだけど, 過去一番緊張しているかもしれない. 私が𝑴@𝑺𝑻𝑬𝑹𝑷𝑰𝑬𝑪𝑬の精神で行くしかないな.
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年4月20日
到着
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年4月21日
すべてを出し切ります
会場へ到着後, 同意書に署名して控室にて出番を待つ. 本会場に1組ずつ入れ替わるような時間設定がなされているため, 15分程度の待ち時間が発生する. この時間はどう使ってもよい. *2
出番がやってきたら自分の発表に集中するだけだ.
緊張しすぎず, ある程度の平常心を保つことが重要である. 未踏ジュニアの成果報告会で極度の早口になってしまったことを反面教師として, ゆっくりと話すことを意識した.
自己評価
結論からいえば, この上なく最高のプレゼンができた. 特に, ゆっくり話すこと を意識したのが大きかった. 人間は緊張すると早口になってしまいがちなので, そこを相殺できた. PM陣とも技術的な質疑ができ, かなり盛り上がった.
笑顔で会場をあとにした. 悔いの残らない二次審査であった.
未踏ITの二次審査が終了しました! もっと圧を感じるのかな, と思っていたのですが, 楽しく話せました(カーネル周りの技術的なトークが出来たため, めちゃくちゃ面白かった).
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年4月21日
おわりに
あとは最終結果を待つだけだ. 採択者には5月下旬に通知されるらしい. また, 合否関係なしにフィードバックの書かれた書面が郵送されるという話もある.
結果はまだ分からないが, やれることはやった.
未踏IT(2024)に応募し, 一次審査を通過した
忘れないうちにメモしておきます.
未踏IT
IPAがやっている事業として 未踏IT人材発掘・育成事業というものがある. 端的にいえば 好きに開発をすると, なぜかお金がもらえ, メンタリングを受けられる というものである. *1
世の中, 探してみると意外にもうまい話というのはあるものだ. とはいっても, 当然ながら二段階の審査が行われ, 篩にかけられる. 応募者全員が採択されるような甘いものではない. 倍率は平均して6倍を超える.*2
自分はその兄弟事業ともいえる未踏ジュニア をしていたので, 応募は必然ともいえるものだった. 未踏ジュニアのメンターは全員が未踏事業の卒業生で, ボランティアによって運営されている (IPAが母体ではない). そのため, メンターによる現役時代の話が聞けたり, 提案資料のフィードバックを受けられたりと, ステップ・アップに最適な土壌となっている. 自分もその例に漏れず, 提案を練るための思考整理過程を補助してもらったりした.
一次審査フロー
1. エントリー
いきなり提案書を送りつけるわけではなく, まずはエントリーをする必要がある. ただ, それほど難しい作業ではない. メールアドレスを登録して, 送られてきたGoogle Formに必要事項を記入するだけだ. フォームに対して記述した内容のコピーはメールに送信されるため, あとから確認できる.
ここで注意なのだが, Gmailを使用している場合, コピーは "ゴミ箱"に格納されてしまっている可能性が高い. 当初届かず不安になり, 何度も受信ボックスや迷惑メールフォルダを確認したのだが, それらは結果的に無駄な行いだった. "ゴミ箱"の内容は30日で自動削除されるため, 十分に気をつけてほしい.
2. 提案書の作成
提案書というのはそのままの意味だ. 自分が未踏で何をどのように作りたいか, 8ページ程度で正確に記述する. PDFで出力さえできれば恐らく何を使って書いてもよい (自分はGoogle Documentを使用した). 最小限のテンプレートが提供されるので, 大半はそれを使うことになるだろう.
提案書の作成には時間をかけ, 準備を怠らないのが一般的だ. しかしながら, 自分の場合はなかなか着手できなかった. その大きな理由として, やりたいことがあまりにも多すぎる というのがある. 自分は多趣味で, ITに限定しても多種多様なことをしているのだが, 各分野で成し遂げたいことがあった, というかある. (これに関しては, 世界があまりにも面白すぎるのが悪い.) 多重応募は認められているが, それは1つの提案書に対する質とトレードオフになる.
また, 自分が締め切り-Drivenな人間であることも大きく影響した. これを"夏休みの宿題パラダイム"と呼んでいるが, 小学生時代から未だに脱せていない. そのため, 最終的に書き始めたのは応募期限の二日前だった.
学習能力が欠如しているため, 永久に夏休みの宿題パラダイムから抜けだせず, ギリギリになって未踏本体への提案書を書いている.
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年3月14日
提案書は, 未踏IT人材発掘・育成事業公募概要 及び 公募要領 を読み込んで作成することを強く推奨する. 何を書かなければならないのか, より詳細な部分をそこで得ることができる. おそらく, これを読んでいなければスタートラインにすら立てない.
3. 提案書の送信
1 のエントリーを終えると, Google Driveの共有フォルダがURLのかたちで共有される. そこへ, PDFとして出力した提案書と, 提案書の補足となる動画資料をアップロードする.
問題はありつつも短期集中型のアプローチはなかなかうまくいった. 上記のように, 提案書と簡単な動作デモを共有し, なんとか期限の15分前には完了できた.

未踏本体への応募をDoneした 長い一日だったなあ
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年3月14日
この手の成功体験が"夏休みの宿題パラダイム"から脱せない原因なんだろう. 法的には成人しているのだから, どこかで大きく失敗し, 学びを得る必要があるとは思っている. *3
尤も, 小さな失敗はあった. 期限の終了後に提案書を見返していたところ, 大きめなtypoを発見した. *4 あらゆる書類は余裕を持って作るべきだ.
4. 結果の通知
期限から一月ほど経過した昼過ぎに, 一次審査の結果は通知された.
【お知らせ/要回答】2024年度 未踏IT人材発掘・育成事業 一次審査通過と二次審査のご案内(伊組 烈火 様)
これには思わず小躍りした. 通知までの一週間ほど, 体がGmail更新botになっていた自分にとっては, まさに天からの福音だった.
未踏IT : 一次審査を通過しました. 頑張るぞ.
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2024年4月11日
おわりに
二次審査はプレゼンテーション形式で実施される. せっかくのチャンスを無駄にしないことを目標にしよう.
二次審査の記録 : 未踏IT(2024)の二次審査を終了した
*1:もう少し具体的なうれしいポイントは, 未踏ジュニア代表の鵜飼さんの記事 か, ぼくが書いた未踏ジュニアに応募すべき を参照してほしい. 未踏ITと細かな相違はあるが, 方向性としては同一だ.
*3:2005年生, この時点で18歳
未踏ジュニアに応募しよう
未踏ジュニア
未踏社団という, IPA未踏事業の修了生を中心につくられた社団法人がある. その未踏社団が2016年から開始したのが未踏ジュニアだ. 未踏ITは24歳まで*1, 未踏Advは年齢制限なしで援助をするが, それでは大学生・大学院生・社会人ばかりが採択されてしまう. そのミスマッチを解消すべく, 未踏ジュニアでは応募時点で17歳までに制限されている.
ぼくは未踏ジュニア(2023)の修了生だ. そんな立場から, 17歳以下の才能ある技術者へ向け, なぜ未踏ジュニアに応募すべきかを伝えたい.

経済的支援
最も言及されるのは, やはり50万円の経済的支援だろう. メンターの承認次第で開発の加速資金として使用可能だ. 本や開発マシン, ハードウェア系のプロジェクトならばパーツに使用したりと, その用途は多様である. 常に金欠がちな未成年にとって強大なアドバンテージとなる.
メンタリング
メンターはプロジェクトの進行を円滑にしてくれる存在だ. ただ, その円滑化能力が素晴らしい. ぼくは個々のメンターが持つ言語化能力や抽象化能力に何度も助けられた. プロジェクトの不明瞭な部分やスケジューリングについて, 極めて高水準なアドバイスを得ることができる. 技術面においては, 下記のようなコミュニティと最適な接続をしてくれる場合がある.
コミュニティとして
金銭よりも価値があるのはコミュニティだ. 未踏ジュニアはIPA未踏と同様に, OB同士のゆるい繋がりがある. メンターは全員IPA未踏の出身者なので, それを起点とする繋がりもある.
未踏の採択者, というのは審査を得て決定された人間である. そのため, 分野を問わず一定以上の技術レベルが保たれたコミュニティに参加することとなる. また, IPAの未踏事業は24年, 未踏ジュニアも9年続いている. 今では各地に散らばって活躍している未踏出身者の, 多様な協力を仰ぐことができるのだ.
これは他のコミュニティにない大きな特徴だろう.
ぼくの場合
今にしてみればかなりフワフワした考えだったが, 何となく応募してみようかな, という気持ちはあった. しかし, 毎年のように面倒くさくなってしまい, 結局のところ存在自体を忘れ応募していなかった.
怠惰な生活を送る18歳になる年, たまたま知り合いから応募締め切り日を伝えられた. 応募締め切り日の2日前だったが, それが自分にとって最適な環境だった. 2日で書けるところまで書いてみようということで, 以前から実装を学んでいた"Microkernelとソフトウェアアーキテクチャを組み合わせたようなテーマ"で提案書を作成した. 文章力は乏しいが, 情熱はあった. ずっと思い描いていた構想を実現するための, またとないチャンスだったからだ.
*2提案書を書いてる
— 𝗵𝗼𝗿𝗶𝘇𝗼𝗻 (@horizon2k38) 2023年4月7日
驚くことに, これは一次審査を通過した. 来る二次審査に備え, プレゼンテーションを急いで作成した. *3 情熱を伝えるため, 原稿の類は一切作らなかった.
採択された. 自分の技術力と情熱には自信があった. そのため, 採択されるだろうと思っていた. それでも, ただただ嬉しかった. 何ひとつ実績がない人間にとっての天啓だった. 採択通知のメールを何度も見返した.
それからはひたすらに楽しかった. 同期と過ごした半年間は, 切磋琢磨という言葉そのものだった. 幾つかある合宿でアイデアを交換しあい, プロジェクトの練度を高めていった.
自分一人ではできない経験を積むことができた. ぼくを低レイヤーの道に誘ってくれた恩人に再開できたし, 目標としていたような未踏OBに相談する機会を得ることができた. *4
経済面での支援は非常に役立った. ずっと欲しかった技術書を買うことができた. *5 開発用のマシンも新調できた.
生存者バイアスで, 採択者の視点から良かった部分を列挙しているだけにしか見えないだろう. でも, 採択されなかったからといってメリットが無いと言い切るには速すぎる.
まず, 書いた提案書は未踏ITへ使い回すことができる. *6 それから, 提案書を書くうえで新たな問題点やアイデアを思い付くことが非常によくある. 詳細をある程度詰めなければならないため, 脳内で無視してしまっていた箇所を再考できるからだ. アイデアを推敲し, 他の支援プログラムに応募するための土台となるだろう.
時間がない, というのは言い訳にならない. 過去採択者のうち, 一日二日で提案書を書き上げて採択された例はいくらでもある.
参考までに, ぼくのプロジェクトと発表動画を貼っておく.
結論
17歳以下で作りたいものがあるクリエータよ, 未踏ジュニアの提案書を書いて応募せよ. 応募しなければ絶対に採択されることはないが, 応募さえしてしまえばそこにチャンスが生まれる.
おわび
残念ながら今年度(2024)の募集は終了し, 記事執筆時点で採択者が決定されている. 対象者は来年度(2025)の募集に備え, プロトタイプなどの制作を推奨する.