FF14のレシピ、必要素材、中間素材、装備、採集・店情報を確認するための静的Webアプリです。
- 公開サイト: https://jogu6.github.io/ffxiv-recipe/
- GitHub Pagesで配信
- PWA対応
- 日本語表示専用
- データ生成処理はWindows 11上のNode.js 24以降/Tauriツールで実行
- アイテム名からレシピを検索
- ジョブ、装備レベル、アイテムレベル、部位による装備検索
- レシピツリー表示
- 必要素材リスト表示
- お気に入りリスト複数管理
- 複数のお気に入りリストを合算した素材リスト表示
- 中間素材の製作回数と余り表示
- 中間素材の使用先と、依存関係・製作ジョブを考慮した製作順表示
- 店舗購入する中間素材と、それにより準備不要になる素材の表示
- 中間素材からミニレシピツリーを表示
- 交換/精選素材と交換貨幣の補足表示
- 採集場所、ET時間帯、LTカウントダウン表示
- 店舗、販売価格、販売場所の表示
- シェアコードによるお気に入りリストの共有
- 検索条件、選択画面、素材リスト作業状態の復帰
site/ GitHub Pagesへ公開するWebアプリ
pipeline/ CSV入力、生成途中のJSON、生成ツール、GUI、ログ
design/ アプリアイコンの原本と旧デザイン素材
docs/ 開発・運用ドキュメント
tools/ 環境構築、検証、リポジトリ操作用ツール
.github/ GitHub Actions
Service Workerとfetch()を使用するため、site/をローカルHTTPサーバーで公開します。
py -m http.server 4173 --bind 0.0.0.0 --directory siteブラウザで http://127.0.0.1:4173/ を開きます。npm run devでも同じサーバーを起動できます。
スマートフォンなどLAN内の別端末から確認する場合は、同じネットワーク内で開発PCのIPアドレスと 4173 番ポートを開きます。
データ生成はこのWebアプリ専用の Node.js/Tauri ツールで実行します。Tauri exe はリポジトリ全体のバージョンとは別に、アイテム情報作成ツール単体として v1.0 を扱います。機能名、説明、ボタン名、確認文、引数、推奨実行順はpipeline/tool/pipeline-ui-definition.mjsを正本とし、exeは起動時に読み込んでUIと実行監視へ反映します。
npm run pipeline:gui
npm run pipeline:gui:check
npm run pipeline:gui:build:exe
npm run pipeline:gui:build:timings
npm run pipeline:gui:buildpipeline:gui:checkはRust/Tauriの増分チェック、pipeline:gui:build:exeはインストーラーを作らない高速なexe生成、pipeline:gui:buildはNSISインストーラーを含む配布ビルドです。pipeline:gui:build:timingsはexeを生成し、src-tauri/target/cargo-timings/へCargoの計測結果を出力します。
共通ラッパーはツールチェーン内のrust-lldを検出します。開発・検査ではCargoのincrementalを使い、exe・配布ビルドでは依存クレートをsccacheへ保存します。キャッシュ不能な最終アプリだけは専用プロファイルでincrementalを維持します。ビルド後にはsccacheの統計を表示し、キャッシュ障害時は通常コンパイルへ退避します。
詳細は docs/data-pipeline.md を参照してください。
Node.js 24以降で依存関係をインストールします。
npm install標準チェックを実行します。JavaScript構文チェック、サイトデータ検証、アプリと計算ロジックのNode.jsテスト、パイプラインツールのNode.jsテストを並列に実行します。
npm run check個別に確認したい場合は、以下の npm scripts を使います。
npm run check:js
npm run check:site
npm run check:app
npm run check:calculation
npm run check:pipeline
npm run pipeline:gui:checkPlaywrightによるブラウザUI回帰テストを実行します。
npm run test:e2e
npm run test:e2e:app
npm run test:pipeline:guitest:e2e:appは公開アプリだけを対象にします。変更中はさらにnpm run test:e2e:app -- --grep "<test name>"で対象を絞り、最終確認ではtest:e2eを実行します。
安定実行設定はplaywright.config.jsへ集約しています。公開サイトE2Eはファイル単位で並列化し、ローカルではCPUに応じて2~4ワーカー、CIでは2ワーカーを使用します。独立したTauriモックを使うpipeline GUI E2Eはファイル内も並列化します。互換性のあるテスト用サーバーが4173番ポートで動作済みの場合は再利用します。ワーカー数と設定ファイルはコマンドラインから上書きできません。
ユーザーに見える機能追加・仕様変更・バグ修正には、その挙動を表す固有名のE2Eテストを追加してください。
開発ツールの詳細は docs/development.md を参照してください。
アプリケーションコードとプロジェクト用ツールには MIT License を適用します。
FINAL FANTASY XIV の画像、名称、アイテム/レシピデータ、商標、その他ゲーム由来素材の権利は SQUARE ENIX に帰属します。本プロジェクトは非公式であり、SQUARE ENIX の承認、提携、後援を示すものではありません。
SQUARE ENIX から修正、削除、公開停止、提供停止などの指示があった場合は迅速に従います。また、GitHub等のホスティング提供者により、事前通知の有無にかかわらず公開停止、削除、制限、アクセス不能などの措置が行われた場合も、その措置に従い、必要な修正・削除・運用変更を行います。
詳細は NOTICE.md および site/docs/license-notice.md を参照してください。
Lodestoneのアイテム一覧と製作手帳一覧を毎日確認します。正常に取得できて更新がない場合は通知せず終了し、更新を検知した場合だけ完全監査、Item.json生成、sw.jsを含むキャッシュ版更新、検証、コミット、push、GitHub Pagesのデプロイ確認を自動実行します。正常終了時と異常終了時はDiscordへ日本語で通知します。この処理はNode.js、Git、GitHub CLIだけで動作し、CodexやAI APIを使用しません。
詳細なセットアップ、タスク設定、ログ、テスト通知については Lodestone update monitor を参照してください。
pipeline/config/lodestone-monitor.example.jsonをpipeline/config/lodestone-monitor.local.jsonとしてコピーします。discordWebhookUrlに通知先のDiscord Webhook URLを設定します。ローカル設定はGitの追跡対象外です。- Gitの追跡対象外であるタスク定義をタスクスケジューラへインポートし、
xivapi-update-monitor-taskの実行ユーザーとパスワードを設定します。この名称は互換性のため維持していますが、監視対象はLodestoneです。 gh auth login --hostname github.com --git-protocol https --webとgh auth setup-gitを実行し、GitHubへのpushとActions確認に使う認証を設定します。- タスクを一度手動実行して基準状態を保存します。初回実行では通知も自動公開も行いません。
Webhookへのテスト通知は node pipeline/tool/lodestone-update-monitor.mjs --test-notification で送信できます。この操作では監視の基準状態を変更しません。
取得不能、HTML構造不整合、生成・検証失敗、想定外の差分、コミット・push・デプロイ失敗は日本語の原因と対応方法をDiscordへ通知して中止します。確認が必要なログがある場合は、そのログの絶対パスも通知します。GitHub認証切れの場合は再認証コマンドも案内します。認証処理は非対話で実行するため、ブラウザーや認証画面を自動表示しません。Discord Webhook自体が無効な場合は通知できないため、同じ日本語案内を実行ログへ保存します。
タスクは wscript.exe の非表示実行からNode.jsを起動するため、ターミナルウィンドウを表示しません。監視処理とその子プロセスはCPU優先度を「通常以下」に固定し、生成処理のNode.jsヒープにも上限を設けます。Lodestoneへのアクセスと保存済みHTMLの解析は逐次処理し、全件HTMLをメモリへ保持しません。状態、取得キャッシュ、ログはそれぞれ pipeline/state/、pipeline/cache/、pipeline/logs/ に保存され、いずれもGitの追跡対象外です。自動公開はクリーンなmainブランチだけで開始し、完了済み工程、コミット済み・push済みの途中状態を保存して次回の定期実行から安全に再開します。
ログ整理は共通処理として監視開始時に実行します。完了した月の実行ログを月別ZIPへ移して元ログを削除し、完了した年は月別ZIPを年別ZIPへまとめて月別ZIPを削除します。月と年の境界を含む日時判定、状態、ログ、通知はすべて日本時間を使用します。