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
1
160
その面倒な作業、「Dart」にやらせませんか? Flutter開発者のための業務効率化
2025/10/4 FlutterKaigi mini #5 @Sapporo LT資料
YomEngine
October 06, 2025
Tweet
Share
Other Decks in Programming
See All in Programming
ノーコードからの脱出 -地獄のデスロード- / Escape from Base44
keisuke69
0
660
Vueで学ぶデータ構造入門 リンクリストとキューでリアクティビティを捉える / Vue Data Structures: Linked Lists and Queues for Reactivity
konkarin
1
150
Inside of Swift Export
giginet
PRO
1
520
contribution to astral-sh/uv
shunsock
0
590
AI駆動開発カンファレンスAutumn2025 _AI駆動開発にはAI駆動品質保証
autifyhq
0
130
CloudflareのSandbox SDKを試してみた
syumai
0
120
AI時代に必須!状況言語化スキル / ai-context-verbalization
minodriven
3
370
「10分以内に機能を消せる状態」 の実現のためにやっていること
togishima
1
260
React Nativeならぬ"Vue Native"が実現するかも?_新世代マルチプラットフォーム開発フレームワークのLynxとLynxのVue.js対応を追ってみよう_Vue Lynx
yut0naga1_fa
2
2.1k
AI 時代だからこそ抑えたい「価値のある」PHP ユニットテストを書く技術 #phpconfuk / phpcon-fukuoka-2025
shogogg
1
390
CSC509 Lecture 11
javiergs
PRO
0
300
組織もソフトウェアも難しく考えない、もっとシンプルな考え方で設計する #phpconfuk
o0h
PRO
10
3.8k
Featured
See All Featured
jQuery: Nuts, Bolts and Bling
dougneiner
65
8k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
34
2.3k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.8k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.7k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
192
56k
What's in a price? How to price your products and services
michaelherold
246
12k
Become a Pro
speakerdeck
PRO
29
5.6k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
658
61k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.5k
[RailsConf 2023] Rails as a piece of cake
palkan
57
6k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.7k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.6k
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։ൃऀͷͨΊͷۀޮԽ