本文へスキップ

最初のアプリ ​

Spine CLIで新しいプロジェクトを作成し、GET /healthが{"status":"ok"}を返すことを確認します。生成されたファイルを読みながら、アプリを構成し、検証してから実行する流れも確認します。

Go 1.25.5以上が必要です。CLIの推奨バージョンはGo 1.27.3です。初回の依存関係のダウンロードにかかる時間は環境によって異なります。

1. CLIのインストールとコマンドの確認 ​

bash
go install github.com/NARUBROWN/spine-cli/cmd/spine@v0.1.4
spine version

spine versionはspine-cli 0.1.4を表示します。コマンドが見つからない場合は、インストール手順でGoの実行ファイルのパス設定を確認してください。

2. プロジェクトの生成 ​

プロジェクトを配置する親ディレクトリで実行します。hello-spineディレクトリがすでにある場合は、別の名前を使ってください。

bash
spine new hello-spine --module example.com/hello-spine
cd hello-spine
go mod tidy

hello-spineディレクトリにプロジェクトファイルが生成されます。CLIはgo.modにSpine v0.5.1を指定し、go mod tidyが必要な依存関係をダウンロードします。

3. 生成された構造の確認 ​

text
hello-spine/
├── .gitignore
├── README.md
├── go.mod
├── main.go
├── spine.toml
└── internal/application/
    ├── application.go
    └── application_test.go

プロジェクトには、実行の起点となるmain.goと、アプリの構成コードを含むinternal/applicationディレクトリがあります。spine.tomlは、モジュールパス、エントリーポイント、アプリの構成コードの場所とポートをCLIに伝えます。

toml
module = "example.com/hello-spine"
entrypoint = "."
composition = "./internal/application"
port = 8080

internal/application/application.goのBuildApplication()は、アプリと実行オプションを返します。生成されたコードはHealthControllerのコンストラクタとGET /healthを登録し、HTTPの実行オプションとしてboot.HTTPOptionsを明示します。

機能を追加するときは、この関数、またはここから呼び出すRegister(app) error関数に、ルート、コンストラクタ、インターセプターの登録をまとめます。詳しい方法はプロジェクト構造で説明します。

main.goはすでに生成されているため、変更する必要はありません。次のコードで、アプリの構成、検証、実行の順序を確認してください。

go
func main() {
    app, options, err := application.BuildApplication()
    if err != nil {
        log.Fatal(err)
    }
    if err := app.Validate(options); err != nil {
        log.Fatal(err)
    }
    if err := app.Run(options); err != nil {
        log.Fatal(err)
    }
}

4. アプリ構成とコードの検証 ​

生成したプロジェクトのルートディレクトリで実行します。

bash
spine doctor
spine inspect
spine contract check
spine verify

doctorはツールとプロジェクト設定を診断します。inspectは、コードに登録されたルートや依存関係などのアプリ構成を表示します。CLIが登録コードから抽出したこの情報を、実行契約と呼びます。

contract checkは実行契約を検査します。verifyは契約の検査に加えて、gofmt、go vet、Goのテストを実行します。生成されたapplication_test.goも、サーバーを起動せずにBuildApplication()とapp.Validate(options)を検査します。すべてのコマンドがエラーなく終了すれば、サーバーを実行する準備は完了です。

5. 実行とレスポンスの確認 ​

bash
spine dev

サーバーが動いている状態で、別のターミナルを開いてリクエストを送信します。

bash
curl http://localhost:8080/health
json
{"status":"ok"}

上のJSONレスポンスが返れば、GET /healthが動作したことを確認できます。サーバーを実行したターミナルでCtrl+Cを押し、開発サーバーを終了します。

次のステップ ​