Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Rust製GUIライブラリ
Search
Yuya Kanai
October 20, 2023
0
360
Rust製GUIライブラリ
Yuya Kanai
October 20, 2023
Tweet
Share
Featured
See All Featured
KATA
mclloyd
30
14k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
48
5.4k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
940
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
GraphQLとの向き合い方2022年版
quramy
49
14k
Intergalactic Javascript Robots from Outer Space
tanoku
271
27k
For a Future-Friendly Web
brad_frost
179
9.8k
A Modern Web Designer's Workflow
chriscoyier
694
190k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
2.9k
Gamification - CAS2011
davidbonilla
81
5.3k
Embracing the Ebb and Flow
colly
86
4.7k
Optimizing for Happiness
mojombo
379
70k
Transcript
Rust製GUIライブラリ
動機 衝撃の音楽アプリとの出会い2013 Sunvox / Sundog engine (2008 ~) https://warmplace.ru/soft/sunvox/ React
native (2015 ~ ) Flutter (2017 ~ )
挑戦 2017 OpenGL & C++ で試みる + C++ 難しい +
メモリ管理 + 多機能すぎる + ビルド設定・リンカー難しい + パッケージマネージャが無い + Mac / iOSのOpenGL非推奨化
挑戦 2017 OpenGL & C++ で試みる + C++ 難しい +
メモリ管理 + 多機能すぎる + ビルド設定・リンカー難しい + パッケージマネージャが無い + Mac / iOSのOpenGL非推奨化
挑戦 2017 OpenGL & C++ で試みる + C++ 難しい +
メモリ管理 + 多機能すぎる + ビルド設定・リンカー難しい + パッケージマネージャが無い + Mac / iOSのOpenGL非推奨化
再挑戦 2022 きっかけ:RUST & It’s Ecosystem + メモリ管理 => 😃
+ 多機能すぎる => 😃 + ビルド設定・リンカー難しい => 😃 + パッケージマネージャが無い => 😃 + iOSのOpenGL非推奨化 => WGPU + その他GUI作りに便利そうなライブラリ多数
再挑戦 2022 きっかけ:RUST & It’s Ecosystem + メモリ管理 => 😃
+ 多機能すぎる => 😃 + ビルド設定・リンカー難しい => 😃 + パッケージマネージャが無い => 😃 + iOSのOpenGL非推奨化 => WGPU + その他GUI作りに便利そうなライブラリ多数
再挑戦 2022 きっかけ:RUST & It’s Ecosystem + メモリ管理 => 😃
+ 多機能すぎる => 😃 + ビルド設定・リンカー難しい => 😃 + パッケージマネージャが無い => 😃 + iOSのOpenGL非推奨化 => WGPU + その他GUI作りに便利そうなライブラリ多数
再挑戦 2022 きっかけ:RUST & It’s Ecosystem + メモリ管理 => 😃
+ 多機能すぎる => 😃 + ビルド設定・リンカー難しい => 😃 + パッケージマネージャが無い => 😃 + iOSのOpenGL非推奨化 => WGPU + その他GUI作りに便利そうなライブラリ多数
再挑戦 2022 きっかけ:RUST & It’s Ecosystem + メモリ管理 => 😃
+ 多機能すぎる => 😃 + ビルド設定・リンカー難しい => 😃 + パッケージマネージャが無い => 😃 + iOSのOpenGL非推奨化 => WGPU + その他GUI作りに便利そうなライブラリ多数
再挑戦 2022 きっかけ:RUST & It’s Ecosystem + メモリ管理 => 😃
+ 多機能すぎる => 😃 + ビルド設定・リンカー難しい => 😃 + パッケージマネージャが無い => 😃 + iOSのOpenGL非推奨化 => WGPU + その他GUI作りに便利そうなライブラリ多数
再挑戦 2022 きっかけ:RUST & It’s Ecosystem + メモリ管理 => 😃
+ 多機能すぎる => 😃 + ビルド設定・リンカー難しい => 😃 + パッケージマネージャが無い => 😃 + iOSのOpenGL非推奨化 => WGPU + その他GUI作りに便利そうなライブラリ多数
再挑戦 2022 きっかけ:RUST & It’s Ecosystem + メモリ管理 => 😃
+ 多機能すぎる => 😃 + ビルド設定・リンカー難しい => 😃 + パッケージマネージャが無い => 😃 + iOSのOpenGL非推奨化 => WGPU + その他GUI作りに便利そうなライブラリ多数
GUIライブラリ思想 ~デザインをDRYに~ デザイナーが書いたSVGをそのままGitにコミット エンジニアなしで単純な見た目上の更新は出来るようにする
DEMO1: 人生ゲーム 150行 rust + Figma SVG iOS / Android
/ Web / MacOSで動作確認済み
DEMO1: 人生ゲーム 150行 rust + Figma SVG iOS / Android
/ Web / MacOSで動作確認済み
DEMO2: レイアウトエンジン Rust 30行 Figma互換レイアウト
アーキテクチャ Guppies Salvage * Rustは海が テーマの言語なので パッケージ名は 海風 SVG mono-repo
library二つある
Guppies(グッピー) + GPU描画 + 三角形とシェーダーを受け取り描画する + Cross-Platform: iOS / Android
/ web / Mac / windows … Guppies Salvage SVG
Salvage(サルベージ) + SVG描画 + SVGを移動できる + SVGのテキストを更新 Guppies Salvage SVG
Guppies(グッピー): ライブラリ - Winit : イベントループ実行 - Wgpu : GPU描画
- Cargo-mobile : Xcode / Android studio 初期化 winit wgpu cargo-mobile
Salvage(salvage):ライブラリ - Usvg : 一般的なsvgを単純なベジェ曲線や直線のpathのみのSVGに変換 - Lyon : ベジェ曲線等を三角形に変更(tesselation) -
Glam: 行列の演算 (svgの移動は変換行列で管理) <polygon /> <path /> usvg lyon glam
+ PRでdevlogみたいな独り言書くの楽しかった https://github.com/Cactice/salvage-guppies/pull/29 + Rustのおかげで高校時代の夢を叶えられた C++より何倍も進捗を出せた + ゴミライブラリ作るの楽しいな 感想