Upgrade to Pro — share decks privately, control downloads, hide ads and more …

その面倒な作業、「Dart」にやらせませんか? Flutter開発者のための業務効率化

Avatar for YomEngine YomEngine
October 06, 2025

その面倒な作業、「Dart」にやらせませんか? Flutter開発者のための業務効率化

2025/10/4 FlutterKaigi mini #5 @Sapporo LT資料

Avatar for YomEngine

YomEngine

October 06, 2025
Tweet

Other Decks in Programming

Transcript

  1. ࣗݾ঺հ • ໊લ: ాݪ ༿ • 𝕏 : @yord031ʢ ɹ

    ʣ • ॴଐ: גࣜձࣾϝϯόʔζ ΫϩεΞϓϦέʔγϣϯΧϯύχʔ FlutterΛओ࣠ʹɺΞϓϦ։ൃࢧԉΛ͍ͯ͠·͢
  2. Α͋͘Δ৔໘ • CSVूܭ͍ͨ͠ → Python + Pandas • WebεΫϨΠϐϯά͍ͨ͠ →

    Python + BeautifulSoup • ը૾ॲཧ͍ͨ͠ → Python + PIL • ఆظ࣮ߦ͍ͨ͠ → Python + cron • etc … ۀ຿ޮ཰Խ = Pythonʁ
  3. 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
  4. Flutter Issueࣗಈڞ༗γεςϜ 1. ৘ใऩूͷࣗಈԽˡఆظతͳ৘ใऔಘɾߏ଄Խॲཧ • Flutter GitHubϦϙδτϦͷ׆ൃͳIssueΛऔಘ 2. ࠩ෼؅ཧͷࣗಈԽˡมԽݕग़ɾϑΟϧλϦϯάॲཧ •

    લճऔಘ෼ͷࠩ෼ͷΈΛநग़ 3. ౤ߘ࡞ۀͷࣗಈԽˡUIࣗಈૢ࡞ɾٖࣅਓྗ࣮ߦ • SlackࢦఆνϟϯωϧʹϢʔβʔ໊Ͱ౤ߘ
  5. SlackʹϢʔβʔ໊Ͱࣗಈ౤ߘ͢Δٕज़બ୒ࢶ 1. SlackͷIncoming WebhookΛ࢖͏ • ❌ΞϓϦ໊͔Βͷ౤ߘʹͳͬͯ͠·͏ 2. SlackͷWeb API chat.postMessage

    Λ࢖͏ • ⭕ࢦఆϢʔβʔ͔Βࢦఆνϟϯωϧʹ౤ߘͰ͖Δ 3. Apple ScriptͰը໘ɾΩʔϘʔυΛૢ࡞͢Δ • 🔺ը໘ঢ়ଶʹґଘ͠΍͘͢ਫ਼౓͕௿͍ ٕज़ݕূͷͨΊApple ScriptΛબ୒ ※ Mac؀ڥΛ૝ఆ
  6. // 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ΞϓϦΛΞΫςΟϒԽ
  7. // ΫΠοΫεΠονϟʔΛ։͘ (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Λଧ 伴ࢦࣔ ؔ਺ఆٛᶄ ΫΠοΫεΠονϟʔΛ։͘
  8. // ΫϦοϓϘʔυʹίϐʔ 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ίϚϯυΛ࣮ ߦ͢Δ • ඪ४ೖྗͰςΩετΛॻ ͖ࠐΜͰ͔ΒετϦʔϜ Λด͡Δ ؔ਺ఆٛᶅ ΫϦοϓϘʔυʹίϐʔ
  9. // ΫϦοϓϘʔυ͔Βϖʔετ (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Λଧ 伴ࢦࣔ ؔ਺ఆٛᶆ ΫϦοϓϘʔυ͔Βϖʔετ
  10. // 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Ωʔ
  11. // 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 Λଧ伴ࢦࣔʢΩʔίʔυ ࢦఆʣ ؔ਺ఆٛᶈ ϝοηʔδͷ౤ߘ