LoginSignup
0
1

More than 1 year has passed since last update.

AsyncAPIをシェアする方法について調べた

Posted at

はじめに

WebSocketやMqttなどを実務で使うことが増えてきており,
Event駆動アーキテクチャのAPIインタフェースを定義するための手段を探していたところ,
AsyncAPI を知りました.

AsyncAPIは,検索がなかなかしづらいネーミングになっていることや,日本語の記事もまだまだ少ないです.
また,「OpenAPIのように stoplight.io でブラウザ経由で簡単に,開発メンバーへシェアする」
ような方法については,日本語では,まとまっていないように見受けられたため,今回簡単にですが記載していみました.

※ 注意:私は組み込み,モバイルアプリ,バックエンドをメインにするエンジニアです.
フロント系の技術には疎いです.より良い方法があればご指摘下さい.

AsyncAPIとは

他の方になりますが,
OpenAPIスキーマ互換なAsyncAPIとは?
で紹介されておりましたので,こちらをご確認ください.

いい感じに読みたい

AsyncApi/generatorで静的ページを生成する

公式機能を使い,htmlファイルを生成.AWS S3などにアップロード・共有するという一番愚直なやり方です.
以下のコマンドで生成できました.

cd /path/to/your/workspace
npm install @asyncapi/generator
# globalに入れてもよい.

./node_modules/.bin/ag test.yaml @asyncapi/html-template \
    -o output \
    -p singleFile=true
# デフォルトだと,singleFile=falseで,cssなどが別ファイルになります.

また,GithubActionsで,CIを回したいときは, github-action-for-generator があるようです.
(Githubを使っていても,組織のポリシーによって利用できない場合は頑張りましょう...)

AsyncApi/stduio を使う

どちらかといえば,開発向けのツールになりますが,こちらを自社等でホスティングして共有することでもできそうです.
Dockerでも動くので,やんごとなき事情により,静的ページでシェアすることができない場合や,リモートで複数人で手直ししつつの場合などに有用そうです.

こちら でサンプルを確認できます.asyncapi/generator で生成したものと同じ形式になります.

bump.sh

Twitterで何気なくつぶやいてみたら,AsyncAPIのFounderのFranから紹介されました.
Bump.shは,OpenAPIとAsyncAPI どちらにも対応している サービスです.(強い)
私が所属するチームでは,OpenAPIをStoplightでシェアしていることもあり,AsyncAPIだけでなく,OpenAPIも一括で管理できる非常にありがたいサービスです.
CI周りも手厚いサポートがなされており,GithubActions経由でデプロイもできます.

費用等については,時期により変わるかと思いますが,2023年1月15日現在では,Freeから利用できるようです.(Freeの場合,Privateレポジトリは一つのみという制限付き)

こちら に私のほうでデプロイしたサンプルを公開しておきます.

なお,asyncapi/generator で生成されるフォーマットとは異なるようです.
例えばpublish/subscribe以下の externalDocs が反映されない,
schemaの一覧が末尾に表示されないなど,公式との挙動差があるようです.

個人的には,sample/action/{deviceId}のような,channelではなく,summary をサイドバーにデフォルトで表示してくれる bump.sh ほうが好みです.

最後に

紹介してくれてありがとうございます.

0
1
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
1