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

Airパッケージの深掘り 〜変更検知の仕組み〜

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for Naoya Naoya
September 19, 2025
210

Airパッケージの深掘り 〜変更検知の仕組み〜

DMM.go #11の登壇資料です
https://dmm.connpass.com/event/363839/

Avatar for Naoya

Naoya

September 19, 2025

Transcript

  1. © DMM Airの全体図 9 リロード ビルド 変更検知 Air ソースコード 実行環境

    開発者 ←←👀 どのようにしてソースコードの 監視を実現しているか?
  2. © DMM hugoのWatcher ➢ hugoには二種類のWatcherが存在する ◦ Watcher自体のインタフェースは共通 17 ➢ EventWatcher

    OSの機能を利用してコードの変 更をリアルタイムで検知する ➢ PollingWatcher 一定周期でコードをチェックを回し て変更を検知する EventWatcherを利用できないケー スで使用 https://github.com/gohugoio/hugo/blob/ master/watcher/filenotify/filenotify.go
  3. © DMM hugoのWatcher ➢ hugoには二種類のWatcherが存在する 18 ➢ EventWatcher ファイルの変更をリアルタイムで検 知する

    ➢ PollingWatcher 一定周期でファイルをチェックを回 して変更を検知する AirではどちらのWatcherも利用可能 falseの場合はEventWatcher trueの場合はPollingWatcher ※デフォルトはfalse
  4. © DMM hugoのWatcher ➢ hugoには二種類のWatcherが存在する 19 ➢ EventWatcher ファイルの変更をリアルタイムで検 知する

    ➢ PollingWatcher 一定周期でファイルをチェックを回 して変更を検知する それぞれのWatcherはどのように 変更を検知しているか?
  5. © DMM Watcher 変更検知の流れ 29 イベント通知 送信 inotifyイベント 監視 fsnotify.Write

    unix.IN_MODIFY ➢ inotifyのイベントを取得すると通知を送信
  6. © DMM まとめ ➢ Airはコードの変更を検知することで最新のコードを反映している ➢ コードの変更検知にはhugo,fsnotifyが大きく関わっている ➢ 変更を検知するWatcherは二種類存在する ◦

    EventWatcher ▪ OS自体のイベントを取得して変更を検知する ▪ Airではこちらがデフォルトの選択肢 ◦ PollingWatcher ▪ 一定周期でファイルをチェックして変更を検知する 39