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
その面倒な作業、「Dart」にやらせませんか? Flutter開発者のための業務効率化
Search
YomEngine
October 06, 2025
Programming
210
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
その面倒な作業、「Dart」にやらせませんか? Flutter開発者のための業務効率化
2025/10/4 FlutterKaigi mini #5 @Sapporo LT資料
YomEngine
October 06, 2025
Other Decks in Programming
See All in Programming
進化を続けるGo toolsの現在地 / The Current State of Ever-Evolving Go Tools
hond0413
0
200
ITヒヤリハットを整理してみた ~ライフサイクルと原因から考える再発防止策~
koukimiura
1
140
為什麼你並不需要ViewModel / No, you don't need a ViewModel
lovee
1
490
torikago - Ruby::Boxで照らすモジュラモノリスの実行境界
se4weed
1
360
ここ半年くらいでAIに作らせたR用ツール
eitsupi
0
370
Detecting Compromised CI with eBPF and Cilium Tetragon
lizrice
0
180
Android CLI
fornewid
0
220
運用ダッシュボードの設計を誰も教えてくれないのだけどみなさんどうしてるんですか? - チームに監視するという文化を根付かせるための第一歩を踏みたい -
satoshi256kbyte
1
110
生成AI導入の「期待外れ」を乗り越える ー 開発フロー改革が目指す、真の組織変革
starfish719
0
4.3k
AWS CDK を「作」ってみた 〜フルスクラッチで見えた CDK の裏側〜 / aws-cdk-from-scratch
gotok365
3
2.8k
生成AIで帳票OCRが「簡単に」作れる時代になった?
kon_shou
0
780
仕様駆動開発へのトライを機に チームに適合する手法を模索し続けている話
freee
PRO
0
490
Featured
See All Featured
The agentic SEO stack - context over prompts
schlessera
0
860
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
610
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
630
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
380
Into the Great Unknown - MozCon
thekraken
41
2.7k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
Amusing Abliteration
ianozsvald
1
240
Game over? The fight for quality and originality in the time of robots
wayneb77
1
240
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.7k
Transcript
ͦͷ໘ͳ࡞ۀɺʮDartʯʹ Βͤ·ͤΜ͔ʁ Flutter։ൃऀͷͨΊͷۀޮԽ 2025/10/04 FlutterKaigi mini #5 @Sapporo
ࣗݾհ • ໊લ: ాݪ ༿ • 𝕏 : @yord031ʢ ɹ
ʣ • ॴଐ: גࣜձࣾϝϯόʔζ ΫϩεΞϓϦέʔγϣϯΧϯύχʔ FlutterΛओ࣠ʹɺΞϓϦ։ൃࢧԉΛ͍ͯ͠·͢
גࣜձࣾϝϯόʔζɺFlutterKaigi 2025ͷϒϩϯζεϙϯαʔͰ ͢
ଟ༷ͳin-memoryΩϟογϡΛఏڙ͢ΔDartύοέʔδΛެ։ https://pub.dev/packages/cacherine 4 yordgenome03 mem-5514-tahara qr.dartύοέʔδʹOSS Contribution https://github.com/kevmoo/qr.dart/issues?q=author%3Amem-5514-tahara FlutterͷFormWidgetΛSwiftUIͰ࠶ݱ͢ΔSwiftύοέʔδΛެ։ https://swiftpackageindex.com/yordgenome03/FlutterLikeForm
cacherine FlutterLikeForm qr.dart
ʲຊʳ օ͞ΜɺPythonॻ͍ͯ·ͤΜ͔ʁ
Α͋͘Δ໘ • CSVूܭ͍ͨ͠ → Python + Pandas • WebεΫϨΠϐϯά͍ͨ͠ →
Python + BeautifulSoup • ը૾ॲཧ͍ͨ͠ → Python + PIL • ఆظ࣮ߦ͍ͨ͠ → Python + cron • etc … ۀޮԽ = Pythonʁ
ͦͷ࡞ۀɺDartʹΒͤ·ͤΜ͔ʁ
Pythonͷ࡞ۀΛDartʹஔ͖͑Δͱͨ͠Β DartͰউͯΔʢ֬৴ʣ λεΫ 1ZUIPO %BSU $47ूܭ 1BOEBT JP DTW 8FCεΫϨΠϐϯά
#FBVUJGVM4PVQ IUUQ QBSTFS ը૾Ұׅॲཧ 1*- JP JNBHF ఆظ࣮ߦ DSPO TDIFEVMF DSPO ϚεɾΩʔϘʔυૢ࡞ 1Z"VUP(6* QSPDFTT@SVO SPCPU JP ϒϥβૢ࡞ 4FMFOJVN XFCESJWFS
࣮ࡍʹDartͰࣗಈԽͯ͠ΈΔ
Flutter Issueࣗಈڞ༗γεςϜ 1. ใऩूͷࣗಈԽˡఆظతͳใऔಘɾߏԽॲཧ • Flutter GitHubϦϙδτϦͷ׆ൃͳIssueΛऔಘ 2. ࠩཧͷࣗಈԽˡมԽݕग़ɾϑΟϧλϦϯάॲཧ •
લճऔಘͷࠩͷΈΛநग़ 3. ߘ࡞ۀͷࣗಈԽˡUIࣗಈૢ࡞ɾٖࣅਓྗ࣮ߦ • SlackࢦఆνϟϯωϧʹϢʔβʔ໊Ͱߘ
ॲཧϑϩʔ DSPOʹΑΔఆ࣮࣌ߦ (JU)VC*TTVFऔಘ લճσʔλಡΈࠐΈ ࠩ֬ೝ 4MBDLىಈ ϝοηʔδߘ ॲཧऴྃ ࣍ճDSPO࣮ߦػ ࠩཧσʔλอଘ
ͳ͠ ͋Γ
SlackʹϢʔβʔ໊Ͱࣗಈߘ͢Δٕज़બࢶ 1. SlackͷIncoming WebhookΛ͏ • ❌ΞϓϦ໊͔Βͷߘʹͳͬͯ͠·͏ 2. SlackͷWeb API chat.postMessage
Λ͏ • ⭕ࢦఆϢʔβʔ͔ΒࢦఆνϟϯωϧʹߘͰ͖Δ 3. Apple ScriptͰը໘ɾΩʔϘʔυΛૢ࡞͢Δ • 🔺ը໘ঢ়ଶʹґଘ͘͢͠ਫ਼͕͍ ٕज़ݕূͷͨΊApple ScriptΛબ ※ MacڥΛఆ
// SlackΞϓϦΛىಈ Future<void> _activateSlack() async { await Process.run('osascript', [ '-e',
'tell application "Slack" to activate', ]); } • dart:ioͷProcess.runؔ Λͬͯɺosascript -e ίϚϯυΛ࣮ߦ͢Δ • applicationʹSlackΛࢦఆ ͯ͠activeԽ ؔఆٛᶃ SlackΞϓϦΛΞΫςΟϒԽ
// ΫΠοΫεΠονϟʔΛ։͘ (Cmd+K) Future<void> _openQuickSwitcher() async { await Process.run('osascript', [
'-e', 'tell application "System Events" to keystroke "k" using command down', ]); } • dart:ioͷProcess.runؔ Λͬͯɺosascript -e ίϚϯυΛ࣮ߦ͢Δ • System Eventsʹ⌘KΛଧ 伴ࢦࣔ ؔఆٛᶄ ΫΠοΫεΠονϟʔΛ։͘
// ΫϦοϓϘʔυʹίϐʔ Future<void> _copyToClipboard(String text) async { final process =
await Process.start('pbcopy', []); process.stdin.write(text); await process.stdin.close(); await process.exitCode; } • dart:ioͷProcess.startؔ ͰετϦʔϜΛͬ ͯɺpbcopyίϚϯυΛ࣮ ߦ͢Δ • ඪ४ೖྗͰςΩετΛॻ ͖ࠐΜͰ͔ΒετϦʔϜ Λด͡Δ ؔఆٛᶅ ΫϦοϓϘʔυʹίϐʔ
// ΫϦοϓϘʔυ͔Βϖʔετ (Cmd+V) Future<void> _pasteFromClipboard() async { await Process.run('osascript', [
'-e', 'tell application "System Events" to keystroke "v" using command down', ]); } • dart:ioͷProcess.runؔ Λͬͯɺosascript -e ίϚϯυΛ࣮ߦ͢Δ • System Eventsʹ⌘VΛଧ 伴ࢦࣔ ؔఆٛᶆ ΫϦοϓϘʔυ͔Βϖʔετ
// EnterΩʔԡԼ Future<void> _pressEnter() async { await Process.run('osascript', [ '-e',
'tell application "System Events" to key code 36', ]); } • dart:ioͷProcess.runؔ Λͬͯɺosascript -e ίϚϯυΛ࣮ߦ͢Δ • System EventsʹEnter ΩʔΛଧ伴ࢦࣔ ؔఆٛᶇ EnterΩʔ
// Cmd + EnterͰߘ Future<void> _postWithCommandEnter() async { await Process.run('osascript',
[ '-e', 'tell application "System Events" to key code 36 using command down', ]); } • dart:ioͷProcess.runؔ Λͬͯɺosascript -e ίϚϯυΛ࣮ߦ͢Δ • System Eventsʹ⌘Enter Λଧ伴ࢦࣔʢΩʔίʔυ ࢦఆʣ ؔఆٛᶈ ϝοηʔδͷߘ
ϓϩάϥϜ࣮ߦ݁Ռ 1. ࣗಈͰSlackΞϓϦ͕ىಈ 2. SlackΞϓϦ͕ΞΫςΟϒʹ 3. ΫΠοΫεΠονϟʔͰ #generalʹҠಈ 4. ϝοηʔδཝʹFlutter
Issuesͷ·ͱΊΛೖྗ 5. ϝοηʔδૹ৴ ϓϩάϥϜͰߘͨ͠ϝοηʔδ
None
·ͱΊ -ʮ໘ͳ࡞ۀDartͰΓ͍ͨʯ • ϥΠϒϥϦͷ๛͞ɾσʔλੳɾεΫϨΠϐϯάͳͲ Pythonʹෛ͚Δ • APIϦΫΤετσʔλॲཧΛDartͰޮతʹΨϯΨϯॻ͚Δ • Flutterͱಉ͡ݴޠͦͷ··ͰࣗಈԽͰ͖Δͷؾ͍͍࣋ͪ •
͖: Dart > Python
͓ΘΓʹ גࣜձࣾϝϯόʔζɺΦϯυϝσΟΞʰBEMAʱͰɺΤϯδχΞͷ ࣮ફʹཱͭ࠷৽ͷٕज़τϨϯυ։ൃϊϋΛൃ৴͍ͯ͠·͢ https://bema.jp/ Check!! 𝕏 ΞΧϯτͷϑΥϩʔΑΖ͓͘͠ئ͍͠·͢ https://x.com/BEMA_Lab エンジニアの 成
長 を 支 援する 技術メディア
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ 2025/10/04 FlutterKaigi mini #5 @Sapporo ͦͷ໘ͳ࡞ۀɺʮDartʯʹΒͤ·ͤΜ͔ʁ Flutter։ൃऀͷͨΊͷۀޮԽ