mooreseditorは、JSONデータをスキーマに基づいて編集するためのTauriアプリケーションです。
このプロジェクトはYAMLファイルからスキーマを動的にロードし、そのスキーマを基にJSONデータを編集するマスタデータ編集ソフトウェアです。様々な形式のスキーマが入力されることを想定しているため、絶対にサンプルにあるようなスキーマ構造をハードコードしてはいけません。すべてのスキーマ処理は動的に行い、汎用的な実装を心がけてください。
pnpm run tauri devpnpm run lint
pnpm run typecheckpnpm run test# 基本的な実行(必ず --reporter=list を付ける)
pnpm run test:e2e -- --reporter=list
# UIモードでの実行
pnpm run test:e2e:ui -- --reporter=list
# 特定のテストファイルを実行
pnpm run test:e2e -- --reporter=list tests/specific-test.spec.ts
# デバッグモードで実行
pnpm run test:e2e:debug -- --reporter=list --debug- ブラウザを開く
mcp__playwright__browser_navigate でhttp://localhost:1420/にアクセス
- 要素をクリック
mcp__playwright__browser_click で要素を選択
- element: クリックする要素の説明
- ref: スナップショットからの要素参照
- テキスト入力
mcp__playwright__browser_type でテキストボックスに入力
- element: 入力する要素の説明
- ref: 要素参照
- text: 入力するテキスト
- キーボードショートカット
mcp__playwright__browser_press_key でキーを押す
例: Control+s(保存)
- コンソールログの確認
mcp__playwright__browser_console_messages でブラウザコンソールのメッセージを取得
- エラーの確認
- console.logの出力確認
- 保存されたデータの確認
- FileOpenボタンをクリック
- メニュー項目(mapObjects等)を選択
- フィールドに値を入力
- Ctrl+Sで保存
- コンソールログで保存されたJSONを確認
- 最初のフィールドを変更して保存
- コンソールログで確認
- 別のフィールドを変更して保存
- 前回の変更が保持されているか確認
- 開発環境(http://localhost:1420/)で実行すること
- Tauriのinvokeエラーは開発環境では無視してよい
- サンプルプロジェクトでは実際のファイル保存はスキップされる
/src/components/- UIコンポーネント/src/hooks/- カスタムフック/src/utils/- ユーティリティ関数/src/libs/schema/- スキーマ関連の型定義
App.tsx- メインアプリケーション、状態管理FormView- フォーム形式でのデータ編集TableView- テーブル形式でのデータ表示EditView- 個別アイテムの編集
- JSONファイルの読み込み(useJson)
- スキーマの読み込み(useSchema)
- FormView/TableViewでの編集
- onDataChangeによる状態更新
- Ctrl+Sで全データを保存
-
環境判定のためのif文は避け、try-catchパターンを使用する
-
本番環境のコードを先に試し、失敗した場合に開発環境用のフォールバックを実行する
-
例:
// 良い例 try { // 本番環境のファイル読み込みを試行 const content = await readTextFile(filePath); } catch (error) { // 開発環境用のフォールバック const content = await getSampleData(); } // 避けるべき例 if (isDev) { const content = await getSampleData(); } else { const content = await readTextFile(filePath); }
- 何らかの実装を終えたら、必ず
pnpm run lintとpnpm run buildを実行し、Lintおよびビルド結果を確認すること。
- http://localhost:1420にアクセス
- FileOpenボタンを押す
- サイドバーに表示されたitems, blocks, mapObjects等を押す(指示によって変わる)
- 表示されたデータに対して指定された動作を実行