# HarmonyOS アプリプロジェクト CLAUDE.md

これはHarmonyOSアプリケーション向けのプロジェクトレベルの CLAUDE.md サンプルです。プロジェクトのルートに配置してください。

## プロジェクト概要

[アプリの簡単な説明 - 機能、対象デバイス、APIレベル]

## 基本ルール

### 1. 技術スタックの制約

- プラットフォーム: HarmonyOS（ArkTS/TypeScript）、最新の安定した公式APIを優先
- 状態管理: **V2のみ** (`@ComponentV2`, `@Local`, `@Param`, `@Event`, `@Provider`, `@Consumer`, `@Monitor`, `@Computed`)
- ルーティング: **Navigationのみ** (`Navigation` + `NavPathStack` + `NavDestination`)
- アーキテクチャ: モジュール型レイヤーを持つMVVM - ビューはレンダリングのみ、すべてのビジネスロジックはViewModelに
- コンポーネント優先順位: モジュール内再利用可能コンポーネント > クロスモジュール共有コンポーネント > サードパーティライブラリ

### 2. コード構成

- 大きなファイルを少数持つより、小さなファイルを多数持つ
- 高凝集、低結合
- ファイルあたり200〜400行を目標、最大800行
- 型ではなく機能/ドメインで整理する

### 3. コードスタイル

- コード、コメント、またはドキュメントに絵文字を使用しない
- イミュータビリティ - オブジェクトを直接変更しない
- 文字列にはダブルクォートを使用し、セミコロンが必要
- `var` は絶対に使用しない - `const` を優先し、次に `let`
- `any` 型は使用しない - すべてのメソッド、パラメーター、戻り値に完全な型アノテーションを付ける
- 命名: 変数/関数には `camelCase`、クラス/インターフェースには `PascalCase`、定数には `UPPER_SNAKE_CASE`
- ファイルヘッダー: `@file` + `@author`。すべてのメソッドに `@param` と `@returns` を含むJSDocが必要

### 4. レイアウトとインタラクション

- 均等分配には `layoutWeight(1)` を使用 - `SpaceAround`/`SpaceBetween` は避ける
- パーセンテージ/レイアウトウェイト/アダプティブユニットを使用 - ハードコードされた固定寸法は使用しない（アイコンを除く）
- UI定数はリソースとして定義し、`$r()` で参照する
- 新しい色リソースにはライトとダークの両テーマをサポートする

### 5. ビルドと検証

```bash
# HAPパッケージをビルド
hvigorw assembleHap -p product=default
```

- 実装のたびにビルドを実行してコンパイルを確認する
- 不明なAPI使用については公式のHuawei開発者ドキュメントを参照する - 推測しない

### 6. テスト

- TDD: テストを先に書く
- ユーティリティ関数とViewModelのユニットテスト
- 重要なユーザーフローのUIテスト
- ビジネスロジックのカバレッジ最低80%

### 7. セキュリティ

- シークレットをハードコードしない
- システムAPIを使用する前に `module.json5` でパーミッションを確認する
- すべてのユーザー入力を検証する
- すべてのネットワークリクエストにHTTPSを使用する

## ファイル構成

```
src/
|-- entry/            # アプリエントリー、フレームワーク初期化
|-- core/             # コアフレームワークレイヤー
|-- shared/           # 共有コントラクトレイヤー
|-- packages/         # ビジネス機能パッケージ
```

## 利用可能なコマンド

- `/plan` - 実装計画の作成
- `/code-review` - コード品質のレビュー
- `/build-fix` - ビルドエラーの修正

## Git ワークフロー

- コンベンショナルコミット: `feat:`, `fix:`, `refactor:`, `docs:`, `test:`
- mainブランチへの直接コミットは禁止
- PRにはレビューが必要
- マージ前にすべてのテストが合格していること
