Amatsukazeはクライアント・サーバーアーキテクチャに基づくアプリケーションです。
Amatsukazeは以下のようにして構成されます。
-
AmatsuakzeServer/Amatsukazeのサーバー。キューを持ち、AmatsuakzeCLIを駆動して、キューに登録されたタスクの処理を行う。
- C# (.NET Core)
- Windows/Linux両対応
-
AmatsuakzeGUI/Amatsuakzeのフロントエンドの実装。
-
C# (WPF)
-
Windows専用
-
実行方法
-
AmatsukazeGUI.exe -l serverAmatsuakzeServerのGUI版が起動。
-
AmatsukazeGUI.exe -l clientAmatsukazeGUIがclientとしてのみ起動。別途起動したserverに接続して使用。このサーバーは
AmatsukazeGUI.exe -l serverあるいはAmatsuakzeServerCLIで起動したもの。 -
AmatsukazeGUI.exe -l standalone
スタンドアロン版。実態はclientとserverが両方起動。
-
-
-
AmatsuakzeServerCLI/サーバーのコンソールアプリ版。
- C# (.NET Core)
- Windows/Linux両対応
-
AmatsuakzeServerWin/AmatsukazeServerのWPFが必要な処理の実装。
- C# (WPF)
- Windows専用
-
AmatsuakzeAddTask/タスクをサーバーに追加するためのコンソールアプリ。
- C# (.NET Core)
- Windows/Linux両対応
-
AmatsukazeShared/REST API向けDTOとクライアント共通APIラッパーを提供する共有ライブラリ。
- C# (.NET)
- Windows/Linux両対応
-
AmatsukazeWebUI/Blazor WebAssemblyによるWebフロントエンド。AmatsukazeServerのREST APIを利用する。
- C# (Blazor WASM)
- Windows/Linux両対応(ブラウザ動作)
-
Amatsukaze/タスク処理の実体部分。Amatsukaze[.dll,.so]/Amatsukaze2[.dll,.so]としてビルドされ、AmatsuakzeCLIにロードされる。- C++17
- Windows/Linux両対応
- TCHARでUnicode対応
-
AmatsuakzeCLI/タスク処理を行うコンソールアプリ。 Amatsukaze[.dll,.so]/Amatsukaze2[.dll,.so]をロードして実行。
- C++17
- Windows/Linux両対応
-
common/C++のutility関数等。Amatsukaze/で使用される。OS互換ラッパー等を含む。C++17までの標準機能を優先しつつ、場合によってはWindows側によせるためのラッパー実装。- C++17
- Windows/Linux両対応
-
ScriptCommand/AmatsuakzeServer,AmatsuakzeCLIの行うユーザーバッチ処理実行で、使用可能なコンソールアプリ。AmatsuakzeServerから情報取得等が可能。- C++17
- Windows/Linux両対応
-
ScriptCommandWrapper/ScriptCommandを呼び出す補助コンソールアプリ。- C++17
- Windows用
-
doc/ドキュメント類。
-
data/ドキュメントその他で必要な画像等の静的リソース。
-
scripts/ビルドや配布アーカイブ生成に必要なスクリプト類。
-
docker/-
Dockerfile -
compose.sample.yml -
setup.sh -
readme.mdAmatsukazeServer実行用のdockerコンテナの作成用。readme.mdがその使用方法 -
docker_ubuntu2204 -
docker_ubuntu2404Linux用配布パッケージのビルド用のdockerfile。CIで使用。
-
-
defaults/配布用デフォルト設定。
-
.github/workflows-
build_base_image.ymlbuild_packages.ymlで使用するLinux用配布パッケージをビルド・作成するためのdocker imageを作成する。 -
build_packages.ymlbuild_base_image.ymlで作成したimage上で、Linux用配布パッケージをビルド・作成する。 -
build_amatsukazeaddtask.ymlAmatsuakzeAddTaskのみのパッケージの作成を行う。
-
-
TVCaption2Mod/ -
libfaad/Amatsukaze/の依存モジュール。原則ビルドするのみで開発/変更は行わない。 -
AmatsukazeUnitTest/ -
BatchHashChecker/ -
FileCutter/ -
googletest/ -
NicoJK18Client/改造版では開発/変更は行わない。
-
Windows
publish.batでビルド -
Linux
doc/BuildLinux.mdを参照
-
日本語のコメントを多めに記述する
-
既存のコメントはそのまま保持する。ただし、変更によりコメント内容がコードの記述と合わなくなった場合は削除せず、適切に変更する
-
ログメッセージを適切に記述すること
-
既存のラッパー関数があれば、それを積極的に使用し、コードの統一性を保つこと
-
Windows/Linuxの差異に注意すること
- 可能な限りWindows/Linux共通実装を心がける。
- (C++)
- Windows/Linuxの固有関数を呼び出す必要がある場合、
common/以下のラッパー関数、次にC++17標準の使用を推奨。- 困難な場合は
common/以下に新たにラッパーを作り、ラッパー経由で呼び出すようにする。
- 困難な場合は
- Windows/Linuxの固有関数を呼び出す必要がある場合、
-
マジックナンバーは使用せず、意味が分かるように定数変数を置いて使用すること
-
(C#) DateTime ⇔ 文字列変換では、原則
CultureInfo.InvariantCultureを使用すること -
コーディングスタイルは、変更箇所周辺のコードスタイルに合わせる
-
コードが縦に長くなりすぎないよう配慮すること (過剰に改行しない)
-
(C++) constを積極的に使用する