育休に入ってから運動不足がやばいと感じています。AIに自分の運動データをうまく可視化してもらって、自分の尻をたたきたいと思いました。そのためにはまず素材となるデータが必要です。
iPhoneのヘルスケアアプリには毎日の歩数や心拍数が自動で蓄積されています。中身をExcelやNumbersでまとめて見たいと思って調べてみたのですが、公式機能だけでは期間指定でCSVに書き出せませんでした。
ショートカットアプリを使えば自作できると知って試したものの、アクションの並べ方でなかなか詰まりました。最終的に動いた構成を、画面のスクショ付きで残しておきます1。
この記事でわかること
- iPhone標準の「ショートカット」アプリで、ヘルスケアの歩数データをCSV化する手順
- 期間(開始日〜終了日)を毎回選べるようにする組み方
- ショートカット初心者がいちばん詰まる「アクションの順番」の考え方
環境・前提
- iPhone(iOS 17以降)
- 標準アプリ「ショートカット」「ファイル」が使える状態
- ヘルスケアに歩数データがすでに記録されていること
いちばん詰まったポイント:日付の入力は先頭に置く
最初は「ヘルスケアからサンプルを取得 → CSVに整形」という順でアクションを並べてみたのですが、実行してみると「期間を毎回選びたいのに、選ぶタイミングがない」という状態になってしまいました。
しばらく格闘した末に気づいたのは、どうもショートカットは上から下に順番に処理されるので、ユーザーに入力させたい値は先頭に置く必要があるようです。日付を後から差し込もうとしても、ヘルスケア取得アクションが先に動いてしまうので渡せません。
結局、構成をひっくり返して「日付ピッカーを2回 → その範囲でヘルスケア取得 → CSV化」の順にしたら一発で動きました。ショートカットは見た目がブロックパズルのようでとっつきやすいのですが、流れを意識しないと詰まりますね……。
完成形のショートカット(歩数データ取得)
ショートカットの一覧では、こんな感じで「歩数データ取得」というタイルになります。

ブロックの並びはこのようになっています。
| 順番 | アクション | 役割 |
|---|---|---|
| 1 | 入力を要求(日付) | 書き出し開始日を選ぶ |
| 2 | テキスト+テキストから日付を取得 | 開始日を日時として確定 |
| 3 | 入力を要求(日付) | 書き出し終了日を選ぶ |
| 4 | テキスト+テキストから日付を取得 | 終了日を日時として確定 |
| 5 | 日付に1日を追加 | 終了日を含めるよう範囲を1日後ろにずらす |
| 6 | ヘルスケアサンプルを検索 | 期間内の歩数を「日ごと」に集計して取得 |
| 7 | 各項目を繰り返す | 1日ぶんずつ処理 |
| 8 | テキスト | 日付,値 の1行を作る |
| 9 | テキストを改行で結合 | 全行をまとめてCSV本体にする |
| 10 | 名前を変更 | 歩数_開始日-終了日.csv というファイル名にする |
| 11 | ファイルを保存 | ファイルアプリに書き出す |
手順1:新しいショートカットを作る
ショートカットアプリを開いて画面下の「ショートカット」タブから右上の「+」を押します。名前は「歩数データ取得」のように、自分が後から見てわかるものにしておくと迷いません。
手順2:日付の入力欄を先頭に2つ置く
「アクションを追加」から 「入力を要求」 を検索して追加します。入力タイプを「日付」にして、質問文は「書き出し開始日を選んでください」にしました。実行するとこのようなカレンダーが出ます。

同じ要領で、もう1つ「入力を要求」を追加して終了日を選ばせます。

それぞれの直後に「テキスト」アクションで 00:00:00 を置き、「テキストから日付を取得」で結合しておくと、時刻が0時に揃った日時として扱えます。先頭部分のアクションの並びはこうなります。

手順3:終了日に「1日を追加」して範囲を含める
ヘルスケアの期間指定は「開始日 ≦ 〜 < 終了日」というふるまいで、終了日当日のデータが取りこぼされがちです。これを避けるために、終了日のあとに 「日付を調整」アクションで1日を追加 しておきます。最初は時刻を0時に揃えるだけで済むと思っていましたが、終了日の歩数が出てこなくて詰まり、1日足すことで解決しました。
手順4:ヘルスケアサンプルを検索する
「ヘルスケアサンプルを検索」アクションを追加します。設定はこうしました。
- 種類:Steps(歩数)
- 開始日:上で作った「日付」と「調整済みの日付」の範囲内
- 単位:歩
- グループ分け:日
- 並び順序:開始日/古い順
- 制限:オフ
ポイントは 「グループ分け」を「日」にする ことです。これをしないとサンプルが細切れに返ってきて、1日ぶんが何十行にも分かれてしまいます。日でグループ化すれば1日1行にまとまり、CSVが扱いやすくなります。

初回実行時にヘルスケアへのアクセス許可を求められるので、許可してください。許可しないとデータが0件で返ってきて、原因がわかりにくく詰まりがちです。
手順5:1行ずつテキスト化して改行で結合する
「各項目を繰り返す」アクションで、取得したサンプルを1件ずつ処理します。ループの中には、次の3つのアクションを順に並べました。
- 「開始日を繰り返し項目から取得」で日付を取り出します
- 「値を繰り返し項目から取得」で歩数を取り出します
- 「テキスト」アクションで
開始日,値という1行を組み立てます

ループを抜けたあと、「テキスト」アクションを「改行で結合」モード で使い、繰り返しの結果をひとつのCSV本文にまとめます。最初は「変数に追加」アクションでループ内に1行ずつ足していく組み方を試しましたが、改行が入らず1行に全部くっついてしまいました。「繰り返しの結果を改行で結合」のほうがシンプルで確実です。

手順6:ファイル名を自動で組み立てて保存する
「名前を変更」アクションで、結合済みのテキストに 歩数_{開始日}-{調整済みの日付}.csv という名前をつけます。日付の変数を直接差し込めるので、実行のたびに 歩数_2026-04-19-2026-04-26.csv のように期間がそのままファイル名に入ります。
最後に「ファイルを保存」アクションを置けば完成です。実行時に保存先を「このiPhone内」か「iCloud Drive」から選べば、ファイルアプリに書き出されます。
手順7:実行してCSVを確認する
右上の再生ボタンで実行します。開始日・終了日を選ぶダイアログが順に出るので、見たい期間を指定して「完了」を押します。実際に出力されたCSVがこちらです。

1日ごとに歩数が並んでいます。最後の行の「0」は、出力した時点(4月25日)で翌日4月26日のデータがまだ存在しないためです。範囲指定の終了日に1日を足している都合で未来日が含まれてしまっただけで、ショートカット側のバグではありません。
詰まったポイントと教訓
| 詰まり | 原因 | 対処 |
|---|---|---|
| 日付を選ぶタイミングがなかった | 日付入力を後ろに置いていた | 先頭に「入力を要求」を2つ並べる |
| 終了日のデータが取りこぼされる | ヘルスケアの範囲が「終了日未満」 | 終了日に「日付を調整」で1日追加 |
| 1日ぶんが何十行にも分かれる | サンプルが細切れで返る | 検索アクションの「グループ分け」を「日」にする |
| CSVが1行にくっつく | ループ内で改行が入らない | 「繰り返しの結果を改行で結合」を使う |
| データが0件で返ってくる | ヘルスケアの許可がオフ | 設定 → プライバシー → ヘルスケア → ショートカットを許可 |
ショートカットは部品の組み合わせが直感的に見えるぶん、実行順を意識しないと変数が空のまま流れるという落とし穴があります。今回も「上から下に流れる」という1点に気づいてから一気に進みました。
なぜわざわざCSVに書き出したかったか
ヘルスケアアプリの中でも歩数やグラフは見られますが、月をまたぐ集計や前年同月比はやりにくいです。育休中で生活リズムが大きく変わったので、復職前後でどれくらい歩く量が変わるのかを記録しておきたいと思いました。CSVにしておけばNumbersでもGoogleスプレッドシートでも開けますし、後からPythonで集計するのにも使い回せます。
以前 ぴよログのデータをPythonで可視化した記事 でも書いたとおり、生活ログはCSV化してしまうと一気に料理しやすくなります。同じ発想で、自分の体の記録もテキストデータに落とすのが結局はいちばん扱いやすいです。
発展:ここからどう育てるか
最低限のCSV化はできましたが、実用に向けてはまだ伸びしろがあります。今後試してみたいことを書き出しておきます。
1. CSVをもっと扱いやすく出力する
- ヘッダー行を付ける:CSV本体の先頭に
日付,歩数(歩)のような1行を足しておくと、Excel・Numbers・スプレッドシートに取り込んだときにそのまま列名として認識されます。「テキスト」アクションで作ったヘッダーと、ループで作った本体を「結合」アクションで連結する形で実現できそうです - 日付の書式を整える:いまは
2026-04-19 00:00:00 +0900のようなタイムスタンプ形式で出ていますが、「日付をフォーマット」アクションを挟んでyyyy-MM-ddに整形すれば、Excelで日付として認識されやすくなります - 桁区切りカンマの扱い:歩数の値にカンマが入る形式にしてしまうとCSVの区切りと衝突するので、整数のまま出すのが無難です
2. 他のヘルスケアデータにも応用する
「ヘルスケアサンプルを検索」の 種類 と 単位 を差し替えるだけで、同じ枠組みで他データも書き出せます。
- 心拍数:種類「Heart Rate」/単位「count/min」
- 体重:種類「Body Mass」/単位「kg」
- 睡眠:種類「Sleep Analysis」(睡眠は値ではなく「就寝〜起床の区間」が並ぶので、グループ分けや出力形式の工夫が要りそうです)
- 血圧:「Blood Pressure Systolic」「Blood Pressure Diastolic」をそれぞれ取得して横並びに結合する
睡眠データはちょっとひとクセあるので、別記事で改めて掘り下げました 👉 iPhoneヘルスケアの睡眠データをCSVに|区間データの扱い方とハマりどころ
3. 自動化・可視化までつなげる
- オートメーションで毎週自動実行:iPhoneの「オートメーション」から「毎週日曜23時に実行」のようなトリガーを設定すれば、CSVが自動で溜まっていきます
- PythonやAIで可視化:CSVがあればPythonの
pandasやmatplotlibでグラフ化できますし、ChatGPTやClaudeに丸ごと貼って「最近の運動量はどう?尻をたたいて」とお願いすることもできます。本記事の動機もここにあります
最終的には「歩数が落ちてきたらAIにダメ出ししてもらう」くらいまで自動化したいと思っています。
まとめ
- iPhoneの標準ショートカットだけで、ヘルスケアの歩数データを期間指定でCSV化できました
- 詰まりやすいのは「日付を入力するアクションをどこに置くか」で、結論としては先頭に2つ並べるのが正解でした
- 終了日に「1日を追加」しないと当日のデータが取りこぼされるので注意が必要です
- 「繰り返しの結果を改行で結合」を使うとCSV化がぐっとシンプルになります
- 同じ枠組みで体重・心拍数・睡眠などほかの項目にも応用できます
普段なんとなく蓄積されているヘルスケアのデータも、CSVにしてしまえばグラフ化や前年比較がぐっとやりやすくなります。気になる項目がある方はぜひ試してみてください。
-
参考記事:ヘルスケアデータをCSVに書き出すためのショートカット – sakura.hidezumi.com — 概念を整理するうえで大いに参考にさせていただきました。 ↩


コメント