Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】From Data to Dashboard: Building Interactive Reports with Streamlit

2025年09月14日に「Dev.to」が公開したITニュース「From Data to Dashboard: Building Interactive Reports with Streamlit」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

PythonのStreamlitを使えば、データを手軽にインタラクティブなダッシュボードへ変換できる。本記事はStreamlitに焦点を当て、対話型の売上ダッシュボードを構築し、クラウドにデプロイする手順を解説する。初心者でも少ないコードでデータ可視化を実践できる。

ITニュース解説

このニュース記事は、データを分かりやすく、そして効果的に活用するための「インタラクティブなダッシュボード」の構築方法について解説している。特にPythonというプログラミング言語を使って、これを手軽に実現できる「Streamlit(ストリームリット)」というツールに焦点を当てている。

ビジネスの世界では、日々膨大なデータが生成されているが、ただデータを集めるだけではその価値を最大限に引き出すことはできない。データを分析し、そこから意味のあるパターンや傾向を見つけ出し、具体的な行動へと繋がる洞察を得ることが重要となる。この過程で大きな役割を果たすのが「データ可視化」だ。従来の静的なグラフやレポートだけでは、データの全体像を把握したり、特定の条件で深掘りして分析したりすることが難しい場合がある。そこで登場するのが、ユーザーが自分でデータの表示条件を変更したり、フィルターをかけたりできる「インタラクティブなダッシュボード」だ。これにより、意思決定者はリアルタイムでデータを操作し、より迅速かつ的確な判断を下すことが可能となる。

Pythonには、このようなインタラクティブなダッシュボードを作成するための優れたツールがいくつか存在する。記事では、「Streamlit」「Dash(ダッシュ)」「Bokeh(ボーケイ)」の三つが紹介されている。それぞれのツールには異なる特徴がある。 Streamlitは、少ないコード量で、しかもPythonの知識だけで素早くダッシュボードを構築できる点が最大の魅力だ。Pythonに慣れている開発者にとって直感的で扱いやすい。 Dashは、より複雑で複数ページにわたるWebアプリケーションを構築する際に高い柔軟性を提供する。Plotlyという強力なグラフ描画ライブラリを基盤としているため、詳細なカスタマイズが可能な美しいグラフを作成できる。 Bokehは、Webブラウザ上で動作する高度なインタラクティブグラフを作成するためのライブラリで、既存のWebアプリケーションにグラフを組み込む際に強みを発揮する。 今回の記事では、これらの中でも特に構築の速さとシンプルさを兼ね備えたStreamlitに焦点を当て、その具体的な使い方を解説している。

Streamlitを使った実例として、架空の「売上ダッシュボード」が作成されている。このダッシュボードの目的は、総売上や平均注文額といった主要な業績評価指標(KPI)を表示し、さらにユーザーが商品カテゴリでデータを絞り込んだり、時間ごとの売上トレンドを確認したりできるようにすることだ。 実際のコードを見ると、まず「streamlit」「pandas」「numpy」という三つのライブラリをインポートしている。これらはプログラムを動かすために必要な準備や機能を提供するものだ。streamlitはダッシュボードの表示、pandasは表形式のデータの操作、numpyは数値計算に使われる。 次に、st.set_page_configでダッシュボードのタイトルを「Sales Dashboard」に設定し、コンテンツを広々と表示するためのレイアウト(layout="wide")を指定する。そして、st.titlest.markdownを使って、ダッシュボードの大きなタイトルと説明文を表示する。 データは、この記事では実際のデータベースから取得する代わりに、numpyを使って架空のサンプルデータを生成している。load_dataという関数で、日付、商品カテゴリ、売上額といった情報を含む表形式のデータ(データフレーム)を作成し、@st.cache_dataという特別な指示を付けることで、一度読み込んだデータをメモリに保存し、ダッシュボードが高速に動作するように工夫されている。 ダッシュボードの左側には、ユーザーがデータを絞り込むための「フィルター」が配置されている。st.sidebar.headerでサイドバーに「Filters」という見出しを作り、st.sidebar.multiselectで商品カテゴリを選択するためのドロップダウンメニューを設置する。ここでユーザーがカテゴリを選択すると、それに基づいてデータがフィルタリングされる。 フィルタリングされたデータから、total_sales(総売上)とavg_order(平均注文額)という主要な数値が計算される。これらはst.metricという機能を使って、見やすい「メトリック」としてダッシュボードに表示される。例えば「Total Sales」というラベルの下に総売上額が表示される。 次に、売上の時系列トレンドを表示するために、フィルタリングされたデータを日付ごとに集計し、合計売上を計算する。これをst.line_chartを使って折れ線グラフとして表示することで、売上がどのように推移しているかを一目で確認できる。最後に、st.subheaderで「Detailed Data」という小見出しを設け、st.dataframeでフィルタリングされた生データを表形式で表示し、詳細を確認できるようにしている。 このように、Streamlitを使うと、わずかなPythonコードで、データ読み込み、フィルタリング、主要指標の表示、グラフ描画、そしてデータの詳細表示まで、インタラクティブなダッシュボードの主要な機能を実装できることがわかる。

このダッシュボードを動かすためには、前述の「streamlit」「pandas」「numpy」という三つのライブラリをあなたのコンピュータにインストールする必要がある。これらは「pip install」というコマンドを使って簡単に導入できる。

ダッシュボードが完成したら、次はそのダッシュボードを他の人と共有したり、Webブラウザからアクセスできるように「デプロイ」(公開)するステップに進む。記事では二つの方法が紹介されている。 一つ目は「Streamlit Community Cloud」を利用する方法だ。これはStreamlitが公式に提供している無料のホスティングサービスで、非常に簡単にデプロイできる。まず、作成したPythonコード(sales_dashboard.py)と、必要なライブラリを記載したrequirements.txtファイルをGitHubのリポジトリにアップロードする。次に、Streamlit Community CloudにGitHubアカウントでサインインし、新しいアプリケーションを作成する際に、GitHubリポジトリのURLと、実行するPythonファイルを指定するだけで良い。数分後には、ダッシュボードがWeb上に公開され、共有可能なURLが発行される。この方法は、Streamlitのダッシュボードを手軽に公開したい場合に最適だ。 二つ目は「Render(レンダー)」というサービスを利用する方法だ。Renderもまた、Webアプリケーションをデプロイするためのクラウドプラットフォームである。Streamlit Community Cloudと同様に、まずはコードをGitHubにアップロードする。次に、Render上で「Web Service」を作成し、ビルドコマンドとしてpip install -r requirements.txtを設定して必要なライブラリをインストールさせる。そして、スタートコマンドとしてstreamlit run sales_dashboard.py --server.port $PORT --server.address 0.0.0.0を指定する。これは、Streamlitアプリケーションを指定されたポートとアドレスで起動させるためのコマンドだ。これらの設定を終えてデプロイすると、Renderがアプリケーションをビルドし、公開用のURLを提供してくれる。RenderはStreamlit専用ではないため、より汎用的なWebアプリケーションのデプロイにも利用できる。

なぜStreamlitがこの種のダッシュボード構築にこれほど適しているのだろうか。その理由は主に三つある。第一に、非常に「迅速なプロトタイピング」が可能であることだ。記事の例でも示したように、たった数十行のコードで実用的なダッシュボードを構築できる。これにより、アイデアをすぐに形にし、試行錯誤を繰り返すことができる。第二に、「Pythonネイティブ」であること。Streamlitは完全にPythonで書かれており、ダッシュボードの構築にJavaScriptやHTMLのようなWeb開発言語を学ぶ必要がない。Pythonのデータ分析スキルを持つ人にとって、非常に低い学習コストでWebアプリケーション開発の世界に足を踏み入れることができる。第三に、「クラウドフレンドリー」であること。Streamlit Community Cloudのようなサービスを利用すれば、コードをGitHubにプッシュするだけで、ワンクリックでクラウド上にデプロイできる。これにより、技術的なデプロイの複雑さに悩まされることなく、作成したダッシュボードを簡単に共有できる。

もちろん、DashやBokehもそれぞれの強みを持つ素晴らしいツールであり、特定の要件や複雑なWebアプリケーションを構築する場合には非常に強力な選択肢となる。しかし、もしあなたが素早くデータから洞察を得て、それをインタラクティブな形で共有したい、あるいはPythonだけでWebアプリケーションを試してみたいと考えているならば、Streamlitは間違いなく最適なツールの一つだ。わずかなコードで、生データを実用的でインタラクティブなダッシュボードに変え、すぐに他の人と共有できるようになる。これはシステムエンジニアを目指す上でも、データ活用の基礎を学ぶ上で非常に価値のあるスキルとなるだろう。

関連コンテンツ

関連IT用語