Azure Search .NET SDK のロードマップ
このポストは、2 月 1 日に投稿された Azure Search .NET SDK roadmap の翻訳です。
2015 年 3 月に Azure Search .NET SDK の最初のバージョンをリリースして以来、お客様から多くのフィードバックをいただいています。中でも特に多いのが、REST API と .NET SDK で同等の機能を提供してほしいというご要望です。
現在多くのお客様が Azure Search のプレビュー版の機能を使用していますが、これらの機能は .NET SDK では提供されていません。REST API にプレビュー版の機能が導入された場合には、可能な限り早急に SDK を更新してそれらの新機能をサポートする必要があります。同様に、機能の一般提供が開始された場合には、それらの機能が含まれる安定版の SDK をリリースする必要があります。
このことを実現するために、Azure Search チームは数か月にわたって取り組みを進めてきました。.NET SDK バージョン 1.0–preview のリリースに続き、まもなく最初の安定版の一般提供が開始される予定です。現時点ではまだ REST API と同等の機能を提供するには至っていませんが、この機会に、これまでの進捗状況とこの機能を提供するためのこれからの計画についてご紹介したいと思います。
バージョン 1.0-preview
先日、Azure Search .NET SDK のバージョン 1.0-preview のリリースが発表 (英語) されました。この新しい SDK は NuGet (英語) からダウンロード可能で、新機能の詳細についてはこちらの記事でご確認いただけます。
今回のバージョンでは、インターフェイスと内部の設計の両方が大幅に変更されました。その結果、SDK の使いやすさがさらに向上し、次世代の Azure クライアント ライブラリとの一貫性が実現されました。また、強固な基盤上に構築されているため、新機能をこれまでよりすばやく追加できるようになりました。
今後のロードマップについては、次のセクションをご覧ください。1.0-preview の詳細を先に知りたい方は、次のセクションを飛ばして「1.0-preview での変更点とその理由」をご確認ください。
今後のリリース予定
一般提供開始と Lucene クエリ構文のサポート (バージョン 1.1)
Azure Search .NET SDK の次回のリリースでは、初めて一般提供版を提供することを予定しています。一般提供版の特徴は以下のとおりです。
- 互換性に影響する変更は行われないため、新しいバージョンを安心して使用できます。
- SDK のバージョンから -preview モニカーが削除されます。そのため今後は、Microsoft.Azure.Search NuGet パッケージ (英語) を検索する際に [Include Prerelease] チェック ボックスをオンにする必要はありません。
この SDK の最初の安定版は 2 月にリリースされる予定です。対象となる REST API のバージョンは 2015-02-28 です。
また、多くのご要望にお応えして、この SDK には Lucene クエリ構文のサポートを追加します。この機能は現在、REST API のバージョン 2015-02-28-Preview でのみ提供されていますが、SDK バージョン 1.1 がリリースされる前にバージョン 2015-02-28 でもご利用いただけるようになります。
プレビュー版機能の追加 (バージョン 2.x-preview)
SDK の最初の安定版をリリースしたら、その後、新しいプレビュー版 (2.x-preview と呼ばれる) の作業に取り掛かります。対象となる REST API のバージョンは 2015-02-28-Preview です。このバージョンにはプレビュー版の機能を段階的に追加していき、最終的には REST API と SDK で同等の機能を提供することを計画しています。その機能は以下のとおりです。
- カスタム分析機能 (英語)
- Azure Blob Storage Indexer
- フィールド マッピングによる Indexer のカスタマイズ
- インデックス定義、インデクサー、データ ソースの安全な同時更新を可能にする ETag のサポート
この作業の実施期間は、今年の第 1 四半期を予定しています。現時点では、各機能が提供される順序や正確な時期は未定ですが、作業の進展に合わせて随時情報を公開いたします。進捗状況については、GitHub (英語) でご確認いただけます。タイトルに「Search SDK」が含まれるプル リクエストやイシューを検索してください。
次期新機能のメジャー リリース (バージョン 2.x)
2.x-preview のリリース後まもなく、REST API の新しい確定版の 2.x-preview に含まれる機能の一般提供が開始されます。さらに、その後すぐに .NET SDK のバージョン 2.x (暫定) がリリースされる予定です。その後の目標は、REST API の提供開始から 1 か月以内に、それらの新機能を .NET SDK でも提供することです。この目標は、プレビュー版の機能にも当てはまります。
1.0-preview での変更点とその理由
他の多くの Azure SDK と同様に、Azure Search SDK もコード生成ツールと共通のランタイム ライブラリを利用して開発されています。コード生成ツールを使用する目的は、Azure Search SDK を他の言語やプラットフォームに容易に移植するためです。また、他の Azure SDK とデザインや操作性が統一されることで、Azure プラットフォームが全体的に使いやすくなるというメリットもあります。そのためには、共通の例外クラス (CloudException)、組み込みの再試行ポリシー、共通の認証方法などを提供する共通ランタイム ライブラリも不可欠です。
Azure Search .NET SDK の以前のバージョンの開発には、Hyak と呼ばれるマイクロソフトの社内用コード生成ツールと、それに対応する Hyak.Common ランタイム ライブラリが使用されていました。しかし、バージョン 1.0-preview から、AutoRest (英語) というオープン ソースの新しいツールに移行しました。このツールには、新しい共通ランタイム ライブラリも含まれます。このツールへの移行には多額の投資を行いましたが、効果は既に現れ始めており、そのメリットは今後も長期にわたって続くものと考えられます。以下に、Azure Search SDK に AutoRest を使用するメリットの一部をご紹介します。
- AutoRest によって生成された C# コードでは、シリアル化に JSON.NET (英語) を使用します。これにより、1.0-preview にはクライアント側の強力なシリアル化機能 (英語) が追加され、独自にカスタマイズしたモデル クラスを Azure Search のインデックス スキーマに簡単にマッピングできるようになりました。
- AutoRest の入力値には、Swagger (英語) の仕様が利用されます。オープン ソースの Swagger は、REST API を指定するための形式として広く使用されています。Hyak の独自の仕様から Swagger に切り替えたことにより、Azure Search SDK への新機能の追加が容易になりました。さらに、Swagger を使い慣れているお客様にとっては、Azure Search REST API の二次参照として Swagger の仕様 (英語) を利用できるというメリットもあります。注: 現時点では Swagger でモデル化されていない API もありますが、利用可能な API は今後順次追加される予定です。
- 生成されたコードでは、HTTP レベルのメソッドと、モデル クラスを直接操作する上位レベルの簡易メソッドが明確に区別されるようになりました。たとえば、Indexes.Create メソッドでは、IndexDefinitionResponse が返される代わりに、Index オブジェクトが直接返されるようになりました。
- AutoRest では、コード生成バックエンドとして Razor テンプレート (英語) が使用されます。そのため、新しいターゲット言語のサポートをとても簡単に追加できるようになりました。これにより、今後 Azure Search SDK をより多くの言語やプラットフォームに移植できます。
AutoRest への移行は既に完了したため、REST API と .NET SDK で同等の機能を提供するための最終的な作業に着手する準備ができました。この作業は、今後数回の SDK のリリースにわたって行われる予定です。
まとめ
.NET SDK の一般提供版のリリースと、Azure Search の REST API と .NET SDK における同等の機能の実現は、Azure Search チームの最優先事項です。今回は、その第 1 段階として SDK のバージョン 1.0-preview をリリースしました。以下は、この目標を達成するための今後のリリース予定をまとめた表です。
.NET SDK のバージョン |
REST API のバージョン |
機能 |
提供開始予定 |
1.1 |
2015-02-28 |
Lucene クエリ構文 |
2016 年 2 月 |
2.x-preview |
2015-02-28-Preview |
カスタム分析機能、Azure Blob Indexer、フィールド マッピング、ETag |
2016 年第 1 四半期より各機能の提供を開始 |
2.x |
API の新しい確定版 |
2.x-preview と同じ |
2.x-preview の完成後まもなく |
上記のバージョンがリリースされるまでの間、ぜひバージョン 1.0-preview をお試しになり、フィードバックをお寄せください。問題が発生した場合は、Azure Search の MSDN フォーラム (英語) にてご質問ください。また、バグを発見した場合は、Azure .NET SDK GitHub リポジトリ (英語) からご報告をお願いいたします。担当者が確認しますので、タイトルの最初に必ず「Search SDK: 」と記載してください。
今後も Azure Search をよろしくお願いします!