ラボユースサイボウズ・ラボの中谷です。今回は2024年3月29日にサイボウズ東京オフィスで開催された第13期サイボウズ・ラボユース成果発表会の模様を紹介します。サイボウズ・ラボユースサイボウズ・ラボユースは日本の若手エンジニアを発掘し、育成する場を提供する制度です。インターンと似ていますが、最長で1年間という長期サポートと、テーマをサイボウズ・ラボで設定するのではなく、ラボユース生個人が作りたいものをテーマとする点が特徴です。今回の成果発表会では、第12期から引き続き活動していた学生も含めて16名のラボユース生が研究開発に取り組んだ成果を発表してくれました。5年ぶりのリアル開催となりました。今年度は夏合宿も4年ぶりに開催できたりと、徐々に社会がもとに戻っている手応えがありますね。gihyo.jpまた4月12日にサイボウズ・ラボユースのオンライン説明会も予定しています。ご興味のある方はご参加いただけると大変嬉しいです。connpass発表会レポートwww.youtube.com今回の発表をそれぞれ簡単に紹介します。(メンター:生田)伊藤さんは、12期をラボユース研究生として、13期をラボユース生として活動しました。研究生のときは卒業研究のテーマであった、日常利用を想定したAR空間での情報配置デザインの比較検討についての活動をし、実験手法や評価についてメンターとの議論を重ねてきました。ラボユース生になってからは、街歩きの体験価値向上のためのナビゲーションアプリの開発に取り組みました。従来の最短経路を表示するナビゲーションではなく、目的地までの街歩きが楽しくなるような体験について検討し、興味があるカテゴリのスポットをできるだけ多く通る道を選択肢として提示するシステムのプロトタイプを完成させました。(メンター:生田)重本さんは、紙への手書きに対するこだわりを持ち、手書きとデジタルメディアとが融合することで新たなメディア体験を創出することを目指して活動しています。これまで開発していた、紙に手書きをしたストロークをデジタル空間で情報共有可能なシステムをベースに、新たなメディア体験の設計や機能開発をラボユース期間中に取り組んできました。メディア体験の設計に苦労しながらも根気強く取り組み続け、現在は、書籍に対する手書きメモとその情報共有による新たなメディア体験が可能なシステムの開発を進めています。今後は、開発中のシステムを完成させ、ユーザスタディを通してメディア体験の評価を進めていく予定です。(メンター:川合)高級言語が持つ型情報をコンパイル時にも保存して、型付きアセンブリ言語を生成できるようにします。これによりコンパイルの各段階で型情報を利用したバグの検出や最適化が可能になります。相互再起関数を含めた型付きクロージャ変換を考案して実装しています。今後の課題としては、型保存コンパイルの効率や安全性をさらに改善すること、言語に実用的な機能(データ型、パターンマッチ、多相型)を導入することです。(メンター:川合)ラボユース期間ではRISC-Vエミュレータ「carron」をRustで書きました。rv32imacとrv64imacに対応して合計9000行ほどです。このエミュレータでLinuxを動かすという目標も達成しています。今回の発表では、RISC-Vのアドレス変換の自作ビジュアライザを紹介しました。これはRISC-Vの低レイヤのプログラムを書いているとアドレス変換がうまくいかなくて苦労するため、設定値が期待通りの動作をしているのか確認するためのものです。このビジュアライザはRust+dioxus+trunkで書かれていてブラウザ上で動作するので、RISC-Vアドレス変換のデバッグの際はぜひ使ってみてください。(メンター:川合)以前よりプログラミング言語の開発に興味を持っていて、ラボユース期間では2つのスクリプト言語を作りました。一つ目の言語は、前半のモジュール定義部と後半のスクリプト記述部に分離している言語で、直感的で読みやすくなっています。関数定義はScalaライクな構文を採用しています。関数呼び出しの際はコマンドラインシェルのように引数にカッコをつけずにスペース区切りで書くことも許されており、好きな方を選べます。二つ目の言語は、Gleamのuse構文やKokaのwith構文に類似したusing構文を持っていて、これによりネストを深くせずに簡潔に書けるようになります。発表では「Minecraftのログを解析して入退室をDiscordに通知」する例を5行で書いて例にしました。どちらの言語もRustで実装されています。今後の展望としては、この2つの言語を統合したいと考えています。(メンター:川合)ラボユースでは、教育用OSへのNICドライバの実装・Linuxへの移植と、Rustでの自作OSをやりました。今回の発表では、自作OSの件を紹介しました。このOSはx86(32bit)用でエミュレータ(QEMU)で動作確認しています。現在のコード規模は1200行程度で(テスト含む)、キーボード/VGA/UARTによる簡単な入出力とページングができるようになっています。今後は割り込み処理やマルチタスク、マルチコア対応、ファイルシステム、ユーザプログラム起動などに対応していきたいです。パイプライン処理やアウトオブオーダー実行の機能を加えました。処理をとても複雑にするため、たびたびバグが発生し、その都度乗り越えました。追加した機能によるクロック数の削減量を計測し、確かに高速化することを確認しました。