OpenAPI specを書くツールをいくつか調べた
- vscodeだと拡張を入れてもいまいち補完が効かない
- Intellij IDEAの OpenAPI Editor が一番良さそうだがJetBrainsライセンス必要
- Stoplight Studioはいいけど勝手にファイルをフォーマットかけたりするし重い。会員登録必要
- Swagger Editor は補完聞くけどブラウザ上で編集ってのが気持ち悪い
- Swagger Editorをdockerでローカルに立ち上げて使うのがいいのかな
結論
どちらかが良さそう。書きやすいのはvimで、補完効かせたかったらSwagger Editor
- Swagger Editor (OpenAPI 3.0.x) で書く
- Neovim + LSPで書いて、ReDocで描画する
Swagger Editorをローカルに立ち上げる
localhost:8080 でSwagger Editorが開く
ここで編集しても、ファイルが書き換わるわけではなかったので、いちいち保存してローカルで上書きとかが必要
v5を使ってみる
v5はまだ安定版じゃないが使ってみる
画面はスッキリしたが、ファイルが指定できなくてまだ早いかも
ReDocで描画する
Swagger EditorはSwagger UIを描画に使うが、OAS 3.1.0に対応していない。 https://github.com/swagger-api/swagger-ui/issues/5891
そこでRedocを使う
https://hub.docker.com/r/redocly/redoc/
localhost:3000 で開くと、指定したファイルが描画されている。 ホットリロードもしてくれる。
(素直に3.0.xにしてswagger-uiで表示するのが簡単な気がした)
LSP + Neovim
https://github.com/luizcorreia/spectral-language-server
これはメンテされてなくて npm i -g spectral-language-server
がまず失敗した
jsonla
https://www.reddit.com/r/neovim/comments/r5l1ax/anyone_has_a_successful_experience_with_openapi/ b0o/SchemaStore.nvim: 🛍 JSON schemas for Neovim これが紹介されてた
packer
だいたい補完がきくようになったが、schemaの中は全然補完されず schemaの中はIntellijでも補完されなかったので、すべて補完きかせたかったらSwagger Editorになるか
yamlls
nvim-lspでyaml-language-serverを使うようになっている https://github.com/neovim/nvim-lspconfig/blob/e69978a39e4d3262b09ce6a316beff384f443e3b/doc/server_configurations.md#yamlls https://github.com/williamboman/mason-lspconfig.nvim/blob/3751eb5c56c67b51e68a1f4a0da28ae74ab771c1/doc/server-mapping.md
こちらでデフォルトでOpenAPI 3.1.0 が組み込まれていたのでyamlの場合はこれで十分だった
https://github.com/redhat-developer/yaml-language-server/blob/18ecc0e3d0ff6365e67b88127ac663351b0308de/src/languageservice/utils/schemaUrls.ts#L10 https://github.com/SchemaStore/schemastore/blob/master/src/api/json/catalog.json