Skip to content

eggchi21/workout

Repository files navigation

アプリケーションの概要

制作の背景

120kgだった私は、昨年、315日間ダイエットをして、フィジークの大会に出場しました。ダイエット期間中、体重の減り具合が芳しくなかったり、誘惑に負けそうになって不安になることがありましたが、Twitterに毎日体型の自撮りと体重、摂取カロリーをアップロードすることで、自制心を保つことができました。中にはエールをくれる同志がいて、Webでつながることに素晴らしさを覚えました。 この経験から、ダイエットの不安を解消してくれるアプリを作ってみたいと思い、同志と目標をシェア、食事・体重の増減経過のサポートを担うアプリの制作に至りました。

アクセス

https://www.workout-app.workからアクセスできます。

こだわり機能

  • ArrayクラスをRubyのRefinementで拡張し、作成したオリジナルの統計メソッド
  • Google Cloud Vision APIを使用した画像解析
  • WebサイトからScrapingした情報を用いてカロリー/PFCバランスの非同期で計算
  • その他の機能は「アプリケーションの機能一覧」よりご確認ください

コンセプト

「ダイエット×確率統計×目標シェア」

体重を毎日記録することで、将来の体重を確率統計で導きます。 ダイエットの知識がない人でもカンタンにはじめられるように、目標設定のサポート、 たべもの図鑑から食べたものを記録、カロリー/PFCバランスの計算結果をグラフ化します Image from Gyazo Image from Gyazo Image from Gyazo

アプリケーションの機能一覧

  • sessionを使用したウイザード形式でのユーザ新規登録機能/ログイン機能
  • 郵便番号から住所を自動入力する機能
  • 各種投稿(体重/目標/食事)の新規作成・編集・削除・一覧機能
  • 複数画像プレビュー表示/投稿機能
  • JavaScriptチャートライブラリのamChartsに独自のカスタマイズを加えたグラフの生成
  • 最小二乗法を使用し、1週間後の体重を予測する機能
  • カロリー・PFCバランスの非同期計算
  • カロリーSlismから食品のカロリー等の情報をスクレイピング
  • Ajaxで"たべもの"検索機能(インクリメンタルサーチ)
  • 経路列挙モデルで関連付けた"たべもの"の親子関係を一覧で表示させる機能
  • 食べ物を頭文字で分類する機能
  • いいね機能
  • SNS(Facebook,Google)経由でユーザー新規登録機能/ログイン機能
  • Google Cloud Vision APIを使用して商品パッケージ写真からPFCを識別する
  • csvで体重の記録を抽出する機能

アプリケーション内で使用している主な技術一覧

種別 名称
開発言語 Ruby(ver 2.5.1)
フレームワーク Ruby on Rails(ver 5.2.3)
マークアップ HTML(Haml),CSS(Sass)
フロントエンド JavaScript(jQuery)
グラフ描画 amCharts
日付入力 jQueryUI Datepicker
スクレイピング gem 'mechanize'
数学的処理 確率統計(最小二乗法,分散,共分散)
DB MySQL
テスト RSpec
コードレビューツール Rubocop
本番環境 AWS EC2
画像アップロード Active Storage, AWS S3
自動デプロイ capistrano
負荷分散 ロードバランサー
独自ドメイン Route53 お名前.com
URL httpsへSSL化
メモリ不足対策 gem 'unicorn-worker-killer'

実装予定の機能

  • LINEBotから体重記録
  • 増量プランの追加
  • 重回帰分析の導入
  • フォロー機能
  • 日々の画像を比較する機能

ER図

gem 'rails-erd'で自動生成 Image from Gyazo

GitHubからインストール

$ git clone https://github.com/eggchi21/workout.git
$ cd workout
$ bundle install
$ rails db:create
$ rails db:migrate
$ rails db:seed
$ rails server

基本操作

ログイン

  1. TOPページ中部の"Start This APP"をクリックしてください Image from Gyazo
  2. テストユーザー(sample1@sample.com)が入力されているので、そのままログインボタンを選択してください ※本番環境にてSNS経由でも可能です。 Image from Gyazo

体重を記録する

  1. メニュー(画面左上の三本線)から"体重を記録する"を選択してください Image from Gyazo
  2. 各種フォームを入力してください 体重と日付は必須項目です 同じ日付は登録できないようにバリデーションを実装してあるので、日付を変更するか、他のユーザーでログインしていただく必要がある場合があります。 (他のユーザーはメールアドレスの「sample"数字"@sample.com」の"数字"を1~9のうちいずれかにしてください。パスワードはすべて同じで"password"です) Image from Gyazo
  3. 体重一覧ページに遷移します。直近の1週間分の体重が表示されてグラフ下部のバーを調節する/右上のマイナスボタンを押すことで目的の範囲のグラフを描画できます ページ右上には最小二乗法で算出された、1週間後の体重が表示されています Image from Gyazo
  4. グラフの点すると編集画面へ遷移します Image from Gyazo

目標を設定する

  1. メニュー(画面左上の三本線)から"みんなの目標"を選択してください
  2. 目標が設定されてなければ、”目標を作成する”ボタンが表示されるので選択してください Image from Gyazo
  3. テストユーザーのユーザー情報が不足していれば、ユーザー情報更新ページに遷移するので、各種フォームに必要事項を入力してください Image from Gyazo
  4. 必要事項を入力していくと自動で次の入力フォームが出現します 要件に満たない場合はアドバイスが表示されます Image from Gyazo
  5. ダイエット方法によって最適なPFCバランスを提案します 登録できるような状態の数値であれば"設定する"ボタンが表示されるので選択してください Image from Gyazo
  6. "自分の目標を確認する"から編集・削除ができます Image from Gyazo

食事を記録する

  1. メニュー(画面左上の三本線)から"食事を記録する"を選択してください Image from Gyazo
  2. 検索欄に文字を入力して、候補から食事を選択してください Image from Gyazo
  3. 表の"個数”,”グラム”を変更すると自動でPFCバランス/カロリーが計算されます Image from Gyazo
  4. 削除もできます 完了したら"記録する"ボタンを選択してください。 Image from Gyazo
  5. 任意の棒グラフを選択すると編集画面へ遷移します Image from Gyazo
  6. また、たべもの図鑑から食べ物を検索できます。 Image from Gyazo Image from Gyazo

特徴的な操作

オリジナルのたべものを登録する

  1. メニュー(画面左上の三本線)から"たべもの登録"を選択してください Image from Gyazo
  2. "画像からPFCを取得する"を選択してください 成分表示が記載された商品パッケージを選んでください Image from Gyazo
  3. 画像を解析して、たんぱく質/脂質/炭水化物の含有量(g)がフォームに入力されます Image from Gyazo

郵便番号から住所を自動入力する

Image from Gyazo

体重をcsvで出力する

Image from Gyazo

ライセンス

The MIT License (MIT) Copyright © 2019

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

About

駆け出しエンジニア時代のポートフォリオ

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published