実践Dash - 手を抜きながら本気で作るデータ可視化Webアプリの基本と応用
Dashで手軽にデータ可視化アプリを作ろう
Pythonエンジニアの皆さん、データ可視化アプリケーションを手軽に作りたいと思ったことはありませんか?今回は、Plotly社が開発したオープンソースのフレームワーク「Dash」をご紹介します。Dashを使えば、HTMLやJavaScriptの知識がなくても、Pythonだけでインタラクティブなウェブアプリケーションを作ることができます。
Dashの基本
Dashの基本は非常にシンプルです。1つのPythonファイルで動くアプリケーションを作ることができます。pandasでデータを読み込み、plotlyで可視化し、それをDashのコンポーネントとして組み込むだけです。特徴的なのは「callback」機能で、これを使うことでインタラクティブな要素を簡単に実装できます。
コード例
簡単なグラフであれば、このファイル程度のコード量でグラフを表示することが可能となります。
from dash import Dash, html, dcc, callback, Output, Input
import plotly.express as px
import pandas as pd
df = pd.read_csv("Batting.csv")
app = Dash()
app.layout = [
html.H1(children="Dash App for Baseball", style={"textAlign": "center"})
dcc.Dropdown(df.playerID.unique(), "ohtansh01", id="dropdown-selection"),
dcc.Graph(id="hraph-content"),
html.P("Sample data is \"Lahman Baseball Database"", style={"textAlign": "center"})
]
@callback(
Output("graph-content", "figure"),
Input("dropdown-selection", "value")
)
def update_graph(value):
dff = df[df.playerID==value)
return px.bar(dff, x="yearID", y="HR")
if __name__ == "__main__":
app.run(debug=True)
応用と実践
基本を押さえたら、次は応用編です。認証認可の実装やクラウドへのデプロイなど、実用的なアプリケーション開発に必要な要素を学びます。例えば、Docker化してGoogle Cloud Runにデプロイする方法などもあります。
StreamlitとDashの比較
同じくPythonのLow-codeフレームワークであるStreamlitとの比較がよくされます。どちらも長所短所があり、用途に応じて使い分けるのが良いでしょう。Dashはデータ可視化に強く、マルチページアプリケーションの構築が可能です。一方、StreamlitはインタラクティブなアプリケーションやAIチャットボットの作成に向いています。
まとめ
Dashは手軽にデータ可視化アプリケーションを作れる強力なツールです。しかし、本格的な開発になると認証や運用面での課題も出てきます。Low-codeツールを選ぶ際は、他の選択肢も含めて慎重に検討することが大切です。
Dashを使えば、データサイエンティストやアナリストが自分のアイデアを素早くプロトタイプ化し、共有することができます。
ぜひ一度試してみてはいかがでしょうか。