整洁な Streamlit dashboard を構築し、リンクをチームに共有したものの、ある人が「なぜブラウザタブには自社ブランドではなく、generic な Streamlit ロゴが表示されるのか」と質問したかもしれません。原因は、見落としていた可能性のある1つのパラメーター、page_icon です。このチュートリアルでは、ローカル画像、emoji、URL を使って Streamlit favicon を設定し、タブに実際に表示されるかを確認する手順を解説します。

page_icon が実際に制御するもの

Streamlit は、生成したページの中で app を描画します。st.set_page_config() 関数は、ブラウザタブで使用するアイコンと、一部のブラウザではブックマークで使用するアイコンを Streamlit に指定する page_icon 引数を受け取ります。これは HTML favicon の設定全体を制御する機能ではありません。Streamlit 自身が持つ、タブアイコン用のフックです。

HTML 仕様では、favicon は document の head にある rel="icon" link で宣言されます(WHATWG HTML spec)。page_icon を渡すと、その link の設定を Streamlit が自動的に処理します。favicon とは何か、どこに表示されるのかについて詳しく知りたい場合は、what a favicon is のガイドをご覧ください。

前提条件

단계별로 Streamlit favicon を設定する

ステップ1 — まず set_page_config を呼び出す

st.set_page_config() は、スクリプト内で最初に実行する Streamlit コマンドでなければなりません。その前に st.title() などの別の Streamlit 関数を呼び出すと、Streamlit はエラーを発生させます。app ファイルの一番先頭、import の直後に配置してください。

import streamlit as st

st.set_page_config(
    page_title="My Dashboard",
    page_icon="icon.png"
)

st.title("My Dashboard")

ステップ2 — page_icon に画像を指定する

page_icon には次の値を指定できます:

ブランドアイコンには、ローカルのPNGまたはSVGが最も信頼できる選択肢です。ファイルはアプリスクリプトと同じディレクトリに配置するか、streamlit runを実行する場所からの相対パスを指定してください。

ステップ3 — 画像がない場合はemojiを使う

プロトタイプを作っている段階なら、emojiが 가장 빠른選択肢です。Streamlitはそれをタブ用のアイコンに変換します:

st.set_page_config(page_title="Prototype", page_icon="📊")

社内ツールには便利ですが、ブランドには合いません。公開する準備ができたら、実際の画像ファイルに置き換えましょう。

ステップ4 — 適切なアイコンファイルを準備する

Streamlitは一般的な画像形式に対応していますが、ブラウザ間で最もよく表示されるのは、透明背景の正方形のPNGです。ロゴしかない場合は、マーク部分だけに切り出し、64×64または128×128 pxにリサイズしてください。画像からfaviconを作成する手順を解説したガイドで、切り出しと簡略化の両方の手順を確認できます。

他の用途でICOファイルが必要なら、PNGをMzu favicondlで変換できます。Streamlit自体はICOを必要としませんが、カスタムドメインでアプリを配信し、従来型のfaviconも使っている場合は、ICOを用意しておくと役立ちます。

ステップ5 — タブアイコンを確認する

アプリを実行してブラウザで開き、タブを確認してください。デフォルトのStreamlitアイコンがまだ表示される場合は、ハードリロード(Ctrl+Shift+RまたはCmd+Shift+R)を行ってください。ブラウザはfaviconを強い力でキャッシュするため、コードを変更した後も古いアイコンが残ることがあります。より詳細な確認リストについては、faviconが表示されない場合を参照してください。

よくある落とし穴

page_icon だけで対応できない場合

page_icon は、ブラウザータブに表示される Streamlit アプリ自体のアイコンを設定します。アプリをより大きなサイトに埋め込む場合や、Apple Touch icons と web app manifest が必要な場合は、それぞれ別の課題であり、周囲の HTML 側で対応します。完全なアイコン構成については、favicon best practices を参照してください。

配置場所さえわかれば、Streamlit favicon の設定は1行の変更で済みます。まずスクリプトの先頭に st.set_page_config(page_title=..., page_icon=...) を配置し、正方形の PNG または SVG を使って、hard refresh で確認してください。以上で、タブに表示される標準の Streamlit ロゴを自分のブランドアイコンに置き換えられます。