- ワークアウトプランの作成、進捗の追跡、そして大規模なエクササイズデータベースの提供機能を含む
- 以前の workout.lolの失敗 経験をもとに始まり、オープンソースコミュニティのための 持続可能な進化型プロジェクト を目指している
- Feature-Sliced Design の原則と Next.js ベースのアーキテクチャを採用し、機能ごとの独立性、拡張性、そしてコードの保守性を重視している
- エクササイズデータベースは CSVファイルで簡単に取り込み でき、さまざまな運動特性や動画、主要ターゲット筋群などの詳細情報を含む
- 今後は モバイルアプリ、バッジ/ゲーミフィケーション、ウェアラブル連携、コミュニティフォーラム など、コミュニティ参加を軸に継続的に機能を拡張していく予定
Workout-Cool の概要と価値
- Workout-Cool は、ユーザーがカスタマイズされた ワークアウトプランを作成 し、自身の 進捗状況を記録 し、充実した エクササイズデータベース(説明、動画などを活用)まで幅広く利用できる最新のオープンソースフィットネスコーチングプラットフォーム
- 既存の workout.lol プロジェクトの放置と終了を直接経験した開発者が、トレーニングコミュニティのために、より 持続可能でモダンなオープンソースフィットネスプラットフォーム として再構築した
プロジェクト開始の経緯と動機
- workout.lol プロジェクトの主要コントリビューター として、動画提供パートナーとの協業の失敗や、動画ライセンス費用の問題などで困難を経験した
- プロジェクトが他者に売却された後、すぐに終了され、9か月以上にわたって新しいオーナーとのコミュニケーションを試みたが返答はなかった
- 既存プロジェクトの価値を失わせず、全体的に改善されたモダンなプラットフォームを新たに構築することを決めた
- このプロジェクトは商業目的ではない。オープンソースコミュニティに対し、信頼できる 保守と発展 を約束する進化の意味を持つ
コミュニティ主導の運営思想
- 開発者であると同時に実ユーザーとして、コミュニティが必要とする 機能と体験 を直接反映している
- 以前の workout.lol ユーザーであれば歓迎され、新規ユーザーであれば次世代フィットネスプラットフォームの価値を体験できる
- 誰でも直接コントリビュートし、改善案を提出できる
エクササイズデータベースと取り込み
- プロジェクトには 充実したエクササイズデータベース が搭載されている
- サンプルの CSV 形式で、各エクササイズの id、名前、説明、動画 URL、画像、主要ターゲット筋群、属性など、さまざまな情報をカスタムでインポートできる
- 主なカラム例: id, name, name_en, description, description_en, full_video_url, full_video_image_url, introduction, slug, attribute_name, attribute_value など
- 属性タイプの例: TYPE(筋力/有酸素/プライオメトリクス/ストレッチ), PRIMARY_MUSCLE, SECONDARY_MUSCLE, EQUIPMENT, MECHANICS_TYPE など
- 1行のコマンドでデータをすぐに import できるため、データ拡張性に優れている
プロジェクトアーキテクチャ
- Feature-Sliced Design(FSD) の原則を適用した Next.js App Router ベース
- 各機能ごとに独立性が高く、再利用しやすい構造を実現している
- 明確なドメイン階層の分離: shared → entities → features → widgets → app
- UI、ビジネスロジック、データ層の 一貫性 を維持
- ファイル分割の例:
app/ - Next.js のルートおよびレイアウト
processes/ - 複合的なビジネスフロー
widgets/ - 組み立て型 UI(例: Sidebar, Header)
features/ - 主要単位(認証、ワークアウト管理など)
entities/ - ユーザー、エクササイズ、ワークアウトなど
shared/ - 共通コードおよび型
styles/ - グローバル CSS/テーマ
開発とデプロイ
- Node.js 18+ が必要。PostgreSQL(Docker または直接構築)、pnpm または npm が必要
- クローン後に依存関係をインストールし、環境変数を設定し、データベースをセットアップ(自動または手動)して、ブラウザで http://localhost:3000 にアクセス
- データベースマイグレーションを直接実行し、開発サーバーを起動可能
- Docker イメージのビルドおよびコンテナ実行(予定)
予定機能
- エクササイズ/動画の追加
- モバイルアプリ(React Native ベース)
- ゲーミフィケーション(バッジシステムなど)
- 高度な進捗統計と可視化
- ウェアラブル(ウォッチ/トラッカー)連携
- 多言語対応
- OAuth 認証(Google、Apple など)
- 内蔵コミュニティフォーラム
1件のコメント
Hacker Newsのコメント
ある人にアプリを売ったんだけど、その人がそのまま放置してしまうという状況を経験した
サポートが必要なら連絡してほしいと何度もメッセージを送ったのに、一度も返事がなかった
それでもまた管理してくれているのを見ると、本当にうれしい
UI の改善も素晴らしいし、本当に見事な仕事
君の名前が出ているのを見て、どれだけうれしかったか想像できないほどだよ
僕も、ほとんど成果もないままプロジェクトが止まっていくのを見守って、心が折れそうになる感覚を味わった
そういうことが最終的に、すべてをいったん壊して、君が最初に始めたときに見せてくれたオープンな姿勢を保ちながら作り直そうという原動力になった
UI を褒めてくれてありがとう、君の立場からそう言ってもらえるのは本当に大きい
もし戻ってきたくなったら、いつでも歓迎するよ
アイデアでも意見でも、そこにいてくれるだけでも大きな意味がある
自分は Apple CalDAV(iCal) と連携する自動カレンダースケジューリング API を作っている
目標を中心にしたスケジュール管理機能を作っていて、Google ORTools で超大規模な CP-SAT 制約モデルを非常に高速に計算し、1年分でも 5 秒以内で処理できる
栄養摂取目標に合わせた食事機能も含めている
実はこういう運動・トレーニングプランのシステムをぜひ入れたかったのに、何を使えばいいのか見当もつかなかった
今やっと何を使えばいいかはっきりした
このプロジェクトを作ってくれてありがとう
このプロジェクトが今後どうなるのか見守りたくなる
wger プロジェクトについてどう思うのか気になる
https://github.com/wger-project は FLOSS AGPL ライセンスのセルフホスト型フィットネス/ワークアウト/栄養管理プラットフォーム
もうほぼ 10 年になると思うが、django アプリベースで、公式の flutter アプリもあり、Android/iOS/Windows/Linux/macOS で使える
複数ユーザーに対応していて、ジム運営にも使える
body.build は新しめの FLOSS プロジェクトで、ブラウザベース、ウェイトトレーニングプログラムの構築に重点を置いている
body.build の作者も wger に貢献している
自分は長い試行錯誤の末に、wger をホームラボでうまく活用している
セルフホストでは考慮すべきことがかなりあるが、ちゃんと動く
最大の欠点はエクササイズデータベースの網羅性だが、幸いコントリビューターたちが少しずつ拡張している
エクササイズやそのメディアデータに貢献できる人がいれば、この AGPL プロジェクトはきっと感謝するはず
Web サイトの UX は最悪で、モバイルアプリは(iOS では) バグだらけ
ワークアウト開始、重量修正、セッション記録と、どこを押してもクラッシュしたり固まったり、ログアウトが繰り返されたりする
今は LiftLog を使っているが、自分の欲しいものは全部揃っていて FOSS だ
https://github.com/LiamMorrow/LiftLog
フィットネスやウェイトトレーニングが今ではありふれた趣味なのに、まともに使えてよく保守されている非商用アプリがほとんどないのは不思議だ
何十もの Github プロジェクトを自分で試して出した結論
経験を積むと、アプリの機能より大事なのは、結局どれだけ継続して記録し、漸進的過負荷を管理できるかだとわかる
このアプリは初心者が始めるには良い選択肢だ
もっと広く使われるには、ちょうど 2 つ必要だ
https://json-schema.app/view/#?url=https%3A%2F%2Fgist.githubusercontent.com%2Fgavmor%2Fb74c4746aa9f3f63b0f50863a5e62d52%2Fraw%2F01318d1107f67ac83387a905d6556736fa7797ff%2Flifting.json
初心者にとってこういうアプリが良い選択肢かという点には同意できない
努力には拍手を送りたいが、おすすめされるエクササイズの並びが少し心配だ
たとえば「背中/二頭」を選ぶと、9 種類のエクササイズが無秩序に出てくる
順番や構成への配慮がなく、コンパウンドリフトが真ん中に出てきたり、チンアップが 3 回も出てきたりする
回数/セット/重量に関する 1RM 計算もなく
定番ではないブロースプリットを勧めていて、むしろ散漫になっている
器具ベースで最小構成の PPL アプリを作れば、これよりずっと良くできそうだと思う
自分も同じで、経験を積むほど本当に大事なのは継続と進捗の記録になると思う(自分の場合はメンタル管理のためで、今では成果よりも状態確認を重視している)
ルーティン保存と長期トラッキングはロードマップに入っている
だからこそ "workout session" のアーキテクチャは旧アプリとまったく違う設計にした
ユーザーが個別のトレーニングブロックを作り、それを再利用・共有・分析・進化させる最適な体験を実現したい
もし君の PWA でこうしたルーティン管理をどう扱ったのか聞かせてもらえたらうれしい
似た道を歩いてきた気がするので、ぜひ共有してほしい
https://wrkout.xyz/ (画像/動画付きのオープンなエクササイズデータベース API)
https://github.com/wrkout/exercises.json (オープンソースのエクササイズデータセット)
必要なら活用をおすすめする
今回は動画まわりのライセンス問題を明確に避けたくて、パートナーと一緒にデータセットを完全にゼロから作った
属性や翻訳なども含め、こちらの好きなようにすべて修正できるようにデータのコントロールを確保したかった
とはいえ、この分野でいろいろなオープンプロジェクトが出てくるのは本当にうれしいし
両方のコミュニティが発展できるなら、ぜひシナジーを模索したい
DM 歓迎
アイデアを投げるだけでなく、すでにデータセットを集めてくれていて、初心者でもすぐ始められる
本当にありがとう
自分が欲しいのは、種目ごとの重量/回数の推奨機能だ
"100 Pushups" というフィットネスプログラムを参考にするといいかもしれない
興味があれば UI の議論もいつでも歓迎
ユーザーデータはすべて PDS に保存され、別サーバーは不要
たとえプロジェクトがまた放置されても、データは永続的に生き続ける
このアプリは知っているし、本当にシンプルで、特に適応的な進行の仕組みが初心者のモチベーションにとても効く
自己調整型で漸進的なルーティンを実装する UI について、ぜひ話してみたい
まずは(荒削りな) アルゴリズムを考えてみるので、DM してほしい
0:{"a":"$@1","f":"","b":"eETmgndxtv4Ar0i8Wync1"}
1:{"serverError":"An unexpected error occurred."}
リクエストコード(詳細ヘッダーと情報を含む)まで共有する
HN トラフィックの急増でサーバーが予想外に壊滅状態になった
安定化とバグ修正をまもなく行う予定
テストとフィードバック、本当にありがとう
ただ根本的には、エクササイズ推薦システムがフィットネスプログラム設計の核心を考慮していない
現状では、運動プログラム設計のために使うことは勧めにくい
むしろルーティン生成より、すでに確立されたワークアウト記録やルーティンテンプレートのインポートに集中した方がよさそうだ(すでにそこに関心を示していたのも確認した)
自分が体験した主な問題は以下の通り
UI と説明は本当に良いのに、種目選択が(あるときでさえ)曖昧だったり不合理だったりする
標準的な主要/補助種目(バーベル、ダンベル、マシン)をデータベースに一通り入れて、ユーザーに自分でルーティンを作らせるのはどうだろう
特定種目の代替オプションもあると良さそうだ
こうした準備が整ってからルーティン生成を実装し、実際のトレーナーからフィードバックをもらえたら本当に良いと思う
利用可能な器具はシンプルで標準的にして、ブランド付きマシンはできるだけ外した方がいい
こういう細かい意見は、早い段階では特に大きな力になる
運動プログラムのロジックは今のところ本当に初歩的だ
トレーニング原則(ボリューム、動作パターン、回復周期、コンパウンド/アイソレーション)の反映がまだ足りない
今のバージョンは本当に「発見用」であって、賢いコーチではまったくない
この事実は UI で明確に案内すべきだろう
具体的な質問への回答
ダンベルや懸垂バーはあるがケーブルやマシンは使いたくない、というニーズはよくわかるので、この部分の UI を具体化する
(今は 2 回繰り返す必要がある、レンダリングの問題)
良い原則に沿って改善したいので、できれば方向性を決めるうえでアイデアだけでも一緒に考えてもらえたらうれしい
一般消費者向けハードウェア上でそのまま配布・利用できるソリューションなら、なおさら興味がある
たとえば、自分は懸垂バーを持っているが、どの筋肉を鍛えられるのかわからない
それより「初心者向け」フィルターのような方式はどうだろう
他の人たちからも同様のフィードバックをもらった
フィルターオプションを任意にして、「初心者向け」「人気の種目」「カリステニクス」などのおすすめを追加する予定だ
教えてくれてありがとう
最初のオンボーディングで筋肉選択が必須だが、どのルーティンがどの筋肉を狙うのかわからない初心者にとっては参入障壁になる
"プッシュ"、"プル"、"レッグ" くらいは何となくわかるが、具体的な筋肉名はなじみがない
結局このアプリは、解剖学を勉強する人向けに最適化されている
もう少し入りやすくする方法を考える必要がある
たとえば、おすすめ筋群やプリセットなど
今のオンボーディングは、要求する知識が多すぎる(予想以上に)
初心者は「後部三角筋」や「広背筋」ではなく、ただ強くなりたい、体を良くしたいだけなんだ
次のアップデートでは
などを予定している
最初から解剖学を勉強しなくても、すぐ始められる親しみやすい体験を作るのが目標だ
君のフィードバックは本当に助かる
フィットネスの旅を応援している