RORK LABEN
TOOLING — Rorkの開発者向けリポジトリが動き続けています。rork-xcodeが7月16日、rork-deviceが7月15日、rork-plistが7月13日に更新されましたOPUS46 — RorkでClaude Opus 4.6が稼働しています。Rork MaxはClaude Codeを土台にアプリを組み立てる設計ですSIM — ブラウザ上で動くクラウドのiOSシミュレータを備え、実機へのインストールは1クリック、App Storeへの提出は2クリックと案内されていますMAX — Rork MaxはReact Nativeではなく純粋なSwiftを出力します。iPhone・iPad・Apple Watch・Apple TV・Vision Pro、そしてiMessageまでが射程ですNATIVE — HealthKit、ARKitとLiDAR、NFC、Dynamic Island、Live Activities、Metalによる3D、Core MLのオンデバイス推論まで扱えますSEED — RorkはLeft Lane Capitalが主導する1,500万ドルのシードラウンドを実施し、Peak XVとa16z Speedrunが参加しましたTOOLING — Rorkの開発者向けリポジトリが動き続けています。rork-xcodeが7月16日、rork-deviceが7月15日、rork-plistが7月13日に更新されましたOPUS46 — RorkでClaude Opus 4.6が稼働しています。Rork MaxはClaude Codeを土台にアプリを組み立てる設計ですSIM — ブラウザ上で動くクラウドのiOSシミュレータを備え、実機へのインストールは1クリック、App Storeへの提出は2クリックと案内されていますMAX — Rork MaxはReact Nativeではなく純粋なSwiftを出力します。iPhone・iPad・Apple Watch・Apple TV・Vision Pro、そしてiMessageまでが射程ですNATIVE — HealthKit、ARKitとLiDAR、NFC、Dynamic Island、Live Activities、Metalによる3D、Core MLのオンデバイス推論まで扱えますSEED — RorkはLeft Lane Capitalが主導する1,500万ドルのシードラウンドを実施し、Peak XVとa16z Speedrunが参加しました
記事一覧/Rork入門
Rork入門/2026-03-27初級

Rork で作る水分摂取トラッカーアプリ — 記録・リマインダー・グラフ分析の実装チュートリアル

Rork を使って水分摂取トラッカーアプリを作るチュートリアル。ローカル保存、プッシュ通知リマインダー、グラフ表示まで、初心者でも完成できるステップバイステップガイドです。

Rork515チュートリアル23ヘルスケア4アプリ開発77React Native209初心者向け5

取り組みの背景

毎日の水分補給は健康維持に欠かせませんが、実際にどれくらい水を飲んだか記録している方は少ないのではないでしょうか。Rork を使って水分摂取トラッカーアプリを一から作る方法を順を追って整理していきます。

このチュートリアルで作るアプリは、水分摂取量の記録、1日の目標に対する進捗のビジュアル表示、そして飲み忘れを防ぐリマインダー通知という3つの主要機能を備えています。Rork を初めて触る方でも、プロンプトの書き方からUI設計の考え方まで順を追って説明しますので、安心して取り組んでいただけます。

対象読者

  • Rork でアプリ開発を始めたい初心者の方
  • ヘルスケア系アプリの構造を学びたい方
  • React Native のデータ永続化や通知の仕組みに興味がある方

完成イメージ

完成するアプリには、次の画面と機能が含まれます。

  • ホーム画面: 今日の水分摂取量と目標値の円形プログレスバー、ワンタップで記録するボタン
  • 履歴画面: 過去7日間の摂取量を棒グラフで表示
  • 設定画面: 1日の目標量とリマインダー間隔の調整

前提知識・環境準備

Rork のアカウントがあればブラウザだけで開発を始められます。プログラミング経験がなくても大丈夫ですが、以下の概念を知っていると理解がスムーズです。

  • コンポーネント: 画面を構成する部品(ボタン、テキスト、カードなど)
  • ステート(状態): アプリが保持するデータ(今日飲んだ水の量など)
  • AsyncStorage: デバイス内にデータを保存する仕組み

Rork は無料プランでも週5回までプロジェクトを生成できるので、まずは気軽に試してみてください。

ステップ 1: プロジェクト作成と基本UI

Rork でプロジェクトを作成する際に、最初のプロンプトがアプリの骨格を決めます。以下のようなプロンプトを入力しましょう。

水分摂取トラッカーアプリを作ってください。
 
画面構成:
1. ホーム画面 — 今日の水分摂取量を円形プログレスバーで表示。
   150ml / 250ml / 500ml のクイック追加ボタン。
2. 履歴画面 — 過去7日間の摂取量を棒グラフで表示。
3. 設定画面 — 1日の目標量(ml)を設定。
 
デザイン:
- 水色を基調としたクリーンなUI
- ボトムタブナビゲーション(ホーム / 履歴 / 設定)
 
データ:
- AsyncStorage でローカル保存

このプロンプトを送ると、Rork が自動的にReact Native + Expo のプロジェクトを生成します。生成されたコードの中で特に注目すべきポイントは、タブナビゲーションの構造とコンポーネントの分離です。

生成されるファイル構造の例

app/
├── (tabs)/
│   ├── index.tsx        # ホーム画面
│   ├── history.tsx      # 履歴画面
│   └── settings.tsx     # 設定画面
├── _layout.tsx          # ナビゲーション設定
components/
├── CircularProgress.tsx # 円形プログレスバー
├── QuickAddButton.tsx   # クイック追加ボタン
└── WeeklyChart.tsx      # 週間棒グラフ
stores/
└── waterStore.ts        # 状態管理(Zustand等)

ステップ 2: データの永続化

水分摂取の記録は、アプリを閉じても消えないようにデバイスに保存する必要があります。Rork が生成するコードでは通常 AsyncStorage が使われますが、データ構造の設計が重要です。

以下のプロンプトで、データモデルを明確に指定しましょう。

データモデルを以下のように設計してください:
 
- WaterLog: { id: string, amount: number, timestamp: string }
- DailyRecord: { date: string, logs: WaterLog[], totalAmount: number }
- Settings: { dailyGoal: number, reminderInterval: number }
 
AsyncStorage に保存するキー:
- @water_logs — 日付ごとの記録(直近30日分)
- @settings — ユーザー設定
 
アプリ起動時に AsyncStorage からデータを読み込んでステートに反映してください。

AsyncStorage は文字列しか保存できないため、JSON.stringify で変換してから保存し、読み込み時に JSON.parse で復元する処理が自動生成されます。

// stores/waterStore.ts の主要部分(期待される生成コード)
import AsyncStorage from '@react-native-async-storage/async-storage';
 
const STORAGE_KEY = '@water_logs';
 
// データ保存
const saveLogs = async (logs: Record<string, DailyRecord>) => {
  await AsyncStorage.setItem(STORAGE_KEY, JSON.stringify(logs));
};
 
// データ読み込み
const loadLogs = async (): Promise<Record<string, DailyRecord>> => {
  const data = await AsyncStorage.getItem(STORAGE_KEY);
  return data ? JSON.parse(data) : {};
};

データのローカル保存について、さらに実践的なパターンを知りたい方は Rork アプリのオフライン対応 — AsyncStorage と NetInfo の実装ガイド も参考になります。

ステップ 3: 円形プログレスバーの実装

ホーム画面の中心となる円形プログレスバーは、ユーザーが一目で目標への進捗を把握できる重要なUIです。Rork に以下のプロンプトで指示します。

ホーム画面の円形プログレスバーを改善してください:
 
- SVG で描画(react-native-svg 使用)
- 目標達成率に応じて色が変化(0-50%: 水色, 50-80%: 青, 80-100%: 濃い青, 100%: 緑)
- 中央に「750 / 2000 ml」のように現在値/目標値を表示
- 達成時にアニメーション付きのお祝い表示
- プログレスバーのアニメーション(値が増えるときスムーズに動く)

Rork はこのプロンプトから、react-native-svg を使った円形プログレスコンポーネントを生成します。SVG の strokeDasharraystrokeDashoffset を使った描画手法は、パフォーマンスに優れたアプローチです。

// components/CircularProgress.tsx の期待される出力例
import Svg, { Circle } from 'react-native-svg';
import { Animated } from 'react-native';
 
interface CircularProgressProps {
  current: number;   // 現在の摂取量
  goal: number;      // 目標量
  size?: number;     // コンポーネントのサイズ
}
 
export default function CircularProgress({ current, goal, size = 200 }: CircularProgressProps) {
  const radius = (size - 20) / 2;
  const circumference = 2 * Math.PI * radius;
  const progress = Math.min(current / goal, 1);
  const strokeDashoffset = circumference * (1 - progress);
 
  // 達成率に応じた色の決定
  const getColor = () => {
    if (progress >= 1) return '#22c55e';    // 緑(達成)
    if (progress >= 0.8) return '#1e40af';  // 濃い青
    if (progress >= 0.5) return '#3b82f6';  // 青
    return '#7dd3fc';                        // 水色
  };
 
  return (
    <Svg width={size} height={size}>
      {/* 背景の円 */}
      <Circle cx={size/2} cy={size/2} r={radius}
        stroke="#e5e7eb" strokeWidth={10} fill="none" />
      {/* 進捗の円 */}
      <Circle cx={size/2} cy={size/2} r={radius}
        stroke={getColor()} strokeWidth={10} fill="none"
        strokeDasharray={circumference}
        strokeDashoffset={strokeDashoffset}
        strokeLinecap="round"
        rotation={-90} origin={`${size/2}, ${size/2}`} />
    </Svg>
  );
}

ステップ 4: リマインダー通知の追加

定期的な水分補給リマインダーは、このアプリの核となる機能です。Expo の Notifications API を使って実装します。

リマインダー通知機能を追加してください:
 
- 設定画面で通知間隔を選択(30分 / 1時間 / 2時間 / 3時間)
- 起床時間〜就寝時間の間だけ通知(デフォルト: 8:00〜22:00)
- 通知メッセージ例:「水分補給の時間です 💧 今日の目標まであと 750ml」
- 目標達成済みの日は通知をスキップ
- expo-notifications を使用

通知の設定はユーザー体験に直結します。通知が多すぎると煩わしく、少なすぎると効果がありません。デフォルトの1時間間隔は多くのユーザーにとってバランスの良い設定です。

// utils/notifications.ts の期待される出力例
import * as Notifications from 'expo-notifications';
 
export async function scheduleWaterReminder(intervalHours: number) {
  // 既存の通知をキャンセル
  await Notifications.cancelAllScheduledNotificationsAsync();
 
  // 新しいリマインダーをスケジュール
  await Notifications.scheduleNotificationAsync({
    content: {
      title: '水分補給の時間です 💧',
      body: '健康のために、コップ1杯の水を飲みましょう',
      sound: 'default',
    },
    trigger: {
      type: Notifications.SchedulableTriggerInputTypes.TIME_INTERVAL,
      seconds: intervalHours * 3600,
      repeats: true,
    },
  });
}

プッシュ通知の実装パターンについてより詳しく学びたい方は、Rork アプリにプッシュ通知を実装する方法 が体系的にまとまっています。

ステップ 5: 週間グラフの表示

履歴画面には過去7日間の摂取量を棒グラフで表示します。データの可視化はユーザーのモチベーション維持に大きく貢献します。

履歴画面を以下のように実装してください:
 
- 過去7日間の水分摂取量を棒グラフで表示
- react-native-chart-kit または victory-native を使用
- 各バーに摂取量(ml)のラベルを表示
- 目標ラインを点線で表示
- 目標達成日はバーの色を緑に変更
- 週間平均と達成率を画面上部に表示
// screens/HistoryScreen.tsx の期待される出力例(抜粋)
import { BarChart } from 'react-native-chart-kit';
import { Dimensions } from 'react-native';
 
const screenWidth = Dimensions.get('window').width;
 
// 過去7日間のデータを整形
const chartData = {
  labels: ['月', '火', '水', '木', '金', '土', '日'],
  datasets: [{
    data: weeklyData.map(d => d.totalAmount),
    colors: weeklyData.map(d =>
      // 目標達成日は緑、未達成は青
      (opacity = 1) => d.totalAmount >= dailyGoal
        ? `rgba(34, 197, 94, ${opacity})`
        : `rgba(59, 130, 246, ${opacity})`
    ),
  }],
};
 
return (
  <BarChart
    data={chartData}
    width={screenWidth - 32}
    height={220}
    yAxisSuffix="ml"
    chartConfig={{
      backgroundColor: '#ffffff',
      backgroundGradientFrom: '#ffffff',
      backgroundGradientTo: '#f0f9ff',
      decimalPlaces: 0,
      color: (opacity = 1) => `rgba(59, 130, 246, ${opacity})`,
    }}
    fromZero
    showValuesOnTopOfBars
  />
);

グラフ表示のカスタマイズについてさらに詳しく知りたい方は、Rork × Victory Native で作るインタラクティブなチャートダッシュボード がおすすめです。

ステップ 6: UX を磨く

基本機能が動いたら、ユーザー体験を向上させる仕上げを行います。以下のプロンプトで、触り心地の良いアプリに仕上げましょう。

以下のUX改善を行ってください:
 
1. クイック追加ボタンにハプティックフィードバックを追加(expo-haptics)
2. 水を追加した時にスプラッシュアニメーション(Lottie)
3. 目標達成時に紙吹雪エフェクト
4. ダークモード対応
5. カスタム水分量の入力モーダル(150/250/500ml以外の量を追加したい場合)

ハプティックフィードバックは小さな工夫ですが、「記録した」という実感をユーザーに与える効果があります。特にヘルスケアアプリでは、こうした触覚的なレスポンスがアプリの継続利用率を高めることが知られています。

まとめ

このチュートリアルでは、Rork を使って水分摂取トラッカーアプリを作る全工程を解説しました。プロジェクト作成から始まり、データのローカル保存、円形プログレスバーによる進捗表示、定期リマインダー通知、週間グラフによる可視化、そしてUXの仕上げまで、一通りの実装を体験できたかと思います。

今回作ったアプリは、ヘルスケアカテゴリの入門として最適な構成です。ここから機能を拡張して、食事記録や運動ログとの連携、友達との目標共有機能など、より本格的なヘルスケアアプリへと発展させることもできます。

Rork なら自然言語のプロンプトだけでここまでのアプリを形にできるので、まずは気軽に手を動かしてみてください。作りながら学ぶことが、アプリ開発の上達への一番の近道です。

シェア

お読みいただきありがとうございます

Rork Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

もしこの記事がお役に立ちましたら、チップ(¥150)で応援いただけると大変励みになります。広告なしでの運営を続けるため、皆さまのご支援が大きな力になっています。

関連記事

Rork 入門2026-03-31
Rork で作る睡眠トラッカーアプリ完全チュートリアル — 就寝・起床時刻の記録から睡眠スコア分析まで
Rork を使って睡眠トラッカーアプリを作る完全チュートリアル。就寝・起床時刻の記録、睡眠スコア計算、グラフ表示まで、初心者でも30分で動くアプリが完成します。
Rork 入門2026-03-23
Rork でレシピ管理アプリを作る完全チュートリアル — お気に入り・カテゴリ検索・買い物リスト機能付き
Rork AIを使ってレシピ管理アプリを作る初心者向けチュートリアル。お気に入り登録、カテゴリ検索、買い物リスト自動生成まで、プロンプト設計から実装の全手順を解説します。
Rork 入門2026-04-19
Rorkで服薬管理アプリを作る — 毎日の薬を飲み忘れないための仕組みをAIで実装する
Rorkを使って服薬管理アプリを作る手順を解説します。薬の登録・服用チェック・リマインダー通知・家族共有まで、プログラミング知識なしで実装できる実践ガイドです。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →