2024.12.19
システムの穴を運用でカバーしようとしてミス多発… バグが大量発生、決算が合わない状態から業務効率化を実現するまで
リンクをコピー
記事をブックマーク
KOBA789氏(以下、KOBA789):よろしくお願いします。KOBA789です。タイトルでわかると思うのですが、作っている途中と下に書いてあります。つまりCPUはできていません。オチが先に来てますが。
まず予防線を張らせてほしいのですが、非常に役に立たない話をするので休憩タイムだと思ってリラックスして聞いてください。
では自己紹介から始めようと思います。みなさんご存じのとおり、ここに来ている人間なのでパソコンオタクです。最終学歴は高卒で現在無職(※取材当時)、人生の春休み中です。
最近取り立ててしゃべることは、DBMS(データベース管理システム)を自作していますということくらいですね。こういう記事を書きました。DBMS好きな方がこの中にいたら、ぜひお友だちになってください。
ですが、今日は自作DBMSの話はしません。ついでに言うとCPUの話もしません。タイトルに入れておきながらCPUの話はしません。今日の内容ですが、なんらかのシミュレータの話と、WebAssemblyを使う側の話と、WebGLの話と、Rustの話をします。
今日WebAssemblyの話をする人がほかにもいるし、Rustの話をする人も数人いるのでほかの登壇者が私より詳しくしゃべってくれるんじゃないかという気はするんですけど。まあ、そこはね、腹括ってやっていきます。
近年自作CPUがアツいんですね。自作CPUはしたことがありますか? という完全100パーセントハッタリの図があります。人類には自作CPUを作ったことがある人とこれから作る人しかいません。私は作ったことがないのでこれから作る側ですが、私も作りたいなと思ったわけですね。
「CPUの原料ってシリコンなんですよ! 意外にこれ知られてないんですけど」という有名な言葉があります。みなさんの中ではおそらく常識で、シリコンだというのはみなさん知っていると思います。
ですが、はたしてそうだろうか? という話が今回のメインテーマでございます。
CPUは半導体以外でも作れるんですよ。かの有名なENIACを思い起こしてみれば、あれは真空管ですよね。半導体ではないわけです。論理回路相当の回路を構成できれば、最悪電子回路じゃなくてもいいのですが、ここでは電子回路にしましょう。最悪、論理回路を構成できれば素子はなんでもよくて、トランジスタである必要はありません。
そもそも半導体で作ったCPUは、動いているかどうかがよくわからないんですよね。物理的に非常にミクロな世界で動いているので人間の肉眼では見られません。
わざわざ人間様が、たくさんのトランジスタを何億個とか集めて大事な計算をしているのに、努力が一切感じられずにけしからんと。こんなので計算をしている気になってもらっては困ると。もっと努力を見せろということになるわけですね。
ここに写真がありますが、これが何だか、みなさんわかりますか? これは私が小学生の時に秋月で買った電磁リレー300個です。樹脂製のレールといって、細長い筒のようなものにダーっと端から並んで入っています。それが束になってダンボール箱に入っている写真です。計300個あります。
このリレーでCPUが作れるのではないか。たぶん、300個だと足りないのですが、計算機っぽいなにかはできるはずなので、ぜひとも小学生の時に買った大量のリレーを活用したいと思いました。
当時の小学生の私のお小遣いでは、300個のリレーを買うのもけっこうキツかったですね。1個100円なので3万円くらい払って買ったのかな。現在の価値で換算すると30万円くらいです。
リレーは何かというと、スイッチング素子の1つです。仕組みは非常に簡単で、バイポーラトランジスタみたいにNとPとNがあって、そこに電子が……という狐につままれたような説明をする必要は一切ありません。
電磁石が左側にあって、右側に鉄板でできた接点があります。鉄板は当然金属なので電気を流します。この鉄板をコイルで引っ張ると、浮いている部分がピチッと張り付いて電気が流れるという非常に素朴な仕組みです。
これ1個ずつがリレーなんですが、後ろにある黒い四角い箱の中にこういうパーツが入っています。
コイルで引っ張って、物理的に鉄板を動かしてパッチンパッチンとやるので動作音がするんですよ。みなさんも自動車のウインカー、カッチカッチという音を聞いたことがあると思うのですが、あれが電磁リレーです。
最近はスピーカーから鳴らしていますが、20年くらい前までの車は本当に電磁リレーでカッチン、カッチンとやっていました。
リレーは、特有の困りごとがトランジスタと違っていくらかあります。通常の論理回路ほど知見が共有されていません。共有されているのかもしれませんが、インターネットはトランジスタよりあとにできたものなんですね。
なので、トランジスタより前の歴史である電磁リレーに関することがWeb上にほとんど転がっていないんですよ。
いわゆる論理回路に関しては、論理圧縮のコツがいくらでも研究されていますし、いろいろと解説もあるのですが、リレーはそういうのがありません。当然ですが、電磁リレーで今さらCPUを作ろうとか、でかい規模の論理回路を作ろうとかをやっている人はほとんどいません。
なので、開発に便利なツールもろくにありません。普通の論理回路だったらシミュレータがあるんですよね。FPGA開発する時にたぶん使ったことがあると思いますが、タイミングチャートがバーッと出て便利なやつです。
当然ながら、電磁リレーの世界にはありません。電磁リレーとトランジスタはやっぱり仕組みが違うので、回路の作り方もちょっと違います。なので、そのまま流用できるものでもありません。
1個100円するリレーをたくさん並べて、「よっしゃ、これでハンダ付けして動かしたるで!」とハンダ付けして組み上げたにもかかわらず動かなかったら大変悲しいわけですよ。
物理的な可動部がある分だけ、リレーはトランジスタと違って1個の単価が非常に高いんですよね。重量もあるし、送料もかかります。それをハンダ付けして動かないというのは非常に悲しい。
なので、まずは回路CADを作ろうと思いました。ぶっつけ本番でリレーをハンダ付けして、「えいや! きっとこれは動くんや。俺の頭の中ではこの回路は正しく動くんや!」と作って動かないとかなり悲しいので。
コンピューター上で動く回路CADを作って、そこでシミュレーションまでして、おそらく動くだろうと確認してから実際に作り始めたい。実機はシミュレーションしたあとに作り始めたいと思いました。
ここから思い出すシリーズなのですが、なんと私、過去にもKernel/VMでこの手の話をしたことがあります。よーく見ると7年前にも同じような発表をしているんですね。さらによく見ると、その翌年にも同じような発表をしています。2014年、2015年とやっていて、なんと今回の発表は3度目の正直でございます。
3度目の正直で何が変わったかというと、今回は使いづらいシミュレータだけではなくてCADも作ったというところが進捗になります。小学生時代に300個リレーを買って、これで計算機作るぞと言って、早何年だ……20年くらい経つのか。
20年間、「よし、これをハンダ付けすると悲しいからシミュレータを作るぞ」と言って、「シミュレータだけだと設計が大変だから、CADも作るぞ」と言って、ようやくここまで来たというのが今日のお話でございます。
お品書き、ようやっとここまで来ました。流れとしてはシミュレータを作って、さらにそのシミュレータを使えるCADを作るという流れです。最後はデモでございます。さっきも書いてあったのですが、CADを作るところで大変盛り上がってしまって、CPUを作るところまでは間に合いませんでした。
CPUを作る話は4度目の正直を期待していただいて、今回はCADを作るところまででございます。おそらく今日の発表の中では相当レイヤーが高い話です。
まずシミュレータを作っていきます。そもそも電磁リレーの回路がどんなものなんですかという話をします。電磁リレーの回路は、さっき言ったとおりコイルと接点があるので、コイルと接点をつないで作ります。回路図の上の記号はこんな感じで、丸いやつと棒がたくさんあるやつでコイルと接点を表します。
回路設計の時のコツが1つあって、コイルの片側は必ずグラウンドに落とします。当然コイルは向きがないので、線がピロピロと2本出ていて、どっちをなににつなげてもいいです。ですが、そういうことをやるとショートする回路を簡単に作れちゃいます。
厳密には、コイルの片側をグラウンドに落とすというより、グラウンドは絶対にコイルの片側に付いていると言ったほうが正しいです。こうすることによって、必ずグラウンドには負荷が常にくっついている状態です。要はプラスとマイナスが直接触れ合う機会を永久になくしているわけですね。
こうすると絶対にショートしないので、回路設計が安心してできます。さらに言うと、後述するシミュレータを作る時にもこういう制約を導入してあげると作りやすくなります。
回路を書いていきます。回路は何なのかという話をすると、つまるところグラフです。接点をノードにして、配線をエッジにしたグラフです。なので、グラフ関連の一般的なアルゴリズムがいろいろと使えます。
回路をグラフとして見ると、電気が流れるというのはつまるところ連結成分です。当たり前ですよね。ノードとノードがエッジでつながっているから、そこを電気が流れます。つながっているから連結成分です。これを使っていきます。
さっき、必ずリレーのコイルの片側にはグラウンドをくっつけておきますという話をしたのですが、リレーのコイルに電気が流れるかどうかは、グラウンドにつながっていない側の1点が電源につながっているかだけで判断できます。片側はマイナスに、グラウンドにべちゃっとくっつけたので考える必要がある端子は片側だけです。
グラフの中の連結成分をバーッと求めて、その連結成分に電源があるかどうかを判定すれば、その電磁リレーを動かすべきか動かさないべきかを判断できます。ということで、簡単にシミュレータが作れます。
今説明した内容をRustでバラバラと適当に書くとシミュレータができます。これはGitHubに公開しているので、気になる人は読んでください。非常に素朴な実装になっています。
(次回へつづく)
関連タグ:
2024.12.12
会議で発言しやすくなる「心理的安全性」を高めるには ファシリテーションがうまい人の3つの条件
2024.12.19
12万通りの「資格の組み合わせ」の中で厳選された60の項目 532の資格を持つ林雄次氏の新刊『資格のかけ算』の見所
2024.12.16
32歳で成績最下位から1年でトップ営業になれた理由 売るテクニックよりも大事な「あり方」
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.12.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
2024.12.13
ファシリテーターは「しゃべらないほうがいい」理由 入山章栄氏が語る、心理的安全性の高い場を作るポイント
PR | 2024.12.20
モンスター化したExcelが、ある日突然崩壊 昭和のガス工事会社を生まれ変わらせた、起死回生のノーコード活用術
2024.12.18
「社長以外みんな儲かる給与設計」にした理由 経営者たちが語る、優秀な人材集め・会社を発展させるためのヒント
2024.12.12
今までとこれからで、エンジニアに求められる「スキル」の違い AI時代のエンジニアの未来と生存戦略のカギとは
PR | 2024.11.26
なぜ電話営業はなくならない?その要因は「属人化」 通話内容をデータ化するZoomのクラウドサービス活用術
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