ホームページ バックエンド開発 Golang Torpedo を使用して最初のプロジェクトを作成する: ステップバイステップ ガイド

Torpedo を使用して最初のプロジェクトを作成する: ステップバイステップ ガイド

Nov 18, 2024 am 09:06 AM

Creating Your First Project with Torpedo: A Step-by-Step Guide

Golang でアプリケーションを構築する場合、ヘキサゴナル アーキテクチャの原則に従うことで、クリーンでモジュール化された保守可能なコードを確保できます。 Torpedo を使用すると、開発プロセスをスピードアップしながら、このアーキテクチャを簡単に実装できます。このガイドでは、インストールからエンティティとユースケースの生成まで、Torpedo を使用して最初のプロジェクトを作成する方法を説明します。

この投稿は文書化されたクイック スタート ガイドの概要です

1. Torpedo の使い方

プロジェクトの作成に入る前に、システムに Go がインストールされていることを確認してください。次に、インストール ガイドの指示に従って Torpedo をインストールします

この CLI ツールは、プロジェクトの生成、エンティティの作成、およびユースケースのスキャフォールディングを処理します。インストールしたら、最初のプロジェクトを作成する準備が整います。

2. 最初のプロジェクトのセットアップ

Torpedo! を使用して構築した最初のアプリケーションから始めましょう。私たちは、Booking Fly というフライ予約アプリを構築する予定です。

Torpedo がインストールされている場合、新しいプロジェクトの作成は次のコマンドを実行するのと同じくらい簡単です。

mkdir booking-fly && cd booking-fly
ログイン後にコピー
ログイン後にコピー
torpedo init
ログイン後にコピー
ログイン後にコピー

このコマンドは、エンティティとユースケースを定義するフォルダー .torpedo を生成します。このフォルダーの詳細については、.torpedo dir struct

を参照してください。

3. 最初のエンティティの定義

次に、ドメイン エンティティを定義します。エンティティは、アプリケーションのビジネス ロジックの中心となるオブジェクトであり、ユーザー、製品、注文などを表します。

最初のエンティティを定義するには、.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 操作を生成します。

4. ユースケースの作成

エンティティを配置したら、ユースケースを使用してエンティティがアプリケーションのワークフローとどのように対話するかを定義します。ユースケースは、エンティティに作用するビジネス ルールとプロセスをカプセル化します。

.torpedo/use_cases ディレクトリの下に YAML ファイルを作成して、ユースケースを定義します。 飛行機の予約の簡単な使用例の例を次に示します。

.torpedo/use_cases/booking_fly.yaml

mkdir booking-fly && cd booking-fly
ログイン後にコピー
ログイン後にコピー

この定義は、旅行とユーザーが指定された航空予約を処理するためのカスタム ロジックを組み込むスケルトン コードを作成するように Torpedo に指示します。

Torpedo は、エンティティとの対話を含む、完全なユースケースの足場を築きます。

次のステップ (#5) を完了したら、クイック スタート ガイドを読んで、ユース ケースで生成されたスケルトン ユース ケース内でロジックをコーディングする方法を学習してください

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 の構造により、コードをクリーンでモジュール化した状態に保つことができるため、アプリケーションの成長に合わせて簡単に拡張できます。

生成されたユースケース コード内で独自のロジックをコーディングする方法もご覧ください。

6. アプリケーションの実行

エンティティとユースケースを設定したら、アプリケーションを実行する準備が整います。 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 操作とユースケースを実行できるようになります。

7. 次は何ですか?

Torpedo を使用すると、Hexagonal Architecture を使用してクリーンで構造化された Go コードを簡単に生成できます。しかし、これはほんの始まりにすぎません。より複雑なワークフローを追加し、外部サービスを統合し、ニーズに合わせてフレームワークをカスタマイズすることで、Torpedo の機能を引き続き探索できます。

Torpedo に間もなく追加されるさらに高度な機能にご期待ください。何が可能なのかを探りながら、お気軽にフィードバックを共有してください。


結論

Torpedo を使用して最初のプロジェクトを作成するのは簡単かつ迅速です。 YAML のエンティティ スキーマとユース ケース定義の力を活用することで、クリーンなアーキテクチャ原則を維持しながら、堅牢な Golang アプリケーションを迅速に構築できます。さあ、早速構築を始めましょう!ご意見と、Torpedo が将来のプロジェクトにどのように役立つかをお知らせください。

以上がTorpedo を使用して最初のプロジェクトを作成する: ステップバイステップ ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Golang vs. Python:パフォーマンスとスケーラビリティ Golang vs. Python:パフォーマンスとスケーラビリティ Apr 19, 2025 am 12:18 AM

Golangは、パフォーマンスとスケーラビリティの点でPythonよりも優れています。 1)Golangのコンピレーションタイプの特性と効率的な並行性モデルにより、高い並行性シナリオでうまく機能します。 2)Pythonは解釈された言語として、ゆっくりと実行されますが、Cythonなどのツールを介してパフォーマンスを最適化できます。

Golang and C:Concurrency vs. Raw Speed Golang and C:Concurrency vs. Raw Speed Apr 21, 2025 am 12:16 AM

Golangは並行性がCよりも優れていますが、Cは生の速度ではGolangよりも優れています。 1)Golangは、GoroutineとChannelを通じて効率的な並行性を達成します。これは、多数の同時タスクの処理に適しています。 2)Cコンパイラの最適化と標準ライブラリを介して、極端な最適化を必要とするアプリケーションに適したハードウェアに近い高性能を提供します。

ゴーを始めましょう:初心者のガイド ゴーを始めましょう:初心者のガイド Apr 26, 2025 am 12:21 AM

goisidealforforbeginnersandsutable forcloudnetworkservicesduetoitssimplicity、andconcurrencyfeatures.1)installgofromtheofficialwebsiteandverify with'goversion'.2)

Golang vs. C:パフォーマンスと速度の比較 Golang vs. C:パフォーマンスと速度の比較 Apr 21, 2025 am 12:13 AM

Golangは迅速な発展と同時シナリオに適しており、Cは極端なパフォーマンスと低レベルの制御が必要なシナリオに適しています。 1)Golangは、ごみ収集と並行機関のメカニズムを通じてパフォーマンスを向上させ、高配列Webサービス開発に適しています。 2)Cは、手動のメモリ管理とコンパイラの最適化を通じて究極のパフォーマンスを実現し、埋め込みシステム開発に適しています。

Golang vs. Python:重要な違​​いと類似点 Golang vs. Python:重要な違​​いと類似点 Apr 17, 2025 am 12:15 AM

GolangとPythonにはそれぞれ独自の利点があります。Golangは高性能と同時プログラミングに適していますが、PythonはデータサイエンスとWeb開発に適しています。 Golangは同時性モデルと効率的なパフォーマンスで知られていますが、Pythonは簡潔な構文とリッチライブラリエコシステムで知られています。

GolangとC:パフォーマンスのトレードオフ GolangとC:パフォーマンスのトレードオフ Apr 17, 2025 am 12:18 AM

GolangとCのパフォーマンスの違いは、主にメモリ管理、コンピレーションの最適化、ランタイム効率に反映されています。 1)Golangのゴミ収集メカニズムは便利ですが、パフォーマンスに影響を与える可能性があります。

パフォーマンスレース:ゴラン対c パフォーマンスレース:ゴラン対c Apr 16, 2025 am 12:07 AM

GolangとCにはそれぞれパフォーマンス競争において独自の利点があります。1)Golangは、高い並行性と迅速な発展に適しており、2)Cはより高いパフォーマンスと微細な制御を提供します。選択は、プロジェクトの要件とチームテクノロジースタックに基づいている必要があります。

Golang vs. Python:長所と短所 Golang vs. Python:長所と短所 Apr 21, 2025 am 12:17 AM

GolangisidealforBuildingsCalables Systemsduetoitsefficiency andConcurrency、Whilepythonexcelsinquickscriptinganddataanalysisduetoitssimplicityand vastecosystem.golang'ssignencouragesclean、readisinediteNeditinesinedinediseNabletinedinedinedisedisedioncourase

See all articles