go プログラミング

protoファイルからswagger.jsonを作成する方法 GOのインストール手順付き!

2024年2月27日

protoファイルからswagger.jsonを作成する方法の画像

まずprotoを作成するためにいくつかインストールする必要があります。

環境

・go
・protoc
・protobuf
・protoc-gen-doc
・protoc-gen-swagger
・protoc-gen-gateway

PCにgoをインストールしていない方は、下記の手順でgoのインストールを行ってください。

goのインストール

 goのインストール
go install github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger@latest

インストール後に、環境変数の設定も行います。

Windowsの検索欄に「環境変数」と入力して「システム環境変数の編集」を選択します。

システムのプロパティのダイアログが表示されるので、「環境変数(N)...」を選択します。

環境変数設定画面の画像

「GOPATH」にダウンロードしたGoのパスが記載されていることを確認します。

もし環境変数が設定されていない場合は、自分で設定しましょう。

環境変数設定確認の画像

インストールされているかコマンドプロンプトで確認

 goのバージョン確認
go version

コマンドプロンプトでgoインストール確認の画像

protoc-gen-docのインストール

 protoc-gen-docのインストール
go install github.com/pseudomuto/protoc-gen-doc/cmd/protoc-gen-doc@latest

protoc-gen-swaggerのインストール

 protoc-gen-swaggerのインストール
go install github.com/grpc-ecosystem/grpc-gateway/cmd/protoc-gen-swagger@latest

protoc-gen-gatewayのインストール

 protoc-gen-gatewayのインストール
go install github.com/grpc-ecosystem/grpc-gateway/cmd/protoc-gen-grpc-gateway@latest

protocをインストール

protocをインストール

protocのzipをインストールします。

https://github.com/protocolbuffers/protobuf/releases

インストール:protoc-XX.X-win64.zip

※XX.Xの箇所はバージョンです。

protocをインストールした後に環境変数を設定します。

ダウンロードしたZIPファイルを適当なディレクトリに解凍します。

例えば、C:\Program Files\protoc など。

解凍したディレクトリには、bin フォルダがあり、その中に protoc.exe ファイルが存在します。

ダウンロードした protoc.exe を利用するために、protoc.exe が存在するディレクトリを環境変数 PATH に追加します。

これにより、どのディレクトリでも protoc コマンドを実行できるようになります。

google.api.httpを利用するために下記コマンドでクローンする。

google/api/http.protoファイルを取得します。

GitHubのWebページから直接ダウンロードするか、Gitを使用してクローンすることができます。

 git cloneコマンド
git clone https://github.com/googleapis/googleapis.git

protoファイルを作成するディレクトリを作成

適当な場所にフォルダを作成してoptionフォルダにannotations.proto、http.proto、empty.proto、openapiv2.protoを先ほどダウンロードしたprotocのフォルダの中からコピーして配置します。

フォルダ構成
C:.
│ sample.proto

├─html
│   doc.html

├─json
└─option
├─google
│ └─api
│    annotations.proto
│    http.proto

├─protobuf
│    empty.proto

└─swagger
annotations.proto
openapiv2.proto

protoファイルをswagger.json出力

 json出力
protoc -I. -I [protoc-gen-gatewayをインストール時のgoogleapisのフォルダパス] -I [protoc-gen-gatewayをインストール時のgrpc-gateway@v1.16.0のフォルダパス] --swagger_out=json_names_for_fields=true:[jsonの出力先] [protoファイル名]

コマンド例は、下記を参考にしてみて下さい。

 コマンド例
protoc -I. -I C:\Users\sozelog\go\pkg\mod\github.com\grpc-ecosystem\grpc-gateway@v1.16.0\third_party\googleapis -I C:\Users\sozelog\go\pkg\mod\github.com\grpc-ecosystem\grpc-gateway@v1.16.0/ --swagger_out=json_names_for_fields=true:./json sample.proto

サンプルptoroコード

後日、protoファイルのコード全て公開します。

取り急ぎ、スクショでご勘弁を。

Sample.proto

proto スクショの画像

出力されるjson

jsonに関しても取り急ぎスクショです。。。

sample.swagger.json

swaggerjsonスクショの画像

-go, プログラミング