0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

macでBuf CLIを使用する - 1

Last updated at Posted at 2025-02-24

本記事はBuf CLIの使い方 1回目です

概要

本記事ではBuf CLIのチュートリアルを通して使い方を理解していきたいと思います。

Buf CLI

Buf CLIはProtobufスキーマの管理に役立つツールです。コード生成、変更検出、リンティング、書式設定などさまざまな機能を提供し、Protobufの開発と保守を支援します。お好みのプラグインや言語で動作し、Buf Schema Registryにある認定プラグインの膨大なライブラリにアクセスできます。
参照: https://buf.build/docs/cli/

Buf CLIのインストール

Homebrewを使用してインストールできます

brew install bufbuild/buf/buf

このインストールには以下も含まれます。

  • buf , protoc-gen-buf-breaking , protoc-gen-buf-lint のバイナリ
  • buf の Bash 補完
  • buf の Fish 補完
  • buf の Zsh 補完

参照: https://buf.build/docs/cli/installation/

正常にインストールできていれば以下のコマンドでバージョンを確認できます。

buf --version
% buf --version
1.50.0

チュートリアル

buf-tourのリポジトリのクローン

以下のコマンドでbuf-tourをクローンします

git clone git@github.com:bufbuild/buf-tour.git

GitHub CLI ghをインストールしている場合は以下でも大丈夫です。

gh repo clone bufbuild/buf-tour

このリポジトリは start ディレクトリと finish ディレクトリがあり、start ディレクトリでファイルを操作して、最終的に finish ディレクトリの状態に一致します。

今回は start/getting-started-with-buf-cli を使用するのでワーキングディレクトリを変更します。

cd buf-tour/start/getting-started-with-buf-cli

ワークスペースの構成

設定の初期化を実施します。

~/.../buf-tour/start/getting-started-with-buf-cli
buf config init

以下のようなbuf.yamlが生成されます。

buf.yaml
# For details on buf.yaml configuration, visit https://buf.build/docs/configuration/v2/buf-yaml
version: v2
lint:
  use:
    - STANDARD
breaking:
  use:
    - FILE

buf.yamlファイルはワークスペースのルートに置かれ、このファイルが定義するワークスペースは、すべてのBuf操作のデフォルト入力となります。

ディレクトリパスの更新とモジュールのビルド

生成された buf.yaml ファイルは、カレントディレクトリにパスが設定された1つのモジュールを持つワークスペースのように振る舞います。ワークスペース内のモジュールを明示的に定義するには、.proto ファイルを含むディレクトリのパスを指定します。
modules キーを使用して、buf.yaml ファイルに proto ディレクトリを追加します。

buf.yaml
version: v2
modules:
  - path: proto
lint:
  use:
    - STANDARD
breaking:
  use:
    - FILE

続行する前に、すべてが正しくセットアップされ、モジュールがビルドされることを確認してください。エラーがなければ、Bufモジュールは正しくセットアップされています。

~/.../buf-tour/start/getting-started-with-buf-cli/
buf build

コードの生成

モジュールの設定が終わったので、次はローカルコード生成を設定するための buf.gen.yaml ファイルを作成します。
buf.gen.yaml ファイルは、buf generate コマンドが与えられたモジュール上でどのように protoc プラグインを実行するかを制御します。
このファイルを使って、各protocプラグインが結果を書き込む場所を設定したり、各プラグインのオプションを指定したりできます。

カレントディレクトリに以下の内容のファイルを作成します。

buf.gen.yaml
version: v2
managed:
  enabled: true
  override:
    - file_option: go_package_prefix
      value: github.com/bufbuild/buf-tour/gen
plugins:
  - remote: buf.build/protocolbuffers/go
    out: gen
    opt: paths=source_relative
  - remote: buf.build/connectrpc/go
    out: gen
    opt: paths=source_relative
inputs:
  - directory: proto

buf.gen.yamlファイルが設定できたので、PetStoreService APIに関連するConnect RPCとGoコードを生成できます。
以下のコマンドを実行します。

~/.../buf-tour/start/getting-started-with-buf-cli
buf generate

生成が成功したら、 gen ディレクトリとその中に幾つかのファイルが作成されます。

getting-started-with-buf-cli
├── buf.gen.yaml
├── buf.yaml
├── gen
│   ├── google
│   │   └── type
│   │       └── datetime.pb.go
│   └── pet
│       └── v1
│           ├── pet.pb.go
│           └── petv1connect
│               └── pet.connect.go
└── proto
    ├── google
    │   └── type
    │       └── datetime.proto
    └── pet
        └── v1
            └── pet.proto

ここまでで上記のような構成になっているはずです。

今回はここまでとします。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?