サイトアイコン アマチュア無線局JS2IIU

【Streamlit】自動読み込みの設定

こんにちは、JS2IIUです。
Streamlitを使ってUIを開発していると何度もソースコードを更新して表示を確認することがあります。毎回ウェブブラウザの更新が手間に感じることもあると思います。自動で表示更新する設定方法について説明します。今回もよろしくお願いします。

1. はじめに

Streamlitでアプリケーションを開発していると、コードをちょっと変更しただけなのに、毎回ブラウザをリロードして変更を反映させるのが手間だと感じたことはありませんか?

実は、Streamlitにはソースコードの変更を自動で検知し、アプリを再読み込みしてくれる機能が備わっています。ただし、この機能は一部の環境では初期状態で有効になっていない場合があります。

本記事では、自動リロード機能を有効にするための設定方法をMac環境を例にとって解説します。

2. 自動リロードが効かない場合の症状

Mac環境などで以下のようにStreamlitアプリを起動した際:

Bash
streamlit run app.py

ターミナルに次のようなメッセージが表示されることがあります:

Plaintext
$ xcode-select --install
$ pip install watchdog

このような表示が出ている場合、Streamlitは自動リロードを行う準備ができていない状態です。

また、ブラウザ上のStreamlitアプリの右上に「Rerun」「Always rerun」といったボタンが表示されており、手動で再読み込みを促すUIが出ていることでも自動リロードが無効であるとわかります。

3. 自動リロード機能の仕組み

Streamlitの自動リロードは、ファイルシステムの変化をリアルタイムに監視するライブラリ「watchdog」により実現されています。

このwatchdogが正しくインストールされていないと、Streamlitはコードの変更を検知できず、手動での再読み込みをユーザーに促す仕組みになっています。

4. watchdogのインストール方法(Macの場合)

4.1 Xcode Command Line Tools のインストール

watchdogをMacで使用するには、事前にXcodeのコマンドラインツールが必要です。まだインストールしていない場合は、以下のコマンドを実行してください:

Bash
xcode-select --install

ダイアログが表示されるので、指示に従ってインストールを進めましょう。

4.2 watchdogのインストール

次に、Python用のwatchdogライブラリをインストールします。以下のコマンドを実行してください:

Bash
pip install watchdog

仮想環境を使用している場合は、仮想環境内でインストールすることを忘れないようにしましょう。

5. インストール後の動作確認

必要なツールとライブラリのインストールが完了したら、再度Streamlitアプリを起動してみましょう:

Bash
streamlit run app.py

アプリを起動後、エディタでapp.pyのコードを変更して保存すると、自動的にブラウザ側がリロードされ、変更内容が反映されるようになります。

また、右上に表示されていた「Rerun」や「Always rerun」のボタンが消えていることでも、自動リロードが有効になっていることを確認できます。

6. トラブルシューティング

✅ watchdogをインストールしても自動リロードされない場合

7. その他の注意点

8. おわりに

Streamlitの自動リロード機能は、開発の効率を大きく向上させてくれる便利な機能です。

Mac環境では少しセットアップが必要ですが、watchdogをインストールしてしまえば、以降はコードの変更を即座にブラウザへ反映できる快適な開発環境が整います。

まだ設定していない方は、ぜひこの機会に試してみてください!

9. 参考リンク

最後に書籍のPRです。
24年9月に出版された「ハイパーモダンPython-信頼性の高いワークフローを構築するモダンテクニック」、Claudio Jolowicz著、嶋田、鈴木訳。開発環境の構築、プロジェクトの管理、テストに関して実践的な内容でとても参考になる一冊です。ぜひ手に取ってみてください。

最後まで読んでいただきありがとうございます。

モバイルバージョンを終了