サイボウズ・ラボユース夏合宿2024を開催しました

こんにちは、サイボウズ・ラボの内田です。サイボウズ・ラボユースの一環で、2024 年 8 月に夏合宿を開催しました。その様子を紹介します。

ラボユース

サイボウズ・ラボユースとは日本の若手エンジニアを発掘し、研究開発の機会を提供する制度です。ラボユース生が作りたいものをサイボウズ・ラボの社員がメンターとしてサポートし、開発機材や開発活動に応じた補助金、旅費の援助をします。開発物をオープンソースとして公開するという条件の元で著作権は開発者本人に帰属します(ここまでテンプレ)。

過去にどんな開発テーマがあるのか気になる方は、毎年 3 月頃に開催している成果発表会の記事がおすすめです。Inside Out ブログで「ラボユース」で検索してみてください→「ラボユース」の検索結果。ラボユースに応募検討していてもっと情報が欲しい方は、2025 年 3 月に開催予定の成果発表会にぜひご参加ください。

夏合宿 2024

夏合宿は宿に泊まり込んで開発・議論を進めましょうというものです。今年は、去年に引き続きマホロバマインズ三浦というホテルで 3 日間の合宿を開催しました。参加人数は、現役のラボユース生・ラボユース研究生が 9 名、OB/OG が 4 名、ラボ社員が 10 名でした(途中だけの参加者も含みます)。

参加者が2列に並んでいる
合宿最終日の集合写真

3 日間のスケジュールは次のような感じでした。メインは「開発・議論」で、途中に LT 枠や OST(詳しくは後述)を設けました。

日付 時間 内容
8/20 - 11:00 ホテルの会議室に集合
11:00 - 12:00 自己紹介
13:00 - 15:00 開発・議論
15:00 - 16:00 LT 枠その 1
16:00 - 18:00 開発・議論
8/21 09:30 - 11:00 開発・議論
11:00 - 12:00 LT 枠その 2
13:00 - 16:00 OST
16:00 - 18:30 開発・議論
8/22 09:30 - 12:00 開発・議論
13:00 - 14:00 LT 枠その 3
15:00 解散

開発・議論

合宿のメインパートで、自分の持ちネタを進めていく時間です。現役生は自身の開発テーマに沿って、OB/OG やラボ社員は普段の仕事を進める人も違うネタをやる人もいました。ちなみに、筆者(内田)は ComProc コンパイラの最適化をいろいろ追加しました。

近年のラボユースはほぼオンライン活動のみとなっていて、質疑や議論は専用の掲示板システムやビデオ会議などでやっています。そのため、こういったオンサイトで集まれる機会は貴重です。特に合宿形式でずっと一緒にいるため、普段より会話の濃さと量が格段に増えました。

島状に配置された座席に参加者が座り、自分の作業を進めている。座席数にはかなり余裕があり、ゆったりとした席配置になっている。
自分のペースで開発を進める

OST

OST(Open Space Technology)は大人数で楽しく会話・情報交換する手法の一つです。一般的なカンファレンスは発表者や発表タイトルが事前に決まっているものですが、OST は参加者が議論ネタを持ち寄り、テーマをリスト化することから始めるのが大きな特徴です。

どのテーマをどのスロット(場所と時間帯)で開催するかの表を「マーケットプレイス」と呼びます。今回の OST のマーケットプレイスは最終的に下図となりました。

ホワイトボードに書かれた表の各マスに付箋紙が張られている。1つの付箋紙には1つのテーマが書かれている。テーマは順に「Canvaかなり良い」「生活習慣改善ライフハック」「読みやすいアセンブリは?」「ぶっちゃけHCIって何やってるの(分かり合いたい)」「RP2350について皆で調べる」「VRはどうしたら流行する?」「デジタル民主主義」「こんなOSがほしい!hikalium」「LLM活用方法」「BRを買って食べる」
完成したマーケットプレイス

筆者(内田)が参加したスロットの内容を簡単に紹介します。

  • 生活習慣改善ライフハック
    • ついつい YouTube を見続けたりしてしまうのを何とかしたい、というホスト(テーマを出した人)にみんなでアドバイスするというテーマ。
    • いろいろなハックが提案されたが、結局「今の生活で困っていない」のでそれらのハックは実践されないだろうということに(苦笑)
  • RP2350 について皆で調べる
    • Raspberry Pi Pico に搭載されているマイコン RP2040 の改良版として最近発表された RP2350 の新機能を調べようというテーマ。
    • セキュリティ機能や演算機能が強化されていたり、性能が上がったのに消費電力が下がったことなどが分かった。
  • BR(サーティワンアイスクリーム)を買って食べる
    • ホテル内にある BR の自販機でアイスを買って食べます。多くの人が賛同し参加してくれました。
    • 筆者が出したテーマです。こんなテーマもアリだよというのを示すため、あえて斜め上のテーマを出しました。
    • 多くが自販機で買うなか、(前日に BR を食べていた私は)近くのお土産コーナーにあった地元感のあるアイスに急遽変更しました(笑)

LT

3 つの LT 枠では多くの発表がありました。LT 枠が分散していたおかげで、1 つ目の枠の発表を聞いて「次回は自分も発表してみようかな」と思った人がいたと思います。筆者もその一人です。発表された LT のいくつかを、筆者が覚えている範囲で紹介してみます。

  • uekann さん「軽量マークアップ言語のエラートレラントなパース
    • momeemt さんと uekann さんの 2 人でサイト構築用のマークアップ言語を作っているそうです。
    • 構文エラーがあってもなるべく構文解析を進め、一度に複数のエラーを報告できるようにしたい、という趣旨の LT 発表でした。
  • 木田碧さん「簡単な研究紹介
    • ビザンチン故障に耐える Basil というデータベースを拡張しているとのことでした。
  • 浅田睦葉さん「Nixでつくるdotfiles
    • NixOS への愛を語る LT 発表でした。
    • NixOS を使えば、複数のマシンで同じ設定の環境を簡単に作れるというような話だった気がします。
  • 青山柊太朗さん「AIあんの電話、デジタル民主主義、大人数のLLM-mediated熟議
    • 2024 年の都知事選に立候補した安野さんに協力し、安野さんの知識を持った AI が電話質問に答えるシステムを作ったという話でした。
  • akakou(赤間滉星)さん「BBS for Privacy Pass
    • 具体的な情報を明かさず、情報の性質だけを証明する技術を研究しているそうです。
    • 例えば、個人の年齢は公開せずに「18 歳以上である」ということだけを公開できるそうです。
  • kaorun さん「2024年夏・スマート空調の夢」
    • 自宅のエアコンを何とかしてコンピュータから自動制御しようという試みです。
    • エアコンの通信プロトコルにあたりをつけ、制御方法を検討している段階だそうです。
  • hikalium さん「Milk-V Mars から二酸化炭素センサの値をGPIO経由のUARTで読みたい!」
    • Milk-V Mars という Linux が動く小さなコンピュータを使い、CO2 センサの値を取得する試みです。
    • そこに至るまでの苦難の過程が熱く語られました。(例えば glibc のバージョンが異なっていて動かしたいプログラムが上手く動かないというような話)
  • 内田「ComProc CPU のハーバードアーキテクチャ化
    • ComProc CPU は現在はノイマンアーキテクチャですが、それをハーバードアーキテクチャに変えたいなという話をしました。
    • データ領域とプログラム領域のアドレス空間を分けることで、理想的な命令セットにでき、FPGA のリソースを無駄なく活用できることを発見しました。

CO2 濃度

開発ネタがその場の人々の健康に大きく貢献した事例が筆者の印象に残っています。それは hikalium さんの「Milk-V Mars から二酸化炭素センサの値を GPIO 経由の UART で読みたい!」です。hikalium さんはこの開発のために CO2 センサを持ってきており、実際に会場の CO2 濃度を測定していました。その結果 3000 ppm を超える濃度が検出されました。

さすがに高すぎる、マズいということで会議室の窓を開けて換気を行った結果、1000 ppm 程度にまで低下しました。 センサの精度は不明ですが、換気により 1000 ppm という現実的な数値になったことから、大きく外れてはいなかったんだろうと思います。 かなり余裕のある席配置でしたが、換気しないと簡単に濃度が上がってしまうことが分かり、健康な合宿運営に生かされました。

食事

合宿と言えばおいしいご飯じゃないでしょうか。今回の合宿で食べたものを一部紹介します。

もずく・イクラ・シラスが乗った丼、みそ汁、カットオレンジ
初日のお昼はイクラとシラスのどんぶり

マホロバマインズ三浦は三崎漁港に近いというのもあり、海鮮系のメニューが多い印象です。 初日と 2 日目の昼食は海鮮系の丼でした。

刺身を中心とした和定食。固形燃料で調理する魚の小鍋もある。天ぷらの盛り合わせ
夕食は豪華なセット

夕食は豪華なセットでした。固形燃料で調理する鍋もあり、おいしかったです。

朝食の写真を撮りそびれたのですが、参加者が撮ってくれていましたので共有します。

品数のあるビュッフェで、選び甲斐があり楽しめました。 それぞれの料理も美味しかったので満足です。

OSC 出展のお知らせ

10/26(土)に開催されるオープンソースカンファレンス2024 Tokyo/Fall へ、サイボウズ・ラボとして出展予定です。ラボユース制度の紹介と、今年度の採択テーマである、Wasm で拡張できる軽量マークアップ言語 Brack の展示を行う予定ですので、見にきていただけると嬉しいです。Brack の開発者も当日ブースに立つことになっています。

参加にあたり事前登録をしなくても大丈夫ですが、していただけると参加者数などが分かって嬉しいです→ 10/26 【展示/ステージ】オープンソースカンファレンス2024 Tokyo/Fall - connpass

ラボユースの現役生や OB/OG が集まってミニ同窓会みたいになったら面白いなあと思っています。関係者の方、ぜひお越しください。

ワークショップ「コンピュータの仕組みを学ぶ電子工作入門」を開催しました

こんにちは、サイボウズ・ラボの内田です。2024 年 7 月に 3 件の電子工作入門ワークショップの講師を務めました。本記事ではワークショップの内容や開催当日の様子などを紹介します。

電子工作入門ワークショップについて

正式名称は「コンピュータの仕組みを学ぶ電子工作入門」です。3 時間ほどの構成で、Raspberry Pi Pico を用いた電子工作入門から始まり、最終的にプログラミング言語インタプリタの作成を目指します。マイコンを用いた電子工作を通じて、コンピュータが動作する仕組みを学ぶことが目的です。

ワークショップの様子(at SAJセミナールーム)

U-22 プログラミング・コンテスト実行委員会が主催となり、2024 年 7 月に 3 件開催されました。私はワークショップの設計、テキストの作成、および当日の講師を担当しました。サイボウズ・ラボの川合にはワークショップに全面的に協力してもらい、大変助かりました。ちなみに、親会社であるサイボウズが U-22 プログラミング・コンテスト2024 をスポンサーしており、私は審査委員を拝命しています。

ワークショップの内容

ワークショップ参加者にはテキスト、Raspberry Pi Pico と USB ケーブル、各種電子部品が配られます。参加者は配られたテキストに沿って自分のペースで演習を進めます。演習が 100% で、座学はありません。講師(私と川合)が参加者の座席を巡り、問題なく進められているか・質問はないかを聞いて回ります。

参加者自らブレッドボードを使って実験回路を組む

ワークショップは前半と後半に分かれます。前半はコンピュータと現実世界との繋がりを、後半はコンピュータがソースコードを認識する過程を体験します。

前半:Raspberry Pi Picoというマイコンを用いて、LEDやスピーカーなどの出力機器、スイッチや測距センサーなどの入力機器の制御を学びます。身の回りで広く使われているコンピュータの一種であるマイコンの世界を体験できます。プログラミングと物理世界を結び付け、地に足の着いた知識を得られます。

後半:Raspberry Pi Pico上で動作するプログラミング言語処理系を作ります。プログラマにとって最も重要で身近なプログラミング言語は、実は自分でも作れるということを体験できます。自作したプログラミング言語を使って入出力機器を制御するプログラムを作るのは、めったにないわくわくする体験になることでしょう。

テキスト

このテキストは今回のワークショップのためだけに書いたものです。書いてみたら 60 ページの大作になりました。といっても、ワークショップを前提としていて、細かい部分の説明を省いているところが多く、60 ページ以上のカバー範囲になっていると思います。

目次

始めに目次を紹介し、次にいくつかピックアップして内容を紹介します。

  • 基本課題
    • Arduino IDEのセットアップ
    • Lチカ
    • プログラムを改造してみよう
    • PWMで明るさを変える(調光)
    • Arduinoライブラリを活用する
    • A/Dコンバータで電圧を読み取る
    • 可変抵抗器で点滅パターンを選ぶ
    • スピーカーを鳴らす
    • 音階を鳴らす
    • キャラクタ液晶ディスプレイ
    • その他の入出力
    • 部品リスト
    • パソコンだって作れちゃう!?
  • 発展課題
    • キーボード入力
    • キーパッドとLCDで電卓を作る
    • プログラミング言語を作る:準備編
    • プログラミング言語を作る:実装編
    • LEDの輝度とスピーカーの音階の指定に対応しよう
    • 音楽を演奏する

L チカ

L チカとは「LED チカチカ」の略で、LED を点滅させることです。LED の点滅は最も手軽に「目に見える動作」をさせられるプログラムの 1 つです。未経験のマイコンや基板を使うにあたり、とりあえず L チカをするのが典型的な「電子工作愛好家しぐさ」です。ということで、本書でもまず Raspberry Pi Pico で L チカをやります。

このワークショップは Arduino IDE を使って進めます。受講者の多くは電子工作未経験で、もちろん Arduino IDE を初めて使います。人生で初めて Arduino IDE に入力するプログラムはこんな感じです。

LチカのプログラムをArduino IDEに入力する

L チカのプログラム自体はとても単純ですが、しかし L チカが動くまでの難易度は高いです。人によってはワークショップの一番の難所かもしれません。なぜなら、L チカが動くまでには Arduino IDE を適切にセットアップしたり、Raspberry Pi Pico がきちんと認識されるようにしたりといった作業が必要だからです。使っている PC の環境により必要な作業が異なるため、ワークショップでは受講生それぞれの事情に合わせてサポートしました。

PWMで明るさを変える(調光)

PWM は Pulse Width Modulation(パルス幅変調)の略で、矩形波のパルス幅を変えて対象を制御する方式のことです。受講者の多くは PWM にあまりなじみがなく、詳しく説明したら興味深そうな様子でしたので、この記事でも説明してみます。

PWMでLEDの明るさを変化させる

直角に山と谷が繰り返される波形を「矩形波」と呼びます。1 つ 1 つの山を「パルス」と呼び、パルスの幅を変化させる制御方式を PWM(パルス幅変調)というわけです。普通、パルスの開始タイミングは常に一定で、パルス幅だけを変化させます。今回もパルス間隔は 20ms で固定し、パルス幅を 0~20ms の間で変化させました。(ちなみに ms は millisecond(ミリ秒)、つまり 1/1000 秒のことを意味します。)

PWM はいろいろな制御に応用できます。今回は LED の明るさを変えること(調光)に使いました。山の間は LED が光り、谷の間は消灯します。山の幅が広く、谷の幅が狭いほど明るくなります。PWM では「山の幅 / PWM 周期」を「デューティ比」と呼びます。今回の例では山の幅が 0ms でデューティ比 0%、山の幅が 20ms でデューティ比 100% となります。デューティ比がそのまま LED の明るさを表す尺度になっています。

テキストではデューティ比を時間変化させることでなめらかに点滅するプログラミングを紹介しています。徐々に点灯、徐々に消灯を繰り返すとホタルが光っているような印象になります。

A/D コンバータで電圧を読み取る

ここまでは LED への出力だけだったのですが、この節で入力が登場します。普通、一番最初に学ぶ「入力」はスイッチによる ON/OFF のデジタル入力かなと思いますが、このワークショップでは可変抵抗器のアナログ値を読みます。デジタル入力より楽しいかなと思って、アナログ入力を先に扱うことにしました。

受講者は次のような A/D(Analog to Digital)コンバータの出力を PC へ送信するプログラムを入力します。

void setup() {
  Serial.begin(9600);
}

void loop() {
  int val = analogRead(A0);
  Serial.println(val);
  delay(300);
}

非常に単純なプログラムです。これを Raspberry Pi Pico に書き込んだ状態で Arduino IDE のシリアルプロッタを開くことで、可変抵抗器のつまみの角度がグラフとなって描画されます。

シリアルプロッタで可変抵抗の電圧を読む

このプログラムも L チカ同様とても単純ですが、きちんと動かすのは意外と難しいようです。一番の難関は Raspberry Pi Pico と可変抵抗器の接続です。ブレッドボード上で配線するのですが、ブレッドボードの仕様に慣れていないと、なかなか正しい場所に配線するのに苦労します。一度、ジャンパワイヤが断線していたためうまく動かない(期待した値が取れない)ことがありました。その際はいくら配線やプログラムを確認しても間違いを見つけられず途方に暮れました。こちらから配布した部品の不具合だったので、申し訳ないことをしてしまいました。

スピーカーを鳴らす

圧電スピーカーを鳴らす課題です。圧電スピーカーは直流電圧を加えただけでは鳴らず、加える電圧を高速で変化させる必要があります。そのため、digitalWrite を高速で繰り返し、1 と 0 を交互に出すようなプログラムを作ります。電圧が変化することで圧電スピーカーの振動板が動き、空気の振動となって音が発生します。

この課題を作ったときは考えていなかったのですが、ワークショップの進行状況を確認するのに便利なことが分かりました。スピーカーの音が聞こえてくると、受講者がここまでたどり着いたことがすぐに分かるのです。

キーパッドとLCDで電卓を作る

0~9 とその他いくつかボタンが付いたキーパッドと、16 文字が 2 行表示できる LCD(液晶ディスプレイ)を使い、電卓を作ります。キーパッドで数式を入力し、最後に「#」キーを押すと計算して結果を表示します。ここまで来ると、かなり「コンピュータ」っぽくなります。

電卓で計算しているところ

数式は「再帰下降型構文解析」により解析し、計算しています。そのため、演算子の優先順位をきちんと処理できるようになっています。例えば「1+2×3」は 9 ではなく 7 と計算されます。一般的な電卓は「1+2」を入力した時点で「3」となってしまいますが、今回作った「電卓」は数式を全部入力してから計算する凄い電卓なのです。

ここで実装した電卓プログラムは、その後の「プログラミング言語を作る」課題で再利用されます。プログラミング言語の式の処理は数式の処理をベースにして作れるのです。

アンケート結果

ワークショップ開催後に取ったアンケートの結果を一部紹介します。まずは全体を通した満足度。5 段階評価で 3 以上の回答しかなく、かなり高い評価をいただけたと思います。準備を頑張って開催した甲斐がありました!

  • とてもよかった:63.2%
  • よかった:31.6%
  • 普通だった:5.3%

次に説明資料のわかりやすさについての結果を示します。こちらも良い評価をいただけた気がしますが、改善の余地はありそうな感じがします。

  • とてもわかりやすかった:47.4%
  • わかりやすかった:36.8%
  • 普通だった:15.8%

自由記述の感想では、実際の電子回路を触るのが楽しいという意見が多かったです。普段のプログラミングの授業ではパソコン画面しか見ないため、現実世界で光や音が出るのが新鮮な体験という方がたくさんいました。

テキストに載せたサンプルコードは、あえてコピペではなく手入力してもらいました。キーボード入力に慣れてもらおうという狙いです。多くの受講者は何らかの入力間違い(スペルミスや大文字小文字など)を経験していたように思います。テキスト中の 0(ゼロ)と O(オー)が区別しにくいのは改善したいなと思いました。(筆者の TeX 力の問題で、自分の好きなフォントにする方法がよく分かっていないのです…。)

受講者の多くは大学生(あるいは大学生相当の課程)で、高校生は 1/4 くらいかなと思います。いろいろなレベル感の方が参加していただきましたが、自分のペースで進める形を取ったため、みんなが満足できたと思います。

ハマりポイント

ワークショップを 3 回開催する中でいろいろハマったところがあります。いくつか紹介します。

  • Arduino IDE に Raspberry Pi Pico が認識されない
  • Arduino IDE のインストールに管理者権限が必要
  • 断線していたジャンパワイヤ
  • USB Type-A ポートがないパソコン

Arduino IDE に Raspberry Pi Pico が認識されない

Raspberry Pi Pico の初回接続時、多くの受講者がこの問題に遭遇しました。1 回目のワークショップ中にいろいろ探る中で、ある程度統一的な手順を見つけたので、2 回目以降では少しスムーズになったかなと思います。

ポイントは、初回は USB メモリモードで接続(BOOTSEL ボタンを押しながら USB ケーブルを挿す)し、エラーのないプログラムを書き込み、改めて Raspberry Pi Pico との接続を行うことです。一旦エラーのないプログラムを書けば、次から Arduino IDE ときちんと接続されるようです。

Arduino IDE のインストールに管理者権限が必要

1 回目と 2 回目のワークショップは学校で開催したため、一部の受講生は学校から貸与されたノートパソコンを持ってきました。そのような貸与パソコンは管理者ではなく通常ユーザーで使う設定になっていて、Arduino IDE のインストール過程で問題が生じました。

最新版の Arduino IDE が入った状態のパソコンもありましたが、入っていない場合はワークショップ中にインストールします。Arduino IDE は途中で仮想 COM ポートドライバなどがインストールされるため、管理者権限を要求されます。それらをすべて「いいえ」で飛ばした場合、Arduino IDE 自体は使えても、Raspberry Pi Pico と通信できず、とても困りました。

Arduino IDE の普通の使い方は、IDE の書き込みボタンを使って対象のマイコンにプログラムを書き込むというものです。しかし実は、書き込みを行わず、書き込むべきファイル(UF2 ファイル)を出力するだけのモードもあり、そのモードを使ってなんとかワークショップを進めることができました。Raspberry Pi Pico を USB メモリモードで接続し、そこに生成された UF2 ファイルをコピーします。

USB Type-A ポートがないパソコン

USB Type-C のポートしかないパソコン(Mac)をお持ちの受講者がいました。ワークショップでは USB A to Micro-B ケーブルを準備していたため、そのようなパソコンには Raspberry Pi Pico を接続できず、困りました。

結局、会場にたまたまあった C to A 変換アダプタや Type-A 端子が付いたパソコンを借りるなどして対処できました(貸していただきありがとうございます!)。ワークショップをまたやることがあれば、前提条件として Type-A ポートを用意するか、C to Micro-B ケーブルのようなものが必要だと明記しておこうと思いました。

作例の展示

一緒に講師をしてくれた川合には、毎回 Raspberry Pi Pico を使った作品を展示してもらいました。自分たちが学んだ知識を応用するとこんなこともできる、という一例になればと思っています。例えばこんな鉄道模型を展示しました。

Raspberry Pi Picoで鉄道模型の速度を制御する

Raspberry Pi Pico を使って鉄道模型を制御する作品です。Raspberry Pi Pico にモータードライバを接続し、線路に流れる電流を変化させ、ゆっくり発車・停車させます。

速度の指示はパソコンから逐一出しています。実は、パソコン側の制御ソフトは川合が自作したプログラミング言語でやっています。Raspberry Pi Pico はパソコンから受け取った速度指令に従ってモータードライバに信号を出す目的で使われています。

何人かの受講者が川合の周りに集まり、この作品の仕組みを興味深そうに聞いていたのが印象的です。

将来の展望

計画していた 3 回のワークショップは終わりましたが、ワークショップの準備(テキストの執筆とか)に結構なコストをかけたため、これだけだともったいないと思っています。機会があればまたどこかで開催したいと思います。オンライン開催も検討しているのですが、Raspberry Pi Pico の初期接続のサポートなどを考えると、今のところうまくできる自信がありませんので、とりあえずオンサイト開催で。東京(特に山手線沿線から近いところ)で開催して欲しいなという方がいましたら、内田までご連絡いただければ、開催を検討させていただきます。

自作SSDについてキオクシアの方に伺いました

こんにちは。サイボウズ・ラボの内田( @uchan_nos )です。 SSD の自作という活動について、キオクシア株式会社の社員(元キオクシアを含む)にお話を伺う機会がありましたので、ご紹介します。

インタビューの様子は、電子の森ラジオ(電子工作とプログラミング系ポッドキャスト)にて配信しています。 エピソード 019 自作SSD

打ち合わせの様子

普段の収録と異なり、今回は企業からオフィシャルな立場で収録に来てくださるということで、事前に打ち合わせを行いました。

ラボ内田、キオクシアの日下さんと米澤さんがテーブルを囲んで打ち合わせている
収録に向けた打ち合わせの様子

弊社の東京オフィスにある会議室での打ち合わせの様子です。 写真の左から順に、内田(サイボウズ・ラボ)、日下様(キオクシア)、米澤様(キオクシア)です。

事前の打ち合わせでは、主にどのような話をするかと、出してはいけない話題について確認しました。 企業の看板を背負って出演することの責任をひしひしと感じました。 キオクシアからは広報担当の方もいらしており、緊張しました。

SSD 同人誌やフラッシュメモリ解説漫画、シリコンウェハーうちわ
SSD やフラッシュメモリに詳しくなれそうなお土産

打ち合わせに際してお土産をいただきました。 紙の書籍やシリコンウェハーを模したうちわなど、とても豪華でした。 (うちわは本物のウェハーと同じ大きさなので、バックパックに入らず、まだ自席に置いてあります)

SSD Doujinshi 1/2 のダウンロードは「SSD Doujinshi」 SSD同人誌のご紹介とダウンロードのご案内 | KIOXIA - Japan (日本語) から可能です。

初代の自作 SSD と自作 CPU

打ち合わせでは、いくつかの自作 SSD の実機を見せていただきました。 これらは放送の中で登場しますので、放送と合わせてお楽しみください。

コントローラ基板とNAND型フラッシュメモリを載せた基板が3層にスタックされた自作SSDモジュール
初代の自作SSDモジュール

初代の自作 SSD は 3 層構造です。全体で SSD を構成します。 一番上にある青い基板が NAND 型フラッシュメモリを搭載した基板で、これ自体では SSD ではありません。 NAND 型フラッシュメモリにコントローラを加えることで、全体として SSD として振る舞います。

下層の緑基板がコントローラの役割を果たすマイコン基板(Airio-Base)で、NAND 型フラッシュメモリを制御します。 不良ブロックへのアクセスを代替ブロックへ振り向ける仕組みなどを、このコントローラが実現します。

中央の赤い基板は、そのマイコン基板と外部をつなぐインターフェース(I/F)回路です。 パソコン用の SSD であれば、インターフェースは SATA や PCIe(NVMe)などですが、この I/F 回路はアドレスバスとデータバスを提供するものになっています。

ロジックICを複数組み合わせた自作CPU基板
自作SSDを活用するための自作CPU基板

これは、自作 SSD を記憶装置として使う「TD8」という名の自作 CPU です。 「CPU の創りかた」の TD4 を基にし、レジスタ幅を 8 ビットに拡張したものだそうです。

TD4 では、CPU が実行するためのプログラムを DIP スイッチを並べた「ROM」に格納するのですが、TD8 では自作 SSD に保存するのです。 先ほどの赤い基板(I/F 回路)がアドレスバスとデータバスを提供することで、通常の ROM と同じインターフェースで自作 SSD にアクセス可能になっています。 SSD Doujinshi p.23あたりに説明があります。

3 代目の自作 SSD

SSD Doujinshi 2 p.31 で登場する 3 代目の SSD です。 初代と 2 代目は、マイコン基板の拡張ボードとして作られていましたが、3 代目は NAND 型フラッシュメモリとマイコンを同一基板に載せた構成になりました。 見た目を M.2 SSD っぽくしたところがコダワリだそうです。

コントローラICとNAND型フラッシュメモリを同一基板に載せたM.2型自作SSDモジュール
最新の自作SSDモジュール

放送でも話していますが、一連の自作 SSD は SSD というよりも USB メモリと言う方が近いです。 パソコンの USB 端子に接続することで、USB マスストレージとして見える仕組みだからです。

SSD と USB メモリは、どちらも NAND 型フラッシュメモリとコントローラを搭載したものです。 主な違いはパソコンとの接続方法で、SSD は SATA や PCIe(NVMe)など、USB メモリは USB で接続して SCSI プロトコルで読み書きする、というような違いがあります。 ただ、NAND 型フラッシュメモリにコントローラを付与したもの、という大枠の構造は同じであり、より興味を持ってもらうために「自作 SSD」と呼称しているということでした。

確かに「自作 USB メモリ」というと、かっこいいガワを自作して、オリジナルな見た目の USB メモリを作るという解釈をしてしまいそうです。 その点「自作 SSD」は、見た目よりも中身に焦点が当たる名前だなあと感じました。

世界初の NAND 型フラッシュメモリを利用した SSD

NAND 型フラッシュメモリは、キオクシアの前身である東芝によって 1987 年に発明されました。 その世界初の NAND 型フラッシュメモリを利用して作成された自作 SSD がこちらです。

DIPパッケージのNAND型フラッシュメモリICを載せた基板がArduinoボードに挿さっている
世界初のNAND型フラッシュメモリを載せた自作SSD

まさか、このフラッシュメモリくんは Arduino に接続されるなんて思ってなかったでしょう。 時代を超えて繋がる物語、感動です。

SSD Doujinshi の推しの章

収録に参加されたお三方(日下様、米澤様、村口様)に、SSD Doujinshi 1/2 から推しの章を紹介いただきました。 詳しい紹介は放送を聞いていただくとして、ここで手短にご紹介します。

  • 米澤様:SSD Doujinshi 2 p.30「かんがえる SSD」
    • 推しポイント:p.30 左下のスクリーンショットに本人が登場しているところ。
  • 日下様:SSD Doujinshi 2 p.44「ECC でデータの誤りを訂正してみた」
    • 推しポイント:読むだけで、自分でも誤り訂正できるじゃんと思わせてくれるところ。
  • 村口様:OpenStreetMap の記事
    • 推しポイント:OpenStreetMap は個人でも入手できるビッグデータで、しかも地図なので有用性が高いところ。

第2回 自作CPUを語る会について

収録から公開まで大分時間が掛かってしまいました。 そのため、番組中で既に終了したイベント「第2回 自作CPUを語る会」についての告知があることをご了承ください。 2024 年 6 月頃に第 3 回を開催予定ですので、お楽しみに。

「サイボウズ・ラボユース合宿2023」開催しました

こんにちは、サイボウズ・ラボの光成です。 神奈川県のマホロバ・マインズ三浦で、8月21日から2泊3日でサイボウズ・ラボユース合宿を開催しました。 新型コロナの影響で2019年の開催から4年振りの開催です。今回はその模様をご紹介します。

サイボウズ・ラボユースと合宿の概要

サイボウズ・ラボユースとは日本の若手エンジニアを発掘し、研究開発の機会を提供する制度です。ラボユース生が作りたいものをサイボウズ・ラボの社員がメンターとしてサポートし、開発機材や開発活動に応じた補助金、旅費の援助をします。開発物をオープンソースとして公開するという条件の元で著作権は開発者本人に帰属します(ここまでテンプレ)。

今回の合宿は、新型コロナ禍中だった卒業生も、交通費・宿泊費補助で参加可能としました。そのため、サイボウズ・ラボの参加者も合わせて最大36人ほどの大所帯となりました。皆で集まるときは感染リスクを減らすために、なるべくマスクをしてもらったり、大きめの寝室を定員の5~6割の人数で利用したりしました。

LTなどの様子

最初にラボの中谷さんがChatGPT、西尾さんがAIと人間の知的な共同作業を紹介して、気分がほぐれてきた所で希望者にLTをしてもらいました。質疑応答がLTよりも長くなることも多く、盛り上がりました。3日目の全員の発表も含めると多くてとても全部は紹介できません。それで、資料や写真が公開されている中からいくつかリンクを張っておきます。

西尾さんのLT
西尾さんのLT

akakouさんのLT
akakouさんのLT

@cherry_takuanさんのNANDを使ったCPUの実物

NANDによるコンピュータ
NANDによるコンピュータ

言語、システム、セキュリティ、ネットワーク、ハードウェア、その他、@sksat_ttyさんの人工衛星の、すぐには修正できない環境ならではの制約の話、などとてもバラエティに飛んでいて面白かったです。

ガジェットでは@n01e0さんが掛けていたXREAL Airがすごい欲しくなりました。モニタを持たなくてもいい!

全体写真

今回は卒業生で既に働いている人の話が聞けたり、ラボユース生同士で縦横思っていなかったつながりがあることを教えてもらって、人のネットワークが広がっていることを実感しました。いろいろな刺激を受けてよかったと思います。また開催できることを願います。サイボウズ・ラボユースに興味ある方はパンフレットもあるので参考にしてください。

全体写真
全体写真

サイボウズ・ラボユース夏季交流会2022開催報告

こんにちは、サイボウズ・ラボの内田(@uchan_nos)です。 サイボウズ・ラボユースの現役生と卒業生向けの交流会を開催したので報告します。

交流会では最近改装したオフィスの紹介動画を見て、みんなで自己紹介し、4 件の技術発表を聞き、アンカンファレンスを開催しました。 4 時間半に渡る長丁場のイベントになりましたが、皆さんが終始とても楽しそうに過ごされていて、開催してよかったなと思いました。

続きを読む