<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>雑談・小ネタ on 森羅万象プロジェクト</title><link>https://shinrabansyo.github.io/blog/99_%E9%9B%91%E8%AB%87%E5%B0%8F%E3%83%8D%E3%82%BF/</link><description>Recent content in 雑談・小ネタ on 森羅万象プロジェクト</description><generator>Hugo</generator><language>ja</language><lastBuildDate>Mon, 01 Dec 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://shinrabansyo.github.io/blog/99_%E9%9B%91%E8%AB%87%E5%B0%8F%E3%83%8D%E3%82%BF/index.xml" rel="self" type="application/rss+xml"/><item><title>森羅万象プロジェクトができるまで、、。</title><link>https://shinrabansyo.github.io/blog/2025/06/01/99-01_%E6%A3%AE%E7%BE%85%E4%B8%87%E8%B1%A1%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%8C%E3%81%A7%E3%81%8D%E3%82%8B%E3%81%BE%E3%81%A7/</link><pubDate>Sun, 01 Jun 2025 00:00:00 +0000</pubDate><guid>https://shinrabansyo.github.io/blog/2025/06/01/99-01_%E6%A3%AE%E7%BE%85%E4%B8%87%E8%B1%A1%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%8C%E3%81%A7%E3%81%8D%E3%82%8B%E3%81%BE%E3%81%A7/</guid><description>&lt;h3 id="はじめに"&gt;はじめに&lt;a class="td-heading-self-link" href="#%e3%81%af%e3%81%98%e3%82%81%e3%81%ab" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Chapter99では直接開発と関係しませんが、ウラ話や小ネタを提供していきます！！&lt;br&gt;
今回は、&lt;a href="https://www.ipa.go.jp/jinzai/security-camp/2023/zenkoku/index.html"&gt;セキュリティキャンプ'23&lt;/a&gt;を振り返りながら、&lt;br&gt;
森羅万象プロジェクトがどのようにして生まれたのかをお伝えできたらと思います！！&lt;br&gt;
★特にseccamp'24に参加する皆様、キャンプの雰囲気やGWの参考になれば幸いです！！（が、少々ネタバレかもしれません！）&lt;/p&gt;
&lt;h3 id="登場人物"&gt;登場人物&lt;a class="td-heading-self-link" href="#%e7%99%bb%e5%a0%b4%e4%ba%ba%e7%89%a9" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;一応、&lt;a href="https://github.com/shinrabansyo/tech-blog/blob/main/Articles/00-%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB/00-01_%E8%87%AA%E5%B7%B1%E7%B4%B9%E4%BB%8B.md"&gt;前に記事にしている&lt;/a&gt;ので、よければどおぞ。&lt;/p&gt;
&lt;p&gt;ア：Astalisks（Y3『故障を乗り越えて動くシステムのための分散合意ゼミ』、記事書いた人。だから基本（ア）視点。）&lt;br&gt;
キ：Kyuta（Y4『CPU+コンパイラ自作ゼミ』）&lt;br&gt;
シ：shinbunbun（Y3『故障を乗り越えて動くシステムのための分散合意ゼミ』）&lt;br&gt;
ユ：yn0014（Y2『RISC-V CPU自作ゼミ』）&lt;br&gt;
ワ：wakuto（Y2『RISC-V CPU自作ゼミ』）&lt;br&gt;
※なお、「ア」以外のセリフはいい感じにしゃべらせているだけなので、&lt;strong&gt;実際の会話とは異なります&lt;/strong&gt;。なんなら捏造しているかも、、。&lt;/p&gt;
&lt;p&gt;ゆ：uchanさん（seccamp'23のグループワーク担当。Y4の先生。）&lt;/p&gt;
&lt;p&gt;（&amp;lsquo;24はWXYZの区切りでなく、Sで統一されているはずです！）&lt;/p&gt;
&lt;h1 id="1グループワーク何をしよう"&gt;1.グループワーク～何をしよう、、。&lt;a class="td-heading-self-link" href="#1%e3%82%b0%e3%83%ab%e3%83%bc%e3%83%97%e3%83%af%e3%83%bc%e3%82%af%e4%bd%95%e3%82%92%e3%81%97%e3%82%88%e3%81%86" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;（あらすじ：seccamp'23は5日間、1日目と4日目に1hずつグループワークがありました。）&lt;/p&gt;
&lt;p&gt;ゆ：「グループで、セキュリティに関する、長期的な活動を何か考え、5日目に発表してくださーい。」&lt;/p&gt;
&lt;p&gt;ア：「よろしくおねがいしまぁす。てことはぶっちゃけなんでも良さそうですね。どうきめていきましょ。」&lt;/p&gt;
&lt;p&gt;ワ：「まずはよく出るアイデアとして、CTFですかね。ここにいる人だと結構いいとこまでイケそうですよね。」&lt;br&gt;
ア：（たしかに。名刺交換の時に話した人の中に自分で日本2位って言ってた人いたし、、。このメンバーでやったら強そう。）&lt;/p&gt;
&lt;p&gt;キ：「毎週LT会とかもよく聞きますね。5人だと実質月1発表ペースですし。」&lt;br&gt;
ア：（ふむふむ。みんなしゅごい人だから面白い話が聞けそう。）&lt;/p&gt;
&lt;p&gt;シ：「同人誌を書くのもあるあるですね。出し方はわかりますよ。」&lt;br&gt;
ア：（&lt;a href="https://techbookfest.org/market"&gt;技術書典&lt;/a&gt;に出すのかな。というか出したことあるのしゅげぇ。）&lt;/p&gt;
&lt;p&gt;ユ：「Tech記事とかもありですね。&lt;a href="https://qiita.com/"&gt;Qiita&lt;/a&gt;とか&lt;a href="https://zenn.dev/"&gt;Zenn&lt;/a&gt;とかにあげていく感じの。」&lt;br&gt;
ア：（そのうちプライベートでもあげれるようになりたいな。（と思ってたので、結果的にはこのプロジェクトに良い機会を設けてもらいました。））&lt;/p&gt;
&lt;p&gt;ア：「この辺は確かにすぐ思いつきますね。過去の事例とかでオモロいの知ってる、とかありますか？？」&lt;/p&gt;
&lt;p&gt;シ：「&lt;a href="https://www.rust-lang.org/ja/"&gt;Rust&lt;/a&gt;でWebサーバつくるとかありましたね。言語的にセキュリティ高めなのでよいかも。」&lt;br&gt;
キ：「CTFで攻撃したら代わりの置き土産的なのを置いて行って、互いに攻撃しあうのも面白いし続きそう。」&lt;br&gt;
ワ：「OSS開発に参加するとかもありますね。最終的には自分たちで開発とか？」&lt;br&gt;
ユ：「RPGを作ってセキュリティについて勉強できるものとか楽しいと思いますね。」&lt;br&gt;
ア：（おぉ、どれも気になる。でもこういう取り組みはスペシャリストがいて成り立つもんだから、私はきつそう、、？）&lt;/p&gt;
&lt;p&gt;ア：「ちなみに、なにしてみたいとかってありますか？個人的にはグループ作ってブログがおもろそうって感じなんすけど、、。」&lt;/p&gt;
&lt;p&gt;シ：「オリジナルのアプリとかWebサイトとか作ってみたいですね。それこそ記事をホストするような。」&lt;br&gt;
ア：（なるほど。やったことない（←当時大学4年なのに）ので良い勉強になりそうやな。詳しい人がいるのはありがたい。）&lt;/p&gt;
&lt;p&gt;ユ：「得意なのは割とレイヤーが低いところですね。それこそOSとか5人で作ってみても良さそう。」&lt;br&gt;
ア：（お、おぉ、。OSって作れるんだ。確かにゼミでLEDがチカチカしていた記憶はあったけど、キャンプ前にやってたんか、、？）&lt;/p&gt;
&lt;p&gt;キ：「せっかくCPUのゼミに参加したから、それを使えると嬉しいかも。はんだ付けとかの経験も活かせますね。」&lt;br&gt;
ア：（O, Oh&amp;hellip; CPUをつくる、かぁ。C言語とかで電話作れるって聞いたことあるし、CPUもC言語で作るのかな、、？（←答えは次章で））&lt;/p&gt;
&lt;p&gt;ワ：「じゃぁ、CPUもOSもアプリも自作していく活動にしませんか？」&lt;/p&gt;
&lt;p&gt;ア：（！？それはきびしくないか？どれかだけでも一からは開発したことないのに、、。）&lt;br&gt;
シ：「いいっすね！！オリジナリティとしてはピカイチだろうし！」&lt;br&gt;
ユ：「CPUとかOSの構造を知ることはセキュリティについての周辺知識を知るようなものですしね！！」&lt;br&gt;
キ：「せっかくCPUゼミ、OSゼミ、分散システム（Webサーバ系？）ゼミの人がいるんだし！！！」&lt;br&gt;
ア：（！？！？みんなやる気かい、、。）&lt;/p&gt;
&lt;p&gt;ゆ：「ちょっと話聞いてたけどおもしろそうですね。私はもれなく賛成です！・・・みんな賛成そうですが「ア」さんどうします？」&lt;/p&gt;
&lt;p&gt;ア：「じ、じゃあ決まりですね、全部自作！ということで！」&lt;/p&gt;
&lt;p&gt;ーーーーーというかんじで、森羅万象（をつくる）プロジェクトがはじまりました。&lt;/p&gt;
&lt;p&gt;　　　　　正直私（ア）は内心かなり反対でした、、。遠くから見てるか蒸発する未来しか見えなくて。&lt;br&gt;
　　　　　でもこのとき、私以外の4人の目がキラキラしていて、みんな本気なんだなぁっておもいまして、、。&lt;br&gt;
　　　　　今思えば、あのとき「もう少しハードル下げて現実的なものを」って提案しなくてよかったなぁって感じました。&lt;/p&gt;
&lt;p&gt;　　　　　ということで、もしseccampのグループワークでは、割と攻めた目標を立ててガンバってみるのもありかもしれませんね。&lt;/p&gt;
&lt;h1 id="2gwから1週間後どんなcpuにしよう"&gt;2.GWから1週間後～どんなCPUにしよう、、。&lt;a class="td-heading-self-link" href="#2gw%e3%81%8b%e3%82%891%e9%80%b1%e9%96%93%e5%be%8c%e3%81%a9%e3%82%93%e3%81%aacpu%e3%81%ab%e3%81%97%e3%82%88%e3%81%86" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;（あらすじ・・・&lt;br&gt;
ゆ：「ただGWやってもつまらないと思うので、&lt;a href="https://www.ipa.go.jp/jinzai/security-camp/2023/next/program_list.html"&gt;（23年の）ネクストキャンプ&lt;/a&gt;でやったTDD＋モブプロ形式はどうでしょう？」&lt;/p&gt;
&lt;p&gt;ということで、TDD（テスト駆動開発）かつモブプログラミング形式で開発することが決まりました。）&lt;/p&gt;
&lt;p&gt;★TDD（テスト駆動開発）・・・プログラムを一から書くとき、先に「このテストを満たすようにしたい！」っていうのを先に用意する手法。&lt;br&gt;
（GPTに聞いたのを書き換えただけですが）単に足し算でも、、、&lt;/p&gt;</description></item><item><title>最新の開発報告（ver.24年12月）</title><link>https://shinrabansyo.github.io/blog/2025/12/01/99-02_%E6%9C%80%E6%96%B0%E3%81%AE%E9%96%8B%E7%99%BA%E5%A0%B1%E5%91%8Aver.24%E5%B9%B412%E6%9C%88/</link><pubDate>Mon, 01 Dec 2025 00:00:00 +0000</pubDate><guid>https://shinrabansyo.github.io/blog/2025/12/01/99-02_%E6%9C%80%E6%96%B0%E3%81%AE%E9%96%8B%E7%99%BA%E5%A0%B1%E5%91%8Aver.24%E5%B9%B412%E6%9C%88/</guid><description>&lt;p&gt;宣伝も含めて、メンバー4人それぞれが近況報告をしております！！&lt;br&gt;
普段の記事よりハイレベルな話も含まれているので、ぜひご覧ください！！&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id="1全体の近況報告と記事について"&gt;1.全体の近況報告と記事について&lt;a class="td-heading-self-link" href="#1%e5%85%a8%e4%bd%93%e3%81%ae%e8%bf%91%e6%b3%81%e5%a0%b1%e5%91%8a%e3%81%a8%e8%a8%98%e4%ba%8b%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;記事担当のAstalisksです。&lt;br&gt;
いつも記事にてお話しているので、プロジェクトの説明や近況報告を&lt;br&gt;
簡単にしていきたいと思います。&lt;/p&gt;
&lt;h2 id="改めて森羅万象プロジェクトとは"&gt;改めて、森羅万象プロジェクトとは？&lt;a class="td-heading-self-link" href="#%e6%94%b9%e3%82%81%e3%81%a6%e6%a3%ae%e7%be%85%e4%b8%87%e8%b1%a1%e3%83%97%e3%83%ad%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88%e3%81%a8%e3%81%af" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;「&lt;a href="https://www.ipa.go.jp/jinzai/security-camp/about.html"&gt;セキュリティ・キャンプ全国大会2023&lt;/a&gt;」内のグループワークで結成されたグループで、&lt;br&gt;
2023年8月より週1（2~4時間ほどの）ペースで活動しております。&lt;br&gt;
&lt;strong&gt;「なんでもかんでも自分で作れたら最強なのでは！？」&lt;/strong&gt;&lt;br&gt;
というコンセプトのもと、CPUから自作を始めています。&lt;br&gt;
2024年3月の&lt;a href="https://www.security-camp.or.jp/event/awardreport.html"&gt;セキュリティ・キャンプアワード&lt;/a&gt;では、&lt;br&gt;
自作した世にも珍しい48bitCPUで「Hello World」を表示することに成功しました。&lt;br&gt;
今年の目標はSDカードを使えるようにすることで、アセンブリ規則の制定と実装を行い、&lt;br&gt;
最近ようやく動作かと思われたのですが、謎のエラーにつかまり（後述）、、。&lt;br&gt;
OSやネットワークに進めるのはもう少し先になりそうです、、。&lt;/p&gt;
&lt;h2 id="毎週mtgでの作業について"&gt;毎週mtgでの作業について、、。&lt;a class="td-heading-self-link" href="#%e6%af%8e%e9%80%b1mtg%e3%81%a7%e3%81%ae%e4%bd%9c%e6%a5%ad%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;基本的にモブプログラミングで進めています。&lt;br&gt;
1人が他の人のアドバイスの上でコードを書いていく形です。&lt;br&gt;
毎週の進捗はCosense（旧：Scrapbox）にまとめています。
プログラミング経験がほとんどない私が最近開発をしていて気づいたことなのですが、
歴戦プログラマーである他のメンバーと比べ、文法ミスをしてしまうことが&lt;br&gt;
圧倒的に多いと感じました。&lt;br&gt;
「そこは::が必要ですね」「kindでなくてKindですな」など、&lt;br&gt;
細かい部分がすぐ修正できる点は大変ありがたいのですが、&lt;br&gt;
「そこはAじゃなくてBを使いますね」と私が異なる変数を入れるたびに、&lt;br&gt;
プログラムの意味を理解できていないと痛感しました。&lt;br&gt;
1日1時間必ずAIを使わず（今は）Rustを書く時間を自分に設けて2カ月たちましたが、&lt;br&gt;
開いた差はなかなか埋まらなそうです、、。&lt;/p&gt;
&lt;h2 id="記事について"&gt;記事について、、。&lt;a class="td-heading-self-link" href="#%e8%a8%98%e4%ba%8b%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;記事は基本的には自分が担当しています。&lt;br&gt;
初めは「CPU分からん私が記事書けるようになれば、初学者に優しい記事になるのでは！？」と&lt;br&gt;
思っていましたが、やはりCPUのについて私が理解しておらず、&lt;br&gt;
&lt;a href="https://github.com/shinrabansyo/tech-blog/tree/main/Articles/01-CPU%E3%82%92%E3%81%A4%E3%81%8F%E3%82%8D%E3%81%86%EF%BC%88%E3%81%84%E3%81%8D%E3%81%AA%E3%82%8A%EF%BC%81%EF%BC%9F%EF%BC%89/01-03_%E5%91%BD%E4%BB%A4%E3%82%92%E9%80%81%E3%82%8B%E3%83%BB%E5%8F%97%E3%81%91%E5%8F%96%E3%82%8B"&gt;前回の記事&lt;/a&gt;については7カ月間違った挙動の記事を掲げてしまいました。&lt;br&gt;
記事の更新も遅く、大変申し訳ありません。&lt;br&gt;
ただ、日本における素人が書いた自作CPU記事という観点では唯一性があると考えており、&lt;br&gt;
このプロジェクト自体が何十年でも続くものであると私は確信しています。&lt;br&gt;
引き続き記事の投稿、過去記事のブラッシュアップを進めていきますので、&lt;br&gt;
長い目でみていただければと思います。よろしくお願いいたします。&lt;br&gt;
（是非フィードバックをコメントやX（Twitter）にて、、。）&lt;/p&gt;
&lt;h1 id="2sdカードについての近況報告"&gt;2.SDカードについての近況報告&lt;a class="td-heading-self-link" href="#2sd%e3%82%ab%e3%83%bc%e3%83%89%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6%e3%81%ae%e8%bf%91%e6%b3%81%e5%a0%b1%e5%91%8a" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;OS担当のkoonatoです！
「OSの森羅万象作るぞ！」というツイートを見かけて参画してから早数か月、OS完成までの道のりは遠いと感じる今日この頃ですが、着実に進めています。&lt;/p&gt;
&lt;p&gt;本章では、SDカード周りの話をしたいと思います。&lt;/p&gt;
&lt;h3 id="レジスタとメモリの関係"&gt;レジスタとメモリの関係&lt;a class="td-heading-self-link" href="#%e3%83%ac%e3%82%b8%e3%82%b9%e3%82%bf%e3%81%a8%e3%83%a1%e3%83%a2%e3%83%aa%e3%81%ae%e9%96%a2%e4%bf%82" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;森羅万象で作成しているCPUにはレジスタが32個あります。このレジスタは計算の要ですが、全てのデータや処理をこれだけで完結させるのは難しいです。というのも、各レジスタには役割があり、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一時的なデータ保存&lt;/li&gt;
&lt;li&gt;関数の引数や戻り値の格納
といった用途ごとに使われます。このため、すぐに空きが足りなくなるのです。これを効率よく管理するために「レジスタスケジューリング」が必要になります。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="メモリ退避とsdカード"&gt;メモリ退避とSDカード&lt;a class="td-heading-self-link" href="#%e3%83%a1%e3%83%a2%e3%83%aa%e9%80%80%e9%81%bf%e3%81%a8sd%e3%82%ab%e3%83%bc%e3%83%89" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;レジスタスケジューリングでは、空きが必要な場合に、レジスタの内容を一時的にメモリへ退避させます。ここで「メモリ」が登場します。プロジェクトではSDカードをメモリとして利用し、データを退避させたりロードしたりする仕組みを取り入れることにしました。&lt;/p&gt;
&lt;p&gt;ただし、SDカードを利用するにはSPI（Serial Peripheral Interface）という通信方式を用いる必要があります。SPIはシンプルですが様々な箇所で使われる通信プロトコルで、4本の信号線（MISO, MOSI, SCLK, CS）を使いデバイス同士をつなげます。このプロジェクトではSPI操作をアセンブラで実装しました。テストプラグラムを動かしたのが下の波形です。&lt;/p&gt;</description></item></channel></rss>