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
370
Rust製GUIライブラリ
Yuya Kanai
October 20, 2023
Tweet
Share
Featured
See All Featured
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
A better future with KSS
kneath
239
17k
BBQ
matthewcrist
89
9.8k
RailsConf 2023
tenderlove
30
1.2k
Speed Design
sergeychernyshev
32
1.1k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.5k
A Tale of Four Properties
chriscoyier
160
23k
The World Runs on Bad Software
bkeepers
PRO
70
11k
How to Think Like a Performance Engineer
csswizardry
26
1.9k
Become a Pro
speakerdeck
PRO
29
5.5k
Six Lessons from altMBA
skipperchong
28
4k
Gamification - CAS2011
davidbonilla
81
5.4k
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++より何倍も進捗を出せた + ゴミライブラリ作るの楽しいな 感想