Rust.Tokyo 2019参加レポート

Rustのone-day conferenceに参加した時の情報をお送りします。ここに書いているのは私個人のメモレベルなので、詳細は講演者の方々が公開して下さっているスライドなどをご参照ください。

Rust.Tokyo 2019

追記 2019/10/31

公式サイトのほうで発表資料を公開できるよう準備してくださっているようです。すでにアクセスできる資料を探すには下記のTogetterが役立つかもしれません。
https://togetter.com/li/1422930

開催のきっかけ

2018/11/26に@dorayaki_kunさんがTwitterでつぶやいたことがきっかけとなり、その約1年後に開催にいたった。中心メンバーは先のつぶやきにすぐに賛同した@chikoskiさん、@T5ku5shiさん、@helloyuki_さんの4人だったそうです。

RustのTechカンファ、日本で開きたいですよね!と言われて確かに〜となった— どらやき (@dorayaki_kun) November 26, 2018

Conferenceの目的

    • もっとRustを盛り上げたい

 

    Rustを好きな人をつなげたい

日時/場所

    • 開催日時: 2019年10月26日 10:00~18:00

 

    場所: グラントウキョウサウスタワー41F

要約

Rustはゼロコストの抽象化を実現するシステム用の言語であり、言語の仕様レベルでマルチスレッドの安全性が保障されています。その応用範囲は非常に広く、組込みからWebフロントエンドにおいて活用され始めています。

このone-day Cunferenceでは、組み込みの画像認識に関するシステム開発や数値計算での採用事例や、WebAssemblyへのコンパイルを通したWeb appにおける開発のティップスなどが紹介されていました。講演資料を公開してくれている方が多くいらっしゃいましたので、興味のあるテーマがありましたらぜひそちらをご参照ください。

目次

    • Seminor 1 : Visualization of mechanical CAD drawings using WebAssembly and WebGL

 

    • Seminor 2 : エッジMLシステムをC/C++からRustへ移行した事例

 

    • Seminor 3 : Rustによる数値計算の現状と課題

 

    • Seminor 4 : Web-based Data Visualization with Rust and WebAssembly

 

    • Seminor 5 : Porting Rust libstd to NuttX/Cortex-M4F and prototyping a simple web server

 

    Seminor 6 : Webフレームワークを作成してみた話

Seminor 1 : Visualization of mechanical CAD drawings using WebAssembly and WebGL

発表者

    • 小橋 昭文さん

 

    CADDi (Gold Sponsor) CTO

CADソフトの開発にWebAssemblyとWebGL使った事例紹介

Webアプリの可能性に挑戦している印象でした。

WebAssemblyへの注目

Webアプリのフロントエンドの役割が年々大きくなる中で、より小さく高速な実行環境が必要とされてきた。そのような背景の下で誕生したのがWebAssemblyである。

WebAssemblyの採用例としては次のようなものがある。

Figma

WebAssembly cut Figma’s load time by 3x

Unity

WebAssembly is here!

ebay

WebAssembly at eBay: A Real-World Use Case

[1Password]

1Password X: May 2019 update

WebAssemblyでの開発にRustを使うメリット

    • Rustそのものが持つメモリ等の安全性と、WebAssemblyへのコンパイルの容易さを享受できる

 

    • RustとJavaScriptの相互呼び出しが用意

wasm-bindgen

WebGLの利用のしやすさ

kiss3d

DXF等のCADファイルへの対応

dfx

Seminor 2 : エッジMLシステムをC/C++からRustへ移行した事例

    • 加藤 倫弘さん

 

    • DeNA

 

    • 講演資料

https://docs.google.com/presentation/d/1HOL9jheJnKkh2q7w3hU_px-je1qL7lxrSXV-0P1hces/edit#slide=id.p1

ドライブレコーダにDeep Learningを用いたコンピュータビジョン技術を実装するためにRustを利用。もともとC/C++を利用していたが、次のような課題を抱えていた。

    • R&DではPythonで作ってそれを組み込みに移植に時間がかかる

 

    • 高速な行列演算を作りこむのに時間がかかる

 

    仕様変更や追加開発に対応するための大規模な修正が難しい

Rustへの移行の決め手

    • C/C++と同等の性能を示すベンチマーク

 

    • クロスコンパイルのサポート

標準ライブラリ(std)が使える
発表者はターゲットの名言を避けたが、おそらくRust Platform SupportのTier2レベルのどれかかと思われる。

テストやビルド、ドキュメントなどのシステムが言語として十分にサポートされている

開発チームごとのオレオレフレームワークが生じにくい

Pythonのパッケージとしてビルドすることも容易

PyO3

Seminor 3 : Rustによる数値計算の現状と課題

    • Toshiki Teramuraさん

 

    • 株式会社科学総合研究所

 

    • 講演資料

https://docs.google.com/presentation/d/1iujcfg2y3CMMgEO8BvX2__w_dbl4zQWQrK3ULaStD4E/edit#slide=id.p

数値計算とRustの言語仕様

    • LLVMを通した最適化でCと同程度に高速化できる

 

    • Traitを用いた抽象化が可能

同様のことはC++のconceptでも実現できるが、C++20への対応が必須となる
参考: Constraints and Concepts

数値計算に便利なcrateの例

rayon

work stealingによるデータ並列ライブラリ

num-traits

ndarray

NumPyに似た行列演算をRustで同じように利用できる

Seminor 4 : Web-based Data Visualization with Rust and WebAssembly

    • 尾上洋介さん

 

    • 日本大学文理学部情報科学科准教授

 

    • 講演資料

データの可視化をもっと手軽に

Seminort 1でもあったが、専用のアプリとしてではなく、ブラウザがあればどこでもデータを可視化できるツールを作りたいのが動機。

wasm-packのティップス

    • wasm-packでのビルド

wasm-pack build

npmパッケージとして公開

wasm-pack publish

Google Chromeを実行環境としたテストの実行

wasm-pack test –chrome

wasmの今後

wasmのパフォーマンスを向上させるために、今後も下記のような機能が追加されていくらしい。

    • pthread likeなスレッドのサポート

 

    SIMDのサポート

Seminor 5 : Porting Rust libstd to NuttX/Cortex-M4F and prototyping a simple web server

    • Yoshinori Suginoさん

 

    Sony Home Entertainment & Sound Products Inc.

Posix対応のreal-time OSであるNuttXをターゲットにRustを使ってどうにかこうにかクロスコンパイルした経験談。

Seminor 6 : Webフレームワークを作成してみた話

    • 原 将己さん

 

    WANTEDLY

Rust 1.39でasync/awaitの安定化が予定されているが、それに伴ってWebのバックエンドとしても使いやすくなることが期待されている。講演者それを勝機と狙ってRustの機能を利用しながら、RustらしいWebフレームワークの構築(nails)に取り組んだ事例の紹介でした。

その他(資料のみ)

    • Secure Coding Practice in Rust

 

    • Rust製テキストエディタでFuzzingする話

 

    kenkooooさんのRust製ウェブアプリ kenkoooo/AtCoderProblems
广告
将在 10 秒后关闭
bannerAds