2024.10.10
将来は卵1パックの価格が2倍に? 多くの日本人が知らない世界の新潮流、「動物福祉」とは
リンクをコピー
記事をブックマーク
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.11.13
週3日働いて年収2,000万稼ぐ元印刷屋のおじさん 好きなことだけして楽に稼ぐ3つのパターン
2024.11.11
自分の「本質的な才能」が見つかる一番簡単な質問 他者から「すごい」と思われても意外と気づかないのが才能
2024.11.13
“退職者が出た時の会社の対応”を従業員は見ている 離職防止策の前に見つめ直したい、部下との向き合い方
2024.11.12
自分の人生にプラスに働く「イライラ」は才能 自分の強みや才能につながる“良いイライラ”を見分けるポイント
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.11.11
気づいたら借金、倒産して身ぐるみを剥がされる経営者 起業に「立派な動機」を求められる恐ろしさ
2024.11.11
「退職代行」を使われた管理職の本音と葛藤 メディアで話題、利用者が右肩上がり…企業が置かれている現状とは
2024.11.18
20名の会社でGoogleの採用を真似するのはもったいない 人手不足の時代における「脱能力主義」のヒント
2024.11.12
先週まで元気だったのに、突然辞める「びっくり退職」 退職代行サービスの影響も?上司と部下の“すれ違い”が起きる原因
2024.11.14
よってたかってハイリスクのビジネスモデルに仕立て上げるステークホルダー 「社会的理由」が求められる時代の起業戦略