>_ DevTrendsja

言語

ホーム

言語

セクション

フロントエンド バックエンド モバイル DevOps AI / ML ゲーム開発 ブロックチェーン 組み込み セキュリティ
Python

フィットネストラッカーの有料サブスクを辞めて、自分のサーバーにwgerをデプロイした話

wger logo

ジムに通い始めると、すぐにスマホに десяток fitness apps が溜まるという古い癖があります。最初は順調に進みますが、1週間もすると有料墙が表示されます。重量漸進を使った複雑なプログラムを作りたい?月額料金を支払う。怪しいサプリメントの広告だらけのカロリー記録を続けたい?また料金を払う。それに、適切なデータエクスポートを阻むクローズドな独自フォーマットも加えると、運動記録を続ける気力はすぐに失せてしまいます。

しばらく前に、wger(ほぼ「vee-ger」と発音)というオープンソースプロジェクトに出会いました。PythonとDjangoで書かれた、フル機能の自己ホスト型ワークアウト・栄養管理マネージャーです。このプロジェクトは2013年からGitHub上にあり、6,600を超えるスターを集め、モバイルクライアントとオープンなREST APIを備えた成熟したプラットフォームへと成長しています。

Get it on Google Play Download on the App Store Get it on F-Droid Get it on Flathub

このシステムでできること

機能面では、wgerは定期的に運動してフィットネスの記録をつける人なら практическиすべてのニーズをカバーしています。

ワークアウトコンストラクターと負荷漸進

シンプルな分割から、精密な重量漸進ルールを持つ-periodizationまで、任意の複雑さのプログラムを作成できます。エクササイズデータベースは最初から付属しており、写真、テクニックの説明、筋群ごとの分類が含まれています。特定のマシンが不足している場合でも、自分で簡単に追加したり、コミュニティに投稿したりできます。

栄養記録とOpen Food Facts連携

りんごや鶏むね肉の栄養情報を手動で入力する代わりに、wgerはOpen Food Factsから商品データベースを取得します。これは世界中の食品の巨大なオープンデータベースです。独自の食事プランを作成し、マクロ栄養素(タンパク質、脂質、炭水化物)と1日のカロリー摂取量を追跡できます。

測定値と進捗ギャラリー

基本的な体重に加えて、システムは腹囲、上腕二頭筋、体脂肪率、任意のカスタム指標の歴史を保存します。日付ごとに進捗写真をアップロードすることもできます。サーバーが自分の管理下にあるので、個人写真がサードパーティのクラウドに漏れる心配はありません。

モバイルとデスクトップクライアント

通常、このようなオープンソースプロジェクトはWebインターフェースのみを持っていることが多く、スquat rackでスマートフォンの不便を感じます。wgerには公式のFlutterアプリがあります。Android(Google PlayとF-Droidを含む)、iOS、Linuxデスクトップ用のFlathub向けにビルドされています。クライアントはAPI経由で自分のインスタンスに直接接続します。

内部構造

プロジェクトのアーキテクチャは、信頼性の高いWebサービスとしては古典的な構成です:

  • バックエンドはDjango(Python)で記述。
  • データベース:PostgreSQLまたはSQLite(クイックテスト用)。
  • フロントエンドは標準的なDjangoテンプレートと、Django REST Frameworkで構築されたREST APIを使用。
  • モバイルアプリはFlutterで記述され、ソースコードは組織内の別リポジトリにある。
  • ライセンス:AGPL-3.0。

完全なREST APIがあるため、ウェブフック経由でワークアウト記録を自動化したり、スマート体重計を接続したり、年次統計をコンパイルして美しいレポートをメッセンジャーに送信する独自のPythonスクリプトを書いたりできます。

クイックスタート

自分のインスタンスをデプロイする一番簡単な方法はDocker Composeです。プロジェクトチームは、準備された設定ファイル一式を別リポジトリでメンテナンスしています。

ステップ1。Dockerファイルのレポジトリをクローンします:

git clone https://github.com/wger-project/docker.git wger-docker
cd wger-docker

ステップ2。コンテナスタックを起動します:

docker compose up -d

起動後、Webインターフェースはローカルポート(デフォルトではhttp://localhost:80)で利用可能です。初回のログイン時に、システムが管理者アカウントの作成と、エクササイズと材料の基本セットの読み込みを求めます。

自分のサーバーのセットアップが面倒に感じる場合は、作者たちがwger.deに公開無料のサーバーを用意しています。そこで登録してインターフェースを試してから、自分のホスティングが必要かどうか判断できます。

こんな人におすすめ

このプロジェクトは、次のような人に最適です:

  • 健康やワークアウトデータを自分のハードウェアに保存したい人。
  • MyFitnessPalやHevyなどの商用アプリの无尽的サブスクリプションに厌倦している人。
  • フィットネスのプロジェクトやジム向けの готовый バックエンドを探している人(wgerにはトレーナーとクライアントのためのロールベースのアクセス制御を備えた基本的なマルチユーザーモードがあります)。

欠点としては、Webインターフェースの一部が少し時代遅れに見えることと、モバイルアプリが有料の代替品と比べてスムーズさで劣る場合があります。しかし、サードパーティのクラウドからの独立性장과オープンなAPIがあれば、それ以上の価値があります。ホームサーバーやRaspberry Pi용のソリューションを探しているなら、wgerは確かにあなたのdocker-compose.ymlにふさわしい存在です。

関連プロジェクト