소개
시도하고자 했던 것
다음주부터 본격적으로 시작할 Ruby on Rails 학습을 대비한 사전 예습을 진행했습니다.
현재 HTML/JavaScript/localStorage 기반으로 작동하는 한바둑 명리학 시스템을
본격적인 웹 애플리케이션으로 전환하기 위해서는
Rails의 기본 개념과 철학을 미리 이해하는 것이 필수적이라고 판단했습니다.
그 이유
1. 현재 시스템의 한계
HTML 파일 10개 이상이 개별적으로 작동
localStorage로 데이터 관리 (용량 제한, 백업 어려움)
PostgreSQL은 구축했지만 연동 방법이 불명확
310개 프로필 → 1.1백만+ 조합으로 확장 불가능한 구조
2. 체계적 개발의 필요성
그동안 "vibe coding" 방식에서 벗어나고자 노력
대용량 데이터 처리에는 검증된 프레임워크 필요
명리학이라는 복잡한 도메인을 코드로 체계화
3. 은퇴 후 자원 최적화
연금 생활하며 시간과 비용을 효율적으로 사용해야 함
시행착오 최소화를 위한 사전 학습 투자
Claude AI를 활용한 효과적인 독학 전략
4. UNESCO 등재 목표
디지털 문화유산 수준의 품질 요구
장기적으로 유지보수 가능한 시스템 구조
학계와 연구자들이 신뢰할 수 있는 플랫폼
진행 방법
사용한 도구
Claude Sonnet 4.5: 개념 설명, 실습 가이드 제공
Claude Projects: 한바둑 프로젝트 문맥 유지 (30개 문서)
프로젝트 지식 검색: 기존 작업물과 연계한 학습
메모 앱: 핵심 개념 정리 및 질문 리스트 작성
학습 프롬프트 전략
📝 1단계: 기초 개념 질문
Ruby on Rails가 무엇인지 초보자 관점에서 설명해주세요. 특히 다음 부분이 궁금합니다: 1. Rails를 사용하는 이유 (다른 프레임워크 대비) 2. 한바둑 시스템에 적합한 이유 3. PostgreSQL과의 연동 방법 4. 학습 곡선과 예상 소요 시간
📝 2단계: 구체적 적용 시나리오
현재 한바둑 시스템 구조를 Rails로 전환한다면: - PostgreSQL 5개 테이블 (profiles, wonkuk, daeun, daeun_groups, sewun) - localStorage 데이터 (310개 프로필) - HTML 파일 10개 (각기 다른 기능) 어떤 순서로 마이그레이션해야 하나요? 각 단계별 작업 내용과 예상 시간을 알려주세요.
📝 3단계: 실전 연습 계획
다음주부터 Rails를 실제로 배우기 전에 미리 준비해야 할 것들을 알려주세요: 1. 개발 환경 설정 (Windows 11 환경) 2. 필수 학습 개념 리스트 3. 간단한 연습 프로젝트 아이디어 4. 추천 학습 자료 (무료 중심)
단계별 학습 과정 (3.5시간)
Phase 1: MVC 아키텍처 이해 (1시간)
핵심 질문:
"MVC 패턴이 왜 중요한가요? 한바둑 시스템의 어느 부분이 Model, View, Controller인가요?"
Claude의 설명:
Model: PostgreSQL 테이블과 1:1 대응
Profile 모델 = profiles 테이블
Wonkuk 모델 = wonkuk 테이블
관계 설정: has_many, belongs_to
View: 사용자가 보는 화면
현재 HTML 파일들이 View가 됨
ERB(Embedded Ruby) 템플릿 사용
데이터를 동적으로 표시
Controller: 비즈니스 로직 처리
사주 계산 로직
대운/세운 생성 알고리즘
사용자 요청 처리
실습 예제:
ruby
# 간단한 MVC 구조 상상하기 class ProfilesController < ApplicationController def show # Controller: 요청 처리 @profile = Profile.find(params[:id]) # Model: 데이터베이스 조회 # (ActiveRecord가 자동 처리) # View: show.html.erb로 렌더링 end end
깨달음:
복잡한 시스템을 관심사의 분리로 단순화
각 부분이 독립적이라 유지보수 용이
명리학의 "천간지지 분리" 철학과 유사!
Phase 2: Convention over Configuration (45분)
핵심 질문:
"Rails의 '설정보다 규약' 철학이 실제로 어떻게 작동하나요? 한바둑 시스템에서 어떤 이점이 있나요?"
Claude의 예시:
ruby
# 1. 모델 이름 = 테이블 이름 (복수형) class Profile < ApplicationRecord # 자동으로 'profiles' 테이블과 연결 end # 2. 관계 설정의 간결함 class Profile < ApplicationRecord has_many :wonkuks has_many :daeuns end class Wonkuk < ApplicationRecord belongs_to :profile end # 3. 복잡한 조인 쿼리가 간단해짐 profile = Profile.find(1) wonkuks = profile.wonkuks # 자동 JOIN!
비교 학습:
기존 방식 (JavaScript + localStorage):
javascript
// 수동으로 모든 관계 관리 const profiles = JSON.parse(localStorage.getItem('profiles')); const wonkuks = JSON.parse(localStorage.getItem('wonkuks')); // 프로필의 원국 찾기 - 직접 필터링 const profileWonkuks = wonkuks.filter(w => w.profile_id === profileId );
Rails 방식:
ruby
# 자동으로 연결됨 profile = Profile.find(1) wonkuks = profile.wonkuks # 끝!
깨달음:
명명 규칙만 지키면 90% 자동화
코드량 대폭 감소
실수 가능성 최소화
Phase 3: ActiveRecord와 데이터베이스 (1시간)
핵심 질문:
"PostgreSQL과 Rails를 어떻게 연결하나요? SQL을 직접 작성해야 하나요?"
Claude의 실습 가이드:
1. 데이터베이스 설정 (database.yml)
yaml
development: adapter: postgresql database: hanbadook_dev username: <%= ENV['DB_USER'] %> password: <%= ENV['DB_PASSWORD'] %> host: localhost port: 5432
2. 마이그레이션 파일 (자동 생성)
ruby
# db/migrate/20241122_create_profiles.rb class CreateProfiles < ActiveRecord::Migration[7.0] def change create_table :profiles do |t| t.string :name t.date :birth_date t.string :gender t.string :calendar_type t.timestamps # created_at, updated_at 자동 end end end
3. 모델에서 SQL 없이 쿼리
ruby
# 전체 프로필 조회 profiles = Profile.all # 조건 검색 female_profiles = Profile.where(gender: '여자') # 정렬 recent = Profile.order(created_at: :desc) # 복잡한 조건 born_in_1960s = Profile.where( birth_date: Date.new(1960, 1, 1)..Date.new(1969, 12, 31) )
실습 과제:
한바둑 시스템의 실제 쿼리를 ActiveRecord로 변환해보기:
Before (SQL):
sql
SELECT p.*, w.* FROM profiles p JOIN wonkuks w ON p.id = w.profile_id WHERE p.gender = '여자' AND p.calendar_type = '음력' ORDER BY p.birth_date DESC;
After (ActiveRecord):
ruby
Profile .where(gender: '여자', calendar_type: '음력') .includes(:wonkuks) .order(birth_date: :desc)
깨달음:
SQL 지식 불필요 (Ruby 코드로 대체)
가독성 향상
데이터베이스 변경 시에도 코드 수정 최소
Phase 4: RESTful 라우팅 (45분)
핵심 질문:
"URL 구조를 어떻게 설계해야 하나요? 한바둑 시스템의 기능들을 어떻게 매핑하나요?"
Claude의 설계 예시:
한바둑 기능 → RESTful URL 매핑:
0열 선택0열 다음에 열 추가
1열 선택1열 다음에 열 추가
2열 선택2열 다음에 열 추가
0행 선택0행 다음에 행 추가
1행 선택1행 다음에 행 추가
2행 선택2행 다음에 행 추가
3행 선택3행 다음에 행 추가
4행 선택4행 다음에 행 추가
5행 선택5행 다음에 행 추가
6행 선택6행 다음에 행 추가
셀 전체 선택
열 너비 조절
행 높이 조절
기능
현재 (HTML)
Rails 라우팅
프로필 목록
profiles.html
GET /profiles
프로필 상세
profile_detail.html?id=1
GET /profiles/1
프로필 생성
add_profile.html
POST /profiles
원국 조회
wonkuk.html?id=1
GET /profiles/1/wonkuk
대운 계산
daeun.html?id=1
GET /profiles/1/daeuns
세운 보기
sewun.html?id=1
GET /profiles/1/sewuns
셀 병합
행 분할
열 분할
너비 맞춤
삭제
routes.rb 설정:
ruby
Rails.application.routes.draw do resources :profiles do member do get 'wonkuk' get 'daeuns' get 'sewuns' end end # 자동 생성되는 경로: # profiles_path → /profiles # profile_path(1) → /profiles/1 # new_profile_path → /profiles/new # edit_profile_path(1) → /profiles/1/edit end
깨달음:
URL이 자원(Resource) 중심으로 일관성 있게 구성
10개 HTML 파일 → 체계적인 라우팅 구조
사용자 경험 향상 (직관적인 URL)
결과와 배운 점
배운 핵심 개념
1. 프레임워크의 힘
배운 점: Rails는 "레일 위를 달리는 기차"처럼, 정해진 규칙을 따르면 빠르게 개발 가능
한바둑 적용: 명리학이라는 복잡한 도메인에 집중하고, 인프라는 Rails에 맡기기
2. 데이터베이스 추상화
배운 점: SQL을 몰라도 ActiveRecord로 강력한 쿼리 작성 가능
한바둑 적용: PostgreSQL 5개 테이블을 Ruby 객체처럼 다루기
3. MVC의 가치
배운 점: 복잡한 시스템을 관심사별로 분리하면 유지보수 용이
한바둑 적용:
Model: 명리학 데이터 구조
View: 사용자 인터페이스
Controller: 사주 계산 로직
4. Convention의 효율성
배운 점: 명명 규칙만 지키면 90%가 자동화
한바둑 적용: 표준화된 구조로 협업 가능성 확보
나만의 꿀팁
💡 Tip 1: 대화형 학습
Claude에게 질문할 때: ❌ "Rails 알려줘" ✅ "한바둑 시스템의 X 기능을 Rails로 구현하려면?" 구체적 상황을 제시하면 맞춤형 설명을 받을 수 있습니다!
💡 Tip 2: 비교 학습
기존 코드 (JavaScript/localStorage)와 Rails 코드를 나란히 비교하며 학습하니 개념이 훨씬 명확해졌습니다.
💡 Tip 3: 메모 습관
학습 중 떠오르는 질문을 즉시 메모: - "대운 10개를 어떻게 관계 설정?" - "절기 데이터는 별도 테이블?" - "계산 로직은 Model에? Controller에?" 다음 학습 시 Claude에게 바로 질문!
💡 Tip 4: 프로젝트 연계
추상적 개념보다는 "내 프로젝트에 어떻게 적용?"을 항상 질문. 한바둑 시스템이라는 실전 예제가 있으니 이론이 바로 실무로 연결됩니다.
시행착오
❌ 시행착오 1: 개념부터 공부하려 함
문제: "Rails란 무엇인가"부터 읽으니 지루하고 이해 안 됨
해결: "한바둑을 Rails로 만든다면?"으로 질문 방향 전환
교훈: 실전 문제 중심 학습이 효과적
❌ 시행착오 2: 완벽 이해 추구
문제: 모든 개념을 100% 이해하려다 진도 안 나감
해결: 80% 이해로 만족하고 다음 단계 진행
교훈: 실습하며 자연스럽게 깊어지는 이해
❌ 시행착오 3: 코드 암기 시 도
문제: Rails 코드 예제를 외우려 함
해결: 패턴과 철학을 이해하는 데 집중
교훈: 문법은 검색하면 되고, 개념이 핵심
도움이 필요한 부분
개발 환경 설정
Windows 11에서 Rails 설치 과정
PostgreSQL 연동 설정
에디터 추천 (VS Code?)
학습 로드맵
다음주 첫 일주일 계획
매일 몇 시간씩 학습할지
어느 수준까지 학습 후 실전 돌입?
HTML → Rails 마이그레이션 전략
한 번에? 단계별로?
어느 기능부터 시작?
기존 데이터 이전 방법
도움 받은 글 (옵션)
Claude AI 활용
Claude Projects의 프로젝트 지식 검색 기능
기존 작업물과 연계하여 맞춤형 학습
한바둑 시스템 문맥을 유지하며 질문
참고 자료 (예정)
Ruby on Rails Guides (공식 문서)
"Rails Tutorial" by Michael Hartl (무료 온라인)
PostgreSQL 공식 문서
Tailwind CSS for Rails