Golang でアプリケーションを構築する場合、ヘキサゴナル アーキテクチャの原則に従うことで、クリーンでモジュール化された保守可能なコードを確保できます。 Torpedo を使用すると、開発プロセスをスピードアップしながら、このアーキテクチャを簡単に実装できます。このガイドでは、インストールからエンティティとユースケースの生成まで、Torpedo を使用して最初のプロジェクトを作成する方法を説明します。
この投稿は文書化されたクイック スタート ガイドの概要です
プロジェクトの作成に入る前に、システムに Go がインストールされていることを確認してください。次に、インストール ガイドの指示に従って Torpedo をインストールします
この CLI ツールは、プロジェクトの生成、エンティティの作成、およびユースケースのスキャフォールディングを処理します。インストールしたら、最初のプロジェクトを作成する準備が整います。
Torpedo! を使用して構築した最初のアプリケーションから始めましょう。私たちは、Booking Fly というフライ予約アプリを構築する予定です。
Torpedo がインストールされている場合、新しいプロジェクトの作成は次のコマンドを実行するのと同じくらい簡単です。
mkdir booking-fly && cd booking-fly
torpedo init
このコマンドは、エンティティとユースケースを定義するフォルダー .torpedo を生成します。このフォルダーの詳細については、.torpedo dir struct
を参照してください。次に、ドメイン エンティティを定義します。エンティティは、アプリケーションのビジネス ロジックの中心となるオブジェクトであり、ユーザー、製品、注文などを表します。
最初のエンティティを定義するには、.torpedo/entities ディレクトリの下に YAML ファイルを作成します。たとえば、単純な User エンティティを作成してみましょう:
.torpedo/entities/user.yaml
version: torpedo.darksub.io/v1.0 kind: entity spec: name: "user" plural: "users" description: "The frequent flyer user" doc: | The user entity represents a system user but also a frequent flyer. This entity is only for the example purpose. schema: reserved: id: type: ulid fields: - name: name type: string description: "The user full name" - name: email type: string description: "The user contact email" - name: password # it is not recommended to save passwords, this is an example only type: string encrypted: true description: "The user system password" - name: plan type: string description: "The user membership plan" validate: list: values: - GOLD - SILVER - BRONZE - name: miles type: integer description: "The accumulated flyer miles" relationships: - name: trips type: $rel ref: ".torpedo/entities/trip.yaml" cardinality: hasMany load: type: nested metadata: maxItems: 100 adapters: input: - type: http output: - type: memory
さらに、旅行エンティティが必要なので、旅行エンティティを作成しましょう:
.torpedo/entities/trip.yaml
version: torpedo.darksub.io/v1.0 kind: entity spec: name: trip plural: trips description: "The user fly trip reservations" doc: | The trip entity handles all data related with the frequent flyer trip schema: reserved: id: type: ulid fields: - name: departure type: string description: "The trip departure airport" - name: arrival type: string description: "The trip arrival airport" - name: miles type: integer description: "The trip miles" - name: from type: date description: "The trip from date" - name: to type: date description: "The trip to date" adapters: input: - type: http output: - type: memory
Torpedo は、User エンティティと Trip エンティティの Go コードと、リポジトリ インターフェイスや必要なデータベース処理コードを含む対応する CRUD 操作を生成します。
エンティティを配置したら、ユースケースを使用してエンティティがアプリケーションのワークフローとどのように対話するかを定義します。ユースケースは、エンティティに作用するビジネス ルールとプロセスをカプセル化します。
.torpedo/use_cases ディレクトリの下に YAML ファイルを作成して、ユースケースを定義します。 飛行機の予約の簡単な使用例の例を次に示します。
.torpedo/use_cases/booking_fly.yaml
mkdir booking-fly && cd booking-fly
この定義は、旅行とユーザーが指定された航空予約を処理するためのカスタム ロジックを組み込むスケルトン コードを作成するように Torpedo に指示します。
Torpedo は、エンティティとの対話を含む、完全なユースケースの足場を築きます。
次のステップ (#5) を完了したら、クイック スタート ガイドを読んで、ユース ケースで生成されたスケルトン ユース ケース内でロジックをコーディングする方法を学習してください
エンティティとユースケースを定義すると、Torpedo はこれらのコンポーネント間の配線がヘキサゴナル アーキテクチャの原則に従っていることを確認します。ユースケースはサービス インターフェイスを介してエンティティと対話し、アダプター (データベースや API など) は永続性と外部通信を処理します。
今度は、すべてをまとめるためにアプリの仕様を作成します。アプリケーション定義は、ここにアプリが記述されているため、最も重要なファイルです。次の例は、Booking Fly アプリを定義する方法を示しています:
.torpedo/app.yaml
torpedo init
アプリケーション コード (エンティティ、ユース ケースなど) を生成するには、次のコマンドを実行します。
version: torpedo.darksub.io/v1.0 kind: entity spec: name: "user" plural: "users" description: "The frequent flyer user" doc: | The user entity represents a system user but also a frequent flyer. This entity is only for the example purpose. schema: reserved: id: type: ulid fields: - name: name type: string description: "The user full name" - name: email type: string description: "The user contact email" - name: password # it is not recommended to save passwords, this is an example only type: string encrypted: true description: "The user system password" - name: plan type: string description: "The user membership plan" validate: list: values: - GOLD - SILVER - BRONZE - name: miles type: integer description: "The accumulated flyer miles" relationships: - name: trips type: $rel ref: ".torpedo/entities/trip.yaml" cardinality: hasMany load: type: nested metadata: maxItems: 100 adapters: input: - type: http output: - type: memory
このコマンドはプロジェクト スキャフォールドを生成し、ヘキサゴナル アーキテクチャに基づいてディレクトリ構造を設定します。プロジェクトには、エンティティ、ユースケース、およびアダプターのコアフォルダーが含まれます。これにより、ビジネス ロジックとインフラストラクチャが最初から分離されたままになります。
エンティティ、ユースケース、さらにはカスタム アダプターを追加してプロジェクトを拡張できるようになりました。 Torpedo の構造により、コードをクリーンでモジュール化した状態に保つことができるため、アプリケーションの成長に合わせて簡単に拡張できます。
生成されたユースケース コード内で独自のロジックをコーディングする方法もご覧ください。
エンティティとユースケースを設定したら、アプリケーションを実行する準備が整います。 Torpedo には、Gin Gonic プロジェクトに基づく軽量サーバーが含まれており、テストと開発のために実行できます。単純に使用します:
依存関係を更新する前に go mod tiny を実行することを忘れないでください!
version: torpedo.darksub.io/v1.0 kind: entity spec: name: trip plural: trips description: "The user fly trip reservations" doc: | The trip entity handles all data related with the frequent flyer trip schema: reserved: id: type: ulid fields: - name: departure type: string description: "The trip departure airport" - name: arrival type: string description: "The trip arrival airport" - name: miles type: integer description: "The trip miles" - name: from type: date description: "The trip from date" - name: to type: date description: "The trip to date" adapters: input: - type: http output: - type: memory
これで、アプリケーションの API を操作して、定義した CRUD 操作とユースケースを実行できるようになります。
Torpedo を使用すると、Hexagonal Architecture を使用してクリーンで構造化された Go コードを簡単に生成できます。しかし、これはほんの始まりにすぎません。より複雑なワークフローを追加し、外部サービスを統合し、ニーズに合わせてフレームワークをカスタマイズすることで、Torpedo の機能を引き続き探索できます。
Torpedo に間もなく追加されるさらに高度な機能にご期待ください。何が可能なのかを探りながら、お気軽にフィードバックを共有してください。
Torpedo を使用して最初のプロジェクトを作成するのは簡単かつ迅速です。 YAML のエンティティ スキーマとユース ケース定義の力を活用することで、クリーンなアーキテクチャ原則を維持しながら、堅牢な Golang アプリケーションを迅速に構築できます。さあ、早速構築を始めましょう!ご意見と、Torpedo が将来のプロジェクトにどのように役立つかをお知らせください。
以上がTorpedo を使用して最初のプロジェクトを作成する: ステップバイステップ ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。