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
Jasprが凄い話
Search
Hayami Shuhei
March 01, 2025
Programming
400
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Jasprが凄い話
Flutter Tokyo #5
Hayami Shuhei
March 01, 2025
More Decks by Hayami Shuhei
See All by Hayami Shuhei
スマートグラスで並列バイブコーディング
hyshu
0
270
Claude Agent SDK を使ってみよう
hyshu
0
2.1k
Flutterと Vibe Coding で個人開発!
hyshu
1
390
BLoCパターンとflutter_bloc
hyshu
0
150
Melos x Pub Workspaces で 沢山のアプリとパッケージを管理するのに 苦労した話
hyshu
1
64
CanvasKitの描画の仕組みを調べてみる
hyshu
0
260
Other Decks in Programming
See All in Programming
ローカルLLMを使ってB2Bサービスを作っていての学び
yaotti
0
230
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
780
はてなアカウント基盤 State of the Union
cockscomb
1
1.2k
過去最大のMCPアップデート! 2026-07-28 RC版の謎に迫る
licux
6
430
ECSアプリログをFireLensでコスト削減しようとしたけど諦めた話 in Fargate×Node.js
akihisaikeda
2
4.2k
IBM Bobを活用したレガシーアプリの最新化
oniak3ibm
PRO
1
240
Performance Engineering for Everyone
elenatanasoiu
0
250
Hunting Vulnerabilities in Symfony with LLMs
vinceamstoutz
0
570
Developing with AI Agents — Codex, Claude Code & Cowork Practical Guide
x5gtrn
PRO
0
1.3k
AI時代のUIはどこへ行く?その2!
yusukebe
22
7.7k
決定論的オーケストレーションの設計と実装 / Design and Implementation of Deterministic Orchestration
nrslib
4
1.6k
メソッドのジェネリクスでGoの夢は広がるか? / Kyoto.go #65
utgwkk
3
1k
Featured
See All Featured
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
67
56k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
410
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2k
Building the Perfect Custom Keyboard
takai
2
810
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.1k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
How to Talk to Developers About Accessibility
jct
2
270
BBQ
matthewcrist
89
10k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4.1k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.7k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
We Are The Robots
honzajavorek
0
260
Transcript
Flutter Tokyo #5.2 2025/03/01 aq (Hayami Shuhei) +BTQS͕ੌ͍
https://jaspr.site/ Jaspr
IUUQTHJUIVCDPNEBSUMBOHTJUFXXXQVMM IUUQTYDPNTDIVMUFL@EFWTUBUVT EBSUEFWͰ࠾༻͞Εͨ 13ग़ͨ͠,JMJBOࢯ͕࡞ऀ
Jasprͷલʹ…ݱࡏͷFlutterWeb • Wasmͷ2DඳըΤϯδϯͰ͋Δ CanvasKit ·ͨ SKWasm + ΞϓϦ(Dart)ΛWasmίϯύΠϧ͔jsϏϧυ • ϏϧυʹΑͬͯ΄΅WasmͷΈͰඳըͰ͖ΔͷͰઌਐత
• ΞϓϦͱ΄ͱΜͲมΘΒͳ͍ը໘ΛWebͰ࠶ݱ
Jasprͷલʹ…ݱࡏͷFlutterWeb • CanvasKitSKWasmѹॖ࣌Ͱ1.5MBʙ2MBఔ͋Δ • ϒϥβʔͱҟͳΔಠࣗඳըΛ͢ΔͷͰɺεϚϗͳͲੑೳ ͷڥͩͱॳճඳըʹ͕͔͔࣌ؒΔ • ಡΈࠐΈ+ඳըͷ͔͞ΒɺSEOධՁ͕Ͳ͏ؤுͬͯ࠷ʹ ۙ͘ͳͬͯ͠·͏ •
ͪΐͬͱ·͕͍͍ͩ࣌ͭͯͳ͍ײ
Jaspr • FlutterΛΘͣʹDart͔ΒWebϖʔδΛੜ͢Δύοέʔδ • Flutter ͕ Everything is a Widget
ͳͷʹର͠ɺ Jaspr Everything is a Component • main͔ΒrunAppΛ࣮ߦɺStatelessComponent·ͨ StatefulComponentͷbuildϝιουʹهड़͍ͯ͘͠
JasprͰΧϯλʔΞϓϦΛ࡞ͬͯΈΔ dart pub global activate jaspr_cli ࣮ߦ͢Δͱ৭ʑ߲͕ग़ͯ͘Δ͚ͲTUBUJDCVJMEΛબΜͰ ͓͚ޙͲΕͰ0, ॳظͰ؆୯ͳΧϯλʔΞϓϦ͕࡞ΒΕΔͷͷɺͬͱ γϯϓϧʹͯ͠ΈΔ
jaspr create my_website
JasprͰΧϯλʔΞϓϦΛ࡞ͬͯΈΔ import 'package:jaspr/browser.dart'; import 'package:my_website/counter.dart'; void main() { runApp(Counter()); }
XFCNBJOEBSU
import 'package:jaspr/jaspr.dart'; class Counter extends StatefulComponent { const Counter({super.key}); @override
State<Counter> createState() => CounterState(); } class CounterState extends State<Counter> { int count = 0; @override Iterable<Component> build(BuildContext context) sync* { yield div( styles: Styles(textAlign: TextAlign.center, fontSize: Unit.em(5)), [ span([text('$count')]), button( onClick: () => setState(() => count++), [text('+1')], ), ]); } } MJCDPVOUFSEBSU
JasprͰΧϯλʔΞϓϦ jaspr serve ϩʔΧϧͰ֬ೝ༻ʹMJCNBJOEBSUඞཁʢࠓճׂѪʣ ϩʔΧϧͰ֬ೝ͢Δʹɿ jaspr build αʔόʔΞοϓϩʔυ༻ʹϏϧυ͢Δʹɿ
SEOʹڧ͍ • HTMLλάςΩετΛؚΊͨ੩తϑΝΠϧͱͯ͠ੜ͞ΕΔ ͷͰɺී௨ͷWebαΠτͱͯ͠ೝࣝ͞ΕΔ • CSSʹΑΔҰׅܗग़དྷΔʢTailwind͑Δʣ • αʔόʔαΠυϨϯμϦϯάΛ͑ಈతίϯςϯπΛαʔ όʔଆͰ੩తϑΝΠϧͱͯ͠ੜ͢ΔͷͰߋʹૣ͘Ͱ͖Δ
Flutterͱͷޓੑ • Riverpodjaspr_riverpodΛ͑OK →ConsumerWidget͕ແ͘ɺcontext.watch͚ͩͰมߋ͕ өͰ͖Δ • InheritedWidgetΘΓͷInheritedComponentͪΌΜͱ͋Δ
Flutterͱͷޓੑ • Dartίʔυ `dart compile` Ͱjsʹม͞Ε͍ͯΔ (Wasmίϯ ύΠϧՄೳ)ɻͳͷͰFlutterΛ͍ͬͯͳ͍Dartίʔυͦͷ ··ར༻Մೳ (https://github.com/schultek/jaspr/blob/main/packages/jaspr_cli/lib/src/commands/build_command.dart#L129)
• FlutterEmbedViewΛ͑FlutterWebΛը໘ʹຒΊࠐΉ͜ ͱՄೳɻԆಡΈࠐΈͳͷͰSEOతʹͳ͠
·ͱΊ • FlutterWebϦονͳίϯςϯπɺJasprදࣔͱSEOॏࢹ ͷܰྔͳίϯςϯπͱ͍͍͚͕ͬͨྑͦ͞͏ • Flutter༻ʹॻ͍ͨίʔυΛJapsrͰϏϧυ͢ΔͨΊͷઃܭ৭ʑ ·͍͠🤔 ࠓޙ͕ٞͳ͞ΕΔͱخ͍͠Ͱ͢… • ݸਓతʹBLoCύλʔϯͰਐΊ͍ͯ͘༧ఆͰ͢
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ X: @aqhayami Zenn: @hyshu