【Dash】PythonだけでダッシュボードWebアプリが開発できる

【Dash】PythonだけでダッシュボードWebアプリが開発できる プログラミング

「ダッシュボードのWebアプリを作成したい」
「WebのスキルなしでリッチなUIの画面を作成したい」

このような場合には、Dashがオススメです。
この記事では、Dashについて解説しています。

本記事の内容

  • Dashとは?
  • Dashのシステム要件
  • Dashのインストール
  • Dashの動作確認

それでは、上記に沿って解説していきます。

Dashとは?

Dashは、ダッシュボード作成のためのPythonライブラリと言われることがあります。
ダッシュボードは、データの可視化を行うアプリケーションのことです。

確かに名前の通りにDashは、ダッシュボード作成が可能です。
Pythonをコーディングするだけで、このようなWebアプリを開発できます。

本来、Webアプリには以下のスキルが必要となります。
クライアント側の話です。

  • html
  • css
  • JavaScript

これらのスキルを身に付けるのは、そんなに甘くはありません。
だから、Webアプリケーション開発の敷居は決して低いとは言えません。

しかし、次の職種の人たちこそダッシュボードを作成したい人たちです。
前提条件として、Pythonを触ることはできるでしょう。

  • データサイエンティスト
  • 機会学習エンジニア

社内・社外プレゼンでも、ダッシュボードアプリがあれば説明がスムーズに進むでしょう。
さらには、Webエンジニアに開発を依頼することすらも不要になるかもしれません。

実際、DashはMLやデータサイエンスのWebアプリケーション作成のために利用されています。
GitHub上でも次のような評価となります。

また、Dashの技術的なことにも触れておきましょう。
Dashは、主に以下の技術をベースにしています。

  • Plotly.js
  • React
  • Flask

Plotly.jsについては、次の記事で説明しています。

Flaskについては、次の記事で解説しています。

これらは、Reactも含めてWebアプリを作成するために必要な技術です。
そのような技術をフルに活かして、Dashはダッシュボード作成を可能にしています。

なお、Dashはダッシュボードの作成が専用という訳ではありません。
次のようなUIをPythonコードだけで表現可能です。

  • ドロップダウン
  • スライダー
  • グラフ

これらの組み合わせで、ダッシュボードが表現されることになります。
その意味では、リッチなUIをPythonで表現したい人すべてがDashの対象者になります。

以上、Dashについて説明しました。
次は、Dashのシステム要件を説明します。

Dashのシステム要件

現時点(2022年6月末)でのDashの最新バージョンは、2.5.1となります。
この最新バージョンは、2022年6月14日にリリースされています。

サポートOSに関しては、以下を含むクロスプラットフォーム対応です。

  • Windows
  • macOS
  • Linux

サポート対象となるPythonのバージョンは、以下となっています。

  • Python 3.6
  • Python 3.7
  • Python 3.8
  • Python 3.9

Python 3.10がありませんが、おそらくテストしていないだけでしょう。
Python 3.9で動くモノは、Python 3.10でも問題なく動きます。

あと、Python 3.7以降を利用しましょう。
以下は、Python公式開発サイクルです。

バージョンリリース日サポート期限
3.62016年12月23日2021年12月23日
3.72018年6月27日2023年6月27日
3.82019年10月14日2024年10月
3.92020年10月5日2025年10月
3.102021年10月4日2026年10月

これを見ればわかるように、Python 3.6は2021年末でサポート切れとなっています。
そのため、Python 3.6の利用はオススメできません。

まとめると、現時点でのDashのシステム要件はPython 3.7以降と言えます。

以上、Dashのシステム要件を説明しました。
次は、Dashのインストールを説明します。

Dashのインストール

検証は、次のバージョンのPythonで行います。

$ python -V
Python 3.10.2

まずは、現状のインストール済みパッケージを確認しておきます。

$ pip list
Package    Version
---------- -------
pip        22.1.2
setuptools 62.6.0
wheel      0.36.2

次にするべきことは、pipとsetuptoolsの更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。

python -m pip install --upgrade pip setuptools

では、Dashのインストールです。
Dashのインストールは、以下のコマンドとなります。

pip install dash

Dashのインストールは、少し時間がかかります。
終了したら、どんなパッケージがインストールされたのかを確認します。

$ pip list
Package              Version
-------------------- -------
Brotli               1.0.9
click                8.1.3
dash                 2.5.1
dash-core-components 2.0.0
dash-html-components 2.0.0
dash-table           5.0.0
Flask                2.1.2
Flask-Compress       1.12
itsdangerous         2.1.2
Jinja2               3.1.2
MarkupSafe           2.1.1
pip                  22.1.2
plotly               5.9.0
setuptools           62.6.0
tenacity             8.0.1
Werkzeug             2.1.2
wheel                0.36.2

Dashは、様々なパッケージに依存しています。
Flask、Jinja2、plotlyを確認できます。

様々な技術を集約していることが、依存パッケージからもわかります。
だからこそ、簡単にダッシュボードが作成できるのでしょう。

以上、Dashのインストールを説明しました。
次は、Dashの動作確認を説明します。

Dashの動作確認

Dash公式
https://dash.plotly.com/layout

上記の公式にあるサンプルを利用します。
タイトルを「Hello Dash」から「Dash動作確認」に変更しています。
それ以外は、サンプルのモノそのままです。

test.py

from dash import Dash, html, dcc
import plotly.express as px
import pandas as pd

app = Dash(__name__)

# assume you have a "long-form" data frame
# see https://plotly.com/python/px-arguments/ for more options
df = pd.DataFrame({
    "Fruit": ["Apples", "Oranges", "Bananas", "Apples", "Oranges", "Bananas"],
    "Amount": [4, 1, 2, 2, 4, 5],
    "City": ["SF", "SF", "SF", "Montreal", "Montreal", "Montreal"]
})

fig = px.bar(df, x="Fruit", y="Amount", color="City", barmode="group")

app.layout = html.Div(children=[
    html.H1(children='Dash動作確認'),

    html.Div(children='''
        Dash: A web application framework for your data.
    '''),

    dcc.Graph(
        id='example-graph',
        figure=fig
    )
])

if __name__ == '__main__':
    app.run_server(debug=True)

上記コードは、Pandasライブラリを利用します。
未インストールであれば、インストールする必要があります。

pip install pandas

準備ができたら、ファイルを次のように実行します。

python test.py

実行すると、次のように表示されます。

$ python test.py
Dash is running on http://127.0.0.1:8050/

 * Serving Flask app 'test' (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: on

この時点では、Dashアプリは起動済みです。
ブラウザで次のURLにアクセスします。

 http://127.0.0.1:8050/

アクセスすると、次のような画面が表示。

ここまで確認できれば、Dashの動作確認はOKです。
以上、Dashの動作確認を説明しました。

タイトルとURLをコピーしました