前回の続きです。
瞑想の履歴を可視化するダッシュボードを、Claude Codeと対話しながら作成してGitHub Pagesにデプロイしてみました。
背景
瞑想ログを俯瞰して見たいのでcsvに書き出し
前回作成した瞑想レポートは、一回のセッションの脳波解析だったので、それを期間でまとめるダッシュボードがほしかった。
とりあえずデイリーでトラッキングしたい指標をいくつか検討してcsvに書き出した。
Google Looker StudioをポチポチすることにAI時代遅れを感じた
最初はGoogle Looker Studio(旧Data Studio)でダッシュボードを作ろうとした。SpreadsheetのデータをそのままBIツールで可視化できるはずだった。
しかし、操作を覚えるのが面倒だった。UIをポチポチ触りながらにんげんが試行錯誤するのは、時代遅れを感じた. そもそもよくわからなくてイライラしてきた.
やっぱり今の時代はAIでしょ?!と思ったが、チャットをつかって対話的に行うためにはGoogleへの課金が必要そうだった. わたしは現在Claudeに課金しているので、二重課金はできない.
Claude codeでオシャレダッシュボードをポン!
そこで、巷で流行っているLLMでオシャレサイトをポン!するのをやってみた.
https://tsu-nera.github.io/satoru/
設計
機能一覧
- Daily View: 日別の瞑想データを折れ線グラフで表示
- Trend View: 週別/月別の集計データを棒グラフ + 累計折れ線で表示
- 指標グループ: Duration / Power / IAF / Focus をドロップダウンで切り替え
- 期間フィルタ: 1 Week / 1 Month / 3 Months / All
- 単位切り替え: Minutes / 炷(1炷 = 40分)
アーキテクチャ
[Google Spreadsheet] 瞑想ログM
↓
[GitHub Actions] 定期実行 (毎日 9:00 JST)
- download_meditation_log.py
- build_dashboard.py
↓
[GitHub Pages] 静的HTMLをホスティング
↓
[ブラウザ] ダッシュボード閲覧
技術スタック
- フロントエンド: 静的HTML + Chart.js (CDN)
- ビルド: Python(CSVをJSONに変換してHTMLに埋め込み)
- データソース: Google Spreadsheet → Google Sheets API
- デプロイ: GitHub Actions + GitHub Pages
Muse Premium サブスク かんぜんにりかいした
Muse Premium サブスクに課金すると、新たに2つのグラフが画面に表示される. 1
- Alpha Peak
- Brain Recovery Score
AIに相談しながら、大体ダッシュボードでも再現させることに成功したのでポロリする.
Alpha Peak (IAF: Individual Alpha Frequency)
Alpha PeakはMuse Appの機能名だが、その実態は Peak Alpha Frequency (PAF) 、または Individual Alpha Frequency (IAF) と呼ばれる指標。認知パフォーマンスや脳の覚醒状態を反映するとされ、神経科学研究で注目されている。2
計算方法
Alpha帯域(8〜12Hz)のパワースペクトルから、以下の2つの方式で算出できる:
- Peak方式: パワーが最大となる周波数
- CoG(Center of Gravity)方式: 重心法
CoG = Σ(f × P(f)) / Σ(P(f))
f: 周波数, P(f): パワースペクトル密度
私の実装では、左右半球ごとにPSDを平均化してからPAFを計算し、その平均をIAFとしている:
Left = (TP9 + AF7) / 2 → PAF_Left
Right = (AF8 + TP10) / 2 → PAF_Right
IAF = (PAF_Left + PAF_Right) / 2
半球ごとに平均化することでノイズが低減され、より安定したIAFが得られる。
Brain Recovery Score (Alpha Power)
アプリでは「Average Alpha Power」と表示されており、Alpha帯域のパワーを独自スケール(dBx)に変換したスコアと推測。
計算方法
Mind MonitorのAlpha列(Bels単位)から算出:
1. 4チャネルの平均を計算
Alpha_avg = (Alpha_TP9 + Alpha_AF7 + Alpha_AF8 + Alpha_TP10) / 4
2. Bels → dB変換
Alpha_dB = Alpha_avg × 10
3. 線形変換でスコア化
Score = 5.07 × Alpha_dB + 36.9
係数(slope=5.07, intercept=36.9)は、Muse AppのスコアとMind Monitorの値を比較して線形回帰で推定した. なお Muse AI Chatにきいたら過去10セッションと説明された.
これとは別にoffset方式も試したんだが、たとえばoffset=50としても、たまに40みたいな小さい値になるので、線形回帰のほうが正しそう.
禅定波羅蜜に精進します
禅定波羅蜜と炷(ちゅう)
ダッシュボードの名前を「禅定波羅蜜ダッシュボード」とした。禅定波羅蜜(ぜんじょうはらみつ)とは、仏教の六波羅蜜の一つで、心を静めて集中する修行のこと。
また、坐禅では1回の座禅を「1炷(いっちゅう)」と数える。1炷は線香1本が燃え尽きる時間で、約40分。週に何炷座れたかを可視化することで、修行のモチベーションを維持したい。
1日1時間の瞑想を50年継続して90歳で悟りを開く
果たして悟りを開くには出家して修行をしないといけないのだろうか?毎日10時間の瞑想を3年とか5年とかして数万時間の瞑想時間が必要か?
仮に、1日たった1時間の瞑想を1年コツコツ頑張れば365時間、3年で1095時間、30年で1万時間を突破だ。1万時間の法則だと、70歳でやっと一人前?
わたしは真面目にコツコツと頑張るところは強みだ。この強みを活かして、毎日コツコツと瞑想修行を積み重ねれば瞑想時間は増えていく。それを可視化することが今回の目的だ。
-
Amazon.co.jp: Muse S Athena: 脳感知ヘッドバンド - 瞑想の追跡とモニタリングのためのニューロフィードバックデバイス ↩︎
-
この前、1日で8炷坐ったあとにMuseでAlpha Peakを計測したら、わたし観測史上最低の値となった. 脳疲労なのか?ただ頭は坐禅が終わっても冴え渡った感覚がある. 継続調査が必要. ↩︎