「第11期サイボウズ・ラボユース成果発表会」開催

サイボウズ・ラボの光成です。 今回は2022年3月30日に開催された第11期サイボウズ・ラボユース成果発表会の模様を紹介します。

サイボウズ・ラボユース

サイボウズ・ラボユースとは日本の若手エンジニアを発掘し、育成する場を提供する制度です。

ラボユース生が作りたいものをサイボウズ・ラボの社員がメンターとしてサポートし、開発機材や開発活動に応じた補助金、旅費の援助をします。 開発物をオープンソースとして公開するという条件の元で著作権は開発者本人に帰属します。

詳細は去年のまとめ記事「若手エンジニアの育成と輩出を目的とするサイボウズ・ラボユースが創立10周年」のPDFもごらんください。

発表会レポート

今年も発表者が多いため、ごく簡単なコメントにて失礼します。

f:id:cybozuinsideout:20220331115504p:plain
第11期サイボウズ・ラボユース成果発表会

第一部

○富重 亮佑 「MikanOSへのLinux互換レイヤーの実装」(メンター:内田)

メンターの内田さんが開発しているMikanOSにエディタを移植しやすくするために、 glibcやLinuxのシステムコールを呼べるような改造をしました。 デバッグ用機能を作って、未実装のシステムコールが呼ばれたときに情報が表示できるようにしています。 Linux互換のHello, Worldやエディタedの一部の機能が使えるようになっています。

○宮崎 穂鷹 「Rust による OS 開発」(メンター:内田)

こちらもMikanOSに関連したテーマです。 C++で実装されたMikanOSをRustに移植し、その過程を文書として記録するのが目標です。 RustでOSを実装するのに役立つ日本語資料となることを目指しています。 今のところOS自体の知識を付けながらRust移植を進めており、今後はメモとして貯めている知識を文書化したいとのことでした。

○河野 雄也(Twitter/GitHub) 「関数プログラミング言語Malgoの開発」(メンター:川合)

関数型コンパイラ言語Malgoを開発しています。 MalgoはOCamlやHaskellに強い影響を受けていて、小さなLispインタプリタを300行ほどで書けます。 パターンマッチの機能を持っていて、スペースという概念を用いた網羅性検査を実装しました。 たとえば型XがNilまたはListのときにXな値x1 x2に対するswitch-caseでNil NilList Listしかパターンマッチを書いていないとNil ListList Nilのパターンが漏れていることを警告できます。

第二部

○大滝 理貴 「トランザクションの並行性制御手法とベンチマークの実装」(メンター:星野)

大滝さんは、データベースシステムの研究がしたいとの目標に向かって、 ラボユースでトランザクション処理について実装しながら学びました。 ポータブルな TPC-C ベンチマークや YCSB の実装をし、 インメモリデータベースシステムのための Concurrency Control 手法をいくつか、論文を読みながら実装しました。 今秋からシカゴ大学の Ph.D. Cource でデータベースシステムの研究活動をする予定です。

○山田 龍 「データベースロギング設計の多様性」(メンター:星野)

山田さんは、データベースシステムの仕組みを実装しながら学ぶ活動を行っています。 B+Tree やバッファ管理などを勉強しながら実装して動かしてみて、 次は永続化に取り組もうとしたところで、自分が納得する設計に至るまでに苦労があったようです。 発表では、その苦労について、データベースシステムを自作していると設計上の選択を無限に迫られる、という 実感のこもった発言がありました。

○今井 航一 「Data Distribution Service 測定ツールの開発」(メンター:星野)

Data Distribution Service (DDS) という ROS2 (Robot Operating System 2) で使われる 標準の通信仕様があります。 リアルタイム性が重視されることが多い組み込みの世界では、通信遅延が気になるところです。 そこで、今井さんは、DDS の通信遅延を細かく測定するツールの開発を行いました。 発表では、End-to-End の通信において、各コンポーネントで測定したデータを どうやって紐づけるかや、複数の DDS 実装の違いの分析などを紹介してくれました。

第三部

○西本 晋平 「Detection of spitzer bubbles using machine learning」(メンター:中谷)

太陽の8倍以上の質量を持つ大質量星の成り立ちは天文の未解決問題の1つであり、その大質量星が放射を始めたときにみえる特徴の1つである Bubble というリング状の天体を研究することがその問題の解決に役立つと考えています。Spitzer 望遠鏡の観測結果に対する膨大な人手で同定された約 2600個の Bubble データセットを使って物体検出のモデル SSD(Single Shot multibox Detector)を学習し、大質量星が活発に生成されているが Bubble が特定されていない Cygnus X 領域(はくちょう座の一部)の Bubble の検出を行っています。

○米田 龍生 「物体検出を用いた銀河フィラメントの同定」(メンター:中谷)

星形成にともなう分子雲同士の衝突時によく見られる、紐状の巨大な構造である銀河フィラメントの研究は、星形成の理論を深めるために重要です。しかし現状では目視か単純なアルゴリズムでの同定が主流であり、その統計的性質を明らかにするには至っていません。そこで、ハーシェル宇宙天文台によって観測された Taurus のデータからフィラメントらしき構造を抽出して目視と手動でアノテーションを行い、Semantic Segmentation(物体の位置をピクセル単位で推定するタスク) のモデルの1つである PSPNet(Pyramid Scene Parsing Network) を学習することで、フィラメントの同定を試みています。

○宋 子豪 「GMT6&8曲線を用いたペアリングの高速実装」(メンター:光成)

高機能な署名の設計には、しばしば楕円曲線上のペアリングと呼ばれる演算が使われます。 ペアリングにはいろいろな種類があり、より安全で高速なものが研究されています。 そこでGMT6やGMT8と呼ばれる、まだあまり実装されていないタイプのものを実装しました。 既存論文の評価の間違いを見つけて改善し、論文を書いて投稿中です。

○紫関 麗王 「ROPによる難読化コンパイラの実装」(メンター:光成)

ROPは脆弱性のあるソフトウェアを外部から攻撃する手法の一つです。 ソフトウェア上にあるコード片をスタックを経由しながら実行するためコードが非常に読みにくくなります。 これを難読化に活用し、clangを改造してROP化されたコードを出力するコンパイラを開発しました。 x64とaarch64に対応しています。

LT

○飯田 圭祐 「xv6をRaspberry Pi 4B実機に移植する」(メンター:川合)

xv6という小さいOSをPaspberry Piに移植したときの苦労点を紹介しました。 xv6-riscvをaarch64に書き換え、割り込みコントローラなどのドライバを書きました。 Windowsとシリアル通信経由で文字の入出力ができます。

  • キャッシュを有効にしないとspinlockが動かない。
  • キャッシュを有効にするとexecシステムコールが動かない。
    • data/instructionの両キャッシュを同時にflush

などのデバッグが辛かったけど、キャッシュ周りのよい経験になりました。

○美濃地 正貴 「ptraceを用いたユーザーランドライブパッチについて」(メンター:光成)

Linuxのカーネルを動的に書き換える技術はしばしば使われています。 しかし、ユーザランドプロセス向けのものはあまり多くはないため、ptraceを使って実際に試してみました。 実行中のプロセスAにptraceでアタッチしてメモリ上の関数を書き換えます。 GOTを修正することでputsも正しく呼べるようになりました。

○山本 桃歌「NATタイムアウトとQUIC」(メンター:光成)

QUICのセッションはクライアント、サーバ間では正しくセッションの終了を検知します。 しかし、暗号化通信の外にいるNATはそれを検知できず、セッション終了が分かりません。 そのためタイムアウト(300秒)するまでエントリを保持し続ける必要があります。 そこで暗号化されていないUDPのビット(spinビット)を終了フラグに見立てることでセッション終了を検知する実験を行い、その効果を確かめました。

まとめ

みなさん、バラエティに富んだ発表ありがとうございました。 時間の都合上、質疑応答の時間をあまり取れないのが残念ですが、懇親会やSNS上では楽しめたという感想をいただきました。 4月から12期ラボユースの募集が始まっているテーマもありますので、興味ある方はチェックしてみてください。

第12期サイボウズ・ラボユース募集要項

よろしくお願いいたします。