Skip to content

Conversation

@stotic-dev
Copy link
Owner

@stotic-dev stotic-dev commented Jan 10, 2026

概要

同居人(Cohabitant)グループに所属するメンバーの情報を一元管理する機能を実装しました。これにより、家事アイテムの詳細画面でパートナーの名前を表示できるようになります。

変更の背景

これまでの実装では、家事アイテムの詳細画面で担当者(パートナー)の情報を表示する際に、個別にFirestoreからアカウント情報を取得していました。これにより、以下の課題がありました:

  • 複数の家事アイテムがある場合、同じパートナー情報を何度も取得していた
  • 取得処理が重複し、パフォーマンスとコストの面で非効率
  • メンバー情報の更新を検知できず、リアルタイム性に欠けていた

主な変更点

1. ドメインモデルの追加 (homete/Model/Domain/Cohabitant/)

  • CohabitantData: グループIDとメンバーリストを保持するデータモデル
  • CohabitantMember: メンバーの基本情報(ID、名前、メールアドレス)
  • CohabitantMemberList: メンバーリストを管理し、IDによる検索機能を提供

2. CohabitantStoreの実装

  • 同居人グループのメンバー情報を@Observableで管理
  • Firestoreのリアルタイムリスナーでメンバー情報の変更を自動反映
  • グループIDとメンバーIDのリストからメンバー詳細情報を並列取得

3. CohabitantClientの拡張

  • subscribeCohabitantData()メソッドを追加し、グループデータの購読機能を実装
  • liveValueとpreviewValue(モック)を提供

4. UI層の改善

  • HouseworkDetailViewでCohabitantStoreを活用し、パートナー名を表示
  • HouseworkDetailItemListContentを新規作成し、家事アイテムの詳細表示UIを分離
  • ローカライズ文字列の追加(housework.assign.partner.name

5. アーキテクチャの整理

  • StoreクラスをModel/Store/からModel/Domain/配下の適切なドメインフォルダに移動
    • AccountStoreModel/Domain/Account/
    • AccountAuthStoreModel/Domain/Authentification/
    • HouseworkListStoreModel/Domain/Cohabitant/Housework/
  • テストファイルも同様に移動

6. 開発環境の改善(main統合分を含む)

  • CLAUDE.mdの追加(プロジェクト概要とベストプラクティスのドキュメント)
  • Makefileの改善(Rubyセットアップ、プロビジョニングプロファイル取得)
  • .gitignoreにBundler関連ディレクトリを追加

テスト方法

ユニットテスト

xcodebuild test -project homete.xcodeproj -scheme homete -testPlan CI.xctestplan -destination 'platform=iOS Simulator,name=iPhone 16'

手動テスト

  1. アプリを起動してログイン
  2. 家事アイテムを作成し、パートナーに割り当て
  3. 家事詳細画面を開く
  4. 「担当者」欄にパートナーの名前が表示されることを確認
  5. 別のデバイスでパートナーの名前を変更
  6. 元のデバイスで家事詳細画面が自動で更新されることを確認

関連Issue

N/A(機能改善)

破壊的変更

なし。既存の機能は全て維持されています。

チェックリスト

  • ユニットテストが通ることを確認
  • SwiftLintの警告がないことを確認
  • ディレクトリ構造がプロジェクトの規約に準拠
  • Dependency Injectionパターンに従った実装
  • Swift 6 strict concurrencyに準拠

🤖 Generated with Claude Code

@stotic-dev-bot
Copy link
Collaborator

stotic-dev-bot commented Jan 11, 2026

Warnings
⚠️ PRの変更行が多すぎます。500行以内にしてね!理想は400行!
⚠️

homete/Views/HouseworkApproval/HouseworkApprovalView.swift#L101 - TODOs should be resolved (家事を完了にする) (todo)

⚠️

homete/Views/HouseworkApproval/HouseworkApprovalView.swift#L108 - TODOs should be resolved (家事を未完了に戻す) (todo)

⚠️

homete/Views/RootView/RootView.swift#L25 - Include a single empty line between switch cases (vertical_whitespace_between_cases)

⚠️

homete/Views/RootView/RootView.swift#L31 - Include a single empty line between switch cases (vertical_whitespace_between_cases)

⚠️

homete/Views/RootView/RootView.swift#L35 - Include a single empty line between switch cases (vertical_whitespace_between_cases)

Messages
📖 Project coverage: 33.25%

homete.app: Coverage: 55.27

File Coverage
CohabitantRegistrationMessage.swift 87.76%
HouseworkDetailItemListContent.swift 100.0%
CohabitantStore.swift 72.86%
ConfirmedRegistrationPeers.swift 75.0%
CohabitantMemberList.swift 31.25%
AppTabView.swift 60.31%
CohabitantRegistrationRole.swift 0.0% ⚠️
HouseworkIndexedDate.swift 60.0%
HouseworkListStore.swift 89.91%
CollectionPath.swift 0.0% ⚠️
HomeView.swift 89.43%
CohabitantClient.swift 25.0%
HouseworkApprovalView.swift 96.07%
FirestoreService.swift 0.0% ⚠️
HouseworkItem.swift 100.0%
HouseworkDetailView.swift 63.64%
AccountStore.swift 78.13%
HouseworkClient.swift 9.52%
AccountAuthStore.swift 93.15%
RootView.swift 63.36%

hometeTests.xctest: Coverage: 99.03

File Coverage
AccountAuthStoreTest.swift 96.53%
AccountStoreTest.swift 100.0%
HouseworkListStoreTest.swift 100.0%

Generated by 🚫 Danger Swift against 885b0a4

@stotic-dev stotic-dev self-assigned this Jan 11, 2026
@stotic-dev stotic-dev merged commit 67a495f into main Jan 11, 2026
4 checks passed
@stotic-dev stotic-dev deleted the update/cohabitant_members_store branch January 11, 2026 14:22
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.

3 participants