fort-rank
WIP(現在進行中)
Work In Progress
このプロジェクトで現在進行中の作業と、過去のスナップショットを記録する。
現在の状況
全体ステータス
リリース自動化フロー (タグ push → GitHub Release + fortrank.com/downloads) が稼働。v1.1.1 のインストーラを配布中。O40CS Hideout? 機能とスタンダードテンプレート5列化が完了・リリース済み。
構成
- ローカル:
~/cdev/fort-rank、GitHub:ichirokisanuki/fort-rank - 配布:
https://fortrank.com/downloads/(S3 + CloudFront、誰でも DL 可) - Windows 動作確認用:
FortRankWinDebug/プロジェクト + 指示書fort-rank/windebug/CLAUDE.md - 配布対象は WinForms 版 (
FortRank.csproj/net8.0-windows)。Avalonia 版は Mac での開発・確認用
直近の進捗(2026-06-03)
- スタンダードテンプレートのマッチ別ビューを5列化(O40CS と同仕様)
- O40CS タブに「Hideout?」チェックボックス追加(ON で O40CS テンプレートのロゴ
o40cs_2026_2.pngを出力直前に除去)。Avalonia / WinForms 両方に実装 - 1.1.1 をリリース。CI 成功〜ダウンロードページ反映まで確認済み
次にやること
- 特に確定タスクなし(次の機能要望待ち)
- 積み残し: プロジェクトルート
CLAUDE.mdを Mac/Avalonia 中心に書き換え、ichirokisanuki/FortRank(キャメル)の削除判断(ROADMAP 参照)
詰まっていること / 未決事項
- なし(1.1.1 リリース完了直後)
過去のWIPアーカイブ
(新しい「現在の状況」を書く前に、古いものをここに追記でアーカイブする。新しいものが上)
2026-06-03 時点のスナップショット(v1.0.3 配布時)
全体ステータス: Windows→Mac 引き継ぎ完了、リリース自動化フロー稼働。v1.0.3 のインストーラ配布中。
直近の進捗:
- v1.0.3 ビルド・配布完了
- アプリアイコン刷新 (王冠 + FR) 完了
fortrank.com/downloadsの末尾スラッシュ問題を absolute path 化で修正、CloudFront invalidation 済み
次にやること:
- Windows ブラウザでハードリロード後の DL 動作確認
- CLAUDE.md (プロジェクトルート) を Mac/Avalonia 中心に書き換え
scripts/generate-downloads-index.ps1の絶対パス化修正をコミット
詰まっていること / 未決事項:
- Windows ブラウザ側のキャッシュ状況次第で、古い相対パス HTML が見えている可能性
ichirokisanuki/FortRank(キャメル) リポジトリの削除タイミング未定
2026-05-16 09:25 時点のスナップショット
(以下、引継ぎ.md・CLAUDE.md・このセッションの作業内容からの整理)
引き継ぎの背景
- Windows PC で開発していた FortRank プロジェクトを Mac (~/cdev/fort-rank) に引き継いだ
- 元リポジトリ: https://github.com/ichirokisanuki/FortRank.git(キャメル、Windows側からpush)
- 新リポジトリ: https://github.com/ichirokisanuki/fort-rank.git(小文字・ハイフン、Mac側で使う)
- 履歴は捨てて中身のみコピー。.gitignore は .NET 用 + Mac/汎用分をマージ済み
- いずれ ichirokisanuki/FortRank(キャメル)は削除する予定
構成
FortRank.sln配下の .NET 8 マルチプロジェクトFortRank.Core/… 共通ロジック(クロスプラットフォーム)FortRank/… WinForms UI(Windows専用、配布対象)FortRank.Avalonia/… Avalonia UI(クロスプラットフォーム、Mac で動かす本命)FortRankDesignTemplatesViewer/… テンプレートプレビュー(配布対象外)
- HTMLテンプレートは
FortRank.Core/DesignTemplates/に EmbeddedResource として配置済み
次にやること
- Mac環境での Avalonia 版動作確認(引継ぎ.md の「次のステップ候補」筆頭)
dotnet run --project FortRank.Avaloniaで起動できるか- .NET 8 SDK インストール確認
CLAUDE.mdを Mac/Avalonia 中心の記述に書き換え(現状は Windows/WinForms 中心)
詰まっていること
- 特になし(引き継ぎ完了直後)
ROADMAP(計画)
ロードマップ
今週
- Windows ブラウザで
fortrank.com/downloadsのハードリロード後 DL を最終確認 -
CLAUDE.md(プロジェクトルート) を Mac/Avalonia 中心の記述に書き換え(現状 Windows/WinForms 中心)
今月
- Avalonia 版の Mac 上での実機操作確認(リプレイ読み込み・ランキング生成・HTML 出力までの一連動作)
- WinForms 版 (
FortRank.csproj) の MainForm.cs 203 / 292 行の null 参照警告解消
今四半期
-
ichirokisanuki/FortRank(キャメル) リポジトリの削除(fort-rankに完全移行確認後) - Avalonia 版のクロスプラットフォーム化追加対応(必要に応じて)
いつか
- リプレイのネットワークパケット独自パースによるダメージ量取得(FortniteReplayReader v2.4.0 では不可)
- 進行中リプレイの SessionId 抽出をログファイル経由ではなく直接ファイルから(暗号化キー未確定のため現状不可)
- アプリのアップデート通知機能(fortrank.com から最新版チェック)
完了済み (2026-06-03)
- スタンダードテンプレートのマッチ別ビュー5列化(O40CS と同仕様に統一)
- O40CS タブの「Hideout?」チェックボックス(O40CS テンプレートのロゴ非表示)— Avalonia / WinForms 両方
- インストーラ 1.1.1 のリリース(CI〜ダウンロードページ反映まで確認)
完了済み (2026-05-16)
- Windows→Mac 引き継ぎ
- Mac 上での Avalonia 版起動確認 + フォント問題修正
- 設定タブの並び替え(Avalonia + WinForms)
-
FortRankWinDebugプロジェクト用の指示書整備 - GitHub Actions による Windows インストーラ自動ビルド
-
fortrank.com/downloadsの S3 自動デプロイ環境構築 - アプリアイコンを王冠 + FR の新デザインに刷新
-
fortrank.com/downloadsの URL 末尾スラッシュ問題対応(index.html 絶対パス化) - インストーラ 1.0.3 のリリース
DECISIONS(意思決定)
意思決定記録
このプロジェクトで下した重要な意思決定を記録する。 最新が上に来る。
2026-06-03: O40CS ロゴ非表示は出力直前 HTML の正規表現除去で実装
背景: O40CS の「Hideout?」チェックボックス ON 時に、O40CS通常/本番テンプレートのヒーローロゴ (o40cs_2026_2.png) を消したい。実装方法として ①テンプレートに meta フラグを渡して JS で .hero-logo を消す ②RankingDataJsonBuilder に hideLogo を持たせる ③レンダリング後 HTML から img タグを正規表現で除去、の3案があった。
決定: ③のレンダリング後 HTML に対する正規表現除去(<img\b[^>]*o40cs_2026_2\.png[^>]*> を空置換)を GenerateHtml 内で実施する。TemplateManager.Render の後段で、_hideO40CsLogo が true のときだけ適用。
理由: 全テンプレート共通の RankingDataJsonBuilder やテンプレート本体(HTML/JS)を一切触らずに済み、変更が出力直前の1箇所に閉じる。要件が「特定テンプレートの特定アイコンを消す」という限定的なものなので、共有層にフラグを通すより局所化した方が影響範囲が小さい。img の src が安定した埋め込みリソース文字列なので正規表現でも確実に当たる。
2026-06-03: O40CS Hideout? 機能は配布対象の WinForms 版にも実装する
背景: 当初 Mac で動かす Avalonia 版にのみ Hideout? を実装したが、インストーラが publish するのは WinForms 版 (FortRank.csproj)。Avalonia 版だけだとリリースに機能が載らない。
決定: WinForms 版 (MainForm + MultiRankingResultDialog) にも同じチェックボックスとロゴ除去ロジックを実装する。
理由: 配布対象は WinForms 版なので、ユーザーに届けるにはこちらへの実装が必須。Mac ではビルド不可だが、コードパターンを Avalonia 版と揃え、実ビルド確認は CI / Windows 側 (FortRankWinDebug) で行う運用とする。
2026-05-16: index.html の内部リンクは絶対パスを使う
背景: ChatGPT 生成のリンクは相対パスで作っていたが、ユーザーが https://fortrank.com/downloads (末尾スラッシュ無し) でアクセスすると、ブラウザの相対 URL 解決で /FortRank_Setup_X.Y.Z.exe (ルート直下) を叩きにいき、S3 が 403 を返す問題が発生した。
決定: scripts/generate-downloads-index.ps1 および手動配置の index.html の href をすべて /downloads/<filename> の絶対パスで生成する。
理由: ベース URL の末尾スラッシュ有無に依存せず確実に正しいパスを叩ける。CloudFront Function による URL リライト (/downloads → /downloads/index.html) との組み合わせでも問題なく動く。
2026-05-16: アプリアイコンは王冠 + FR の 2 要素フラットデザイン
背景: 旧アイコンは線画の王冠 + 中央に「1」のミニマルだったが、ゲーマー向けの存在感に欠けていた。最初に依頼した装飾的なゲーミング系プロンプトは「ダサい」と却下された。
決定: 「角丸スクエア / ダークネイビー背景 / ゴールド単色フラット / 王冠 + 太字 FR」の 2 要素のみで構成。グラデーション・グロー・影は一切無し。32px に縮小してもシルエットが崩れない。背景は PNG アルファ透明で角丸の外周のみ。
理由: Windows でも macOS でも余計な装飾なく自然に表示される。識別性が高く、シンプルさを保つ。OS が squircle 等を被せない Windows の表示ルールに合致。
2026-05-16: リリースは GitHub Actions で自動化し、配布は GitHub Release と fortrank.com/downloads の両方
背景: WinForms 版 (net8.0-windows) は Mac でビルド不可、Inno Setup も Windows 専用。Mac 中心の開発で毎回 Windows PC に切り替えてリリースするのは非効率。また、private リポなので GitHub Release を一般ユーザーにそのまま配布できない。
決定:
.github/workflows/build-installer.ymlでv*.*.*タグ push 時にwindows-latestランナーで自動ビルド- 成果物の setup.exe は GitHub Release に添付 + S3
s3://fortrank/downloads/にアップロード - S3 上の setup.exe 一覧から
index.htmlを自動再生成、CloudFront/downloads/*を invalidation - 配布 URL は
https://fortrank.com/downloads/(CloudFront 経由、認証不要・誰でも DL 可)
理由: Mac でタグ push 1 回で全部完結する。private リポを維持しつつエンドユーザーへの公開配布が成立する。
2026-05-16: Windows 側の Git 履歴は引き継がず中身のみコピー
背景: Windows の ichirokisanuki/FortRank (キャメル) と、Mac で new-project-setup により作成された空の ichirokisanuki/fort-rank (小文字) が並存。Mac 側に Windows の作業履歴を引き継ぐ手段を選ぶ必要があった。
決定: 履歴は捨て、FortRank のソースツリー一式 (.git 除く) を fort-rank にコピー。fort-rank の Initial commit と FortRank の中身を混ぜた単一コミットを作成。
理由: --force push 禁止ルールがあり、fort-rank 側の Initial commit を破棄して FortRank の履歴丸ごとを乗せる選択肢は取れない。--allow-unrelated-histories でマージするとコンフリクト解決が手間。個人開発で過去履歴を本当に必要としていない。
2026-05-16: リポジトリは ichirokisanuki/fort-rank に統一する
背景: Windows PC では ichirokisanuki/FortRank (キャメル) を使っていた。Mac 側 new-project-setup で ichirokisanuki/fort-rank (小文字・ハイフン) が新規作成され、両者が GitHub 上に並存していた。
決定: ローカルディレクトリは ~/cdev/fort-rank のまま、GitHub リモートも ichirokisanuki/fort-rank (小文字) に統一する。ichirokisanuki/FortRank (キャメル) は将来削除予定。
理由: Mac での既存セットアップ (.devnotes/ 雛形・dev-tracked topic 付与済み) を活かせる。kebab-case 命名で個人プロジェクトの命名規則と一貫する。Windows 側の FortRankWinDebug プロジェクトからも fort-rank の clone を参照する構成にした。
DEVLOG(作業ログ)
開発日誌
このプロジェクトでの作業を時系列で記録する。 最新のエントリが上に来る。
2026-06-03
O40CS Hideout? 機能追加・スタンダード5列化・1.1.1 リリース
やったこと:
- スタンダードテンプレートのマッチ別ビューを5列化(O40CS と同じ仕様に統一)
FortRank.Core/DesignTemplates/スタンダード.html- 順位列をスコア降順の連番に変更(同点はマッチ順位が上位の方を上)、
match-place付きの「マッチ順位」列を追加 - PC用グリッド
80px 1fr 100px 100px 100px/ モバイル用60px 1fr 72px 72px 72pxに5列化 - O40CS と違い撃破数を素の
match-statで表示しているため、マッチ順位もそれに揃えた
- O40CS タブに「Hideout?」チェックボックスを追加。ON でランキング生成→HTML出力/アップロードすると、O40CS通常/本番テンプレートのヒーローロゴ (
o40cs_2026_2.png) を除去- Avalonia 版:
O40CsViewModel.HideLogo→O40CsViewチェックボックス →Generate_ClickでMultiRankingResultWindowにhideO40CsLogoを渡す →GenerateHtmlで正規表現除去 - WinForms 版:
MainFormにo40HideoutCheck追加(生成ボタンの左、Dock=Right 逆順配置)→MultiRankingResultDialogの両コンストラクタにhideO40CsLogo引数追加 →GenerateHtmlで同じ除去 - 除去ロジックは出力直前の HTML に対し
<img\b[^>]*o40cs_2026_2\.png[^>]*>を空置換。JSON ビルダー・テンプレート本体は無変更
- Avalonia 版:
- Avalonia 版で動作確認 OK、WinForms 版は Windows 側(FortRankWinDebug)で pull→実行して確認 OK
- インストーラを 1.1.1 にバージョンアップしてリリース
installer.issの AppVersion / OutputBaseFilename を 1.1.1 にscripts/downloads-changelog.jsonに 1.1.1 のリリースノート2件を追加- タグ
v1.1.1push → CI 成功、GitHub Release 作成、S3 アップロード、ダウンロードページ更新まで自動完了 https://fortrank.com/downloads/FortRank_Setup_1.1.1.exeが HTTP 200 で DL 可能なことを確認
気づき:
- WinForms 版 (
net8.0-windows) は Mac ではビルド不可(Windows Desktop SDK が無い)。構文整合は Avalonia 版とパターンを揃えて担保し、実ビルドは CI / Windows 側で確認する運用
決めたこと:
- O40CS ロゴ除去は「出力直前 HTML の正規表現除去」方式を採用(DECISIONS.md 参照)
2026-05-16
09:25 - Windows→Mac 引き継ぎとリリース自動化の構築
やったこと:
- Windows PC 側の
ichirokisanuki/FortRank(キャメル) の中身を Mac の~/cdev/fort-rankに移植- 履歴は捨てて中身のみコピー、リモートは
ichirokisanuki/fort-rank(小文字) に統一 .gitignoreは .NET 向け + macOS/汎用設定をマージ.devnotes/を init-devlog で導入、初期 WIP を記録
- 履歴は捨てて中身のみコピー、リモートは
- Mac で Avalonia 版を起動確認 (
dotnet run --project FortRank.Avalonia)- 文字サイズが英数字と日本語でズレる問題発生
Program.csの.WithInterFont()を外し、FontManagerOptions.DefaultFamilyNameで OS ごとの日本語フォントを既定指定 (macOS: Hiragino Sans / Windows: Yu Gothic UI / Linux: Noto Sans CJK JP) して解消
- 設定タブの UI 調整 (Avalonia + WinForms 両方)
- 「最新マッチのセッションID」を最上部に移動
- Avalonia 版のみ「S3 アップロード設定」を
IsVisible="False"で非表示化(コードは残す)
- Windows 動作確認用のシェル
FortRankWinDebug/用の指示書をfort-rank/windebug/CLAUDE.mdとして整備- Windows 側で
git clone→ 親に CLAUDE.md → 「動作確認して」と一言でgit pull→dotnet runまで自動化される構成
- Windows 側で
- インストーラを 1.0.2 → 1.0.3 にバージョンアップ
- GitHub Actions
.github/workflows/build-installer.ymlを追加v*.*.*タグ push でwindows-latestランナーがdotnet publish+ Inno Setup を実行- 成果物を GitHub Release に添付、かつ S3 (
s3://fortrank/downloads/) にもアップロード scripts/generate-downloads-index.ps1で S3 上の setup.exe を列挙してindex.htmlを再生成- CloudFront
/downloads/*を invalidation
- AWS 側のセットアップ
- IAM ユーザー
fort-rank-deployerを作成(権限:s3:Put/Get/Delete on fortrank/downloads/*+s3:ListBucket prefix=downloads/*+ CloudFrontE2JO09A3T198CZの invalidation) - Ichiro ユーザーに inline ポリシー
CloudFrontFullAccess-inlineを追加(運用作業用) - CloudFront Function
fortrank-downloads-rewriteを作成・Distribution に関連付け(/downloads/downloads/を/downloads/index.htmlにリライト) - GitHub Secrets に
AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY/CLOUDFRONT_DISTRIBUTION_IDを登録
- IAM ユーザー
- アプリアイコンを王冠 + FR の新デザインに刷新
- ChatGPT 生成画像を Pillow で 4隅 flood fill → 透明背景化
- 多解像度 ICO (16/24/32/48/64/128/256) に変換して
app.icoを差し替え、app.pngも同梱
fortrank.com/downloadsの末尾スラッシュ問題を発見・修正- DevTools で
https://fortrank.com/FortRank_Setup_1.0.3.exe(downloads/ 抜け) を叩いて 403 が出ていたのを特定 - 原因: 末尾スラッシュ無し URL でアクセス時、HTML 内の相対パス
href="X.exe"が/X.exe(ルート直下) に解決されていた - 対処: index.html の
hrefを絶対パス/downloads/X.exeに変更、scripts/generate-downloads-index.ps1も同様に修正
- DevTools で
- ダウンロード時にブラウザが exe ファイルを直接「表示」しようとする挙動の保険として、S3 オブジェクトに
Content-Disposition: attachmentメタデータを付与- 既存 1.0.2 / 1.0.3 にも適用済み、workflow にも追記済み
決めたこと: (詳細は .devnotes/DECISIONS.md)
- リポジトリは
ichirokisanuki/fort-rankに統一、ichirokisanuki/FortRank(キャメル) は将来削除 - 引き継ぎ時の Git 履歴は破棄
- リリースは GitHub Actions 自動化 + 配布は GitHub Release と fortrank.com/downloads の両方
- アイコンは「王冠 + FR」のフラット 2 色デザイン
- index.html の内部リンクは絶対パス必須
詰まったこと / 気づき:
- CloudFront invalidation 完了直後にすぐ叩くと、その瞬間にまた古いキャッシュが再生成されることがある。invalidation 後はしばらく待つか、無視できる範囲なら気にしない
- 末尾スラッシュ問題は curl では再現しなかった(curl は素直にURLそのものを叩く)。ブラウザの相対 URL 解決ロジックでだけ起きるので、CLI テストだけで安心せずブラウザ DevTools で確認することが大事
- Avalonia の Mac での日本語表示は
.WithInterFont()を無効化+日本語フォントを明示指定が定石
次回やること:
- Windows 側のブラウザで
fortrank.com/downloadsのハードリロード後に DL できるか最終確認 - CLAUDE.md (プロジェクトルート) を Mac/Avalonia 中心の記述に書き換え(現状 Windows/WinForms 中心)
最近のコミット
- eb4e29f .devnotes を更新(O40CS Hideout?・スタンダード5列化・1.1.1リリース分) 2026/6/3
- e73e64e インストーラを 1.1.1 にバージョンアップ 2026/6/3
- 306f69d O40CSにHideout?チェックボックスを追加+スタンダードテンプレートを5列化 2026/6/3
- 6f5c0ef ダウンロードページにバージョンごとのリリースノートを追加 2026/5/21
- f55617f インストーラを 1.1.0 にバージョンアップ 2026/5/21
- 96f27a9 個人モードのマッチ別スコア編集をチーム単位に変更 2026/5/21
- 538dc30 ランキング結果のマッチ別スコア編集をマッチ起点UIに作り変え 2026/5/21
- f48cb0b O40CSテンプレートのマッチ別ビューを5列化 2026/5/21
- cfe3d40 .devnotes 4ファイルを更新(引き継ぎ〜v1.0.3リリース〜downloadsページ完成までの記録) 2026/5/16
- f24c9d2 インストーラを 1.0.3 にバージョンアップ 2026/5/16