Skip to content

Repository files navigation

FinalFantasy XIV® Crafting Assistant XIVca(シヴカ)

FF14のレシピ、必要素材、中間素材、装備、採集・店情報を確認するための静的Webアプリです。

  • 公開サイト: https://jogu6.github.io/ffxiv-recipe/
  • GitHub Pagesで配信
  • PWA対応
  • 日本語表示専用
  • データ生成処理はWindows 11上のNode.js 24以降/Tauriツールで実行

主な機能

  • アイテム名からレシピを検索
  • ジョブ、装備レベル、アイテムレベル、部位による装備検索
  • レシピツリー表示
  • 必要素材リスト表示
  • お気に入りリスト複数管理
  • 複数のお気に入りリストを合算した素材リスト表示
  • 中間素材の製作回数と余り表示
  • 中間素材の使用先と、依存関係・製作ジョブを考慮した製作順表示
  • 店舗購入する中間素材と、それにより準備不要になる素材の表示
  • 中間素材からミニレシピツリーを表示
  • 交換/精選素材と交換貨幣の補足表示
  • 採集場所、ET時間帯、LTカウントダウン表示
  • 店舗、販売価格、販売場所の表示
  • シェアコードによるお気に入りリストの共有
  • 検索条件、選択画面、素材リスト作業状態の復帰

Repository structure

site/       GitHub Pagesへ公開するWebアプリ
pipeline/   CSV入力、生成途中のJSON、生成ツール、GUI、ログ
design/     アプリアイコンの原本と旧デザイン素材
docs/       開発・運用ドキュメント
tools/      環境構築、検証、リポジトリ操作用ツール
.github/    GitHub Actions

Local preview

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 番ポートを開きます。

Data pipeline

データ生成はこの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:build

pipeline: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 を参照してください。

Validation

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:check

PlaywrightによるブラウザUI回帰テストを実行します。

npm run test:e2e
npm run test:e2e:app
npm run test:pipeline:gui

test: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 を参照してください。

Rights and license

アプリケーションコードとプロジェクト用ツールには MIT License を適用します。

FINAL FANTASY XIV の画像、名称、アイテム/レシピデータ、商標、その他ゲーム由来素材の権利は SQUARE ENIX に帰属します。本プロジェクトは非公式であり、SQUARE ENIX の承認、提携、後援を示すものではありません。

SQUARE ENIX から修正、削除、公開停止、提供停止などの指示があった場合は迅速に従います。また、GitHub等のホスティング提供者により、事前通知の有無にかかわらず公開停止、削除、制限、アクセス不能などの措置が行われた場合も、その措置に従い、必要な修正・削除・運用変更を行います。

詳細は NOTICE.md および site/docs/license-notice.md を参照してください。

Lodestone更新監視と自動公開

Lodestoneのアイテム一覧と製作手帳一覧を毎日確認します。正常に取得できて更新がない場合は通知せず終了し、更新を検知した場合だけ完全監査、Item.json生成、sw.jsを含むキャッシュ版更新、検証、コミット、push、GitHub Pagesのデプロイ確認を自動実行します。正常終了時と異常終了時はDiscordへ日本語で通知します。この処理はNode.js、Git、GitHub CLIだけで動作し、CodexやAI APIを使用しません。

詳細なセットアップ、タスク設定、ログ、テスト通知については Lodestone update monitor を参照してください。

  1. pipeline/config/lodestone-monitor.example.jsonpipeline/config/lodestone-monitor.local.json としてコピーします。
  2. discordWebhookUrl に通知先のDiscord Webhook URLを設定します。ローカル設定はGitの追跡対象外です。
  3. Gitの追跡対象外であるタスク定義をタスクスケジューラへインポートし、xivapi-update-monitor-task の実行ユーザーとパスワードを設定します。この名称は互換性のため維持していますが、監視対象はLodestoneです。
  4. gh auth login --hostname github.com --git-protocol https --webgh auth setup-git を実行し、GitHubへのpushとActions確認に使う認証を設定します。
  5. タスクを一度手動実行して基準状態を保存します。初回実行では通知も自動公開も行いません。

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を削除します。月と年の境界を含む日時判定、状態、ログ、通知はすべて日本時間を使用します。

About

An unofficial static web app for viewing FINAL FANTASY XIV crafting recipes and material trees, currently available in Japanese only.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages