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

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 までご連絡ください。
Golang in Action:実際の例とアプリケーションGolang in Action:実際の例とアプリケーションApr 12, 2025 am 12:11 AM

Golangは実際のアプリケーションに優れており、そのシンプルさ、効率性、並行性で知られています。 1)同時プログラミングはゴルチンとチャネルを通じて実装されます。2)柔軟なコードは、インターフェイスと多型を使用して記述されます。3)ネット/HTTPパッケージを使用したネットワークプログラミングを簡素化、4)効率的な同時クローラーを構築する、5)ツールと最高の実践を通じてデバッグと最適化。

Golang:Goプログラミング言語が説明しましたGolang:Goプログラミング言語が説明しましたApr 10, 2025 am 11:18 AM

GOのコア機能には、ガベージコレクション、静的リンク、並行性サポートが含まれます。 1. GO言語の並行性モデルは、GoroutineとChannelを通じて効率的な同時プログラミングを実現します。 2.インターフェイスと多型は、インターフェイスメソッドを介して実装されているため、異なるタイプを統一された方法で処理できます。 3.基本的な使用法は、関数定義と呼び出しの効率を示しています。 4。高度な使用法では、スライスは動的なサイズ変更の強力な機能を提供します。 5.人種条件などの一般的なエラーは、Getest Raceを通じて検出および解決できます。 6.パフォーマンス最適化Sync.Poolを通じてオブジェクトを再利用して、ゴミ収集圧力を軽減します。

Golangの目的:効率的でスケーラブルなシステムの構築Golangの目的:効率的でスケーラブルなシステムの構築Apr 09, 2025 pm 05:17 PM

GO言語は、効率的でスケーラブルなシステムの構築においてうまく機能します。その利点には次のものがあります。1。高性能:マシンコードにコンパイルされ、速度速度が速い。 2。同時プログラミング:ゴルチンとチャネルを介してマルチタスクを簡素化します。 3。シンプルさ:簡潔な構文、学習コストとメンテナンスコストの削減。 4。クロスプラットフォーム:クロスプラットフォームのコンパイル、簡単な展開をサポートします。

SQLソートのステートメントによる順序の結果がランダムに見えるのはなぜですか?SQLソートのステートメントによる順序の結果がランダムに見えるのはなぜですか?Apr 02, 2025 pm 05:24 PM

SQLクエリの結果の並べ替えについて混乱しています。 SQLを学習する過程で、しばしば混乱する問題に遭遇します。最近、著者は「Mick-SQL Basics」を読んでいます...

テクノロジースタックの収束は、テクノロジースタック選択のプロセスにすぎませんか?テクノロジースタックの収束は、テクノロジースタック選択のプロセスにすぎませんか?Apr 02, 2025 pm 05:21 PM

テクノロジースタックの収束とテクノロジーの選択の関係ソフトウェア開発におけるテクノロジーの選択、テクノロジースタックの選択と管理は非常に重要な問題です。最近、一部の読者が提案しています...

反射比較を使用し、GOの3つの構造の違いを処理する方法は?反射比較を使用し、GOの3つの構造の違いを処理する方法は?Apr 02, 2025 pm 05:15 PM

GO言語で3つの構造を比較および処理する方法。 GOプログラミングでは、2つの構造の違いを比較し、これらの違いを...

Goでグローバルにインストールされたパッケージを表示する方法は?Goでグローバルにインストールされたパッケージを表示する方法は?Apr 02, 2025 pm 05:12 PM

Goでグローバルにインストールされたパッケージを表示する方法は? GO言語で開発する過程で、GOはしばしば使用します...

See all articles

ホット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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。