PyCon JP 2024

実践Dash - 手を抜きながら本気で作るデータ可視化Webアプリの基本と応用
2024-09-28 , 20F Track1

概要

ビッグデータ分析の為のデータ可視化アプリケーションをDashで実装した際の知見とノウハウを紹介します.

Pandasのデータを元にシンプルなグラフで可視化する方法は勿論の事, 業務で使う際に検討・実装すべきことである,

  • 本番環境(クラウド)へのデプロイと公開
  • Dashアプリケーションの認証認可
  • 動的URLを用いたマルチページアプリケーションの実装

以上の実践的なノウハウについても実装を元に紹介します.

社内でのデータ利活用, プロトタイプ・PoC目的でのWebアプリケーション構築・運用でのノウハウが欲しい方におすすめします.

技術スタック(簡易版)

  • Dash
  • Pandas
  • Google Cloud(Cloud Run, Cloud Build, Artifact Registory)

本トークで話すこと

  • Dashでアプリケーションを構築する際の基本
  • Dashアプリケーションのデプロイおよびクラウドでの公開方法
  • Dashアプリケーションでの認証認可
  • マルチページ化他, 実践的な実装ノウハウ
  • 実際のData可視化事例

本トークで話さないこと

  • データ可視化の基本(Matplotlib, Seaborn, etc...)
  • データ分析の基本(Pandas, Numpy, etc...)
  • DevOpsおよびCI/CD

実践Dash - 手を抜きながら本気で作るデータ可視化Webアプリの基本と応用

データ可視化アプリを手早く開発するFramework「Dash」を使って実装・運用した際に得たノウハウを紹介します.

  • 本番環境(クラウド)へのデプロイと公開
  • Dashアプリケーションの認証認可
  • 動的URLを用いたマルチページアプリケーションの実装
  • Streamlitなど, 同様のWebアプリケーションフレームワークとの比較

以上の実践的なノウハウについても実装を元に紹介します.

Summary

私は野球データ, 主にメジャーリーグのデータ分析・AIを使った成績予測等を効率的に行うため, 公開データを用いてデータ可視化・分析を行うデータ基盤を開発しました.

開発したシステムの一部として, TableauやPowerBI, Looker StudioなどのBIツールではなく, Python製のWebアプリケーションを用いてデータ可視化を行いました.

Streamlitなど, いくつかの候補の中から「Dash」を選択し, 開発・運用をしましたがその際にいくつかの経験を得ました.

  • 本番環境(クラウド)へのデプロイと公開
  • Dashアプリケーションの認証認可
  • 動的URLを用いたマルチページアプリケーションの実装
  • Streamlitなど, 同様のWebアプリケーションフレームワークとの比較
  • そもそもBIツールで良いのでは?

これらはPython使いの興味関心は勿論のこと, すべてデータ基盤開発, 運用などで再現性がある話題であると認識しており, 本トークにて知見やノウハウを共有します.

Agenda

本トークで予定しているAgendaとなります.

  1. 自己紹介
  2. Dash基本編
    - Hellow World
    - Pandasとの連携
    - Plotlyのグラフを埋め込む
    - RESTful APIとの連携
  3. Dash応用編
    - Single PageからMulti Pageに作り変える
    - 認証認可を実装する
    - Google Cloud(Cloud Run)にデプロイする
  4. Dashとアレを比べる
    - DashとStreamlit
    - DashとBIツール
  5. 実際に作ったアプリの紹介
    - メジャーリーグデータの可視化
    - マルチページを使った実践的な運用
  6. 結び

Reference

本トークの前提となる過去資料は以下の通り.


Why did you choose this topic?

昨今, DashやStreamlitといった, 「JavaScriptやHTMLを書かなくてもPythonだけ書けば良いWeb Framework」が増えてきましたが,

・本番環境にどうやって出すのか?(デプロイ)
・ユーザー管理などどうやってやろう?(認証認可)
・SPA(Single Page App)ではなく, 可変のURLでページ分けをしたい(Multi Page App)

といった「実際に運用する時に困りがちなこと」について言及される機会は少ないと思っています.

この「実践的なノウハウ」を実装ベースで紹介できればと思い, この題材を選びました.

Knowledges and know-how the audience can get from your talk

・Dashを使ったアプリケーション実装の基本
・本番環境デプロイ, 認証認可および利用シーンに合わせたDashの実践的な実装・運用ノウハウ
・他のWeb FrameworkおよびBIツールと, どのように使い分ければよいかの知見

Prior knowledges speakers assume the audience to have

初心者・初学者にも伝わるトークをお送りしたいと思いますが以下の経験を積まれていると大変助かります.

【Must to have】
Beginnerレベルの方を想定.

・Django, Flask, FastAPIなどでWebアプリを構築し, Docker等でコンテナ化して動かした経験
・Jupyter, Pandas, 可視化ライブラリ(matplotlib, plotly他)を使ったデータ分析の経験
・plotlyもしくはdashを使ったことがある

【Nice to have】
Intermediateレベルの方を想定.

・AWS, Google CloudなどでPythonのアプリケーションを運用した経験
・Tableau, PowerBI, Looker Studio等のBIツールの利用経験
・Streamlit等, 他のPythonデータ可視化系Web Frameworkを使った経験

Audience experiment

Beginner

Language of presentation

日本語

Language of presentation material

日本語

外資系ITコンサル企業のマネジャー.

本業ではCloud(Google Cloud)関連のSIとコンサルティングおよび大規模システムのSREチームリーダーを担当.

個人としては前職以前のキャリアを活かして野球(MLBおよびNPB)のデータ分析, 成績予測およびこれらを本格活用するデータ分析基盤の開発・運用を行いながらエンジニアリングと野球データサイエンスの事例を各所で発表している.

Google Cloud Partner Top Engineer 2024受賞, PyConJPおよびデブサミでの登壇複数回.

推しのPythonはFastAPIとPandas, 推しのクラウドサービスはCloud RunとBigQueryで推しの野球選手は万波中正(北海道日本ハムファイターズ).