【概要】
DASHはPythonで書かれたウェブアプリケーションフレームワークで、データ分析等にも使われています。グラフやデザインはPlotlyやDash Bootstrap Componentsなどライブラリも使用できるため柔軟にカスタマイズも可能です。順次コードを紹介していくつもりです。今回はアプリについての説明になります。
今回紹介するダッシュボード【動画】
DASHはおそらくデータ分析で主に使われているのでファイルからデータを読み込んで様々なグラフで分析に用いているようです。
DASHでのリアルタイム処理の記事が少なく、コールバック出力処理が同一IDは一つまでしか使えない制限等もあり、実装にやや癖があります。(DASHはリアルタイムには向いていないかもしれませんFlaskとかの方がいいと思います)
アプリについて【実装する機能】
(テーマ:PC情報をGUIで可視化してみる)
-
通信中IPアドレス、ポートを取得する
-
プロセスやそれを起動している親プロセスも取得する
-
通信先サーバーの位置情報を表示する
-
ダッシュボード風なレイアウトにする
-
機能とレイアウトを構造化し、それぞれ独立して動作させる
-
リアルタイム(5秒間隔)で全情報を更新する
ファイルの階層
.
├── app.py # 本体
├── assets
│ └── style.css # CSS
└── src
├── callbacks
│ ├── update_layout.py # 処理1
│ ├── update_interval.py # 処理2
│ └── ………etc
│
├── components
│ ├── layout.py # レイアウト
│ └── graph.py # コンポーネント増えたら追加
│
└── utils
機能を追加するに当たってコンポーネントだけでも増加してしまうので、
だいたい上記のように本体とコンポーネント、コールバック処理等全てクラス別に分離させています。
今回のアプリは配置換えや機能の入れ替えを実装しているので、構造化しておかないと機能毎に独立して動作させることが難しくなります。
上記は現在の構造になります。(callbacksが処理の中身/省略してます)
Qiitaで概要編追記しました。
note上ではマークダウンが使えないので、ここはとりあえずアプリ置き場にして、今後技術系の記事はQiitaで紹介していきたいと思います。
【続き】