月別アーカイブ: 2025年12月

PHPでFitbit_備忘録2

前回,Fitbitから得られる歩数データをPHPで365日分取得しcsv形式でダウンロードするプログラムの開発と,24時間データ(Intraday)を取得するために,Googleに申請フォームを送った.審査に数週間~数か月かかるということで,その間に各種指標の1日1個データを取得するプログラムを歩数データ取得用プログラムをベースに改造する.

過去3年分の安静時心拍数の推移
・365日分取得できるため,3回に分けて取得した.ChatGPTもグラフを読めているため,AIに健康管理してもらうアプリもできそうだ.
・ストレスイベントを越えてから,RHR70~80が,54~66bpmまで落ちた!

1. 歩数・消費カロリー取得用
・login(リンク),STEP(リンク),CALLO(リンク)はこちら.
・ユーザー側も自身の歩数データをcsv形式でDLできるようにした.
・各種指標で混ざらないように,csvの保存場所を階層ごとに分けた.
・Fitbitアプリと一致.これも1時間ごとにデータを取得できたんだ.

Fitbitアプリ更新した瞬間にPHPの波形も更新されてて凄いな.Pythonの時は,Too Many Requestで怒られてたから,リアルタイムの反映は難しかったんだよなぁ.

2. RHR・RMSSD取得用
・RHR(リンク),daily RMSSD(リンク)はこちら.
RMSSDは30日ずつしか取得できないようだ.なので内部処理で13回(365日分)呼んで表示した.この方法だと,複数回読んでいるため取得漏れの可能性がある.
・Fitbitで取得するRMSSDは,daily(1日分)とdeep(深睡眠)が取得可能.そのため,csvでダウンロードした時には,下記画像のように両方表示するようにした.

3. 睡眠データの取得
・Sleep(リンク)はこちら.
・こちらもグラフ上ではMainLenのみだが,csv上では睡眠効率なども取得している.睡眠に関しては,単に時間だけでなくベンチマーク(レム・ノンレム等)も表示した方がいいのかな?指標が多くなりすぎてかえって情報過多になる?

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

次回以降開発すること
・本家のFITBITSディレクトリ内のプログラムも同様に改造.
・参加者同士でcsvデータが混ざるため,IDごとにディレクトリを作成・保存.
・login画面の改造を行う.OptyXのサイトに飛ぶ,loging後の画面改造を行う.
・.htaccessを追加する.csvデータを保護する.

phpを使ったFitBitデータの取得 進捗2

前回、睡眠に関する指標を閲覧できるようにした。
睡眠に引っ張られすぎていたがそもそもHRVを測りたいのだ。(安静時心拍もあるといいかも)
ということで、今回はHRVの取得と各条件の実験期間である14日間のデータをまとめてとれるようにすることを目的とした。
14日分のデータを簡単に見れるようにすることはできた。
ただ、サイトの細かいところを直していたら

Fitbit API error (HTTP 429): { “error”: { “code”: 429, “message”: “Resource has been exhausted (e.g. check quota).”, “status”: “RESOURCE_EXHAUSTED” } }

とかいうエラーが出てきやがった。どうやらデータの取得数には上限(1日の上限?と短期間取得の上限?)があるらしく頻繁な更新はあまりよくないようだ。ほかのユーザーのものも併せて見れないとしたら非常に不便なため、1日1日データを取得するのではなく14日間のデータを範囲取得することにした。

いいじゃんいいじゃん
日付ごとにしっかりと数値が出ている。それと、一日分のデータもこのサイトだけで見れるようにした。日付のボタンを押すと前回作った一日分のデータの表示の仕方で一日のデータが細かく見れるようにもできた。(超いい感じ)
ダッシュボード(今後はメインメニューと呼ぶ)ももう少し見やすくしてみた。

全部日本語にしてやったぜ!一日分のデータのみを見れるものも一応全部作ってみた。それとcsvファイルを取得することもできるようにした。期間指定ができると便利なので追加した。何回かファイルをダウンロードしたところ30日以上のデータを取得しようとするとエラー?を吐いた。連続してデータ取得できるのは30日間が限界かも(この辺もChatGPTに聞いたら改善できるかも?)

いよいよ次は自動でログインできるようにするフェーズに移ろう。cronについてはいまだに未知数なことが多い、しかもサーバーの管理画面から登録する必要があるとか。この辺は全部先生に聞かなければいけないなぁ。まぁ大丈夫だろう年明けに聞いて授業開始日までに仕上げられれば実験が1月中に開始できるぞ(被験者が集まれば)。
作ってて楽しくなってきたのでちょこちょこできそうなことをやってFitBitからとれるデータ以外にももっといろんなものが見れるようにしよう(先生がやってた食事の写真から解析するやつとか)。食事の写真を撮って大まかなカロリーとか出せたら(chatGPTで)管理しやすそうだけどできんのかな?要検証だ。

AnimationRigging

Unity公式の説明サイト わかるかいこんなもんで。
かめくめさんのサイトはわかりやすいなぁ。。。
Rig Builder・・・キャラクタのTopにつける。エフェクタが設定できるようになる。
Rig・・・スケルトンと同階層にObject作ってアタッチする。それをRig Builderに登録する。
Bone Renderer・・・Topにつけるらしいが,ボーン表示されん。あ,Transformに表示したいボーン入れなきゃいけないのね。表示された。
Rig Transform・・・なるほど,これをつけるとRigの親になるのね。
Blend Constraint・・・ややこし。しかし確かに動く。この配置が基本ということね。
ChainIKConstraint・・・なにに使うんだ,鎖?ヒモ?
Damped Transform・・・揺れるものに?DynamicBoneに類似。なるほど確かにぃ

Multi Aim Constraint・・・何に使うかわからんなぁ
Multi Parent Constraint、Multi Position Constraint、Multi Rotation Constraintと続くが使い所がちょっと。。。
Override Transform・・・ソースのTransformをターゲットに反映させる。これはちょっと使えそうだね。
Twist Collection・・・2022.3.32で延々動かない。何故だぁ!2023.2.20にするとあっさり動くのであった。なるほどね。まぁたしかにね。

DAZモデルでも試すべくイケメンを作り直す。が、動かない。DAZは上腕や前腕に、TwistBoneが入っているがそれが原因か?と思ったが、そうではなく「モデルにも髪の毛にもheadがあり、IKを解決できない」というエラーで髪の毛側の名前を変えると無事動いた。名前が大事らしい。改めてよく見るとDAZには顔ボーンが山程入っている・・・。これ動かせば表情モーフ不要なのでは。ボーン制御にすると何かいいことあるのかなぁ?モデルで共通制御にできるか。

ここまではまぁ順調。姿勢と目線IKがほしいよなぁ。あれ!?かめくめさんのサンプル終わっちゃった。ということは。。。ほいだらこれ(「Animation Riggingでキャラがターゲットを見続け上半身も連動する挙動を実装する」)行こうか。目線のコントロールにはMultiAimConstraintを使うのか・・。なるほど、肩に手を添えると「俺たち友達だろ?」みたいに見えなくもない。Chestにも反映させて胴から回すこともできる。体の向きごと変わると、「なぁ、友達だろ!?金貸せよ。」「やめてよ・・」みたいな雰囲気も出てくる。これはCGキャラクタに反映されるノンバーバルコミュニケーションの研究とも言える(?)。その際、Rigの構成順序は、Chest→Head→HandとしないとターゲットへのIKが適切に処理できなくなる(手の位置がズレるなど)。Rigは入れ込む順序が大事

・・このニィちゃんのなで肩が気になる。これもMultiAimConstraintで直せる。設定のUpAxisが回転の軸の上方向、AimAxisはターゲットの方向と思われる。ターゲットボーンの方向は、キャラクタ読み込み画面のRig>Configureで表示される。lCollar(左肩)の場合、緑(Y)がUpAxis、赤(-X)がAimAxisとして適切であろう。肩が上がって正常な絵面になった。こうしてみると前の絵は肩が下がりすぎて不気味だ。しかし今度は肩を上げた後遺症で拳位置が変わってしまった。

これは肩と上腕にMulti-RotationConstraintをつけて、Sourceで角度を制御するのが良さそうであった。肩で上げた角度を上腕で戻すのだが、基本角度指定上書き扱いなので、上腕側の手のフリがなくならないようにAxesをZのみにするのが良いようだ(ややこし)。ようやくまともな感じになってきたような。いろいろやって、HumanBodyBone制御とは両立せず、AnimationRiggingで姿勢を整えたほうが確実らしい事が理解できた。まぁTwoeBoneIKとMultiAimConstraintで大抵の動作はイケそうである。

音楽療法その1

グラフにしよう!
・・・出来ないんだが?
なんで?心拍数は出来たけど脳波が出来ない・・・
同じやり方なのにぃ!

きっと何かがダメなんだろうな・・・
助けてGPT!!

神すぎる。GAFAMは時代遅れ、ってコト!?OpenAIのOを入れろ!!

α波が下がってる
β波は上がってる
γ波も上がってる
θ波も上がってる

以下GPT様のまとめ。僕がやってるときは使いたいコードが無くてムカついてたけどそれでもフローに入れた(かも)ので良い兆候かも。

やったよ!
Theta / Beta / Gamma を Alpha と同じ形式で、
① 時系列
② ベースライン5分 vs 課題15分
の両方を可視化した

  • Alpha ↓
  • Theta ↑
  • Beta ↑↑
  • Gamma ↑

これはかなり典型的な

「集中型フロー(cognitive flow / creative flow)」

リラックス一辺倒じゃなくて
考えながら没入している状態

追記:作成風景の動画
https://youtu.be/7VwXResHFFY?si=twsY9_OfR84DE3zT

OptyX

English:
“This server-based research application aims to support self-optimization of health behaviors by integrating Fitbit-derived physiological and behavioral data with an AI conversational agent. Participants can review visualized data on physical activity, sleep, heart rate variability, and resting heart rate, and receive personalized, dialogue-based feedback generated by an AI agent. The goal of this study is to promote awareness, reflection, and sustainable improvement of daily health behaviors and well-being.”

日本語:
「本サーバアプリケーションは,Fitbitから取得される生理・行動データとAIエージェントによる対話型フィードバックを統合し,健康行動の自己最適化を支援することを目的としています.参加者は,身体活動,睡眠,心拍変動,安静時心拍数などの指標を可視化して確認し,AIエージェントから個別化された助言を受ける.本研究の目的は,日常生活における気づきとフィードバックを促し,持続可能な健康行動およびWell-beingの向上を支援することです.」

Terms of Service

1. Purpose:
This service is provided for academic research conducted at Bunkyo Gakuin University. The purpose of this study is to examine self-optimization of health behaviors by integrating Fitbit-derived physiological and behavioral data with AI-based personalized feedback.

2. Eligibility:
Participation is voluntary. Only registered participants who have provided informed consent approved by the university ethics committee may use this service.

3. Use of Data:
Data collected through this service, including Fitbit activity data, sleep data, heart rate variability, and resting heart rate, will be used solely for academic research purposes.

4. Responsibilities of Users:
Participants agree to provide accurate information and to use the system only for its intended research purpose. Any misuse of the system is prohibited.

5. Limitation of Liability:
This service is provided “as is” for research purposes. The research team is not responsible for any direct or indirect damages resulting from the use of this service.

6. Changes to Terms:
These terms may be updated in accordance with research needs and legal requirements. Participants will be notified of any significant changes.

利用規約

1. 目的
本サービスは,文京学院大学における学術研究のために提供されます.本研究の目的は,Fitbitから得られる生理・行動データとAIによる個別化フィードバックを統合し,健康行動の自己最適化について検討することです.

2. 対象
参加は任意です.大学倫理審査委員会の承認を受けた研究に対し,事前にインフォームドコンセントに同意した登録参加者のみが利用できます.

3. データの利用
本サービスを通じて収集されるFitbitの活動量,睡眠,心拍変動,安静時心拍数などのデータは,学術研究目的にのみ使用されます.

4. ユーザーの責任
参加者は正確な情報を提供し,本サービスを研究目的の範囲内で利用することに同意します.不正利用は禁止されます.

5. 免責事項
本サービスは研究目的のために「現状のまま」提供されます.研究チームは本サービスの利用に起因する直接的または間接的な損害に対して責任を負いません.

6. 規約の変更
本規約は研究上の必要や法的要件に応じて改訂される場合があります.重要な変更がある場合は参加者に通知します.


Privacy Policy

1. Data Collected
We collect Fitbit-derived data including physical activity data(e.g., steps, active minutes, calories burned), sleep data(e.g., sleep duration, sleep efficiency, sleep stages),
heart rate, heart rate variability, resting heart rate,and intraday (24-hour) heart rate and activity data at aminute-level resolution, as well as application usage logs.

2. Purpose of Data Use
The collected data will be used exclusively for academic research to study self-optimization of health behaviors and to develop AI-based support systems for improving well-being.

3. Data Storage and Security
All data are stored securely on university servers hosted in Japan (Sakura Internet). Access is restricted to the research team. Data are encrypted and anonymized before analysis.

4. Data Sharing
No personal data will be shared with third parties. Only aggregated, anonymized results will be published in academic papers or presentations.

5. Participant Rights
Participants may withdraw from the study at any time. Upon withdrawal, their personal data will be deleted from the system.

6. Contact
For questions about data privacy, please contact the research team at Bunkyo Gakuin University.

プライバシーポリシー

1. 収集するデータ
本研究では,Fitbitから取得される身体活動データ(歩数,活動時間,消費カロリー等),睡眠データ(睡眠時間,睡眠効率,睡眠段階等),心拍数,心拍変動,安静時心拍数に加え,24時間の心拍数および活動量(日内変動データ)を分単位で収集します.
また,アプリケーションの利用ログも収集します.

2. データ利用の目的
収集したデータは,健康行動の自己最適化およびWell-being向上を目的としたAI支援システムの検討を行う学術研究にのみ利用されます.

3. データの保存と安全性
すべてのデータは日本国内の大学サーバ(さくらインターネット)に安全に保存されます.アクセスは研究チームに限定され,分析前にデータは暗号化・匿名化されます.

4. データの共有
個人データが第三者に提供されることはありません.学術論文や発表では匿名化・集計された結果のみが公表されます.

5. 参加者の権利
参加者はいつでも研究から撤退できます.撤退後はその個人データはシステムから削除されます.

6. 問い合わせ先
データプライバシーに関する質問は,文京学院大学の研究チームまでご連絡ください.