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

こんにちは、サイボウズ・ラボの光成です。

今回は3/30にあった第7期サイボウズ・ラボユース成果発表会の模様を紹介します。

サイボウズ・ラボユース

毎度おなじみの紹介になりますが、サイボウズ・ラボユースとは日本の若手エンジニアを発掘し、育成する場を提供する制度です。

ラボユース生が作りたいものをサイボウズ・ラボの社員がメンターとしてサポートします。 開発物をオープンソースとして公開するという条件の下で著作権は開発者本人に帰属します。

今期はラボユース生6名、研究生2名が卒業されました。

前半の発表

高品佑也さん

高品さんの発表は「確率変数間のグラフ構造推定手法の提案と実装」でメンターは中谷さんでした。

f:id:cybozuinsideout:20180402155441j:plain

多次元のデータが与えられたときに、そのデータのどこに関係があるかを推定するグラフィカルモデルの構造推定の話です。 今回の成果は論文にまとめて投稿中で、結果が出たら詳細な解説や紹介記事を書きたいとのことです。 ラボユースはやりたいことに集中でき、夏の合宿も楽しく、中谷さんの愛あるツッコミがためになったそうです(depynd)。

川田恵さん(研究生)

川田さんの発表は「Exploitの旅2018」でメンターは星野さんでした。

f:id:cybozuinsideout:20180402155411j:plain

CTFの問題の作り方の紹介で、脆弱性を持つプログラムを作るにはコンパイラやコンパイルオプションに気を付けてテストをしっかりしなければなりません。 できれば他のチームに依頼できるとよいとのことです。 自分の意図した通りに挑戦者が問題を解いてくれるとうれしいそうです。

黒岩将平さん

黒岩さんの発表は「Return Oriented Programmingの自動化」でメンターは私でした。

f:id:cybozuinsideout:20180402155416j:plain

ROPはCTFでよく使われるテクニックの一つで夏のラボユース合宿のときはPythonで作っていたのをC++17を使って作り直しました。 CTFの問題の中には機械じゃないと解けないのもあるので、そういうのには有用だろうとのことです(ropchain)。

渡部恭久さん

渡部さんの発表は「拡張可能インタプリタのための構文解析フレームワーク」でメンターは川合さんでした。

f:id:cybozuinsideout:20180402155419j:plain

目標はきれいなプログラミング言語処理の開発です。 構文解析器とプリンタ(構文木を文字列にする変換器)を同時に定義するInvertible Syntaxというアイデアを元にしました。 構文を拡張したときに、追加した構文にマッチするよう最長一致の構文解析を導入しました。 左再帰への問題は将来対応したいとのことです(finale)。

後半の発表

増田健太さん

増田さんの発表は「制約と手続きを用いた作図用プログラミング言語Pitaの開発」でメンターは星野さんでした。

f:id:cybozuinsideout:20180402155423j:plain

図形を表現する文法と、図形の演算、図形同士の制約処理を記述して図形を出力する処理系です。 ローカル変数や再帰表現などをサポートし、円と長方形が接したままサイズを変更するといった記述ができます。 内部的には記号計算ではなく制約を満たす最適化問題に変換して解きます(Pita)。

類似のツールがないのでこのツールの特長が分かりにくかったのですが、デモを見るとみなさん驚きの声があがりました。

西田耀さん

西田さんの発表は「人間にも読み書きしやすいx86アセンブラをつくってみた」でメンターは川合さんでした。

f:id:cybozuinsideout:20180402155428j:plain

x86のIntel形式とAT&T形式のmovはどちらからどちらに代入するかすぐ分からなくなるので自分で作ることにしたそうです。 他にも自作OSのために自由度の高いアセンブラが欲しくなるという理由もあります(asmium)。

坂本優太さん(研究生)

坂本さんの発表は「続 自作エミュレータで学ぶx86アーキテクチャ」でメンターは私でした。

f:id:cybozuinsideout:20180402155430j:plain

はりぼてOSという小さいOSを動かすために『自作エミュレータで学ぶx86アーキテクチャ』を参考にしながらx86エミュレータを作りました。 まだまだ機能不足ですがブートして画面に文字が出るところまではできるようになりました。 セグメンテーションまわりの実装はこれからとのことです(emu)。

make_now_justさん

make_now_justさんの発表は「先読み・後読みをもつ正規表現の有限状態オートマトンへの変換」でメンターは西尾さんでした。

f:id:cybozuinsideout:20180402155433j:plain

正規表現の後読みは速度が遅かったり機能に制約があるものが多いので理論からきちんと攻めてみました。 ScalaやGoで実装し、あるパターンでGoogleのV8エンジンで53秒かかっていたものが1秒(以内?)に高速化されたようです。 ドメイン付きクリーネ代数を勉強し、理論的な意味づけをしていきたいとのことです。

LT&懇親会

@KageShironさんが「Headless Chromeを活用したCTF Web問題の作問」のLTをされました。

f:id:cybozuinsideout:20180402163830j:plain

CTFでXSSなどの問題を提供しようとするとアプリの難読化や環境の違いでうまくいかないことが多いのでGUIがないheadlessブラウザを使う方法を紹介しました。 APIを使ってブラウザを制御できるのでいろいろ便利です。

懇親会では発表に関する活発なやりとりがあり面白かったです。

f:id:cybozuinsideout:20180402155435j:plain

まもなく今年度の応募が始まりますので興味ある方はしばらくお待ちください。