AWS、言語やプロトコルに依存しないインターフェイス定義言語(IDL)「Smithy」をオープンソースで公開
クラウド時代のアプリケーションは、複数のソフトウェアがAPIを通じて連携するアーキテクチャが主流になると考えられています。そのため、さまざまなソフトウェアにおいて正確かつ確実にAPIを実装することの重要性が高まっています。
AWSは、このAPIを定義する言語、およびその定義からAPIを実装するコードを生成するツールからなる「Smithy」ベータ版をオープンソースとして公開しました。
SmithyのWebサイトから、その説明を引用しましょう。
Smithy is a protocol-agnostic interface definition language and set of tools for building clients, servers, and documentation for any programming language.
Smithyはプロトコルに依存しないインターフェイス定義言語(IDL:Interface Definition Langugae)と、どんなプログラミング言語にも対応したクライアントやサーバ、ドキュメントなどを生成する一連のツールです。
つまりSmithyを用いてAPIを定義すると、そこからさまざまなプログラミング言語に対応したAPIのソースコードとドキュメントが生成されるわけです。それによって正確で確実に相互連携を可能にするソフトウェアの開発が容易になると期待されます。
SmithyはAWSの内部でIDLとして10年ほど使われてきたものをベースとしていると、次のように説明されています。
Smithy is based on an interface definition language that has been widely used within Amazon and AWS for over a decade.
SmithyはAmazonとAWSの内部で10年ほど広く使われてきたインターフェイス定義言語をベースとしています。
プロトコルとプログラミングに依存しないことが大きな特徴
Smithyの大きな特徴は、プロトコルやプログラミング言語に依存しない点でしょう。
例えばIDLとして知名度が高く、実際に多く使われてもいるOpen APIは、RESTful APIのためのIDLとされています。
参考:RESTful APIの記述標準化を目指す「Open API Initiative」をマイクロソフト、Google、IBMらが立ち上げ。Swaggerをベースに
アプリケーション間で使われるプロトコルにはそのほかにもgRPCやGraphQL、MQTT、古くはXMLをベースにしたSOAPなど、さまざまなものがあります。
大型のアプリケーションであれば、こうした複数のプロトコルをそれぞれ適切な場所において適切な形で使い分けることになるでしょう。また、アプリケーションを開発するチームごとに得意なプログラミング言語や適切なフレームワークを用いることになるでしょう。
Smithyが単体でこうしたさまざまなプロトコル、プログラミング言語でAPIを実装することをカバーするとすれば、非常に有効なIDLとツールになるはずです。特に大規模な組織で開発を行っている企業などでは、定義とツールを一元化できる意義は大きいでしょう。
AmazonとAWSがSmithyのベースとなった技術を開発したのも、自社の大規模開発におけるこうしたツールのニーズが高かったためであることは間違いないと思います。
ただし、現状の公開されているSmithyはまだベータ版のためか、どのプログラミング言語に対応しているのか具体的な説明は見つからず、またGitHubのリポジトリ内のコードをざっと見たかぎりでは、ツールのコードもまだすべてが揃っているわけではなさそうです。
今後のSmithyの成熟によって実際にどこまでカバーされるのか、注目されます。
あわせて読みたい
「GitLab 12.0」リリース、1年ぶりのメジャーアップデート。レビュー中のアプリからフィードバックを書き込める「Visual Reviews」、IPアドレス制限など新機能
≪前の記事
ソラコムは、AWS上にミッションクリティカルなシステムをどう構築し、運用しているのか。IoTプラットフォーム開発と運用を聞いた[PR]