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.goArgs の検証
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フィードバックを取得できます。ローカル設定は不要です。