1728649635
2024-10-10 22:48:00
Optimizely Graph の概要
グラフを最適化する は、あらゆるアプリケーションとシームレスに統合できるように設計された、最先端のヘッドレス コンテンツ管理ソリューションです。これにより、開発者は GraphQL を使用した統合グラフ構造を通じてコンテンツにアクセス、操作、クエリできるようになります。このアプローチにより、複数のプラットフォームにわたる効率的かつ柔軟なコンテンツ配信が可能になります。
動的機能を備えた Optimizely Graph は、パフォーマンスと柔軟性が重要なコンテンツ駆動型アプリケーションに最適です。コンテンツ管理、検索性、配信が大幅に強化され、エンタープライズレベルのデジタルエクスペリエンスのための堅牢な基盤が提供されます。
SDK は何を提供しますか?
新しい Optimizely Graph SDK 構成とセットアップを簡素化することで、プラットフォームの能力を次のレベルに引き上げます。この NuGet パッケージは、基礎となる API リクエストの複雑さを抽象化し、開発者が C# で最小限の労力で、コンテンツ タイプの構成、データの構築、Optimizely Graph とのコンテンツの同期を行うことができるようにします。
SDK は、あらゆる .NET バックエンド アプリケーションに簡単に統合できるように設計されています。これにより、開発者は外部ソースからコンテンツをプッシュできるようになり、特定のビジネス ニーズに合わせた柔軟なコンテンツ管理プロセスが可能になります。
仕組みは?
Optimizely Graph SDK を使い始めるのは簡単です。まず、新しいインスタンスを初期化します。 グラフソースクライアント 静的を呼び出すことによって Create 方法。以下に示すように、ベース URL、ソース、アプリケーション キー、およびシークレットを渡す必要があります。
var client = GraphSourceClient.Create( new Uri("https://cg.optimizely.com"), "source", "application-key", "secret" );
初期化すると、任意の C# クラス オブジェクトを使用してコンテンツ タイプを構成できます。このシームレスな統合により、既存のアプリケーションのコードベース内でコンテンツを直接管理できるようになります。
たとえば、メニューのコンテンツを構成する必要があるカフェを想像してください。 Optimizely Graph SDK を使用すると、C# クラスを使用してメニューの構造をモデル化し、プロセスを効率的かつ直感的に行うことができます。以下はカフェのサンプルクラス定義です。
public class Cafe { public string Name { get; set; } public DateTime Established { get; set; } public Location Address { get; set; } public Menu Menu { get; set; } } public class Location { public string City { get; set; } public string State { get; set; } public string Zipcode { get; set; } public string Country { get; set; } } public class Menu { public Beverage Beverage { get; set; } public Food Food { get; set; } } public class Beverage { public string Name { get; set; } public double Price { get; set; } public List<string> Sizes { get; set; } } public class Food { public string Name { get; set; } public double Price { get; set; } public bool IsAvaiable { get; set; } }
上記の C# オブジェクトの例では、複数のデータ型、クラス型、ネストされた型を表現する方法を示しました。これらはすべて Optimizely Graph を使用して簡単に構成できます。この柔軟性により、複雑なコンテンツ構造をアプリケーション内で直接モデル化できます。
SDK は、セットアップと構成の複雑さを抽象化することで、開発者がコンテンツ管理の詳細に行き詰まることなく、動的で高性能なアプリケーションの構築に集中できるようにします。
コンテンツタイプの構成
ここで、さらに一歩進めて、前に初期化したクライアントを使用して、Optimizely Graph でこれらのタイプを構成しましょう。わずか数行のコードで、効率的にインデックスが作成されるようにコンテンツをマップおよび構成できます。
client.ConfigureContentType() .Field(x => x.Name, IndexingType.Queryable) .Field(x => x.Established, IndexingType.Searchable) .Field(x => x.Address, IndexingType.PropertyType) .Field(x => x.Menu, IndexingType.PropertyType); client.ConfigurePropertyType () .Field(x => x.City, IndexingType.Queryable) .Field(x => x.State, IndexingType.Queryable) .Field(x => x.Zipcode, IndexingType.Searchable) .Field(x => x.Country, IndexingType.Searchable); client.ConfigurePropertyType
インデックスの種類の説明
上の例では、いくつかのインデックス タイプを使用しました。 プロパティタイプ、 検索可能、 そして クエリ可能。これらのタイプを理解することは、Optimizely Graph によるコンテンツ フィールドのインデックス作成方法を最適化するために重要です。
- プロパティタイプ コンテンツ構造内のネストされたデータ オブジェクトに使用されます。
- クエリ可能 「contains」演算子のサポートにより、特定のフィールドによるフィルタリング、順序付け、およびファセットが可能になります。
- 検索可能 「一致」演算子、順序付け、およびファセットのサポートにより、ベクトル化されたフィールドを使用したフルテキストおよびセマンティック検索が可能になります。
これらのインデックス作成オプションは、より高速な読み取りとより正確なクエリを実現するためにコンテンツを構成するのに役立ちます。
コンテンツタイプの保存
コンテンツ タイプを保存する前に、優先言語を設定することが重要です。この例では英語を使用しています。
client.AddLanguage("en");
これで、初期化されたクライアントを使用してコンテンツ タイプを保存できるようになります。 SDK はバックエンドでのリクエストの構築を処理し、ユーザーに代わって Optimizely Graph と対話します。
await client.SaveTypesAsync();
この手順が完了すると、次の場所にアクセスできます。 グラフUI 構成されたタイプを表示および照会します。
Graph UI は、コンテンツ タイプに関するドキュメントと、GraphQL クエリを構築するための役立つヒントを提供します。
データの同期
コンテンツを同期しましょう。これを行うには、クラス オブジェクトのインスタンスを作成し、それをクライアントに渡すだけです。を使用した例を次に示します。 Cafe クラス:
var exampleDataInstance1 = new Cafe { Name = "Optimizely's Awesome Cafe", Established = new DateTime(2024, 06, 12), Address = new Location { City = "New York", State = "NY", Zipcode = "10003", Country = "USA" }, Menu = new Menu { Beverages = new List{ new() { Name = "Espresso", Price = 4.99, Sizes = new[] { "S", "M" } }, new() { Name = "Latte", Price = 5.99, Sizes = new[] { "M", "L" } }, new() { Name = "Cappuccino", Price = 6.99, Sizes = new[] { "S", "M", "L" } } }, Food = new List { new() { Name = "Bagel", Price = 5.25, IsAvaiable = true }, new() { Name = "Croissant", Price = 3.89, IsAvaiable = true }, new() { Name = "Cinnamon Roll", Price = 4.99, IsAvaiable = false } } } };
コンテンツを Optimizely Graph にプッシュするには、各データ インスタンスに一意の ID を割り当てる必要があります。
次の例では、カフェの名前と都市を使用して一意の ID を生成します。この ID は、後でコンテンツを識別して更新するために重要です。同じIDのコンテンツを再度プッシュすると上書きされます。
を使用します。 SaveContentAsync コンテンツをプッシュする方法:
await client.SaveContentAsync( generateId: (x) => $"{x.Name}_{x.Address.City}", exampleDataInstance1 );
SDK は、データの配列を渡すことによって複数のオブジェクトを一度にプッシュすることもサポートしています。以下の例は、これがカンマ区切りのパラメータリストであることを示しています。
await client.SaveContentAsync( generateId: (x) => Guid.NewGuid().ToString(), exampleDataInstance1, exampleDataInstance2, etc );
次は何ですか?
それでおしまい!コンテンツ タイプが正常に構成され、データが Optimizely Graph と同期されました。
これで、グラフ UI に戻り、クエリを実行してデータを取得できるようになります。クエリと応答がどのようになるかの例を次に示します。

Optimizely Graph の大きな利点の 1 つは、GraphQL を通じて提供される柔軟性です。強力な Elasticsearch バックエンドを最大限に活用して、データを効率的にクエリすることで、正確なビジネス ニーズに合わせてクエリを調整できます。
GraphQL による柔軟性
GraphQL は結果をフィルタリングして絞り込むための柔軟性を提供し、効率的で的を絞ったコンテンツ管理を可能にします。任意の GraphQL クエリ パラメーターを利用して、クエリを特定のニーズに合わせて調整し、コンテンツの取得を正確かつ効果的に行うことができます。
独自のメニューを提供するカフェを追加するなど、コンテンツが成長するにつれて、セットアップ中に構成された任意のフィールドまたはネストされたフィールドを使用してデータを簡単にクエリできます。たとえば、ストックホルムでエスプレッソを提供するカフェの名前を検索するには、次のような GraphQL クエリを作成できます。
{ Cafe(locale: en, where: {Address: {City: {eq: "Stockholm"}}, _and: {Menu: {Beverages: {Name: {eq: "Espresso"}}}}}){ items{ Name } } }
この柔軟性により、非常に具体的なクエリを作成でき、アプリケーションが最小限のオーバーヘッドで必要なデータを正確に取得できるようになります。
結論
Optimizely Graph Source .NET SDK は、Optimizely Graph との統合プロセスを簡素化し、高速化します。 API リクエストの複雑さを抽象化し、コンテンツ タイプの構成を合理化することで、開発者は高パフォーマンスのアプリケーションの構築に集中できるようになります。
将来的にはこの SDK を他の技術スタックに拡張する予定で、Optimizely はコンテンツ管理をよりアクセスしやすくし、開発者によりシンプルなソリューションを提供し続けます。
#Optimizely #Graph #Source #.NET #SDK #の紹介