新しい Azure SDK API 標準に沿った Azure SDK のプレビューを発表

2019年7月9日 に投稿済み

Principal Group Software Engineering Manager

このたび、Java、Python、JavaScript (TypeScript)、.NET で Azure Storage、Azure Cosmos DB、Azure Key Vault、Azure Event Hubs を操作するための新しいライブラリが公開されました。これらのライブラリは、新しいサービス機能へのアクセスを提供するものです。このリリースは Azure SDK に新たな標準 (英語) を適用するための第一歩であり、ライブラリをさらに習得しやすく、より簡単にソフトウェアに統合できるようになると考えています。これらのライブラリは、任意のパッケージ マネージャーから今すぐ入手できます。ぜひお試しいただき、GitHub (英語) にフィードバックをお寄せください。利用を開始するには、以下の各言語のリンク先の指示に従ってください。

リリースの背景

ソフトウェアの世界では、クライアントやオンプレミスからクラウドに移行するパラダイム シフトが起きていますが、マイクロソフトでも同様に Azure の機能を進化させ、それらをどうすればベストな方法で開発者に公開できるかを模索してきました。成熟した一部の Azure サービスはビジネスクリティカルなエンタープライズ アプリに採用されるようになり、私たちはそこから、どんなパターンやプラクティスが開発者の皆様の生産性に寄与するのかを学んできました。また、皆様からのフィードバックにも耳を傾け、いただいたご提案やご要望を新たなサービスに反映してきました。さらに、Azure SDK を使用するうえでは、パターンが一貫していて、使いやすく、見つけやすいものであることも重要だと私たちは理解しています。

今回の変更点

変更の詳細については、今後各担当者がブログで詳しくご説明しますが、ここでは、この大きな変更を行うために皆様からいただいたフィードバックをもとに定義した私たちの指針をご紹介したいと思います。以下のとおりです。

  • その言語エコシステムにおいてベストなライブラリと同レベルの生産性を持つ、使いやすい API を作成する
  • 言語とその言語のエコシステムにおいて自然な API を提供する
  • 高い互換性を維持しながら時間と共に進化させられる
  • API だけでなくドキュメントやサンプルの作成も重視する
  • ライブラリの作成方法を根本的に変える

使いやすさと生産性

生産性を高めるには、さまざまな要素を検討する必要がありますが、主な検討要素として、一貫性と使いやすさの 2 つに絞ることができます。

一貫性を維持するための助けの 1 つとして、Azure 開発者との作業で学んだことを API 設計ガイドラインにまとめました。このガイドラインは、オープンソースの GitHub リポジトリ (英語) で作成しました。私たちが取ったアプローチの詳細、一般的なガイドライン、Java/Python/.NET/JavaScript の各言語固有のガイドライン、という基本的なセクションで構成しています。このガイドラインに沿うことで、それぞれのライブラリが使用しやすくなり、また、だれもが学習しやすくなるとも考えています。1 つのライブラリのパターンや API シェイプを習得すれば、他でも同じように使用できるようになるというわけです。

使いやすさ、つまりユーザビリティをさらに高めるために、ユーザーからフィードバックを収集する方法にも手を加えることにしました。プレビューをリリースしたり、プロジェクトで開発者と直接やり取りしたり、コミュニティ フォーラムを開設して問題に対処するといった、業界標準のベスト プラクティスの多くは引き続き行っていきますが、その先のステップとして考えたのが、ライブラリのユーザビリティ テストです。今回リリースする各ライブラリでは、開発者をラボに招いてさまざまなユース ケースに取り組んでもらい、それを観察することにしました。そこで得られたフィードバックは、ガイドライン、そしてライブラリの API シェイプのどちらを作成するうえでも非常に役に立ちました。

自然なライブラリ

開発者との会話中にいただいた重要なフィードバックには、私たちが提供した API が、ある言語においては不自然に感じられたというものがありました。これを解消するために、基本原則の 1 つとして、ライブラリを作成する際は対象の言語のパターンに従う、ということを明確に規定しました。さらに、ガイドラインに沿って各サービスのライブラリを更新したら、そのたびに必ず Java、Python、JavaScript、.NET の各言語でライブラリをリリースするように徹底しています。

互換性の維持

互換性は、マイクロソフトが常に重視している点です。開発者はソリューションの開発に多大な時間とコストを費やしているため、開発したものが長く機能してほしいと望むのは当然のことです。しかし、それが難しい事態が発生しました。基盤を強化するために、一部のケースで互換性を損ねる変更を加える必要があったのです。新しい基盤に合わせて調整することで、生産性の目標を達成できることがわかりました。そのため、その基盤の構築を終えた後に、改めて高度な互換性を提供することにしました。また、互換性を維持するためにもう 1 つ行ったのが、既存の依存関係を可能な限り削減することです。そうすることで将来的な互換性の問題やバージョン管理の複雑さを軽減し、ライブラリのアップグレードやこれらのライブラリと他のソフトウェアの併用がしやすくなります。

ドキュメントの作成

優れたドキュメントとサンプルを提供することは、生産性の目標の一部とも言えますが、私たちはこれをあえて独立した目標として位置付けることにしました。それは、多くの開発者がテクノロジを選択するうえで、特に重要な要素だと考えているからです。API だけでなく、Azure Quickstarts でもユーザビリティを調査し、新しい開発者が Azure サービスの試用をすぐに開始できるようにしています。また、API リファレンスのコード スニペットとサンプルの両方が古くなっているというフィードバックを受けて、GitHub から定期的に API リファレンスのコード スニペットとサンプルを作成し、ドキュメントとして公開できるようにするツールも開発しています。

開発のしくみを変更

私たちは、その他にもコミュニティとの間の協業ややり取りの方法についても変更する必要があると考えました。そのため拠点を以下の少数の主要リポジトリに絞り、そこで再構築して開発作業を一元管理することにしました。

また、ID と認証、同期 API と非同期 API、ログ作成、エラー処理、ネットワークの再試行などは、あらゆるライブラリで共通で使用しますが、これらの機能を提供する新しいコア ライブラリを作成しました。

次のステップ

今回、ここでご紹介したさまざまな指針に沿って新しい Azure ライブラリをプレビュー リリースできたことをたいへん嬉しく思っています。ぜひダウンロードしてお試しください。各ライブラリの新機能、パッケージの入手方法、GitHub Issues を作成する方法などについては、以下の各言語のプレビュー向けのリリースノートをご確認ください。

GitHub Issues の作成に加え、ご意見は @AzureSDK (英語) でも受け付けています。ぜひフォローしてフィードバックをお寄せください。皆様からのフィードバックはライブラリの強化に欠かせないものです。Azure でさらに簡単に優れたソフトウェアを作成したり、問題を解決したりできるように、ご協力いただけますと幸いです。