0Pricing
Go Academy · レッスン

Cobraの基本

ルートコマンド、Run、Args、ヘルプ生成

「Cobraの基本」はCoddyKit上の無料Go Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはGo Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Go Academyコースには全4レッスンが含まれています。

Cobra とは

Cobra は CLI アプリケーションを構築するために最も広く使われている Go ライブラリです。コマンド、フラグ、サブコマンド、ヘルプ生成、シェル補完、引数検証を提供します。

Cobra のインストール

依存関係として cobra を追加し、必要に応じて CLI ジェネレーターを使用します:

go get github.com/spf13/cobra
// Optional: cobra-cli for scaffolding
go install github.com/spf13/cobra-cli@latest
cobra-cli init myapp

ルートコマンド

すべての Cobra アプリにはルートコマンドがあります。Use、Short の説明、Run 関数を指定して定義します:

var rootCmd = &cobra.Command{
    Use:   "myapp",
    Short: "My awesome CLI",
    Run: func(cmd *cobra.Command, args []string) {
        fmt.Println("Hello from root!")
    },
}
func main() { rootCmd.Execute() }

cobra.Command 構造体

主なフィールド: Use(コマンド名と概要)、Short(1 行の説明)、Long(詳細なヘルプ)、Run(コマンドを実行)、RunE(エラーを返す)。

エラー伝播のための RunE

エラーを返すには Run ではなく RunE を使用します。Cobra はエラーを自動的に出力し、ゼロ以外の終了コードで終了します。

var rootCmd = &cobra.Command{
    RunE: func(cmd *cobra.Command, args []string) error {
        return doWork()
    },
}

サブコマンドの追加

個別の cobra.Command 値としてサブコマンドを作成し、AddCommand でルートに追加します:

var serveCmd = &cobra.Command{
    Use:   "serve",
    Short: "Start the server",
    RunE:  runServe,
}
func init() { rootCmd.AddCommand(serveCmd) }

Cobra のプロジェクト構成

一般的な構成では、cmd/ ディレクトリにサブコマンドごとに 1 つのファイルを配置し、root.go も置きます。main.go は cmd.Execute() を呼び出すだけにします。

cmd/
  root.go    // rootCmd definition
  serve.go   // serveCmd
  migrate.go // migrateCmd
main.go

Args の検証

cobra.ExactArgs、MinimumNArgs などの組み込みバリデーター、またはカスタムの ValidArgsFunction を使用します:

var cmd = &cobra.Command{
    Args: cobra.ExactArgs(2),
    RunE: func(cmd *cobra.Command, args []string) error {
        fmt.Println(args[0], args[1])
        return nil
    },
}

自動生成されるヘルプ

Cobra はすべてのコマンドに対して --help / -h と help サブコマンドを自動的に生成します。表示されるテキストは Use、Short、Long、フラグから生成されます。

シェル補完

Cobra は、rootCmd.GenBashCompletion または組み込みの completion サブコマンドを使って、bash、zsh、fish、PowerShell 用の補完スクリプトを標準で生成できます。

Viper との統合

構成管理には Cobra と Viper を組み合わせます。Cobra で定義したフラグを Viper のキーにバインドすると、値をフラグ、環境変数、構成ファイルから取得できます。

クイックチェック

cobra.Command.Run と RunE の違いは何ですか

振り返り: Cobra の基礎

要点:

  • Use/Short/RunE を設定した cobra.Command が基本構成要素です
  • 階層型のコマンドには rootCmd.AddCommand(subCmd) を使用します
  • 引数の検証には cobra.ExactArgs/MinimumNArgs を使用します
  • ヘルプと補完は自動的に生成されます

よくある質問

「Cobraの基本」レッスンは無料ですか?

はい。「Cobraの基本」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Go Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Go Academyコースには全4レッスンが含まれています。

「Cobraの基本」で何を学びますか?

ルートコマンド、Run、Args、ヘルプ生成 ブラウザで直接実行するハンズオンコードでGo Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Go Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのGo Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「Cobraの基本」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このGo Academyレッスンでコードを書いて実行できますか?

はい。すべてのGo Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Cobraの基本
  2. フラグと永続フラグ
  3. サブコマンドとコマンドグループ
  4. CLIツールの配布
← Go Academyに戻る