[Algoliaブログ翻訳] Jamstack用のAPIの選択

このブログ記事はAlgoliaのSolutions EngineerのMatthew Foyleと、NetlifyのBusiness Development DirectorのSarfaraz Rydhanによる、Choosing your APIs for Jamstack の翻訳です。


3rdパーティーのAPIを使ってWebアプリケーションを構築したいと思った時に、沢山の選択肢がある中で、どのようにそれを選びますか?

Jamstackの素晴らしいことの1つに、パフォーマンスとスケーラビリティのブーストが挙げられます。これによって様々なサードパーティーのAPIを活用することができるようになります。その結果、best-in-classなプロダクトを個々の処理に組み込めるようになり、それぞれの特定のエリアで継続的なイノベーションを利用することができます。これはある種のunbundling(一括のバンドルから外す)と言えるでしょう。

例えば、カスタム全文検索モジュールを構築する代わりにAlgoliaを導入したり、自分でメンテナンスが必要なサーバー上に独自CMSをホストしてやりくりする代わりにContentfulを導入したり、ソースコードを自分でコンパイルしてFTPを経由してWebサーバーにアップロードする代わりにNetlifyのシームレスな開発フローを利用することを考えてみてはいかがでしょうか?

もちろん、選択という行為には責任が伴うものです: 数多くの選択肢の中からどのようにソリューションを選ぶべきでしょうか?

このブログ記事では、APIを選択する上で考慮に入れるべき以下の5つの条件をシェアしていきたいと思います。

  1. 技術的なクオリティとビジネスニーズのバランス
  2. ソリューションとしてのAPI
  3. データの複雑性
  4. スマートなUI戦略
  5. ポリシーとサポート

1. 技術的なクオリティとビジネスニーズのバランス

サービスを購入する時に、あなたのアーキテクチャにフィットするかということだけでなく、テクニカルではないステークホルダーのニーズとのバランスが取れているか?といったことを考慮する必要があります。そのため、ファンタスティックなドキュメントを備えたファンタスティックなAPIと、アクセシブルで完全な機能を持つビジネスダッシュボード、そして、両方のステークホルダーグループに対してフレキシビリティとコントロールを満たすような、それぞれの世界観においてベストのものが必要となります。

今日、ソフトウェア・プロダクトを構築することにおいて、全てはトレードオフです。まだ成熟していないようなプロダクトであれば、開発者もしくはビジネスのどちらか一方に重きを置く形になります。そのため、第一要件としては、両方のエリアでコンピテンシーを発揮しているようなある程度成熟しているプロバイダを探し、出来るだけこのトレードオフをミニマイズするということになります。

2. ソリューションとしてのAPI

APIそのものにおいて、サービスではなく、ソリューションとしての兆候を模索しましょう。

  • APIクライアントや開発者用ツールはどの程度メンテナンスされているか、そしてどれだけ容易にインテグレーションできるか。フレキシビリティと容易性を見出しましょう。
  • ベンダーが提供する機能のうち、API経由でアクセスできるものはどれくらいの数があるでしょうか?
  • ドキュメントはどの程度のクオリティでしょうか?単に機能の仕様が書かれているのか、それとも目的を達成するためのフルセットなリソースになりうるのか。APIがソリューションである場合、ドキュメンテーションは徹底的に扱いやすく、よくあるユースケースのサンプルコードが沢山記載されています。また、ドキュメントの良い例としては、React, Gatsby, Vue, そしてGraphQL等が挙げられます。直感的なレイアウトとドキュメントのデザインに加えて、これらのAPIは検索を通じて開発者が必要なリソースを簡単に見つけられるようになっています。
  • そのプロバイダにはDX(Developer Experience)チームがありますか?ベンダーのビジネスの中に、自分たちの製品を実装してもらう際にエンジニアがプロダクティブでいられるようにすることにフォーカスしているようなアドボケートが存在する場合、実装時に大いに役立つことでしょう。そして、このことこそが、ベンダーがステークホルダーのグループを真剣に考慮していることを示しています。

3. データの複雑性

APIプロバイダを追加する際に、データのフローとデプロイのプロセスに加わる複雑さを見てみたいと思うでしょう。例えば、HeadlessなCMSを使っている場合、コンテンツが更新された時に、再デプロイをトリガーする必要があるでしょう。この時にウェブフックの設定方法に関するインタグレーションガイドを見ることになります。例えば、Algoliaのような検索APIにおいては、コンテンツの作成、変更、そして削除に対応する必要があります。更に、コンテンツは様々な記事、プロダクト、その他諸々の様々ななソースから取得することになるかもしれません。

ラッキーなことに、Jamstackの多くのプロバイダーは、これらを簡単にやりくり出来るようにしています。ソリューションを選択する際は、他のJamstackな技術とインテグレートをすることが出来るツールを備えているか確認するようにしましょう。もし、ツール間でダイレクトなインテグレーションツールが提供されているのであれば、更に良いことと言えます。例えば、AlgoliaとNetlifyを使う場合は、Algolia Netlifyプラグインを活用することで、上記に書いたようなプロセスをシンプルにすることが出来ます。

4. スマートなUI戦略

API-firstなプロバイダを選択する時は、UIについて考慮する必要があります。APIはフロントエンドに自由をもたらすために構築されていて、組み込まれるインターフェースについては、主張をしないようにしています。以前においては、これは全てのUIを構築しなければいけないことを意味していました。

しかし、サービスが成熟するにつれて、多くのプロバイダーは開発者が使うUIコンポーネントを提供するようになりました。これらのコンポーネントは多くの場合において、内部的にはサービスのAPIクライアントとそのインターフェースを使ったベストプラクティスなUI実装となっています。

もし、”component”や”widget”を持っているようなプロバイダを使っている場合、検討すべきトレードオフがあります。ヘッドレスなアプローチであれば、デザインとユーザー体験に自由とフレキシビリティをもたらします。プロバイダのwidgetを使うと、フロントエンドの構築にかかる時間の短縮につながるものの、デザインのカスタマイズ性が失われる可能性があります。そのようなツールをどのように検証すべきでしょうか?デフォルト状態でスマートであり、UIそのもののオーバーライドが可能であり、その際、コンポーネントのロジックを失うようなことがない機能を探しましょう。そのような場合、デフォルトからスタートして、クイックにそれを進化させ、且つ、そのプロバイダのスタンダードなパターンから大きく離れるようなことがあっても、全てを再構築するような必要はなくなります。Algoliaの例: 開発者はwidgetを拡張してUIをカスタマイズすることができるとともに、widgetが提供する機能はそのまま維持することが出来ます。更にカスタムwidgetを既存のライブラリの上に構築することも出来ます。

5. ポリシーとサポート

アプリケーション内で複数のプロバイダを管理している場合 – それぞれのユースケースに1つずつかもしれません – 管理者の観点では、出来るだけそれらのやりくりを簡素化したいと思うでしょう。ここでは、それぞれのサービスにおいて考慮すべきいくつかの要素を挙げていきます:

  1. SLA – あなたが憂慮すべき最後のものは、プロバイダがダウンするという事態です。これはどうしても起こりえます。そのような場合、ビジネスの保険としてSLAを考えるべきでしょう。またプロバイダをフェールオーバーさせるためのセカンダリなプロバイダを組み込むことも可能です。
  2. Support – ドキュメンテーションは self-serve を促進しますが、迅速に開発を進めていくためには、ちょっとしたことの明確化や質問のために丸一日使ってしまうと大きな違いに繋がってきます。特に実装フェーズでは、必要な時にいつでもアクセスできるようなチームを確保しておきましょう。
  3. Release policy – 多くのAPIを使っている場合、誰がアップデートのリリースをしても、あなたのサイトに影響を与えないようにすることが重要です。例え、APIクライアントの小さな変更でも、下位互換性がなければ、あなたの実装に混乱をきたすかもしれません。プロバイダがどのようにリリースを行うかを注視し、そのAPIが実際にご完成があることを確認しましょう。
  4. Security and Compliance – プロジェクトでAPIを選択する時は、セキュリティとプライバシーがあなたの企業の要件を満たしているか確認する必要があります。SOC certificationの保持やGDPRに準拠したデータ処理を行っているベンダーである必要があるかもしれません。例えばeコマースプロジェクトであれば、PCIコンプライアンスを検討しなければならないかもしれませんし、金融やヘルスケアのような規制の厳しい業界においては、より多くの要件が存在します。ほとんどのプロバイダーでは、自社のWebサイトにセキュリティやコンプライアンスのページを設けています。

Jamstackな開発者になるのはエキサイティングなことです。あなたが解決しようとしている課題や、あなたが構築しているプロダクトに最適なAPIを自由に選択することが出来ます。これから数ヶ月や数年の間に、より多くのサービスが導入されることでしょう。このガイドがあなたの次のプロジェクトのお役に立てることを願っております。

この記事の著者について

MattはAlgoliaでSolutions Engineeringに従事していますが、以前はTwilioでコミュニケーションAPIを、その前は(買収された)MoltinでeコマースAPIを担当していました。

Sarfaraz Rydhanは、Netlifyのパートナーエコシステム担当ディレクターです。Sarfarazはテクノロジーそしてビジネスのリーダー達と、JAMstack Webアーキテクチャを活用して、企業がより良いサービスを提供できるよう支援しています。ex-software engineerとして、技術的そして運用の専門知識を活用して、それらの企業が新しい市場に参入し、明確なビジネスの成果を前提とした技術的意思決定を行うことを支援しています。

コメント

タイトルとURLをコピーしました