Skip to content

命名規則の統一: practice/session → lesson/lesson_record#64

Merged
sugiwe merged 4 commits into
mainfrom
refactor/rename-practice-to-lesson
Dec 20, 2025
Merged

命名規則の統一: practice/session → lesson/lesson_record#64
sugiwe merged 4 commits into
mainfrom
refactor/rename-practice-to-lesson

Conversation

@sugiwe
Copy link
Copy Markdown
Owner

@sugiwe sugiwe commented Dec 20, 2025

概要

命名規則の一貫性向上のため、以下のリファクタリングを実施しました。

変更内容

1. URL・コントローラ・ビュー

  • /practices/:id/lessons/:id (301リダイレクト設定済み)
  • PracticesControllerLessonsController
  • app/views/practices/app/views/lessons/

2. モデル・DB

  • TypingSessionLessonRecord
  • typing_sessions テーブル → lesson_records テーブル
  • ログインセッション(session[:user_id])との混同を解消

3. 変数名・メソッド名の統一

  • @sessions@lesson_records (全コントローラ・ビュー)
  • session_paramslesson_record_params
  • get_practice_itemsget_lesson_items
  • sessionStartTimelessonStartTime
  • restartSessionrestartLesson

4. その他

  • JavaScript APIペイロード: session:lesson_record:
  • Stimulus target: practiceScreenlessonScreen
  • Helper: PracticeHelperLessonHelper
  • YAML: word_practice/sentence_practiceword_lessons/sentence_lessons
  • 画像: practice_sample.pnglesson_sample.png
  • SQLエイリアス: practice_countlesson_count

理由

  • 内部実装で既にlessonを多用(lesson_id, LessonLoaderなど)
  • UI表示「レッスン」と整合性を取る
  • sessionの混同を解消(ログインセッション vs 練習記録)
  • 公開直後のタイミングで実施(外部リンク最小限)

テスト結果

  • ✅ Rubocop: 58ファイル、違反なし
  • ✅ Brakeman: セキュリティ警告なし
  • ✅ ローカル動作確認: すべて正常
  • ✅ 対応漏れチェック: すべてクリーン

影響範囲

  • 30+ ファイル変更
  • マイグレーション1件追加
  • 旧ファイル3件削除
  • 後方互換性: 301リダイレクトで旧URL対応

コミット構成

  1. 8dfc054 - 基本的なリネーム(テーブル、モデル、コントローラ、ビュー)
  2. bb5d451 - 追加のpractice参照(メソッド名、Helper、Stimulus、YAML、画像)
  3. f1096f6 - SQLエイリアス(practice_count → lesson_count)
  4. 7a2ad2c - JavaScriptのsession参照(sessionStartTime、restartSession)

🤖 Generated with Claude Code

Co-Authored-By: Claude noreply@anthropic.com

sugiwe and others added 4 commits December 20, 2025 12:33
## 変更内容

### データベース
- テーブル名: typing_sessions → lesson_records
- マイグレーション: RenameTypingSessionsToLessonRecords

### モデル
- TypingSession → LessonRecord にリネーム
- User モデルの関連付けを更新(has_many :lesson_records)
- メソッド名を統一(cleanup_old_typing_sessions → cleanup_old_lesson_records)

### コントローラ・ビュー・ルーティング
- PracticesController → LessonsController にリネーム
- URL: /practices/:id → /lessons/:id に変更
- 301リダイレクト設定(旧URLから新URLへ)
- ビューディレクトリ: app/views/practices → app/views/lessons

### My::HistoryController
- @sessions → @lesson_records に統一
- session_params → lesson_record_params に変更
- JSON API のキー名を lesson_record に変更

### Admin ダッシュボード
- @total_typing_sessions → @total_lesson_records
- @sessions_today → @records_today
- @sessions_this_week → @records_this_week
- @recent_sessions → @recent_records
- すべてのビューで変数名を統一

### JavaScript
- typing_controller.js で lesson_record パラメータに変更
- 履歴保存APIのリクエストボディを更新

## 目的

- 認証の session との混同を回避(TypingSession vs session[:user_id])
- practice と lesson の混在を解消(URL は practice、データは lesson だった)
- 日本語UIとの一貫性(「レッスン」= lesson)
- DB、モデル、コントローラ、View、JavaScript すべてで統一

## チェック項目

- ✅ Rubocop: 60 files inspected, no offenses detected
- ✅ Brakeman: No warnings found
- ✅ マイグレーション実行成功

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
- get_practice_items → get_lesson_items (LessonLoader)
- PracticeHelper → LessonHelper (モジュール名)
- practiceScreenTarget → lessonScreenTarget (Stimulus)
- word_practice → word_lessons (YAMLキー)
- sentence_practice → sentence_lessons (YAMLキー)
- practice_sample.png → lesson_sample.png (画像ファイル)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Admin Dashboardの人気レッスンランキングで使用している
SQLのエイリアス名を統一。

- COUNT(*) as practice_count → COUNT(*) as lesson_count
- ORDER BY practice_count → ORDER BY lesson_count
- ビューでの参照も lesson.lesson_count に統一

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
タイピングセッション関連の変数・メソッド名を変更:
- sessionStartTime → lessonStartTime
- restartSession() → restartLesson()
- コメントも「セッション」→「レッスン」に統一

これにより、ログインセッションとの混同を完全に解消。

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
@sugiwe sugiwe self-assigned this Dec 20, 2025
@sugiwe sugiwe merged commit 6b783a6 into main Dec 20, 2025
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant