# 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にはレビューが必要 - マージ前にすべてのテストが合格していること