Files
everything-claude-code/docs/ja-JP/skills/tinystruct-patterns/SKILL.md
Claude fabb4d0c11 fix(ja-JP): address review feedback and add 5 missing skills
- Fix Chinese term '提炼' → '蒸留' in commands/rules-distill.md
- Fix '重大な所見' (Critical→重大) in agents/opensource-sanitizer.md
- Fix non-transactional persistence in swift-actor-persistence/SKILL.md:
  add rollback logic so cache stays consistent if disk write fails
- Clarify anti-pattern wording: 'configurable file URL' → 'externally
  mutable after init' to remove internal inconsistency (P2)
- Fix broken relative link in videodb/reference/api-reference.md:
  ../../../../../skills/... → ./editor.md
- Add 5 previously missing SKILL.md translations:
  skill-scout, tinystruct-patterns, ui-to-vue, vite-patterns,
  windows-desktop-e2e
2026-05-17 02:31:40 -04:00

5.2 KiB
Raw Blame History

name, description, origin
name description origin
tinystruct-patterns Use when developing application modules or microservices with the tinystruct Java framework. Covers routing, context management, JSON handling with Builder, and CLI/HTTP dual-mode patterns. ECC

tinystruct 開発パターン

tinystruct Java フレームワークを使用してモジュールをビルドするためのアーキテクチャと実装パターン。CLIとHTTPが等しく扱われる軽量なシステムです。

使用するタイミング

  • AbstractApplication を拡張して新しい Application モジュールを作成するとき。
  • @Action を使用してルートとコマンドラインアクションを定義するとき。
  • Context を通じてリクエストごとの状態を処理するとき。
  • ネイティブの Builder コンポーネントを使用してJSONシリアライゼーションを行うとき。
  • application.properties でデータベース接続またはシステム設定を構成するとき。
  • ApplicationManager.init() を通じて標準的な bin/dispatcher エントリポイントを生成または再生成するとき。
  • ルーティング競合ActionまたはCLI引数解析のデバッグを行うとき。

動作の仕組み

tinystruct フレームワークは、@Action でアテーションされたメソッドをターミナルとWeb環境の両方でルーティング可能なエンドポイントとして扱います。アプリケーションは AbstractApplication を拡張することで作成され、init() などのコアライフサイクルフックとリクエスト Context へのアクセスが提供されます。

ルーティングは ActionRegistry によって処理され、パスセグメントをメソッド引数に自動的にマッピングして依存関係を注入します。データのみのサービスでは、ゼロ依存のフットプリントを維持するために、JSONシリアライゼーションにネイティブの Builder コンポーネントを使用すべきです。フレームワークには ApplicationManager のユーティリティも含まれており、bin/dispatcher スクリプトを生成することでプロジェクトの実行環境をブートストラップします。

基本アプリケーションMyService

public class MyService extends AbstractApplication {
    @Override
    public void init() {
        this.setTemplateRequired(false); // データ/APIアプリの .view 参照を無効化
    }

    @Override public String version() { return "1.0.0"; }

    @Action("greet")
    public String greet() {
        return "Hello from tinystruct!";
    }
}

パラメータ付きルーティングgetUser

// Web: /api/user/123 または CLI: "bin/dispatcher api/user/123" を処理
@Action("api/user/(\\d+)")
public String getUser(int userId) {
    return "User ID: " + userId;
}

HTTPモード分岐login

@Action(value = "login", mode = Mode.HTTP_POST)
public boolean doLogin() {
    // ログイン処理
    return true;
}

ネイティブJSONデータ処理getData

@Action("api/data")
public Builder getData() throws ApplicationException {
    Builder builder = new Builder();
    builder.put("status", "success");
    Builder nested = new Builder();
    nested.put("id", 1);
    nested.put("name", "James");
    builder.put("data", nested);
    return builder;
}

設定

設定は src/main/resources/application.properties で管理されます。

テストパターン

JUnit 5 を使用して、アクションが ActionRegistry に登録されていることを検証することでアクションをテストします。

レッドフラグとアンチパターン

症状 正しいパターン
com.google.gson または com.fasterxml.jackson のインポート org.tinystruct.data.component.Builder を使用する。
.view ファイルの FileNotFoundException APIのみのアプリでは init() 内で setTemplateRequired(false) を呼び出す。
private メソッドへの @Action アノテーション アクションはフレームワークに登録されるために public である必要がある。
アプリ内での main(String[] args) のハードコーディング すべてのモジュールのエントリポイントとして bin/dispatcher を使用する。
手動での ActionRegistry 登録 自動検出のために @Action アノテーションを優先する。

テクニカルリファレンス

詳細なガイドは references/ ディレクトリにあります: