2013 年 度 卒 業 論 文 身 近 な 人 と 食 事 情 報 の 共 有 によるダイエット 支 援 の 検 討 指 導 教 員 : 渡 辺 恭 人 1040010 茅 根 浩 希 提 出 日 :2012 年 12 月 16 日
1. 背 景 と 目 的 4 1-1 背 景 1-2 目 的 1-3 本 論 文 の 構 成 2. 現 状 と 問 題 点 5 2-1 現 状 2-2 太 る 原 因 と 危 険 性 2-3 既 存 のダイエット 支 援 サービス 2-3-1 スマートフォンアプリケーション 2-3-2 Web サービス 2-4 既 存 のダイエット 支 援 サービスを 一 定 期 間 使 用 した 比 較 と 評 価 2-4-1 既 存 のダイエット 支 援 サービスの 比 較 と 評 価 2-5 既 存 のダイエット 支 援 サービスの 問 題 点 3. 解 決 法 の 検 討 15 3-1 解 決 へのアプローチ 3-2 摂 取 カロリーの 記 録 を 写 真 で 簡 単 にする 3-3 体 重 の 記 録 は 1 週 間 に 1 回 だけ 記 録 日 を 作 る 3-4 グループ 機 能 4. 設 計 と 実 装 17 4-1 アプリケーションの 設 計 4-1-1 アプリケーションの 全 体 のイメージ 4-1-2 食 品 の 写 真 を 登 録 するイメージ 4-2 データベースの 設 計 4-2-1 食 べたものの 管 理 テーブル 4-2-2 アプリケーションへログインするためのアカウントのテーブル 4-2-3 アカウントの 情 報 のテーブル 4-2-4 体 重 を 記 録 するテーブル 4-3 アプリケーションの 実 装 4-3-1 ログインページ 2
4-3-2 アカウントの 登 録 4-3-3 トップページ 4-3-5 食 べた 食 品 の 登 録 4-3-6 登 録 された 食 品 を 見 る 4-3-7 体 重 を 登 録 4-3-7 アカウントの 内 容 を 変 更 する 4-7-8 ログアウトする 5. 評 価 と 考 察 52 5-1 動 作 検 証 5-2 評 価 5-2-1 実 装 の 評 価 5-2-2 モニターの 評 価 5-3 考 察 6. まとめと 今 後 の 課 題 59 6-1 まとめ 6-2 今 後 の 課 題 6-2-1 グループ 機 能 6-2-2 近 況 の 表 示 方 法 6-2-3 データをグラフによる 視 覚 化 参 考 文 献 61 謝 辞 62 3
1 章 背 景 と 目 的 1-1. 背 景 今 日 多 くの 人 が 自 分 の 体 型 や 健 康 を 気 にしてさまざまな 方 法 のダイエットに 取 り 組 んでいる しかし 実 際 には 気 にしていても 運 動 する 機 会 が 少 なかったり 常 に 意 識 をしていなければ 食 べ 過 ぎたり 一 人 でダイエットをするのが 辛 くて 失 敗 してしま う 人 も 多 い 筆 者 も 大 学 生 になり 自 由 な 時 間 が 多 くなったが サークルや 部 活 動 に 所 属 していないため 運 動 する 機 会 が 少 なくなった それと 反 対 に 友 人 との 交 流 が 多 くなり 食 べる 機 会 が 増 え お 互 い 体 型 が 大 きくなり 体 型 の 話 しをする 機 会 が 多 くな った さらに 大 学 生 から 社 会 人 になると 今 よりも 運 動 に 時 間 をかける 事 が 出 来 なく なり さらに 運 動 する 機 会 がなくなる このような 現 状 からダイエットをするため にまず 食 生 活 を 見 直 す 事 と 一 人 ではなく 仲 間 と 取 り 組 む 必 要 がある 1-2. 目 的 本 研 究 では 今 の 体 の 状 況 を 把 握 するために 食 べ 物 や 体 重 の 記 録 管 理 家 族 や 友 人 などの 身 の 回 りの 人 と 記 録 を 共 有 する 事 によって 体 重 維 持 ダイエットを 長 く 続 け る 事 の 手 助 けにする 事 を 目 的 とする 1-3. 本 論 文 の 構 成 本 論 文 では 2 章 で ダイエットの 現 状 や 種 類 共 通 点 を 調 べ また 既 存 のダイエッ ト 支 援 サービスの 問 題 点 の 分 析 を 行 う 3 章 では 前 章 で 明 らかになった 事 を 踏 まえ 解 決 策 の 提 案 を 行 う 4 章 では 提 案 をもとにシステムの 設 計 を 行 う 5 章 では 設 計 案 をもとに 実 装 を 行 う 6 章 では 実 装 や 実 際 に 使 用 した 評 価 を 行 い 考 察 をする 7 章 では 本 研 究 をまとめ 今 後 の 課 題 を 述 べる 以 上 が 本 論 文 の 構 成 である 4
2 章 現 状 と 問 題 点 ここでは どのようなダイエットがどのように 行 われているのか 現 状 を 把 握 するた め 調 査 する 2-1. 現 状 ダイエットと 言 えば 運 動 を 連 想 する 人 は 多 くいる 実 際 にダイエットのためにジム に 通 う 人 や スポーツをして 汗 を 流 す 人 たちが 多 くいる しかし 体 脂 肪 1kg 減 らす ためには 約 7000 キロカロリーから 7200 キロカロリーの 消 費 が 必 要 になる 体 脂 肪 1kg を 減 らすためにランニングまたはウォーキングをする 場 合 に 摂 取 カロリーを 抜 いて 考 えると 約 120 kmもランニングまたはウォーキングをする 必 要 があることが 図 2-1-1 を 見 て 分 かる この 事 から 運 動 だけによるダイエットの 成 功 は 難 しいために 摂 取 するカロリーを 調 整 する 必 要 がある 図 2-1-1: 食 品 のエネルギー 量 と 消 費 に 要 する 運 動 量 ( 東 京 都 病 院 経 済 本 部 より 引 用 ) また 現 代 のダイエットは スマートフォンの 普 及 によりスマートフォンのアプリ ケーションを 利 用 し 行 うケースが 多 くなってきている MACROMILL と InMobi が 共 同 で 全 国 のスマートフォンユーザの 女 性 300 人 (10 代 以 下 85 人 20 代 100 人 30 代 75 人 40 代 以 上 40 人 )を 対 象 に 調 査 したところ 図 2-1-2 のような 結 果 になった 現 在 ダイ エットをしている 人 が 60%という 事 が 分 かった また 180 人 のうち 64%の 人 がスマ ートフォンのアプリケーションを 使 用 している または 使 用 した 事 ある スマートフ ォンのダイエット 支 援 アプリケーションは 主 に 食 事 制 限 やカロリーコントロールをす るためのものが 多 く 手 軽 で 簡 単 に 記 録 をつける 事 が 出 来 る 事 から 利 用 する 人 が 多 く なっている 5
図 2-1-2:ダイエットの 現 状 (MACCROMILL InMobi より 引 用 ) 2-2. 太 る 原 因 と 危 険 性 太 る 原 因 として 食 べ 物 を 多 量 に 食 べてしまう 事 による エネルギーの 取 りすぎと 運 動 不 足 が 肥 満 の 主 な 原 因 だ つまり 食 事 を 多 くとり 摂 取 カロリーが 多 い 運 動 を 不 足 により 消 費 カロリーが 少 ない またはその 両 方 を 満 たす 場 合 に 肥 満 に 陥 りやすい という 事 だ また 食 事 の 回 数 や 時 間 の 不 規 則 夜 にまとめて 食 事 をするという 事 も 肥 満 につながる 食 事 の 回 数 や 時 間 の 不 規 則 であると 体 の 中 にいつ 食 べ 物 が 入 って くるかわからないため 体 がエネルギーを 脂 肪 に 溜 め 込 んでしまうからである 夜 は 栄 養 の 吸 収 率 が 高 まるため エネルギーを 脂 肪 に 溜 め 込 みやすい 国 立 循 環 器 病 研 究 センターの 循 環 器 病 情 報 サービスでは 肥 満 の 原 因 を 次 のように 述 べている 現 代 人 の 肥 満 は 食 べすぎ 運 動 不 足 に 加 え 食 べ 方 の 異 常 ( 摂 食 パターンの 異 常 ) 遺 伝 的 体 質 さらに 食 事 や 運 動 をした 後 や 体 温 を 一 定 に 保 つために 体 は 生 理 的 に 熱 を 発 生 しますが この 働 きが 低 下 している 場 合 ( 熱 産 生 障 害 )などが 原 因 にな っています さらに 最 近 のライフスタイルの 急 激 な 変 化 が 大 きく 影 響 しているの はいうまでもありません 食 べすぎると 当 然 の 事 ですが 摂 取 エネルギーが 消 費 エ ネルギーを 上 回 って 残 りは 貯 蔵 に 回 ってしまいます イライラしたり いつも 不 安 感 がある 場 合 それから 逃 避 したいために つい 食 べすぎてしまいがちです 運 動 が 6
不 足 すれば 消 費 エネルギーが 減 り 普 通 量 の 食 事 でも 太 る 原 因 になります 肥 満 者 の 食 事 回 数 は 必 ずしも 多 いというわけではく むしろ 回 数 が 少 ない 方 が 太 りやす い 事 もわかってきました 至 適 体 重 になるには 朝 食 を 抜 いて 夜 間 にたくさん 食 べる まとめ 食 い や 1 日 の 食 事 の 半 分 以 上 を 夜 間 にとる 夜 食 症 候 群 などが 問 題 です 夜 間 は 消 化 管 の 吸 収 機 能 が 昼 間 より 高 まりやすく エネルギーが 貯 蔵 に 回 り やすいからです ( 注 1 http://www.ncvc.go.jp/cvdinfo/pamphlet/obesity/pamph03.html#anchor-3 2012 年 12 月 12 日 ) 肥 満 には 糖 尿 病 循 環 器 疾 患 や 癌 など 多 くの 病 気 に 関 係 していて 健 康 に 重 大 な 悪 影 響 を 及 ぼす 危 険 性 がある それを 防 ぐためには 生 活 または 食 事 を 正 さなくては いけない 2-3. 既 存 のダイエット 支 援 サービス ここでは 既 存 のダイエット 支 援 サービスについて 調 べる 2-3-1.スマートフォンアプリケーション 人 気 があるスマートフォンのアプリケーションについて 調 べた 現 状 で 述 べたとお り 現 代 はスマートフォンのアプリケーションを 使 用 しダイエットをしている 人 が 多 く スマートフォンを 持 っていれば 簡 単 に 実 行 出 来 る 手 軽 さが 人 気 の 理 由 だと 考 えら れる (1).32Calorie( 作 成 者 :h13i32mar 対 応 端 末 :Android 無 料 ) このアプリケーションは 最 大 摂 取 カロリーと 目 標 摂 取 カロリーを 自 分 の 体 重 から 算 出 し 朝 食 昼 食 夜 食 間 食 の 毎 食 の 摂 取 カロリーをプラスボタンとマイナスボ タンで 操 作 し 自 分 が 実 際 に 摂 ったカロリーを 記 録 していくものだ 一 か 月 の 摂 取 カ ロリーを 棒 グラフとして 表 示 する 事 ができ 平 均 も 確 認 する 事 が 出 来 る また ウィ ジェットも 用 意 されおり 記 録 を 確 認 する 事 がとても 簡 単 だ 使 用 手 順 は 図 2-3-1-1 の 設 定 画 面 で 1 日 に 摂 取 するカロリーの 範 囲 を 自 分 で 算 出 7
し 目 標 に 下 限 を 入 力 し 最 大 に 上 限 を 入 力 する 図 2-3-1-1: 設 定 画 面 カロリーの 設 定 が 終 わると 図 2-3-1-2 の 入 力 画 面 に 切 り 替 わり 自 分 で 入 力 した 目 標 と 最 大 の 目 印 が 入 ったグラフが 表 示 される 実 際 に 摂 ったカロリーは 朝 食 昼 食 夜 食 間 食 ごとのプラスボタン マイナスボタンを 使 用 して 操 作 する 食 事 ごとに 色 分 けがされているので 摂 取 カロリーの 内 訳 が 一 目 でわかるようになっている 図 2-3-1-2: 入 力 画 面 (2).メタボレコーダ( 作 成 者 :Next Future Inc 対 応 端 末 :Android 無 料 ( 有 料 版 ある)) このアプリケーションは 体 重 を 毎 日 記 録 していくものだ しかし 体 重 のほかにも 身 長 基 礎 代 謝 体 脂 肪 量 筋 肉 量 の 入 力 が 必 要 だ これらを 入 力 する 事 によって BMI 体 脂 肪 率 筋 肉 率 を 知 る 事 が 出 来 る このアプリケーションを 使 用 するには 体 重 以 8
外 にも 体 の 状 態 を 知 る 事 が 出 来 る 体 重 計 が 必 要 になる 記 録 したデータを 30 日 間 の 測 定 データとしてグラフで 表 示 する 事 や Excel 形 式 で のデータ 出 力 も 可 能 だ また PC 上 でデータを 登 録 する 事 も 可 能 だ このアプリケーシ ョンを 使 用 するにはユーザ 登 録 が 必 要 になる アプリケーションを 開 くと 図 2-3-1-3 のように 入 力 画 面 が 表 示 され 身 長 基 礎 代 謝 体 脂 肪 量 筋 肉 量 を 入 力 する 事 が 出 来 る 図 2-3-1-3: 入 力 画 面 図 2-3-1-3 はメタボレコーダをスマートフォンで 開 いた 場 合 のメニュー 画 面 だ 図 2-3-1-5 の Web の 入 力 画 面 と 比 べると 機 能 は 少 ないがスマートフォンで 今 までのデー タのグラフを 見 る 事 が 出 来 る 図 2-3-1-4:メニュー 画 面 Web 上 でメタボレコーダを 開 くと 図 2-3-1-5 の 入 力 画 面 が 表 示 される また 9 種 類 のボディタイプの 中 から 毎 日 入 力 している 体 脂 肪 率 と BMI の 割 合 によって 判 定 さ 9
れ 自 分 がどのようなボディタイプなのか 知 る 事 が 出 来 る 図 2-3-1-5:Web の 入 力 画 面 2-3-2.Web サービス Web サービスを 提 供 している 企 業 が 多 くあり 機 能 の 充 実 から 高 い 効 果 が 得 られる 事 が 期 待 出 来 る (1).GirlsDiet( 作 成 者 : 株 式 会 社 IBJ 無 料 ) GirlsDiet は 株 式 会 社 IBJ が 運 営 する 女 性 限 定 の SNS であり 日 記 を 書 くと 同 時 に 体 重 や 体 脂 肪 率 を 記 録 する 事 によって 体 重 の 変 動 を 毎 日 記 録 する 事 が 出 来 る 他 の SNS と 同 じくコミュニティがあり またダイエット 成 功 者 の 座 談 会 なども 開 かれる ダイエットのプランは 自 分 で 立 てるが 成 功 者 のダイエット 法 を 参 考 にする 方 が 多 い また この SNS には 設 定 した 身 長 体 重 や 体 脂 肪 率 から 自 分 の 体 型 を 推 測 しアバ ターに 反 映 される 体 重 や 体 脂 肪 率 が 変 動 するとアバターの 体 形 が 変 わるため 痩 せ た 事 や 太 った 事 が 実 感 出 来 る 図 2-3-2-1 では 日 記 とデータ 入 力 をする 必 要 がある 日 記 には 主 に 食 べた 物 実 行 した 運 動 やエクササイズまたは 自 分 が 実 行 しているダイエットの 方 法 などを 中 心 に 書 き 配 信 する 10
図 2-3-2-1: 日 記 とデータ 入 力 画 面 他 のユーザの 日 記 を 見 る 事 によってその 人 が 実 行 しているダイエットの 種 類 ややり 方 を 知 る 事 が 出 来 る そして ダイエット 成 功 者 の 日 記 を 参 考 に 同 じようにダイエッ トをする 事 が 出 来 る 図 2-3-2-2: 他 のユーザの 日 記 ( 観 覧 数 ランキング) (2).あすけんダイエット( 作 成 者 :あすけん 無 料 ) 株 式 会 社 ウィットが 運 営 するサービスであり 栄 養 士 のアドバイスが 受 けられダイ エットをサポートしてもらえるところが 特 徴 だ 主 なサービスの 流 れは 食 事 運 動 体 の 状 態 を 記 録 し 栄 養 士 からアドバイスが 届 き アドバイスに 従 って 食 生 活 や 運 動 習 慣 の 改 善 をする 事 だ 他 のサービスとの 違 いは カテゴリーから 分 類 を 選 択 し メニ ューを 選 び 分 量 を 選 ぶだけでカロリー 栄 養 素 を 自 動 計 算 されるところだ 図 2-3-2-3 の 入 力 画 面 では 朝 食 昼 食 夕 食 間 食 運 動 の 種 類 と 量 を 入 力 が 出 来 11
る 図 2-3-2-3: 入 力 画 面 図 2-3-2-3 で 食 事 の 中 からボタンを 押 すと 図 2-3-2-4 の 選 択 画 面 に 移 動 する そ して カテゴリーからとった 食 事 の 種 類 を 選 び 次 に 種 類 から 食 品 名 を 選 択 して 分 量 を 選 ぶ 事 で 入 力 が 完 了 する 図 2-3-2-4: 選 択 画 面 2-4. 既 存 のダイエット 支 援 サービスを 一 定 期 間 使 用 した 比 較 と 評 価 上 で 調 べた 既 存 のダイエット 支 援 サービスを 長 期 休 みに 一 定 期 間 使 用 し そのサー ビスの 比 較 と 評 価 を 行 う 2-4-1. 既 存 のダイエット 支 援 サービスの 比 較 と 評 価 32Calorie メタボレコーダ girlsdiet あすけんダイエットの 4 つのダイエット 支 援 サービスの 機 能 を 比 較 すると 図 2-4-1 のようになる 32Calorie とメタボレコー 12
ダのスマートフォンアプリケーションの 機 能 は 的 が 絞 れており 一 つの 目 的 に 一 つの アプリケーションを 使 用 しなければならない それと 反 対 に Web サービスの 場 合 は 記 録 や 計 算 コミュニティなどの 幅 広 い 目 的 を 一 つのサービスで 実 行 する 事 ができた スマートフォンアプリケーションと Web サービスを 一 定 期 間 使 用 した スマートフ ォンは 常 に 手 元 にあるため どこにいてもアプリケーションを 起 動 し 素 早 く 記 録 をす る 事 ができ ウィジェットを 有 効 に 活 用 する 事 により アプリケーションを 開 かずに データを 確 認 する 事 が 出 来 た また Web サービスの 利 点 は PC 上 でもスマートフォ ンでも Web サービスを 受 ける 事 が 出 来 る 事 だが スマートフォンアプリケーションと 比 較 すると 記 録 を 入 力 する 事 に 時 間 がかかってしまった しかし あすけんダイエット 以 外 の 32Calorie メタボレコーダや girlsdiet は 自 分 で 打 ち 込 む 項 目 が 多 くあり 面 倒 と 感 じた 摂 取 カロリーも 自 分 で 調 べ 打 ち 込 む 事 や 体 重 を 毎 日 記 録 がする 事 によって 効 果 の 表 れを 感 じにくいために 挫 折 に 繋 がって しまう 原 因 になる また あすけんダイエットでは カテゴリー メニュー 分 量 を 一 つずつ 選 んでいかなければいけないところから 選 択 する 数 か 多 すぎて 面 倒 に 感 じた 図 2-4-1: 機 能 の 比 較 2-5. 既 存 のダイエット 支 援 サービスの 問 題 点 2-4 節 の 既 存 のダイエット 支 援 サービスの 評 価 を 踏 まえて 支 援 サービスの 問 題 点 は 摂 取 した 食 品 のカロリーを 調 べ 打 ち 込 む 事 や 毎 日 体 重 の 記 録 が 繁 雑 であった あす 13
けんダイエットでの 食 事 の 入 力 でもあったが 自 分 で 細 かく 数 字 を 打 ち 込 む 作 業 はな いが 食 品 を 選 択 する 事 にとても 時 間 がかかった そのために 時 間 をかけずに 簡 単 に 食 品 を 登 録 出 来 る 仕 組 みが 必 要 である また 体 重 の 入 力 を 毎 日 行 う 必 要 はあるのだろうか 積 み 重 ねは 大 事 な 事 だが 体 重 はダイエットを 始 めたからといってすぐに 落 ちるものではない 毎 日 変 わらない 体 重 を 打 ち 続 ける 事 によって 飽 きが 生 じダイエットを 続 ける 妨 げになってしまう girlsdiet やあすけんダイエットなどの SNS にはダイエットコミュニティが 多 くあ る コミュニティには 同 じダイエット 方 法 を 試 している 人 の 集 団 や 失 敗 をしない ために 励 まし 合 うものを 目 的 としたものがある しかし SNS のコミュニティに 集 まる 同 じ 環 境 で 同 じ 状 況 の 面 識 のない 人 とダイエットをしても 慣 れ 合 いになり 継 続 す る 事 は 難 しい 14
3 章 解 決 法 の 検 討 2-5 節 の 既 存 のダイエット 支 援 サービスの 問 題 点 で 取 り 上 げた 食 品 のカロリーの 入 力 毎 日 の 体 重 の 入 力 コミュニティの 解 決 法 を 検 討 する 3-1. 解 決 へのアプローチ 2 章 で 取 り 上 げた 既 存 の 支 援 サービスの 問 題 点 は 入 力 に 手 間 がかかるという 事 と コミュニティは 馴 れ 合 いの 場 で 継 続 にはつながらないという 事 だ 入 力 に 手 間 がかかってしまうのは 多 くある 選 択 肢 から 選 ぶ 事 や 体 重 を 毎 日 入 力 する 事 が 原 因 であると 考 える そこで 私 は 簡 単 に 入 力 をする 方 法 として 摂 取 した 食 品 の 写 真 を 撮 り 記 録 しておく 事 と 体 重 の 記 録 を 毎 日 ではなく 1 週 間 に 1 回 の 記 録 日 を 作 る 事 を 解 決 策 として 提 案 する また ダイエットをより 長 く 継 続 出 来 るように 小 規 模 グループを 作 る 事 を 提 案 する 3-2. 摂 取 カロリーの 記 録 を 写 真 で 簡 単 にする 食 べた 食 品 のカロリーを 調 べて 入 力 をするよりも 食 べた 食 品 を 写 真 で 撮 る 事 によ って 食 べた 食 品 が 何 なのか どの 量 なのか どのくらいカロリーがありそうなのか が 見 て 分 かり 文 字 だけで 見 るよりも 食 品 の 内 容 の 記 録 を 簡 単 にする 事 が 出 来 る また 食 事 毎 に 文 字 を 打 つよりも 今 から 食 べる 写 真 を 撮 る 方 が より 長 く 続 けら れる 事 に 繋 がる 3-3. 体 重 の 記 録 は 1 週 間 に 1 回 だけ 記 録 日 を 作 る 体 重 はすぐに 変 動 しないが それを 毎 日 打 ち 続 ける 事 によって ダイエットへの 飽 きやモチベーションの 低 下 が 考 えられるが 体 重 の 記 録 を 1 週 間 に 1 回 記 録 日 を 作 る 事 によってより 高 いモチベーションを 維 持 出 来 る 3-4.グループ 機 能 本 来 ならば グループはコミュニティに 入 るのだが 本 研 究 では グループとコミュ ニティを 分 けて 考 える 本 研 究 でのコミュニティとは 顔 見 知 りがいなく 自 由 にコミュ ニティという 場 所 に 出 入 り 出 来 ると 位 置 付 け それと 反 対 にグループは 顔 見 知 りで 同 15
意 をもって 入 る 事 が 出 来 る 場 所 と 位 置 付 ける 顔 見 知 りの 人 とグループを 作 る 理 由 は 自 分 の 身 の 回 りにいる 人 は 自 分 の 体 型 を 知 っていて 体 の 変 化 は 見 て 確 認 する 事 が 出 来 る 顔 見 知 りの 人 達 とグループを 作 る 事 によって 友 人 に 食 生 活 を 見 られるので 規 則 正 しく また 食 べ 過 ぎに 注 意 するように 食 事 をとる 意 識 をさせる 事 が 出 来 る 図 3-4: 機 能 の 比 較 16
4 章 設 計 と 実 装 2 章 の 現 状 と 問 題 点 と 3 章 での 解 決 法 を 踏 まえてアプリケーションの 設 計 と 実 装 を 行 う 4-1.アプリケーションの 設 計 4-1-1.アプリケーションの 全 体 のイメージ アプリケーションの 全 体 のイメージは 図 4-1-1 のようになる 最 初 にログイン 画 面 を 表 示 する 正 しい ID とパスワードを 入 力 し 確 認 されるとユーザ 画 面 に 移 る ID とパ スワードを 持 っていない 場 合 は 新 規 会 員 登 録 画 面 へ 移 る ユーザ 画 面 では 食 品 の 登 録 自 分 または 友 人 の 登 録 した 食 品 を 見 る 体 重 の 登 録 ユーザの 登 録 内 容 の 変 更 が 出 来 る 図 4-1-1: 全 体 のイメージ 4-1-2. 食 品 の 写 真 を 登 録 するイメージ A というユーザが 写 真 を 登 録 する 場 合 のイメージは 入 力 フォームで 写 真 を 選 択 し 内 容 の 送 信 を 行 う 内 容 を 送 信 すると 画 像 フォルダに 画 像 を 格 納 し 画 像 の 名 前 をデ ータベースに 格 納 する そして 内 容 を 見 る 場 合 では データベースから 画 像 の 名 前 を 呼 び 出 し 画 像 フォルダから 画 像 を 読 み 込 むようにする 17
図 4-1-2: 登 録 イメージ 4-2.データベースの 設 計 必 要 なデータベースを 設 計 し 作 成 する 表 4-2: 作 成 するテーブル 名 テーブル 名 Ddb User Userdata taiju 4-2-1. 食 べたものの 管 理 テーブル 食 品 を 登 録 するために 必 要 なテーブルを 設 計 する 表 4-2-1-1:ddb テーブル 設 計 項 目 名 フィールド 名 データ 型 ユーザ ID uname varchar(255) 食 べた 日 day date 18
食 べた 時 間 tim time 食 べ 物 名 name varchar(255) 食 べた 物 の 画 像 img varchar(255) 推 定 カロリー kcal int(11) 報 告 hyou int(11) 連 番 renban Int(11) 設 計 した 表 4-2-1-1 をもとにテーブルを 作 成 する Renban には 連 番 の 設 定 をする 表 4-2-1-2:ddb テーブル 作 成 mysql> create table ddb (uname varchar(255),day date,tim time,name varchar(255),img varchar(255),kcal int(11),jtai int(11),renban int(11)); Query OK, 0 rows affected (0.01 sec) mysql> alter table closet add index ind1(renban); Query OK, 0 rows affected (0.00 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> alter table closet modify renban int auto_increment; Query OK, 0 rows affected (0.00 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> show fields from ddb; +-------+--------------+------+-----+---------+----------------+ Field Type Null Key Default Extra +-------+--------------+------+-----+---------+----------------+ uname varchar(255) YES NULL day date YES NULL tim time YES NULL 19
name varchar(255) YES NULL img varchar(255) YES NULL kcal int(11) YES NULL jtai int(11) YES NULL renban int(11) NO MUL NULL auto_increment +-------+--------------+------+-----+---------+----------------+ 4-2-2.アプリケーションへログインするためのアカウントのテーブル アプリケーションへログインするためのユーザ ID やパスワードを 保 存 しておくテー ブルを 設 計 する 表 4-2-2-1:user テーブル 設 計 項 目 名 フィールド 名 データ 型 連 番 Id Int(11) ユーザ ID Uname Char(255) パスワード Pwd Char(255) 表 4-2-2-1 をもとに テーブルを 作 成 する Id には 連 番 の 設 定 をしておく 表 4-2-2-2:user テーブル 作 成 mysql> create table user (id int,uname varchar(255),pwd varchar(255)); Query OK, 0 rows affected (0.00 sec) mysql> alter table user add index ind1(id); Query OK, 0 rows affected (0.00 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> alter table user modify id int auto_increment; Query OK, 0 rows affected (0.00 sec) Records: 0 Duplicates: 0 Warnings: 0 20
mysql> show fields from user; +-------+-----------+------+-----+---------+-------------------------------- -----+ Field Type Null Key Default Extra +-------+-----------+------+-----+---------+-------------------------------- -----+ id int(11) NO MUL NULL auto_increment uname char(255) YES NULL pwd char(255) YES NULL +-------+-----------+------+-----+---------+-------------------------------- ----------+ 3 rows in set (0.00 sec) 4-2-3.アカウントの 情 報 のテーブル ユーザの 情 報 を 保 存 しておくテーブルの 設 計 をする 表 4-2-3-1:userdata テーブル 設 計 項 目 名 フィールド 名 データ 型 ユーザ ID Uname Varchar(255) ユーザの 名 前 Username Varchar(255) 目 標 体 重 Mokutai Int(11) 目 標 カロリーの 下 限 Mokukc Int(11) 目 標 カロリーの 上 限 Mokukc2 Int(11) 表 4-2-3-1 をもとにテーブルを 作 成 する 表 4-2-3-2:userdata テーブル 作 成 mysql> create table userdata2 (uname varchar(255),username varchar(255),mokutai int(11),mokukc int(11),mokukc2 int(11)); Query OK, 0 rows affected (0.01 sec) 21
mysql> show fields from userdata; +----------+--------------+------+-----+---------+-------+ Field Type Null Key Default Extra +----------+--------------+------+-----+---------+-------+ uname varchar(255) YES NULL username varchar(255) YES NULL mokutai int(11) YES NULL mokukc int(11) YES NULL mokukc2 int(11) YES NULL +----------+--------------+------+-----+---------+-------+ 5 rows in set (0.00 sec) 4-2-4. 体 重 を 記 録 するテーブル ユーザの 体 重 を 管 理 するテーブルの 設 計 をする 表 4-2-4-1:taiju テーブル 設 計 項 目 名 フィールド 名 データ 型 登 録 日 Tday Date ユーザ ID Uname Varchar(255) 現 在 の 体 重 Taiju Int(11) 表 4-2-4-1 をもとにテーブルを 作 成 する 表 4-2-4-2:taiju テーブル 作 成 mysql> create table taiju (tday date,uname varchar(255),taiju int(11)); Query OK, 0 rows affected (0.01 sec) mysql> show fields from taiju; +-------+--------------+------+-----+---------+-------+ Field Type Null Key Default Extra +-------+--------------+------+-----+---------+-------+ 22
tday date YES NULL uname varchar(255) YES NULL taiju int(11) YES NULL +-------+--------------+------+-----+---------+-------+ 3 rows in set (0.00 sec) 4-3.アプリケーションの 実 装 アプリケーションの 設 計 をもとに 実 装 を 行 う 図 4-3: 実 装 のシステム 構 成 実 装 環 境 を 表 4-3-1 にクライアントの 環 境 表 4-3-2 にサーバの 環 境 表 4-3-3 に 使 用 したプログラム 言 語 を 示 す 表 4-3-1:クライアント 環 境 オペレーティングシステム Windows Vista Home Premium service pack 2 CPU メモリ Intel core 2 Duo CPU P8600 @2.40GHz 2.40GHz 4.00GB 表 4-3-2:サーバ 環 境 ( 学 外 :www.cyaneum.org) オペレーティングシステム Ubuntu 8.04 server 23
CPU メモリ Pentium M 1.6GHz 1GB Web サーバ Apache 2.2.8 データベース MySql 5.0.96 表 4-3-3:プログラミング 言 語 PHP HTML Version:5.2.4-2 HTML5 4-3-1.ログインページ ログインシステムを 構 築 する Login.php で 入 力 されたユーザ ID とパスワードを user のデータベースに 問 い 合 わせ 照 合 し 一 致 した 場 合 にトップ 画 面 へ 移 るプログラ ム を 作 成 す る セ ッ シ ョ ン を 使 用 し ロ グ イ ン が 成 功 し た 場 合 に ユ ー ザ ID を $_SESSION[ name ]の 中 に 保 存 し ページを 移 動 した 場 合 にログイン 状 態 のチェック を 行 う また 次 回 から 自 動 ログインするにチェックがされた 状 態 でログインボタン を 押 すと データが 暗 号 化 され cookie に 保 存 される 図 4-3-1-1:ログインのブロック 図 24
図 4-3-1-2:ログイン 画 面 表 4-3-1-3:login.php <?php define("password", "pass"); $message = ""; session_start(); extract($_post); mysql_connect('localhost','b040010','********'); mysql_select_db('b040010'); $sql = "select * from user where uname='$id' and pwd='$pwd'"; $result = mysql_query($sql); if(isset($_cookie["test_cookie"]) && $_COOKIE["TEST_COOKIE"] === sha1(password)){ $_SESSION["TEST"] = $_COOKIE["TEST_COOKIE"]; header("location:top.php"); } 25
if(isset($_post["action"])&&$_post["action"]==="login"){ if(mysql_num_rows($result)!=0){//パスワード 確 認 $_SESSION["TEST"] = md5(password); // 暗 号 化 してセッションに 保 存 if(isset($_post["memo"]) && $_POST["memo"]==="true"){ // 次 回 からは 自 動 的 にログイン setcookie("test_cookie", $_SESSION["TEST"],time()+3600*24*14); // 暗 号 化 してクッキーに 保 存 $_SESSION["uname"] = $_POST["id"]; } $_SESSION["uname"] = $_POST["id"]; header("location:top.php"); }else{ session_destroy();//セッション 破 棄 $message = "ID または PASSWORD が 違 います"; } }?> <!DOCTYPE HTML PUBLIC> <html lang="ja"> <head> <title>ダイエット</title> <meta http-equiv="content-type" content="text/html; charset=utf-8"> 26
</head> <body> <h1>login</h1> <?php if($message!=""){ print "<p class=\"message\">".$message."</p>\n"; }?> <form action="" method="post"> <p>id : <input name="id" type="text" value="" /></p> <p>password : <input name="pwd" type="password" value="" /></p> <p><label><input type="checkbox" name="memo" value="true" /> 次 回 からは 自 動 的 にログインする</label></p> <input name="action" type="submit" value="login" /></p> <a href = shintouroku.html> 新 規 登 録 </a> </form> </body> </html> 4-3-2.アカウントの 登 録 ログインするためのユーザ ID とパスワードの 登 録 を 行 うページを 作 成 する shintouroku.html でユーザ ID パスワード 氏 名 目 標 体 重 のデータを 入 力 し shintouroku.php に 送 り ユーザ ID とパスワードは user のデータベースに 氏 名 と 目 標 体 重 は userdata のデータベースに 書 き 込 む また 目 標 体 重 に 25 と 30 を 掛 けた 数 を userdata の mokukc のフィールドと mokukc2 のフィールドへ 保 存 する 27
図 4-3-2-1: 新 規 登 録 のブロック 図 図 4-3-2-2: 新 規 登 録 画 面 表 4-3-2-3:Shintouroku.html <!DOCTYPE HTML PUBLIC> <html lang="ja"> <head> <title>ダイエット</title> <meta http-equiv="content-type" content="text/html; charset=utf-8"> </head> 28
<body> <h1> 新 規 登 録 </h1> <form name="shintouroku" action="shintouroku.php" method="post"> <p>id : <input type="text" name="id" size="20" value="" /></p> <p>password : <input type="text" name="pwd" size="20" value="" /></p> <p> 名 前 : <input type="text" name="nam" size="20" value="" /></p> <p> 目 標 体 重 : <input type="text" name="moku" size="20" value="" /></p> <p><input type="submit" value=" 登 録 "></p><br /> <p><a href="top.php">トップにもどる</a></p> </form> </body> </html> 表 4-3-2-4:Shintouruku.php <!DOCTYPE HTML PUBLIC> <html lang="ja"> <head> <title>ダイエット</title> <meta http-equiv="content-type" content="text/html; charset=utf-8"> </head> <body> <?php extract($_post); mysql_connect('localhost','b040010','********'); mysql_select_db('b040010'); 29
$username = $_POST["id"]; $password = $_POST["pwd"]; $cpwd = md5($password); $mokuk = $_POST["moku"] * 25; $mokuk2 = $_POST["moku"] * 30; $sql = "insert into user values (0,'$username','$pwd')"; $sql2 = "insert into userdata values ('$username','$nam','$moku','$mokuk','$mokuk2')"; mysql_query($sql2); $result = mysql_query($sql); if (!$result) { $message = ' 無 効 なクエリです :'. mysql_error(). "<br>"; $message.= 'クエリの 内 容 : '. $sql; echo "<p>"; echo $message; echo "<a href = shintouroku.html> 戻 る</a>"; echo "</p>"; } else { echo " 登 録 完 了 <br />"; echo "<a href = login.php>ログイン 画 面 に 戻 る</a>"; }?> </body> </html> 4-3-3.トップページ トップページでは user と userdata のデータベースから 新 規 会 員 ページで 登 録 した 名 前 と 目 標 体 重 目 標 体 重 から 算 出 した 1 日 の 目 安 の 摂 取 カロリーをトップページに 表 示 する また 体 重 登 録 していた 場 合 に 登 録 した 体 重 から 目 標 体 重 を 引 き 目 標 まであ 30
とどのくらいなのかを 表 示 させる トップページから 食 品 の 登 録 登 録 された 内 容 を 見 る 体 重 の 登 録 登 録 内 容 の 変 更 のページに 移 動 出 来 るようにする なお 体 重 の 登 録 ページは 今 日 の 曜 日 を 呼 び 出 し 分 岐 で 毎 週 土 曜 日 だけ 選 択 出 来 るようにする トップページから 移 動 出 来 るページは 食 品 の 登 録 近 況 体 重 登 録 登 録 内 容 の 修 正 がある また ログアウトはトップページでのみ 実 行 出 来 る 図 4-3-3-1:トップ 画 面 のブロック 図 図 4-3-3-2:トップ 画 面 表 4-3-3-3:Top.php 31
<?php session_start(); // ログイン 状 態 のチェック if (!isset($_session["uname"])) { header("location: login.php"); exit; } define("password", "pass"); $message = ""; if(isset($_cookie["test_cookie"]) && $_COOKIE["TEST_COOKIE"]!= ""){ $_SESSION["TEST"] = $_COOKIE["TEST_COOKIE"]; } if(isset($_session["test"]) && $_SESSION["TEST"]!= null && md5(password) === $_SESSION["TEST"]){ $message = "Login success"; }else{ session_destroy();//セッション 破 棄 header("location:login.php"); }?> <!DOCTYPE HTML> <html lang="ja"> <head> <title>ダイエット</title> <meta http-equiv="content-type" content="text/html; charset=utf-8" 32
name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2" /> </head> <body> <h1>トップメニュー</h1> <?php mysql_connect('localhost','b040010','********'); mysql_select_db('b040010'); $uid = $_SESSION["uname"]; $sql = "select taiju.tday,userdata.uname,userdata.username,taiju.taiju,userdata.mokutai,use rdata.mokukc,userdata.mokukc2 from taiju inner join userdata on taiju.uname = userdata.uname and taiju.uname = '$uid' order by tday desc limit 1;"; $result = mysql_query($sql); $row = mysql_num_rows($result); if($row == 0){ echo "<p> 該 当 データがありません </p>"; }else { mysql_query(sql2); while($row = mysql_fetch_array($result)){ echo "<p>"; echo "<h2>ようこそ!</h2><br />"; echo $row["username"]; echo "さん<br /><br />"; echo " 目 標 まであと"; echo $row["taiju"] - $row["mokutai"]; 33
echo "kg です <br />"; echo "1 日 "; echo $row["mokukc"]; echo "~"; echo $row["mokukc2"]; echo " カロリーを 目 安 にとりましょうです "; echo "</p><hr />"; }}?> <a href="diet.html"> 食 べ 物 登 録 </a><br /><br /> <a href="showdiet.php"> 自 分 や 友 人 の 近 況 </a><br /><br /> <?php $youbi= date("w"); if($youbi == 6){ echo "<p><a href=taiju.html> 体 重 登 録 </a></p>"; }else { echo "<p> 体 重 登 録 </p>";}?> <a href="syusei.php"> 登 録 内 容 の 変 更 </a><br /><br /> <form action="logout.php" method="post"> <p><button type="submit" name="logout">ログアウト</button></p> </form> </body> </html> 4-3-5. 食 べた 食 品 の 登 録 入 力 の 手 間 を 省 くために 食 べた 日 付 時 間 を now 関 数 で 取 得 する 撮 影 した 写 真 は ユーザ ID と 写 真 名 をつなげて ddb のデータベースに 保 存 し 画 像 をフォルダに 34
保 存 する 画 像 は move_uploaded_file($im, $pla)でフォルダに 移 動 する Ddb のデ ータベースに 保 存 した 画 像 の 名 前 と フォルダに 保 存 した 画 像 の 名 前 が 一 致 するよう にする 図 4-3-5-1: 食 べた 食 品 登 録 のブロック 図 図 4-3-5-2: 食 品 の 登 録 表 4-3-5-3:Diet.html <?php session_start(); // ログイン 状 態 のチェック if (!isset($_session["uname"])) { 35
header("location: login.php"); exit; } <!DOCTYPE HTML PUBLIC> <html lang="ja"> <head> <title>ダイエット</title> <meta http-equiv="content-type" content="text/html; charset=utf-8"> </head> <body> <h1>データを 入 力 してください</h1> <form action="diet.php" method="post" enctype="multipart/form-data"> <p> 食 べ 物 名 : <input type="text" name="nam" size="20"></p> <p> 画 像 : <input type="file" name="upfile" size="20"></p> <p>カロリー : <input type="text" name="cal" size="20">kcal</p> <p><input type="submit" value=" 登 録 "> <input type="reset" value="リセット"></p> <a href="top.php">トップにもどる</a> </form> </body> </html> 表 4-3-5-4:Diet.php <?php session_start(); if (!isset($_session["uname"])) { header("location: login.php"); 36
}?> <!DOCTYPE HTML PUBLIC> <html lang="ja"> <head> <title>ダイエット</title> <meta http-equiv="content-type" content="text/html; charset=utf-8"> </head> <body> <?php extract($_post); mysql_connect('localhost','b040010','********'); mysql_select_db('b040010'); $uid = $_SESSION["uname"]; $dy = date("y-m-d"); $tm = date("h:i:s"); $im = $_FILES["upfile"]["tmp_name"]; $imn = $_FILES["upfile"]["name"]; $pname = $_SESSION["uname"].$nam.$_FILES["upfile"]["name"]; $pla = "pic/".$pname; if ($_FILES["upfile"]["error"] == UPLOAD_ERR_OK && is_uploaded_file($im)){ move_uploaded_file($im, $pla); chmod($pla, 0644); echo " 正 常 にアップロードされました "; }else{ 37
echo "アップロード 失 敗 しました "; } $sql = "insert into ddb values('$uid', '$dy', '$tm', '$nam', '$pname', '$cal',0,0)"; $result = mysql_query($sql); if (!$result) { $message = ' 無 効 なクエリです :'. mysql_error(). "<br>"; $message.= 'クエリの 内 容 : '. $sql; echo "<p>"; echo $message; echo "<a href = diet.html> 戻 る</a>"; echo "</p>"; } else { echo "データベースに 書 き 込 み 完 了 "; echo "<a href=top.php>トップにもどる</a>"; }?> </body> </html> 4-3-6. 登 録 された 食 品 を 見 る 4-3-5 項 で 登 録 された 内 容 を 確 認 するページを 作 成 する User と ddb のデータベー スから 名 前 日 付 時 間 食 品 名 画 像 カロリーを 参 照 し 表 示 させる Ddb のデー タベースに 保 存 してある 画 像 の 名 前 をフォルダの 中 から 一 致 する 画 像 を 表 示 させる inner join で userdata と ddb のデータベースをユーザ ID を 鍵 として 繋 げる sql 文 を 使 用 したため userdata から 氏 名 を 参 照 してくる 事 が 出 来 た 38
図 4-3-6-1: 登 録 された 食 品 を 見 るブロック 図 図 4-3-6-2: 登 録 された 食 品 を 見 る 表 4-3-6-3:Showdiet.php <?php session_start(); // ログイン 状 態 のチェック if (!isset($_session["uname"])) { header("location: login.php"); 39
exit; }?> <!DOCTYPE HTML PUBLIC> <html lang="ja"> <head> <title>ダイエット</title> <meta http-equiv="content-type" content="text/html; charset=utf-8"> </head> <body> <a href="top.php">トップにもどる</a> <?php mysql_connect('localhost','b040010','********'); mysql_select_db('b040010'); extract($_post); $sql= "select userdata.uname,userdata.username,ddb.day,ddb.tim,ddb.name,ddb.img,ddb.kcal,d db.jtai from ddb inner join userdata on ddb.uname = userdata.uname"; $sql2 = "update ddb set jtai=jtai+1 where uname = '$uid' and name = $na"; $prs = $_POST["prs"]; $uid = $_POST["una"]; $na = $_POST["na"]; $prs = $_POST["prs"]; $sql= "select userdata.uname,userdata.username,ddb.day,ddb.tim,ddb.name,ddb.img,ddb.kcal,d db.jtai from ddb inner join userdata on ddb.uname = userdata.uname"; 40
$sql2 = "update ddb set jtai=jtai+1 where uname = '$uid' and name = $na"; $result = mysql_query($sql); $rows = mysql_num_rows($result); if($prs == 1){mysql_query($sql2);} if($rows == 0){ echo "<p> 該 当 データがありません </p>"; } else { while($row = mysql_fetch_array($result)){ echo "<p>"; echo $row["username"]; echo " <br /> "; echo $row["day"]; echo " "; echo $row["tim"]; echo " "; echo "<br />"; echo $row["name"]; echo"<br />"; echo $row["img"]; echo "<br />"; echo "<img width=240 src=\"pic/".$row["img"]. "\">"; echo "<br />"; echo $row["kcal"]; 41
echo "kcal"; echo "<br />"; echo " 食 べ 過 ぎ 報 告 "; echo $row["jtai"]; echo " 件 "; echo "<from action=\"showdiet.php\" method=\"post\">"; echo "<input type=\"hidden\" name=\"prs\" value=\"1\">"; echo "<input type=\"hidden\" name=\"na\" value=\""; echo $row["name"]; echo "\">"; echo "<input type=\"hidden\" name=\"una\" value=\""; echo $row["uname"]; echo "\">"; echo "<input type=\"submit\" value=\" 食 べすぎ\">"; echo "</form>"; echo "</p><hr />"; } }?> </body> </html> 42
4-3-7. 体 重 を 登 録 Top.php で 分 岐 を 作 り 曜 日 を 取 得 し もし 土 曜 日 なら taiju.html を 選 択 出 来 るよう にする トップ 画 面 で 体 重 登 録 が 選 択 出 来 る 場 合 は 体 重 を 登 録 する 事 が 出 来 る 体 重 の 項 目 にデータを 入 力 し 登 録 ボタンを 押 すと taiju のデータベースに 登 録 が 完 了 する 図 4-3-7-1: 体 重 登 録 のブロック 図 図 4-3-7-2: 体 重 登 録 表 4-3-7-3:Taiju.html <?php session_start(); if (!isset($_session["uname"])) { header("location: login.php"); 43
}?> <!DOCTYPE HTML> <html lang="ja"> <head> <title>ダイエット</title> <meta http-equiv="content-type" content="text/html; charset=utf-8"> </head> <body> <h1> 体 重 登 録 </h1> <form action="taiju.php" method="post"> <p> 体 重 : <input type="text" name="tai" size="10">kg</p> <p><input type="submit" value=" 登 録 "></p> <a href="top.php">トップにもどる</a> </form> </body> </html> 表 4-3-7-4:Taiju.php <?php session_start(); if (!isset($_session["uname"])) { header("location: login.php"); }?> <!DOCTYPE HTML> 44
<html lang="ja"> <head> <title>ダイエット</title> <meta http-equiv="content-type" content="text/html; charset=utf-8"> </head> <body> <?php extract($_post); mysql_connect('localhost','b040010','********'); mysql_select_db('b040010'); $uid = $_SESSION["uname"]; $dy = date("y-m-d"); $sql = "insert into taiju values('$dy','$uid','$tai')"; $result = mysql_query($sql); if (!$result) { $message = ' 無 効 なクエリです :'. mysql_error(). "<br>"; $message.= 'クエリの 内 容 : '. $sql; echo "<p>"; echo $message; echo "<a href = diet.html> 戻 る</a>"; echo "</p>"; } else { echo " 書 き 込 み 完 了 "; echo "<a href = top.php>トップにもどる</a>"; } 45
?> </body> </html> 4-3-7.アカウントの 内 容 を 変 更 する User と userdata のデータベースから 内 容 を 読 み 込 み テキストに 表 示 させる 修 正 した 項 目 の 内 容 を 各 データベースへ 上 書 き 保 存 する inner join で user と userdata を 結 合 し 現 在 の 自 分 のデータを 呼 び 出 す 各 項 目 変 更 が 完 了 し 送 信 ボタンを 押 す とパスワードは user へ 氏 名 と 目 標 体 重 は userdata へ 上 書 き 保 存 をする 図 4-3-7-1: 登 録 内 容 変 更 のブロック 図 図 4-3-7-2: 登 録 内 容 の 変 更 46
表 4-3-7-3:Syusei.php <?php session_start(); // ログイン 状 態 のチェック if (!isset($_session["uname"])) { header("location: login.php"); exit; }?> <!DOCTYPE HTML PUBLIC> <html lang="ja"> <head> <title>ダイエット</title> <meta http-equiv="content-type" content="text/html; charset=utf-8"> </head> <body> <?php mysql_connect('localhost','b040010','********'); mysql_select_db('b040010'); extract($_post); extract($_get); $ume = $_SESSION["uname"]; if($una<>""){ $sql = "update userdata set uname = '$una', username = '$unm', mokutai = 47
'$mok', mokukc = '$mok * 25', mokukc2 = '$mok * 30'"; $result = mysql_query($sql); if (!$result) { $message = ' 無 効 なクエリです :'. mysql_error(). "<br>"; $message.= 'クエリの 内 容 : '. $sql; echo "<p>"; echo $message; echo "<a href = diet.html> 戻 る</a>"; echo "</p>"; } else { echo "データベースに 書 き 込 み 完 了 "; echo "<a href = top.php>トップにもどる</a>"; } exit; } $sql = "select * from userdata where uname = '$ume'"; $result = mysql_query($sql); $rows = mysql_num_rows($result); if($rows == 0){ echo "<p></p>"; } else{ while($row = mysql_fetch_array($result)){ echo "<h1> 登 録 内 容 の 変 更 </h1>"; echo "<form action = \"syusei.php\" method = \"post\">"; echo "<p>ユーザ ID: "; 48
echo $row["uname"]; echo "</p>"; echo "<p> 氏 名 : <input type=\"text\" size=\"20\" name=\"unm\" value=\""; echo $row["username"]; echo "\" size = \"1\"></p>"; echo "<p> 目 標 : <input type=\"text\" name=\"mok\" value=\""; echo $row["mokutai"]; echo "\" size = \"1\"></p>"; echo "<input type=\"hidden\" name=\"una\" value=\""; echo $row["uname"]; echo "\">"; echo "<p><input type=\"submit\" value=\" 送 信 \"></a>"; echo "<p><a href = top.php> 戻 る</a>"; echo "</form>"; } }?> </body> </html> 49
4-7-8.ログアウトする ログアウトボタンが 押 されたら$_session の 中 を 空 にし Cookies を 削 除 する 図 4-7-8-1:ログアウトのブロック 図 表 4-7-8-2:logout.php <?php session_start(); if(isset($_post['logout'])){ // セッション 変 数 を 全 て 解 除 する $_SESSION = array(); // セッションを 切 断 するにはセッションクッキーも 削 除 する // Note: セッション 情 報 だけでなくセッションを 破 壊 する if (ini_get("session.use_cookies")) { $params = session_get_cookie_params(); setcookie(session_name(), '', time() - 42000, $params["path"], $params["domain"], $params["secure"], $params["httponly"] ); 50
} //セッションを 破 壊 してリダイレクト session_destroy(); }?> <!DOCTYPE HTML PUBLIC> <html lang="ja"> <head> <title>ダイエット</title> <meta http-equiv="content-type" content="text/html; charset=utf-8"> </head> <body> <p>ログアウト 完 了 </p> <a href = login.php>ログイン 画 面 に 戻 る</a> </body> </html> 51
5 章 評 価 と 考 察 5-1. 動 作 検 証 どのページでも ログイン 状 態 を 確 認 しているためログインを 行 っていない 場 合 は 必 ず login.php が 表 示 される 現 段 階 では ID を 持 っていないため 新 規 登 録 を 選 択 し てユーザ ID とパスワードの 設 定 を 行 う 図 5-1-1:login.php 新 規 登 録 を 選 択 すると 新 規 登 録 画 面 に 移 動 する 事 が 出 来 る 新 規 登 録 では ID PASSWORD 名 前 目 標 体 重 を 入 力 する 入 力 が 完 了 したら 登 録 ボタンを 選 択 する 図 5-1-2:shintouroku.html 図 5-1-2 で 登 録 した ID と PASSWORD を 入 力 しログインする PASSWORD は 見 えないよ うになっているので 誤 入 力 に 気 をつける チェックボックスにチェックを 入 れログ 52
インすると 次 回 から 自 動 的 にログイン 出 来 る 図 5-1-3:login.php ログインが 完 了 するとトップ 画 面 を 表 示 される トップメニューには 新 規 登 録 で 入 力 された 氏 名 現 在 の 体 重 から 目 標 体 重 を 引 いた 数 目 標 体 重 から 算 出 した 1 日 の 目 安 摂 取 カロリーのデータが 参 照 されている 図 5-1-4:top.php トップ 画 面 から 食 べ 物 登 録 を 選 ぶと 図 5-1-5 が 表 示 される 入 力 する 項 目 は 食 べ 物 の 画 像 を 用 意 出 来 る 場 合 は 画 像 の 選 択 だけだ 画 像 が 用 意 できない 場 合 は 名 前 とカ ロリーを 入 力 する ファイルを 選 択 のボタンを 押 すと パソコンならば 画 像 フォル ダが 開 かれる スマートフォンであった 場 合 は 写 真 の 選 択 とカメラを 起 動 が 選 択 出 来 53
る 図 5-1-5:diet.html 入 力 が 終 わり 登 録 ボタンを 押 すと 登 録 が 完 了 し トップ 画 面 に 戻 る 次 に 登 録 した 内 容 を 見 るために 自 分 や 友 人 の 近 況 を 選 択 する すると 図 5-1-6 が 表 示 された 日 付 や 時 間 は 入 力 していないが 表 示 されている 図 5-1-6:showdiet.php 実 装 で 体 重 の 登 録 は 毎 週 土 曜 日 に 表 示 するように 設 定 した 体 重 の 記 録 は 土 曜 日 まで 待 ち 行 う 体 重 の 登 録 が 完 了 するとトップ 画 面 の 目 標 までの kg 数 が 変 化 した 54
図 5-1-7:taiju.html トップ 画 面 から 登 録 内 容 の 変 更 を 選 択 すると ユーザの 情 報 が 参 照 されて 表 示 される 指 名 を ちのねひろき から ちのね に 変 更 する また 目 標 体 重 を 50 から 60 に 変 更 し 登 録 する 図 5-1-8:syusei.html 登 録 内 容 の 修 正 が 完 了 し トップ 画 面 に 映 ると 名 前 が 変 わり 現 在 の 体 重 と 目 標 体 重 の 差 も 修 正 されている 図 5-1-9:top.php 55
トップ 画 面 でログアウトを 実 行 する すると 図 5-1-10 が 表 示 された ログアウト が 完 了 した 状 態 で top.php にアクセスをすると ログインされていないため login.php が 表 示 された 図 5-1-10:logout.php 5-2. 評 価 4 章 で 行 った 実 装 の 評 価 を 行 う また 実 際 にアプリケーションを 使 用 してもらい 評 価 をしてもらう 5-2-1. 実 装 の 評 価 3 章 で 提 案 した 解 決 法 に 基 づいた 機 能 の 評 価 をする 表 5-2-1-1: 評 価 番 号 解 決 法 実 装 (1) 写 真 で 記 録 を 簡 単 にする (2) 体 重 の 登 録 を 1 週 間 に 1 回 にする (3) グループ 機 能 を 取 り 付 ける (1) 写 真 で 記 録 を 簡 単 にする 設 計 目 標 は 写 真 をアップロードし 表 示 させる 事 である 写 真 が 表 示 さる 事 によって 他 の 項 目 を 入 力 しなくても 分 かるようになった 同 じ 名 前 の 画 像 がアップロードされ ると 区 別 が 出 来 ず 最 新 の 画 像 が 表 示 されるようになってしまった しかし 画 像 の 名 前 にユーザ ID を 入 れる 事 によって 改 善 した 56
(2) 体 重 の 登 録 を 1 週 間 に 1 回 にする 設 計 目 標 は 1 週 間 1 回 だけ 体 重 登 録 が 選 択 出 来 るようにする 事 である トップ 画 面 で If 文 により 分 岐 を 作 り ページの 表 示 を 操 作 する 事 が 出 来 た 実 装 で 記 録 日 を 土 曜 日 としていたが 今 後 はユーザによって 設 定 出 来 るようにする 事 が 必 要 だ (3) グループ 機 能 を 取 り 付 ける 登 録 されたユーザの 名 前 やユーザ ID で 検 索 をし 友 人 を 探 し 自 分 の 好 きな 人 とグル ープを 作 れる 機 能 を 考 えていた 他 のユーザが 登 録 した 内 容 を 表 示 する 事 が 出 来 たが 内 容 を 表 示 する 制 限 をする 事 が 出 来 なかった この 機 能 が 実 現 する 事 によってグルー プを 組 む 事 や 一 人 での 使 用 も 可 能 になる また SNS のように 友 人 とのコミュニケー ションをとる 手 段 にする 事 が 出 来 る 5-2-2.モニターの 評 価 モニター 調 査 として 6 人 に 実 際 に 本 研 究 で 作 成 したアプリケーションの 使 用 と 評 価 をしてもらった アプリケーションの 使 用 期 間 は 2 週 間 で この 6 人 は 全 員 お 互 いの 体 型 を 知 っている 友 人 同 士 である なお 使 用 期 間 が 短 かったため 体 重 が 大 きく 変 化 したユーザはいなかった 表 5-2-1-1:モニターによる 評 価 ユーザ1 ユーザ2 ユーザ3 良 い 点 1 日 に 摂 取 し て も 良 い カ ロ リ ーの 目 安 が 表 示 されていて 便 利 だった 自 分 が 食 べた 物 を 登 録 する 事 で 友 人 に 見 られているので カロ リーの 摂 取 しすぎに 気 をつける 事 ができた 自 分 や 友 人 が 食 べた 物 がわか り SNS のようで 楽 しかった 悪 い 点 食 事 の 度 に 写 真 を 撮 る の が 面 倒 だった 間 違 えて 食 べ 物 登 録 した 時 の ために 修 正 機 能 がほしい 写 真 を 投 稿 するのが 楽 しくな り つい 食 べ 過 ぎてしまう ユーザ4 自 分 の 登 録 した 写 真 を 見 て 食 体 重 を 入 力 出 来 る 曜 日 が 決 ま 57
生 活 の 乱 れがわかって 食 生 活 を 改 めようと 思 った っているので その 曜 日 に 体 重 の 入 力 ができなかったり 入 力 し 忘 れたりすると 時 に 不 便 だった ユーザ5 ユーザが 自 分 の 体 型 を 知 って いる 友 人 だったため 知 らない 人 に 食 事 を 見 られるのよりカロリ ー 摂 取 に 気 をつけようと 思 った せ っ か く 食 べ 物 登 録 の 時 に カ ロリーを 入 力 しているので 今 日 あとどれくらい 摂 取 していいの か 表 示 してほしい ユーザ6 今 までカロリーを 気 にしない で 食 事 をしていたが このアプリ ケーションを 使 って 初 めてカロ リーを 気 にするようになった 登 録 した 食 べ 物 を 見 るときに ユーザごとに 表 示 出 来 るように してほしい 5-3. 考 察 本 研 究 で 実 装 したアプリケーションを 実 際 に 使 用 してもらい 良 い 点 悪 い 点 の 評 価 をしてもらった 良 い 点 から 写 真 をアップロードする 事 によって 自 分 の 身 近 な 人 に 食 生 活 を 見 られるので 規 則 正 しく また 食 べすぎずに 食 事 をとるように 意 識 させる 事 が 出 来 た しかし 悪 い 点 からは 食 べ 物 の 登 録 内 容 がユーザごとに 表 示 させてほし い 食 べ 物 名 カロリーを 入 力 するのが 面 倒 であったと 評 価 された 友 人 に 自 分 の 登 録 内 容 を 表 示 させる 事 だけを 重 視 していたために ユーザごとの 表 示 に 気 がつく 事 が 出 来 なかった 人 に 見 られる 事 と 同 時 に 自 分 の 食 べた 物 だけも 表 示 される 事 によって 自 分 がどのような 食 生 活 をしているかに 気 付 き 食 生 活 の 改 善 に 繋 がるため 今 後 の 検 討 が 必 要 である 食 べ 物 登 録 では 入 力 する 項 目 を 減 らすと 述 べたが 画 像 が 用 意 出 来 ない 場 合 に 備 え あえて 食 べ 物 名 とカロリーの 入 力 項 目 を 設 置 した しかし 設 置 した 事 でユーザが 項 目 を 埋 めなければいけないと 思 わせてしま った 画 像 が 準 備 されていない 時 に 項 目 の 入 力 が 可 能 な 状 態 にする 事 で 登 録 がスム ーズに 行 えただろう 58
6 章 まとめと 今 後 の 課 題 6-1.まとめ 本 研 究 の 目 的 は 今 の 体 の 状 況 を 把 握 するために 食 べ 物 や 体 重 の 記 録 管 理 家 族 や 友 人 などの 身 の 回 りの 人 と 記 録 を 共 有 する 事 によって 体 重 維 持 減 量 を 長 く 続 ける 事 の 手 助 けにする 事 を 目 指 した 4 つの 既 存 の Web サービスを 調 べ 機 能 を 分 析 し 実 際 に 使 用 して 既 存 の Web サービスの 問 題 点 を 見 つけ 解 決 するために 必 要 な 機 能 を 検 討 し 設 計 から 実 装 を 行 い 実 装 の 評 価 と 実 装 したアプリケーションを 実 際 に 使 用 し てもらった 評 価 をした 問 題 点 として 食 べた 食 品 の 名 前 カロリー 量 を 自 分 で 調 べ 打 ち 込 む 事 また 毎 日 の 体 重 の 登 録 は 繁 雑 である 事 と コミュニティの 利 用 によるダイエットの 継 続 は 難 しい 所 があげられる この 問 題 を 解 決 するために 食 べた 食 品 の 写 真 を 撮 り 記 録 し 体 重 の 登 録 は 1 週 間 に 1 回 登 録 出 来 る 仕 組 みを 構 築 した この 仕 組 みにより 写 真 か ら 食 品 名 と 量 が 見 て 分 かるようになった 体 重 の 記 録 では 毎 日 同 じ 体 重 を 打 ち 続 け るよりも 高 いモチベーションを 維 持 出 来 るようになった また 自 分 の 身 の 回 りの 人 と グループを 作 る 事 によって 食 生 活 を 見 られるので 規 則 正 しく また 食 べ 過 ぎに 注 意 するように 食 事 をとる 意 識 をさせる 事 が 出 来 た 6-2. 今 後 の 課 題 今 回 実 装 する 事 が 出 来 なかった 機 能 の 完 成 を 目 指 す また モニター 調 査 で 明 らか になった 所 の 改 善 をする 以 下 の 事 を 今 後 の 課 題 とし 理 想 のアプリケーションを 実 現 するために 改 善 に 向 け 検 討 する 6-2-1.グループ 機 能 グループ 機 能 の 完 成 を 目 指 す グループ 機 能 を 使 用 する 事 で ユーザが 増 えた 場 合 にさまざまなグループを 作 る 事 が 出 来 るようにする また 登 録 した 内 容 は 同 じグル ープの 人 だけが 見 られるようにする 必 要 がある 6-2-2. 近 況 の 表 示 方 法 モニター 調 査 で 明 らかになった 登 録 された 食 品 をユーザごとに 表 示 される 機 能 の 59
完 成 を 目 指 す この 機 能 が 実 現 する 事 によって 自 分 が 登 録 した 内 容 だけを 見 る 事 が 出 来 る 自 分 がどのような 食 生 活 をしているかに 気 付 き 食 生 活 の 改 善 を 図 るが 出 来 る 6-2-3.データをグラフによる 視 覚 化 食 べた 食 品 の 登 録 時 間 から 食 事 を 取 る 時 間 のグラフや 週 ごとの 体 重 のグラフを 表 示 させ 分 析 するための 機 能 の 完 成 を 目 指 す この 機 能 が 完 成 する 事 によって 自 分 が 良 く 食 事 をする 時 間 帯 を 知 る 事 が 出 来 る また 今 まで 登 録 された 体 重 をグラフ 化 し 比 較 する 先 週 よりも 体 重 が 重 くなっている 場 合 は 先 週 食 べた 物 や 食 事 の 回 数 を 表 示 する 事 で 分 析 する 事 が 出 来 る 60
参 考 文 献 (1) 国 立 循 環 器 病 研 究 センターの 循 環 器 病 情 報 サービス http://www.ncvc.go.jp/cvdinfo/pamphlet/obesity/pamph03.html#anchor-3 2012 年 12 月 12 日 (2) 厚 生 労 働 省 http://www.mhlw.go.jp/topics/bukyoku/kenkou/seikatu/himan/about.html 2012 年 7 月 21 日 (3) MACROMILL InMobi の 共 同 調 査 http://www.macromill.com/r_data/20120726diet_smartphone/ 2012 年 7 月 20 日 (4) 東 京 都 病 院 経 営 部 http://www.byouin.metro.tokyo.jp/eiyou/himan.html 2012 年 12 月 1 日 (5) Girl s Diet http://girls-diet.jp/ 2012 年 7 月 4 日 (6) あすけん http://www.asken.jp/ 2012 年 7 月 24 日 (7) 鈴 木 憲 治 山 田 直 明 山 本 義 之 浅 野 仁 櫻 井 雄 大 安 藤 建 一 PHP 逆 引 きレシピ 第 2 版 (PROGRAMMER S RECiPE) 翔 泳 社 2013 年 (8) 森 卓 郎 運 動 指 導 者 が 断 言!ダイエットは 運 動 1 割 食 事 9 割 インプレスコミュニケーションズ 2013 年 61
謝 辞 本 研 究 を 行 うにあたり ご 指 導 いただいた 渡 辺 恭 人 准 教 授 に 大 変 感 謝 しております 論 文 の 構 成 や 執 筆 にいたるまでたくさんのご 指 導 をしていただいたおかげで 本 研 究 を 進 める 事 が 出 来 ました 渡 辺 恭 人 准 教 授 には 入 学 してから 4 年 間 お 世 話 になりました 1 年 生 の 頃 は 研 究 基 礎 や 情 報 基 礎 で 発 表 の 技 法 や IT の 基 礎 をご 教 示 いただきました 2 年 生 からは ゼ ミナールに 参 加 させていただくようになり プログラミングやデータベースを 学 んだ 事 によって 本 研 究 の 実 装 を 実 現 する 事 が 出 来 ました 心 より 感 謝 いたします 最 後 に 私 の 卒 業 論 文 に 関 わって 下 さった 方 全 員 に 感 謝 を 述 べさせていただき 謝 辞 とさせていただきます ありがとうございました 62