2024.12.19
システムの穴を運用でカバーしようとしてミス多発… バグが大量発生、決算が合わない状態から業務効率化を実現するまで
リンクをコピー
記事をブックマーク
hsjoihs氏(以下、hsjoihs):よろしくお願いいたします。こういうタイトルでやっていきたいと思います。「long version」と書いてあることからもわかるように、2022年9月17日にセキュリティキャンプのアフターイベントで発表した5分の「short version」を長くしたものとなっています。あらかじめご了承ください。
自己紹介です。hsjoihs(はすじょい)と申します。スタンフォード大学の学生をしていて(※登壇当時)、数学科と物理学科と応用・工学物理学科を並行でこなしています。セキュリティキャンプのCコンパイラゼミに長く関わっています。2023年4月から日本で働く予定です。TwitterとGitHubはアカウントが2つずつあって、こんな感じです。よろしくお願いします。
好きなことですが、言語と言語史が大好きです。言語と言語史が大好きで、コードを書くのもわりと好きです。あと、人に教えるのも好きですが……書き忘れたな。まあいいや、次にいきます。
私が6年間やっている趣味に「架空世界創作」というものがございまして。これはどういうことかというと、(スライドを示して)こんな感じで架空世界の言語とか伝統遊戯といった形態の創作となっております。
架空世界創作をやる上で気になるのは、世界がどうなっているか。人類はどういうことをするのか。このサンプルデータは多いほうがいいと。まぁそういう気持ちになるわけですね。
ということで、架空世界創作をやる上でぜひとも欲しいスキルは全知全能ということになるわけですが、全知全能になるのは難しいということが知られていて、全知全能になるのを妨げるさまざまな物理学的制約があるのですね。困りますね。そういう学科にいるので、そういう物理学的制約に詳しいです。
話を戻します。ちなみに、Fadisさんのプレゼンにもあったように、Unicodeの仕様書には全世界の文字の闇が収容されているので、「人類ってそんなことをするの!?」というのをお手軽に体験するのに便利です。読むと全知全能に近づくということで、1,000ページぐらいあった気がしますが、このUnicode15.0.0の仕様書をお暇な方はぜひ読んでみてはいかがでしょうか。
hsjoihs:Unicodeコンソーシアムの回し者みたいなことをしたところで、さて、架空世界創作。具体的にどういうことをやっているのかという話をしていきたいと思います。私はどういうことをやっているのか。その中の1つをちょっとピックアップして、架空伝統ゲーム「机戦(セッカイク)」について述べていきたいと思います。
架空伝統ゲーム「机戦(セッカイク)」。架空伝統ゲームという名前が1行矛盾していますが、架空世界の人間が慣れ親しんでいるという設定のゲームなわけです。当然、すべてが架空世界の文字・言語で書かれています。
なので(スライドを示して)こんな感じの箱に、こんな感じの駒とかが入っていて、公式ルールブックが当然異世界言語で書いてあります。
そしてこれが向こうの世界でのドキュメンタリーとなっております。
そのオンライン対戦を実装しました。オンラインで遊ぶことができます。やったね!
点数が入るとこんな感じで自動で計算されて、点数がちゃんと表示されて、この点数を受け入れるか、それとも受け入れずにさらにシーズンを続行してレートの倍率を倍に上げるかどうかを選ぶボタンが出るというUIを組んでおります。実演は時間が読めないので全部最後に回します。
さて、2022年7月末、オンライン対戦のUIの異世界文字化を8時間かけてほぼ完遂した段階で、次に何をしようかと私は考えました。
当時の状況を見てみますと、その後の1週間の8月7日から13日、セキュリティキャンプというところで講師をやる。秋学期は9月25日に始まる。その間、6週間暇がある。ということで、暇が6週間あるんだから、「そうだ、架空世界の言語を話す架空世界の人間のためのOSのモックを作ろう」という発想に至ったわけです。
実は5年前から立案しておりまして、低レイヤー側から掘っていました。アセンブリ言語を定めたり、呼び出し規約を定めたり、文字コードを定めるべく架空言語の文字を収集・整理したりと、そういうのを細々とやっていたのですが、やはり抽象的なことだけをやってもね。やっている本人が楽しくても、あまり他の人間の興味を引けないんですよね。あと人生が忙しかったこともあって、それなりに停滞していました。
ということで、今回は高レイヤー側から掘ろうという方針でやっていくことに決めました。『ゼロからのOS自作入門』のMikanOSを改造して、高レイヤー側からどんどん異世界化していく方針で攻めていく、というのを今回はやってみることにしました。
ゆえに、厳密には異世界のグラフィカルシェルを実装していることになります。資源を管理してアプリ間を調停するのがOSだというスタンスからすると、これはOS自作ではないということになります。
一方で、『ゼロからのOS自作入門』にも「OSを作るにはコツがあります。それは最初から完璧に作ろうとしないことです。最初から完璧を目指すと手が止まってしまってぜんぜん前に進まなくなります」と書いてあるので、高レイヤー側から異世界化させるという方針でいいんじゃないかなということで、今回それでやっていくことに決めた次第です。
そもそもですが、OS自作というのはみなさんやっているわけですね。要出典・要検証、大言壮語かもしれませんが、それは置いておいて。私もリソース管理の処理を再実装することに関する情熱がどうしても少し薄くてですね、興味はあるのですが、情熱は正直そんなにありません。
一方で、先ほどからご覧になっていただいているように、言語というものを再実装することに関しては、大いに情熱を持っていることがおわかりいただけたと思います。時間は有限なので、情熱のある分野に集中砲火すべきという発想に至りました。
なので位置付けとしては、向こうの世界のOSの上にかぶさっているグラフィカルシェルをMikanOSというフレームワークの上に移植したもの、というスタンスのものを作っていこうと考えています。
フレームワークがMikanOSなのでx86-64をターゲットにすることになりますし、アプリケーション自体もx86-64で動かすことになるので、5年前に考えていた自作アセンブリ言語はいったんお預け。一方でグラフィカルな部分は、すべて異世界人の好みに合わせてやろうじゃないかと、そういう目論見でスタートしたわけです。
具体的にどんな感じか、まずツールチェーンを見てみましょう。アプリケーションを書くための高級言語はリパライン語……向こうの言語ですね。ベースで設計をして、コンパイラは自分で書く。リンクされるべきライブラリも自分で書いて、テキストファイルのエンコーディングはASCIIと互換のないものを設計して、コンパイラはそれを読んでASCIIで書いたx86-84アセンブリを吐く。と言ってもわかりにくいので図示します。
現世では英語ベースの高級言語があって、それがコンパイラに入ることによって英語ベースのx64ニーモニックが発生する。それがアセンブラに入ってx64用object fileになって、英語関数名の標準ライブラリとリンクされて実行形式ができて、それが現世CPUで実行されて現世言語での入出力が発生する。
異世界では同様にリパライン語ベースの高級言語があって、それがコンパイラを通ってリパライン語ベースの2003lkニーモニック、アセンブラを通って2003'd ferlesylを通ってobject fileになる。それがリパライン語関数名の標準ライブラリとリンクされて実行形式ができて、向こうのマシンで実行されると異世界言語で入出力が発生する。まぁこういう構造になっているわけですね。
今回はこのx64にまつわるところはそのまま残して、それ以外のところを英語ベースではなくしていく。そういう感じを目指していくことになっているので、今回はこのマゼンダの枠で囲んだものを自作する必要があります。コンパイラを自作する必要がありますね。それはがんばっていきましょう。
次にデスクトップ環境ですが、アスペクト比を1:√2にしてみたいとか、せっかくなのでタスクバーでないような仕組みを模索したいとか、初期3Dゲームみたいに本棚から本としてメタファーされるアプリケーションを取り出して視点を下ろして横に広げて、机自体をスクロールするとか、そういうUIを作ってみるのもおもしろいのかなと思っていますが、完全に未着手でアスペクト比以外はまだMikanOSのままです。
画像やフォントの形式。色空間、sRGBというのは、「西暦1996年に流行っていたモニタ」の特性らしいので、向こうではちょっと違う色空間がはやっていてもおかしくないなぁと思っています。
圧縮アルゴリズムなぁ、まぁランレングス圧縮はさすがに向こうにもあると思います。実はフォントデータ自体はすでに何種類か作ってありますし、今現在他の知り合いにももう1種類作っていただいているので、そこらへんを使うことでフォントデータ自体はあります。なのでそれのフォーマットさえ定めればいいというわけですね。
(次回へつづく)
2024.12.20
日本の約10倍がん患者が殺到し、病院はキャパオーバー ジャパンハートが描く医療の未来と、カンボジアに新病院を作る理由
2024.12.19
12万通りの「資格の組み合わせ」の中で厳選された60の項目 532の資格を持つ林雄次氏の新刊『資格のかけ算』の見所
2024.12.16
32歳で成績最下位から1年でトップ営業になれた理由 売るテクニックよりも大事な「あり方」
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
PR | 2024.12.20
モンスター化したExcelが、ある日突然崩壊 昭和のガス工事会社を生まれ変わらせた、起死回生のノーコード活用術
2024.12.12
会議で発言しやすくなる「心理的安全性」を高めるには ファシリテーションがうまい人の3つの条件
2024.12.18
「社長以外みんな儲かる給与設計」にした理由 経営者たちが語る、優秀な人材集め・会社を発展させるためのヒント
2024.12.17
面接で「後輩を指導できなさそう」と思われる人の伝え方 歳を重ねるほど重視される経験の「ノウハウ化」
2024.12.13
ファシリテーターは「しゃべらないほうがいい」理由 入山章栄氏が語る、心理的安全性の高い場を作るポイント
2024.12.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
Climbers Startup JAPAN EXPO 2024 - 秋 -
2024.11.20 - 2024.11.21
『主体的なキャリア形成』を考える~資格のかけ算について〜
2024.12.07 - 2024.12.07
Startup CTO of the year 2024
2024.11.19 - 2024.11.19
社員の力を引き出す経営戦略〜ひとり一人が自ら成長する組織づくり〜
2024.11.20 - 2024.11.20
「確率思考」で未来を見通す 事業を成功に導く意思決定 ~エビデンス・ベースド・マーケティング思考の調査分析で事業に有効な予測手法とは~
2024.11.05 - 2024.11.05