12 ポイント 投稿者 GN⁺ 2025-06-19 | 1件のコメント | WhatsAppで共有
  • ワークアウトプランの作成進捗の追跡、そして大規模なエクササイズデータベースの提供機能を含む
  • 以前の 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件のコメント

 
GN⁺ 2025-06-19
Hacker Newsのコメント
  • ここで自分のアプリ workout.lol を見かけて、不思議な気持ちになった
    ある人にアプリを売ったんだけど、その人がそのまま放置してしまうという状況を経験した
    サポートが必要なら連絡してほしいと何度もメッセージを送ったのに、一度も返事がなかった
    それでもまた管理してくれているのを見ると、本当にうれしい
    UI の改善も素晴らしいし、本当に見事な仕事
  • Vincenius だね!
    君の名前が出ているのを見て、どれだけうれしかったか想像できないほどだよ
    僕も、ほとんど成果もないままプロジェクトが止まっていくのを見守って、心が折れそうになる感覚を味わった
    そういうことが最終的に、すべてをいったん壊して、君が最初に始めたときに見せてくれたオープンな姿勢を保ちながら作り直そうという原動力になった
    UI を褒めてくれてありがとう、君の立場からそう言ってもらえるのは本当に大きい
    もし戻ってきたくなったら、いつでも歓迎するよ
    アイデアでも意見でも、そこにいてくれるだけでも大きな意味がある
  • これは本当にすごい
    自分は Apple CalDAV(iCal) と連携する自動カレンダースケジューリング API を作っている
    目標を中心にしたスケジュール管理機能を作っていて、Google ORTools で超大規模な CP-SAT 制約モデルを非常に高速に計算し、1年分でも 5 秒以内で処理できる
    栄養摂取目標に合わせた食事機能も含めている
    実はこういう運動・トレーニングプランのシステムをぜひ入れたかったのに、何を使えばいいのか見当もつかなかった
    今やっと何を使えばいいかはっきりした
    このプロジェクトを作ってくれてありがとう
  • もしかすると、その業界の人が無料の代替手段を潰したくて買い取ったのではないかと気になる
    このプロジェクトが今後どうなるのか見守りたくなる
  • 自分には "error loading exercises" というメッセージが出る
    wger プロジェクトについてどう思うのか気になる
    https://github.com/wger-project は FLOSS AGPL ライセンスのセルフホスト型フィットネス/ワークアウト/栄養管理プラットフォーム
    もうほぼ 10 年になると思うが、django アプリベースで、公式の flutter アプリもあり、Android/iOS/Windows/Linux/macOS で使える
    複数ユーザーに対応していて、ジム運営にも使える
    body.build は新しめの FLOSS プロジェクトで、ブラウザベース、ウェイトトレーニングプログラムの構築に重点を置いている
    body.build の作者も wger に貢献している
    自分は長い試行錯誤の末に、wger をホームラボでうまく活用している
    セルフホストでは考慮すべきことがかなりあるが、ちゃんと動く
    最大の欠点はエクササイズデータベースの網羅性だが、幸いコントリビューターたちが少しずつ拡張している
    エクササイズやそのメディアデータに貢献できる人がいれば、この AGPL プロジェクトはきっと感謝するはず
  • 最近 Wget を試したけど、残念ながらおすすめはできない
    Web サイトの UX は最悪で、モバイルアプリは(iOS では) バグだらけ
    ワークアウト開始、重量修正、セッション記録と、どこを押してもクラッシュしたり固まったり、ログアウトが繰り返されたりする
    今は LiftLog を使っているが、自分の欲しいものは全部揃っていて FOSS だ
    https://github.com/LiamMorrow/LiftLog
    フィットネスやウェイトトレーニングが今ではありふれた趣味なのに、まともに使えてよく保守されている非商用アプリがほとんどないのは不思議だ
    何十もの Github プロジェクトを自分で試して出した結論
  • 同じエラーが出る
  • 自分は 5 年くらいウェイトをやっているが、オープンソースでここまでしっかりしたツールを見るとうれしい
    経験を積むと、アプリの機能より大事なのは、結局どれだけ継続して記録し、漸進的過負荷を管理できるかだとわかる
    このアプリは初心者が始めるには良い選択肢だ
    もっと広く使われるには、ちょうど 2 つ必要だ
  1. モバイルアプリ(あるいは PWA、自分で作った PWA でもネイティブアプリ並みに十分だった)
  2. 特定の運動ルーティンを長期保存して管理する機能
  • 理想的には、複数の UI 間でデータをエクスポートして共有できるべきだ
    https://json-schema.app/view/#?url=https%3A%2F%2Fgist.githubusercontent.com%2Fgavmor%2Fb74c4746aa9f3f63b0f50863a5e62d52%2Fraw%2F01318d1107f67ac83387a905d6556736fa7797ff%2Flifting.json
  • 使ってみて書いている懸念で、決して OP を貶したいわけではまったくない
    初心者にとってこういうアプリが良い選択肢かという点には同意できない
    努力には拍手を送りたいが、おすすめされるエクササイズの並びが少し心配だ
    たとえば「背中/二頭」を選ぶと、9 種類のエクササイズが無秩序に出てくる
    順番や構成への配慮がなく、コンパウンドリフトが真ん中に出てきたり、チンアップが 3 回も出てきたりする
    回数/セット/重量に関する 1RM 計算もなく
    定番ではないブロースプリットを勧めていて、むしろ散漫になっている
    器具ベースで最小構成の PPL アプリを作れば、これよりずっと良くできそうだと思う
  • ジム寄りの経験がある人に認めてもらえるのは本当にうれしい
    自分も同じで、経験を積むほど本当に大事なのは継続と進捗の記録になると思う(自分の場合はメンタル管理のためで、今では成果よりも状態確認を重視している)
    ルーティン保存と長期トラッキングはロードマップに入っている
    だからこそ "workout session" のアーキテクチャは旧アプリとまったく違う設計にした
    ユーザーが個別のトレーニングブロックを作り、それを再利用・共有・分析・進化させる最適な体験を実現したい
    もし君の PWA でこうしたルーティン管理をどう扱ったのか聞かせてもらえたらうれしい
    似た道を歩いてきた気がするので、ぜひ共有してほしい
  • データソースが気になるなら参考になるプロジェクトがある
    https://wrkout.xyz/ (画像/動画付きのオープンなエクササイズデータベース API)
    https://github.com/wrkout/exercises.json (オープンソースのエクササイズデータセット)
    必要なら活用をおすすめする
  • 以前 wrkout.xyz を見たことがあるけど、本当に素晴らしいプロジェクトだ
    今回は動画まわりのライセンス問題を明確に避けたくて、パートナーと一緒にデータセットを完全にゼロから作った
    属性や翻訳なども含め、こちらの好きなようにすべて修正できるようにデータのコントロールを確保したかった
    とはいえ、この分野でいろいろなオープンプロジェクトが出てくるのは本当にうれしいし
    両方のコミュニティが発展できるなら、ぜひシナジーを模索したい
    DM 歓迎
  • こういうのこそ本当のコントリビューションだ
    アイデアを投げるだけでなく、すでにデータセットを集めてくれていて、初心者でもすぐ始められる
    本当にありがとう
  • 正直、このアプリは思ったよりかなり良い
    自分が欲しいのは、種目ごとの重量/回数の推奨機能だ
    "100 Pushups" というフィットネスプログラムを参考にするといいかもしれない
  • 罰ゲームのように限界まで繰り返す(たとえば腕立て 8 回など)
  • アプリがスケジュールを作る(3, 4, 3, 3, 5 のように、2 分休んで繰り返す)
  • ユーザーのレベルに応じて回数を漸進的かつ調整的に推奨する
  • 6 週目あたりで最大 100 回に到達できるように進める
    興味があれば UI の議論もいつでも歓迎
  • バックエンドを諦めたくなったら AT Protocol 連携もアイデアとしてありだ
    ユーザーデータはすべて PDS に保存され、別サーバーは不要
    たとえプロジェクトがまた放置されても、データは永続的に生き続ける
  • アイデアに完全に感心した
    このアプリは知っているし、本当にシンプルで、特に適応的な進行の仕組みが初心者のモチベーションにとても効く
    自己調整型で漸進的なルーティンを実装する UI について、ぜひ話してみたい
    まずは(荒削りな) アルゴリズムを考えてみるので、DM してほしい
  • アプリは良さそうだが、エクササイズの読み込みでエラーが発生する
    0:{"a":"$@1","f":"","b":"eETmgndxtv4Ar0i8Wync1"}
    1:{"serverError":"An unexpected error occurred."}
    リクエストコード(詳細ヘッダーと情報を含む)まで共有する
  • 詳細なレポートありがとう
    HN トラフィックの急増でサーバーが予想外に壊滅状態になった
    安定化とバグ修正をまもなく行う予定
    テストとフィードバック、本当にありがとう
  • いくつか技術的な問題があり、こういうのは新しいプロジェクトなら理解できる
    ただ根本的には、エクササイズ推薦システムがフィットネスプログラム設計の核心を考慮していない
    現状では、運動プログラム設計のために使うことは勧めにくい
    むしろルーティン生成より、すでに確立されたワークアウト記録やルーティンテンプレートのインポートに集中した方がよさそうだ(すでにそこに関心を示していたのも確認した)
    自分が体験した主な問題は以下の通り
  1. 全身トレーニングが欲しかったのに、1 セッションで 33 種目も提案された—現実的ではない
  2. 種目選択が筋肉ごとに 3 つだけランダム割り当てで、多筋群ターゲットや適切なボリューム配分が無視されている
  3. なじみのない、または非効率な種目も頻繁に提案される
  4. 存在しない器具まで提案される、自分はホームジム利用者なのでマシンは完全に除外したい
  5. 聞いたことのないブランド器具が提案される
  6. 器具の選択を変えても、種目の提案がそのまま残る
  7. 提案された種目を削除できず、新しい種目も追加できない
  • 自分も似た意見だ
    UI と説明は本当に良いのに、種目選択が(あるときでさえ)曖昧だったり不合理だったりする
    標準的な主要/補助種目(バーベル、ダンベル、マシン)をデータベースに一通り入れて、ユーザーに自分でルーティンを作らせるのはどうだろう
    特定種目の代替オプションもあると良さそうだ
    こうした準備が整ってからルーティン生成を実装し、実際のトレーナーからフィードバックをもらえたら本当に良いと思う
    利用可能な器具はシンプルで標準的にして、ブランド付きマシンはできるだけ外した方がいい
  • こんなに丁寧なフィードバックを残してくれて心からありがとう
    こういう細かい意見は、早い段階では特に大きな力になる
    運動プログラムのロジックは今のところ本当に初歩的だ
    トレーニング原則(ボリューム、動作パターン、回復周期、コンパウンド/アイソレーション)の反映がまだ足りない
    今のバージョンは本当に「発見用」であって、賢いコーチではまったくない
    この事実は UI で明確に案内すべきだろう
    具体的な質問への回答
  1. 33 種目提案されたのは完全にやりすぎ(笑)
  2. その通り、今は筋肉ごとに 3 つずつ無差別に提案しているだけで、今後ロジックを強化する
  3. コンパウンド/アイソレーションなどで分類し、主要/補助筋、動作パターン、負荷品質、人気タグも含めたメタデータ追加を進めている
  4. マシン除外など、特定器具を完全に除外するオプションの追加も検討している
    ダンベルや懸垂バーはあるがケーブルやマシンは使いたくない、というニーズはよくわかるので、この部分の UI を具体化する
  5. OK
  6. 器具を変えてもリストが変わらないバグがあり、すぐ修正する
    (今は 2 回繰り返す必要がある、レンダリングの問題)
  7. ルーティン全体の編集はまもなくサポートする
    良い原則に沿って改善したいので、できれば方向性を決めるうえでアイデアだけでも一緒に考えてもらえたらうれしい
  • 他の人たちが「フォーム矯正」の重要性に触れていたが、オープンソースのコンピュータビジョンで姿勢やフォームをチェックしてくれる技術があるのか気になる
    一般消費者向けハードウェア上でそのまま配布・利用できるソリューションなら、なおさら興味がある
  • 器具/筋肉の選択は必須でない方がよさそうだ
    たとえば、自分は懸垂バーを持っているが、どの筋肉を鍛えられるのかわからない
    それより「初心者向け」フィルターのような方式はどうだろう
  • 自分もこの点は考えていなかったが、今のフローは最初に要求する知識が多すぎる
    他の人たちからも同様のフィードバックをもらった
    フィルターオプションを任意にして、「初心者向け」「人気の種目」「カリステニクス」などのおすすめを追加する予定だ
    教えてくれてありがとう
  • じゃあ器具で懸垂バーだけ選べばいいのでは?
  • 初心者として最初に感じたのは、筋肉選択 UI が華やかな一方で混乱しやすいこと
    最初のオンボーディングで筋肉選択が必須だが、どのルーティンがどの筋肉を狙うのかわからない初心者にとっては参入障壁になる
    "プッシュ"、"プル"、"レッグ" くらいは何となくわかるが、具体的な筋肉名はなじみがない
    結局このアプリは、解剖学を勉強する人向けに最適化されている
    もう少し入りやすくする方法を考える必要がある
    たとえば、おすすめ筋群やプリセットなど
  • 率直なフィードバックありがとう
    今のオンボーディングは、要求する知識が多すぎる(予想以上に)
    初心者は「後部三角筋」や「広背筋」ではなく、ただ強くなりたい、体を良くしたいだけなんだ
    次のアップデートでは
  • 筋肉選択を任意化(あるいはスキップ可能にする)
  • 初心者向けプリセット(全身、上半身など)
  • "胸+三頭(プッシュ)", "背中+二頭(プル)" のような補助ラベル付きプリセット
    などを予定している
    最初から解剖学を勉強しなくても、すぐ始められる親しみやすい体験を作るのが目標だ
    君のフィードバックは本当に助かる
    フィットネスの旅を応援している
  • "プッシュ" "プル" は難しく感じるかもしれないけど、"レッグ" がわからないなら、それはさすがに知らなすぎでは(冗談)