2019(ASC)」がカナダのバンクーバーで開催されました。Practice(APIStrat)」を引き継ぎ、よりクリティカル、かつ強い注目を集めるAPIスペックにフォーカスしたカンファレンスになりました。APIスペックとは、APIの仕様そのもの、またはAPIの仕様の記述方法を定義した規格を指します。APIのAPIスペックであるOpenAPIがあります。Mendez(AsyncAPIの創業者)を筆頭に、APIコミュニティの主要な方々が参加され、カンファレンスは昨年同様活気にあふれていました。参加者は180名ほどでした。System?」という題目で発表しました。本記事では、筆者が参加したセッションの模様をダイジェストで紹介します。今回のカンファレンスでは、AsyncAPIの躍進が目に付きました。APIを記述可能なAPIスペックです。OpenAPIのadaptationとしてスタートしたため、OpenAPIと酷似する点が多々あります。APIおよびOpenAPIが主流なのは変わりませんが、AsyncAPIは、今回のカンファレンスでOpenAPIに次ぐAPIスペックの2番手の1つにまで一気に上り詰めた感がありました。これは、関連するセッション数を見ても明らかで、他のAPIスペック(例えばGraphQLやgRPC)が前年度のAPIStratと比較し、関連するセッション数は大方横ばいなのに対し、AsyncAPIは0セッションから9セッションにまで関連するセッション数が増えました。APIのAPIスペックの筆頭であるAsyncAPIに注目が集まるのは自然なことかもしれません。MendezがUberのようなRiderアプリを実際にevent-drivenアーキテクチャで作る方法を紹介しました。EditorのようなものであるAsyncAPIのplaygroundを使ってAPIスペックを作り、そこから各種コードを生成して動作を確認していました。(このシステムのメインで、メッセージの中継や各種ロギングを担当する)の3つです。フローは、以下のようになります。APIはAsyncAPIでは以下のように定義します。このAPIはuserが叩き、driverは事前に申し込むことで、その情報をサブスクライブしてもらうことができます。Generatorを使用しました。テンプレートも多々用意されており、またコード生成の精度も高く(手直しに時間を要している様子もなく)、コード生成機能には優秀さを感じました。API(ないしAsyncAPI)の有効性が十分に示されたワークショップでした。気になるのはセキュリティの部分です。ワークショップでもセキュリティに関して質問がありましたが、公式ドキュメントにも以下のような記述があり、エンタープライズユースでどのようにセキュリティを担保するのかが課題の1つです。APIs.(従来、メッセージブローカーは内部利用目的のインフラ部品であり、一般に公開されていません。APIのセキュリティメカニズムよりも単純です。APIのAPIスペックの筆頭として、今後の動向に注目していきましょう。GraphQLの汎用化GraphQLはクエリを用いるAPIスペックで、高いパフォーマンスやレスポンスの厳密性を売りにしています。GraphQLはRESTの性能ボトルネックを解消するものであり、FacebookやGitHubといった超高スループットが要求されるサービスにのみ有効である印象でしたが、今回のカンファレンスではGraphQLが使いやすく親しみやすいものになったという印象を受けました。その理由として、まずリファレンスが非常に充実してきたことです。これにより初心者でもかなりとっつきやすいものになり、周辺ツールも確実に増えてきました。RESTlessness」というセッションでも紹介されていました(図1)が、「JavaScriptウェブアプリケーションならGraphQL」といった一定の支持を獲得できたように思います。Room」という題目でGraphQLが苦手とするキャッシングについて解説がありました。(リソースが変更されたかどうかの確認、Last-ModifiedやETagを使う)の2つで成り立つ、いわゆるHTTPキャッシングです。GraphQLの場合はクエリが頻繁に変わるため効率的にValidationを行うことが難しいケースが多く、またGETメソッドを使わなくてはならない点やGETメソッドのクエリパラメータにサイズ制限がある点が、GraphQLでキャッシングをする際の大きなチャレンジとなっています。CDNのような共有キャッシュ/ネットワークキャッシュに関してはFastQLのようなサービスもありますが、実現が非常に難しいことには変わりありません。RFC-7234に下記のように記載されている通り、共有キャッシュを使うとAuthorizationヘッダが使えないという点にも注意が必要です。3.2)(レスポンスが明示的に許可しない限り、キャッシュが共有されている場合、Authorizationヘッダフィールドはリクエストに表示されません)発表者のMarc-Andreは、頻繁に「GraphQLはキャッシングができないわけではない」と繰り返していました。図2にもあるように、キャッシングが有効なユースケース(つまり認証なしのケースや、めったにデータが変更されないケース)にGraphQLが適さないことが多いため、キャッシングを採るかGraphQLを採るかは、そのトレードオフをよく吟味する必要があるとのことでした。図2:GraphQLとキャッシング(当日の資料より引用)このセッションに代表されるように、本カンファレンスでは、GraphQLのセッションの内容がただGraphQLの良さをアピールするのではなく、一歩進んでGraphQLの上手な使い方や課題解決策を提案するような内容になり、GraphQLが認知され使われるようになってきたという傾向を示しているように感じました。現在、APIを公開するシステムが増えている中で、APIを公開して情報漏えい等の危険にさらされないようにするためのAPIセキュリティの重要性が増しています。APIスペックの分野でもセキュリティは重要な観点の1つで、セキュリティに纏わるセッションは毎年注目を浴びています。Specification」という題目でOpenAPIにおけるセキュリティについて解説がありました。Connectを定義できます。Objectを用いて、各リソースのスコープを定義できます。Binding(トークン横取り攻撃を軽減する機能)などが挙げられました。3.1で入る予定とのことです。System?」と題目で発表しました(図4)。MTLSのような高セキュリティ機能を有する周辺ツールが世の中に出回っていないので、高セキュリティAPIシステムを構築したときのテスト用にツールを自作したという内容でしたが、メイン会場に100名ほど集まりました。図4:筆者の発表の様子おわりに昨年と同様、今回も日本人の参加は2、3人と少なく、まだまだ国内におけるAPIスペックの注目度は低いように感じました。APIスペックは、特にサービス(API)デリバリーのアジリティを考えたときに欠かせない要素の1つであり、今後、より重要度が増していくと考えます。食に関わる「Agritech」のいま。日立製作所OSSソリューションセンタにて、API管理や認証周りのOSSの開発/サポート/普及活動に従事。3scaleのapicastリポジトリのコントリビュータであり、流量制御ポリシーやスコープチェックポリシーを中心に多数のコードをコミットしている。連載バックナンバーキャリア・人材イベント関係人口と関係社員は人とのつながりから生まれる―「地域と企業と個人を豊かにする新しい関係づくり」レポート2020/2/18続きを読むキャリア・人材イベント幸福度ランキング上位のデンマーク。昭和女子大学ダイバーシティ推進機構セミナー2020/2/12続きを読むフリーランス/起業イベント旅するように働く。ITでは、より付加価値の高いコンテンツを会員サービスとして提供しています。ITのWebサイトにログインすることでさまざまな限定特典を入手できるようになります。IT会員サービスの概要とメリットをチェック他にもこの記事が読まれていますキャリア・人材イベント関係人口と関係社員は人とのつながりから生まれる―「地域と企業と個人を豊かにする新しい関係づくり」レポート2020/2/18開発ツールイベントGitHub、エンタープライズ向けのイベントを国内で開催。Desktopの最新バージョンとは?2020/2/13キャリア・人材イベント幸福度ランキング上位のデンマーク。VeloCloudが選ばれる理由SD-WANとはなにか。Linuxエンジニア育成への思いF5とNGINXの組み合わせで、サービス公開をよりセキュアに。ITがお届けするポッドキャストです。