コンテンツにスキップ

コントリビューション

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 または注入されたサービスを通して行います。

プルリクエスト

  1. dotnet builddotnet test の両方が通ることを確認します。
  2. dotnet format --verify-no-changes が通ることを確認します。
  3. master ブランチに対してプルリクエストを作成します。
  4. PR の説明には何を変更したか・その理由を記載します。

ローカライズ

applanch は英語と日本語を対象としています。 ユーザー向けの文字列を追加する場合:

  1. Properties/Resources.resx にキーと英語の値を追加します。
  2. Properties/Resources.ja.resx に日本語訳を追加します。
  3. XAML または C# では LocalizedStrings.Instance 経由でそのキーを参照します。

ドキュメント

プロジェクトのドキュメントは docs/ 以下にあり、MkDocs + Material for MkDocs でビルドされます。

ローカルでのプレビュー:

python -m pip install -r docs/requirements.txt
python -m mkdocs serve

各ドキュメントページには英語版(<ページ>.md)と日本語版(<ページ>.ja.md)があります。 ページを追加・更新する際は両方更新してください。