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

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

サイボウズ・ラボユース

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

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

発表会レポート

今年度は発表者が多いため、ごく簡単なコメントにて失礼します。 それぞれの発表概要や詳細については「若手エンジニアの育成と輩出を目的とするサイボウズ・ラボユースが創立10周年」のPDFの後半や各自の発表資料をごらんください。

集合写真
第10期サイボウズ・ラボユース成果発表会

低レイヤゼミ(担当:内田 公太)

○ 鈴木 友也 「xv6を自作VMM上で動かす」

KVMのAPIを利用してホスト型のVMMを実装した。 こうするとデバッグやデバイスドライバに専念できる。 基本的な命令、LAPICやディスクのエミュレーションをしてxv6を動かせた。 今後はベアメタル型のVMMの開発もしたい。

資料 GitHub

○ 徳永 大貴 「USBデバイスドライバの実装」

キーボード、マウス、フラッシュドライブのデバイスドライバを開発した。 ホストコントローラHCを検出し、初期化してUSBドライバを見つけ、それからデバイス共通の初期化、個別の初期化をする。 デバイスとのやりとりはSCISコマンドで行う。

資料 GitHub

○ 花井 一輝 「xv6にリモートファイルシステム9Pを実装する」

インターネットの機能に特化したOSを作りたくて教育用のOSとしてxv6を選択した。 TCPのステート管理が大変だったが性能もうまく改善できた。

資料 GitHub

言語処理系ゼミ(担当:川合 秀実)

○ 菅原 大和 「複数アーキテクチャを対象とする自作言語コンパイラの設計とx86_64ツールチェーンの開発」

x86_64/AArch64コード生成ができるコンパイラを設計・実装(スタックマシン)した。 x86_64用のELFを生成するツールも作成した。 簡単に使えるためのリンカスクリプトジェネレータを開発中。

資料 GitHub

○ 飯田 圭祐 「静的型付きスクリプト言語の開発」

スクリプト言語の利点と静的型付けをもつ言語を作ってみたかった。 func(arg)をarg.func()と書ける糖衣構文。fib(38)はRubyよりも速い。 以前から開発していたものを改良。GCの変更、イテレータやジェネリクスの実装。 2 level stack cachingの実装。今後は最適化をいろいろ試したい。

資料 GitHub

○ 松井 誠泰 「OLAP SQLクエリの静的解析と自動並列化」

現状の問題点として機械学習システムではデータの依存関係の管理が難しい。 SQLの型解析は依存関係をもつクエリの実行や並列実行の型エラーを後になるまで検知できない。 この問題を依存関係を自動的に抽出する静的解析ツールによって解決したい。 最近はWiFiのチャンネル状態情報を利用した混雑検知の開発に関わっている。

資料 GitHub

機械学習/自然言語処理に関するソフトウェア開発(担当:中谷 秀洋)

○ 笹田 大翔 「差分プライベート深層変換モデルによるテキストプライバシの保護」

差分プライバシーは有用性損失の抑制とプライバシーの両立を目指した。 ナレッジグラフによる一般化でノイズの付加量を低減した。

資料

○ 江畑 拓哉 「新進気鋭の深層学習モデル、Flow-based モデルで日本語口調変換を試みる」

対話システムにキャラクター性をもたせたい。そのキャラクターらしい口調にしたい。 文の潜在表現をベクトル化して、それを変換して元に戻すところにFlow-basedモデルを使ってみた。 ただしそのモデルは可逆であり、逆関数を実行できなければならない。 それで補助ライブラリを作り、そのあたりの研究を修士論文にした。

資料

インフラソフトウェア開発(担当:星野 喬)

○ 舛村 康成 「高競合状態における並行性制御法最適化の分析」

トランザクションの競合を解決する手法の一つBackoffの検証をした。 タイミング制御では説明しきれない状況。 そもそもsleepするthreadを減らせば競合の可能性を減らせるのではと考えて thread数をcontrolするとbackoffよりもよい効果がえられた。

資料

○ 山本 祥平 「DBMS を実装しながら学ぶ」

RDBMSの学習。undo loggingを実装。プログラムの書き方も学んだ。

資料

○ 和田 智優 「分散データシステムにおける非決定的性能バグの正確な解析」

複数のサーバが協調して動作する場合に発生するパフォーマンスバグPCBugの改善研究。 既存研究では実行パスに通らなかったバグは検出できないので記号実行を行った方法を提案する。 実行されないノンスケーラブルループへの条件を見つけて、既存ツールでは出来なかったバグを検知できた。

GitHub

C/C++によるソフトウェア開発(担当:光成 滋生)

○ 廣江 彩乃 「セキュリティログの解析を助ける視覚化ツール」

不正アクセスの視覚化ツールを見てセキュリティに興味を持ったので自分で作ってみたくなった。 sshのアクセスログを見てbingの地図APIを使ったどこから何回攻撃が来たかを可視化できるようにした。 GeoipでIPアドレスから緯度経度を取得する。

GitHub

○ 木下 和巳 「signalシステムコールによるホスト型ハイパーバイザー開発調査」

CPUで命令をし、センシティブな命令をsigactionでハンドリングする方法でハイパーバイザーが出来るか実験した。 問題がいろいろ起きたので一つずつ改善した。

資料 GitHub blog

○ 美濃地 正貴「実行ファイルにおけるバイナリ差分アルゴリズム」

ソフトウェア更新のデータ通信量削減をしたい。 ファイルにパッチを当てて更新する。小さいパッチファイルを作りたい。 既存ツールbsdiffの紹介。バイナリ差分の特性をうまく使いbzip2で圧縮している。 Courgetteのコード読みや再実装中。

資料 GitHub

○ 細谷 啓 「RISC-V CPU自作本の実装と執筆」

現代のCPU自作には膨大な知識が必要。 そこで高速化と機能拡張の二つを目指すCPUを作れるようになる指南書を執筆することにした。 Verilog-HDLやChisel, RSC-V, キャッシュ, パイプラインの解説を書いた。 Chiselが不安定で非自明なバグをいれてしまい再実装中。 6月には本としてなんとか出したい。

資料

まとめ

今年度も様々なテーマで活動されました。 今後もより一層の活動を願います。 ただ全てオンラインとなったため、横のつながりが少なかったのが残念です。 ラボユース生同士の交流を深めるのは今後の課題です。 11期生の応募も始まりました。興味ある方はぜひご応募ください。