LoginSignup
47
36

More than 3 years have passed since last update.

Rust.Tokyo 2019参加レポート

Last updated at Posted at 2019-10-28

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人だったそうです。

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の採用例としては次のようなものがある。

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

  • Rustそのものが持つメモリ等の安全性と、WebAssemblyへのコンパイルの容易さを享受できる
  • RustとJavaScriptの相互呼び出しが用意
  • WebGLの利用のしやすさ
  • DXF等のCADファイルへの対応

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

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

  • R&DではPythonで作ってそれを組み込みに移植に時間がかかる
  • 高速な行列演算を作りこむのに時間がかかる
  • 仕様変更や追加開発に対応するための大規模な修正が難しい

Rustへの移行の決め手

  • C/C++と同等の性能を示すベンチマーク
  • クロスコンパイルのサポート
    • 標準ライブラリ(std)が使える
    • 発表者はターゲットの名言を避けたが、おそらくRust Platform SupportのTier2レベルのどれかかと思われる。
  • テストやビルド、ドキュメントなどのシステムが言語として十分にサポートされている
    • 開発チームごとのオレオレフレームワークが生じにくい
  • Pythonのパッケージとしてビルドすることも容易

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

数値計算と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)に取り組んだ事例の紹介でした。

その他(資料のみ)

47
36
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
47
36