コントリビューション¶
applanch へのコントリビューションにご興味をお持ちいただきありがとうございます。
事前準備¶
- .NET 10 SDK
- Windows 10 または Windows 11
- C# IDE(Visual Studio 2022 以降または Rider を推奨)
クローンとビルド¶
git clone https://github.com/ChanyaVRC/applanch.git
cd applanch
dotnet build
テストの実行¶
dotnet test
変更箇所に関連するテストを先に実行し、その後プルリクエスト提出前に全テストスイートを実行してください。
フォーマット確認¶
コミット前に、すべてのコードがフォーマッターを通過する必要があります。
dotnet format applanch.slnx --verify-no-changes --no-restore --verbosity minimal
確認が失敗した場合は自動フォーマットを適用します。
dotnet format applanch.slnx --no-restore --verbosity minimal
その後、再度確認手順を実行してください。
ブランチとコミット¶
masterから作業ブランチを切ります。- 1 コミットにつき 1 つの論理的な変更に留めます。
- コミットメッセージは簡潔な命令形で記述します(例:
Fix launch fallback for Riot VALORANT)。 - 動作変更と無関係なフォーマット修正を同一コミットに混在させないでください。
コード規約¶
- 1 ファイルにつき 1 型。
ref/outパラメーターは避け、戻り値を使用する。- ユーザー向けの文字列はすべてローカライズリソースファイル(
Properties/Resources.resxおよびProperties/Resources.ja.resx)から提供する。 - XAML や C# に UI テキストをハードコードしない。
- 既存の命名規則に従う:型・メンバーは
PascalCase、プライベートフィールドは_camelCase。
テストの追加¶
- バグ修正や動作変更には必ずテストを追加・更新します。
- WPF コントロールをインスタンス化するテストは STA スレッドで実行する必要があります。
- コントロールのテストはグローバルなアプリケーションリソースから切り離して記述します。
プロジェクト構造¶
src/applanch/
App.xaml / App.xaml.cs # アプリケーションエントリーポイント
MainWindow.xaml / .cs # メインウィンドウ(ホスト)
SettingsWindow.xaml / .cs # 設定ウィンドウ(ホスト)
Controls/ # 再利用可能な WPF ユーザーコントロール
ViewModels/ # ビューモデル(ObservableObject ベース)
Events/ # AppEvents パブ/サブバス
Infrastructure/
Dialogs/ # ダイアログ抽象化
Integration/ # Windows シェル / コンテキストメニュー統合
Items/ # アイテム CRUD ワークフロー
Launch/ # 起動実行とフォールバック解決
Resolution/ # アプリパス解決
Storage/ # 設定の永続化(JSON)
Theming/ # テーマパレット読み込み
Updates/ # GitHub Releases 更新確認
Utilities/ # 共通ヘルパー
Properties/ # リソースファイル(Resources.resx, Resources.ja.resx)
Config/ # デフォルト設定ファイル(バンドル済み)
tests/applanch.Tests/ # xUnit テストプロジェクト(src/ 構造を反映)
src/applanch.ResourceGenerator/ # 型付きリソースアクセス用ソースジェネレーター
主な規約:
AppEventsは型付きのパブ/サブバスです。コンポーネントは強く型付けされたAppEventKey<T>キーを使って公開・購読します。Infrastructure/はすべての I/O とプラットフォーム処理を含みます。テストのしやすさが重要な箇所では、ビューモデルは薄いインターフェイス経由で Infrastructure に依存します。ViewModels/には直接の I/O を含めません。すべての副作用はAppEventsまたは注入されたサービスを通して行います。
プルリクエスト¶
dotnet buildとdotnet testの両方が通ることを確認します。dotnet format --verify-no-changesが通ることを確認します。masterブランチに対してプルリクエストを作成します。- PR の説明には何を変更したか・その理由を記載します。
ローカライズ¶
applanch は英語と日本語を対象としています。 ユーザー向けの文字列を追加する場合:
Properties/Resources.resxにキーと英語の値を追加します。Properties/Resources.ja.resxに日本語訳を追加します。- XAML または C# では
LocalizedStrings.Instance経由でそのキーを参照します。
ドキュメント¶
プロジェクトのドキュメントは docs/ 以下にあり、MkDocs + Material for MkDocs でビルドされます。
ローカルでのプレビュー:
python -m pip install -r docs/requirements.txt
python -m mkdocs serve
各ドキュメントページには英語版(<ページ>.md)と日本語版(<ページ>.ja.md)があります。
ページを追加・更新する際は両方更新してください。