Skip to content

nannany/janet

Repository files navigation

ジャネー時間計算アプリ

ジャネーの法則に基づいて、主観的な時間の経過を計算・可視化するWebアプリケーションです。

📖 ジャネーの法則とは

ジャネーの法則(Janet's Law)は、主観的な時間の感じ方が年齢の逆数に比例するという心理学の法則です。

数式:主観的時間 = 1 / 年齢

例えば:

  • 10歳の子供にとって1年は人生の1/10(10%)
  • 50歳の大人にとって1年は人生の1/50(2%)

年齢が高くなるほど、同じ1年でも短く感じられるという現象を数式化したものです。

✨ 機能

  • 生年月日入力: yyyyMMdd形式(例:19900101)で生年月日を入力
  • 累積日数計算: ジャネーの法則に基づく主観的な時間の総量を表示
  • インタラクティブなグラフ: 生まれてから現在までの年別主観的時間の推移を可視化
  • ホバー機能: グラフの任意の点にマウスを合わせると、その年までの累積日数を表示
  • 積分の視覚化: ホバーした年までの積分(累積)を緑色の塗りつぶしで表現
  • 期間選択機能: グラフを2回クリックして開始年・終了年を指定し、その期間の累積日数を計算

🚀 使い方

  1. 開発環境の起動

    npm install
    npm run dev
  2. アプリケーションにアクセス

    ブラウザで http://localhost:5173 を開きます

  3. 生年月日を入力

    • yyyyMMdd形式で入力(例:19900101)
    • Enterキーまたは「計算」ボタンで実行
  4. 結果の確認

    • 累積日数が表示されます
    • グラフにマウスをホバーすると詳細情報が表示されます
  5. 期間選択機能の使用

    • グラフの任意の点を1回クリックして開始年を選択
    • 別の点を1回クリックして終了年を選択
    • 選択した期間の累積日数が自動計算されます
    • Escキーまたはリセットボタンで選択をクリア

🛠 技術スタック

  • フロントエンド: React 19 + TypeScript
  • ビルドツール: Vite
  • スタイリング: Tailwind CSS v4
  • チャート: Recharts
  • 日付処理: date-fns

📊 計算方法

累積日数は以下の式で計算されます:

累積日数 = Σ(1/年齢 × 365.25)

各年の主観的時間は年齢の逆数に比例し、これを積分することで生まれてから現在までの主観的な時間の総量を求めます。

🎨 UI/UX

  • レスポンシブデザイン: モバイルからデスクトップまで対応
  • 直感的な操作: シンプルな入力フォームとわかりやすい結果表示
  • 視覚的な理解: グラフによる時間感覚の変化の可視化
  • インタラクティブ要素: ホバーによる詳細情報表示と積分の視覚化
  • 期間計算: クリック操作で任意の期間における主観的時間の累積を計算

📁 プロジェクト構造

src/
├── components/
│   ├── BirthdateForm.tsx    # 生年月日入力フォーム
│   └── ResultDisplay.tsx    # 結果表示・グラフコンポーネント
├── utils/
│   └── janetLaw.ts          # ジャネーの法則計算ロジック
├── App.tsx                  # メインアプリケーション
├── main.tsx                 # エントリーポイント
└── index.css                # グローバルスタイル

📝 コマンド

# 開発サーバー起動
npm run dev

# プロダクションビルド
npm run build

# ビルド結果のプレビュー
npm run preview

🔧 環境要件

  • Node.js 18.0.0 以上
  • npm 9.0.0 以上

📄 ライセンス

MIT

🤝 貢献

プルリクエストやイシューの報告を歓迎します。バグ報告や機能要求がある場合は、GitHubのIssuesページをご利用ください。

About

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published