0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

自分の分身を作ってみたら練習メニュー作成の時間がゼロになった話

0
Last updated at Posted at 2026-08-08

メニュー作成 60 分 → 5 分の対話へ

ネットワークエンジニアの趣味コーチが、
GitHub Copilot の Skill で自分の「分身」を作った話。
生まれた時間は、自分のトレーニング・亀の世話に還元されました 🐢

なぜ作ったのか

私は普段エンジニアをしていて、趣味で水泳をやっています。ただの一選手というより、チーム内で練習メニューを作る立場でもあります。指導哲学、対象選手、大会までの週数、参加者の疲労度、施設のコース長(LCM = 長水路 / SCM = 短水路)、当日のレーン数と時間… メニューを組むときに考えるべきことは山ほどあります。

これを毎週真面目にやっていたら、練習前に 30 分〜1 時間はメニュー作りに消える。おまけに「先週と被ってないか」「もっとフォーム重視の日にすればよかった」と後から気付いて直す。ふと思うわけです。これ、なんか仕組み化できそうじゃない?

ちなみに私、本業はAzure のネットワーク エンジニアで、AI エンジニアではありません。それでも弊社では、ジャンルを問わず AI を使いこなすスキルは必要になってきていて、実際に仕事でも自分の業務を AI 化するだけでなく、AI 化した業務パターンを他の人にも配れる形に整えて広げる、そういう立場でもあります。そんな日常の延長で趣味の水泳メニュー作成を AI 化してみたら、当然のように「これは自分だけのものにする話じゃないな」となりました。

「メニュー作成」自体は定型的な組み立てが多いので、そこは AI に任せてしまって、自分はコーチとしての判断に集中したい。そう考えて GitHub Copilot の Skill 機能を使って、自分の中にあるメニュー作成のナレッジをそのまま反映できる AI アシスタントを組みました。使い倒したらメニュー作成の時間が実質ゼロになった上に、生まれた時間を自分自身のトレーニングもう一つの趣味である亀の飼育 🐢 にまで回せるようになったので、同じような立場のコーチ・メニュー担当者にも配れる形にまとめました。それが spagent です。

コンセプトはシンプルで、「あなたの分身を作る」

  • 自身の過去の経験に基づくも良し
  • 一般公開されているコーチングナレッジに頼るのも良し
  • 選手を育成するためのプランに合わせたメニュー作りでも良し
  • 参加者全体に本日のテーマを理解してもらうメニュー作りでも良し

どんな分身を作るかは、あなた次第です。


何ができるのか

spagent が実装している主要機能を並べます。

1. 指導プロファイル(対象 × 時間軸 × 年間計画テンプレート)

「月曜マスターズ」「水曜ジュニア」のように指導対象ごとに全く別のトレーニングモデルを持てます。対象哲学(Masters / Junior / Elite / Triathlon)× 時間軸(Matveyev / Block / Undulating / Reverse)× 年間計画テンプレート(Single Peak / Four Peaks / Junior Annual …)を 1 セットで管理し、当日はグループを選ぶだけで自動適用。

2. 過去メニュー & ドリルの取り込みと傾向学習

Excel / PDF / 画像 で保管している過去メニューやドリル資料をそのまま食わせられます。分身は取り込んだメニューから:

  • Zone 配分の傾向(EN2 中心? SP1 多め?)
  • 頻出手法(Threshold / Descending / USRPT …)
  • あなた独自のメニュー骨格(Kick/Pull を独立させる流儀、Drill 単独ブロックなし、総距離帯など)
  • 想定対象選手層

を推論し、それを軸にメニューを組みます。頻出パターンで既存手法に該当しないものは「あなただけの独自メソッド」として登録もできます。

3. 長期計画に基づく手法推奨

その日の Method(Threshold / HIIT / Broken Swim …)を「なぜそれか」の根拠付きで提示します。

Phase B 強化期 6 週目 → Threshold + Descending を推奨
根拠: 週次テーマ「有酸素能力の底上げ + ペース感覚」、Zone EN2:40% と整合

4. 選手のコンディション・技術課題・AI 適応学習

怪我や疲労、技術課題(例: High Elbow Catch の進捗)を選手ごとに継続追跡。過去タイム + RPE(主観的運動強度、1〜10 段階)から AI が「A さんは高強度セットに強い」「B さんは午前より午後の方が伸びる」といった適応傾向を推論し、次回メニューに反映します。

「気付いていたけど覚えていられなかった」を、代わりに覚えていてくれる係です。

5. 練習環境の変動と大人数対応

「今日は SCM が使えなくて LCM に変更」「時間 15 分短縮」「レーン 3 → 2」といった当日の変動を毎回確認。参加人数がコース定員を超えたら群 A / 群 B の交代制を自動提案し、待機側の過ごし方(完全休憩 / ストレッチ / 軽ドリル / 陸トレ / 別の軽セット)まで対話で決めます。

6. 個別選手ごとの設定タイム自動算出

各選手の PB(自己ベスト)と直近の練習タイムから現在ペースを推定し、Phase × Zone × Method の目標 % を掛けて選手個別の設定タイムを出します。怪我・体調で補正もかかります。

7. 記録・振り返り

練習後は撮影メモの画像を AI が読み取り → タイム認識 → 全件サマリー承認後に保存。予定メニューとの差分(本数カット等)も検知して feedback.md に記録。実施ベースで索引化され、次回以降の「類似メニュー検索」で活きます。

8. 個人情報 (PII) 保護

  • 選手登録時にフルネーム / 電話 / メール / 住所を検出したら警告 → 匿名化案を提示
  • 画像に含まれる個人情報の自動検知(顔・名札・Exif(写真に埋め込まれる撮影情報)の GPS 位置情報 など)
  • data/ sessions/ plans/ knowledge/custom/ は最初から .gitignore で除外
  • コーチが選手や保護者から書面同意を取るためのテンプレートも同梱

コーチが「共有できる情報」と「守るべき情報」を分けて扱えるように設計しています。


どう動くか

GitHub Copilot の Skill として配布します。GitHub Copilot が使える環境(VS Code、Copilot CLI など)で、Skill をロードして対話するだけで動きます。

以下は、月曜マスターズの練習メニューを 1 本作る対話のイメージです(抜粋):

Skill: 今日は 2026-08-11(月)。予定を確認しました。
       - コース: SCM
       - 時間: 20:00-21:30
       ⚠️ 変更がなければ、そのまま進めます
コーチ: SCM が使えなくて LCM、時間は 20:15 開始で 75 分

Skill: 更新しました: LCM / 75 分
       本日使うグループを選んでください
       ① monday-masters-advanced
       ② wednesday-junior-u15
コーチ: ①

Skill: monday-masters プロファイル適用。所属選手は ally, ben, carol, dave。
       参加者を選んでください
コーチ: 全員 + eve, frank, gina, hana の 8 名

Skill: ⚠️ 参加 8 名 / 2 レーン × 定員 3 名 = 6 名まで。
       群 A / 群 B の交代制を推奨します
コーチ: 上級 4 / 中級 4 で分割、待機は軽 Kick で

Skill: 参加者の状態:
       - ally: 右肩痛、Fly 回避推奨
       - ben: 前回 RPE(主観的運動強度)平均 8.5、疲労蓄積
       - carol: High Elbow Catch 進行中
       ...

Skill: 本日の推奨手法(長期計画に基づく)
       - Phase B 強化期 6 週目 → Threshold + Descending
       根拠: 週次テーマ「有酸素の底上げ」、Zone EN2:40% と整合
       [Base] ① Threshold ② Descending ③ Broken Swim ...
       [Custom] ⑧ Threshold 200 Blocks(あなたの過去頻出パターン)
コーチ: ①⑧

Skill: 骨格を設計(あなたの骨格パターン「Kick/Pull 独立型」に沿う)
       W-up 500 → Kick 300 → Pull 300 → Main 4×(200T+50R)×2 → C-down 300
       設定タイム(PB(自己ベスト)と直近タイムから算出)
       - ally 200Fr T 2'40 (Fly 除外)
       - ben 2'55 (疲労考慮で軽め)
       - carol 2'50
       ...
       Cycle は上級 3'30 / 中級 3'45 を提案

こんな 5 分の対話で、これまで 30 分〜1 時間かけていたメニュー作成が終わります。しかも「長期計画との整合」「選手個別のコンディション」「過去メニューとの被り回避」まで、こちらが気にせずとも押さえてくれる。


フィードバック募集

現在 GitHub 公開に向けて実装中です。

  • 「こんな機能があると嬉しい」
  • 「自分の指導スタイルは spagent の想定と違う」
  • 「個人情報保護についてこの観点は?」

などなど、コーチ・エンジニア問わずコメントいただけると嬉しいです。特に、水泳以外の競技コーチにも「同じ悩みがある」という声があれば、汎用化の参考にさせてください。

次回は「導入方法」から書きます。


(GitHub リポジトリは公開次第、記事末尾にリンクを追加します)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?