Sitecoreでの外部データ連携(ワイルドカードアイテムの利用)

こんにちは、赤澤です。
今回もSitecoreに関して書きたいと思います。

Sitecoreは非常に優秀なCMS(コンテンツマネジメントシステム)です。

CMSの標準機能として独自データの定義(Sitecoreではテンプレートといいます)を行い管理することが可能です。たとえば「お知らせ情報」「会社情報」「商品情報」等といった様々な情報を、お使い頂く企業様毎に合わせて定義・運用していくことが可能です。

あらゆる情報をSitecoreの使い勝手の良い管理画面を用いて運用していくことができますので、管理や作業効率の面でもとてもメリットがあります。

ただし、ある程度の規模の企業様になりますと例えば「商品情報」はすでに専用のデータベースをお持ちであるということが珍しくありません。

勿論そういった情報をSitecoreに入れて管理することも可能ですが、既に専用のデータベースがあるのであれば、Sitecoreは情報コンテンツ/商品情報は既存のデータベース。と役割を分けた上でシステム統合することがデータ移行及び運用移行のコスト面で圧倒的にオススメです。

そこで、今回はSitecoreと外部データの連携ということについて簡単に説明させていただきます。


なお、本記事はSitecore Advent Calenderの12/23分の記事となります。サイトコア原水さん、参加させていただきありがとうございます。

NSeoul Tower
※ほかのアドベントカレンダー記事に見習い、海外で撮った写真をタイトルとして利用しています。今回は数年前に旅行で訪れた韓国のNソウルタワーの写真です。

ワイルドカードアイテムで外部データ連携

URLとアイテムの概念

Sitecoreではコンテンツ(Sitecoreではアイテムといいます)をコンテンツツリーというツリー形式で整理して保持しています。
URLとコンテンツツリー上のアイテムの位置がイコールになっているため、URLを見るとどのデータが表示されているかが直感的に分かるため、運営もしやすくなっています。

しかし、このことはアイテムとして存在しない場合は基本的にページ表示できないということを意味します。

では商品IDをキーに商品ページを表示したい。といったニーズがあった場合、商品IDの数だけアイテムをつくるのでしょうか?それはナンセンスです。

ワイルドカードアイテム

そこでワイルドカードアイテムです。

ワイルドカードアイテムはアイテム名が「*」(半角アスタリスク)となっているアイテムのことで、任意のアイテム名として振る舞ってくれます。

例えば
http://yourhost/item/2
http://yourhost/item/92351
http://yourhost/item/a23852
といったURLでアクセスさせたいとき、通常であればそれぞれのアイテムが必要ですが、

/item/*

というアイテムを作成することで、全てのリクエストをワイルドカードアイテムで受けることができます。

その後はサイトコアの表示パーツの中でURLから商品IDを取得すれば、外部システムとやり取りをすることが可能です。

実際に外部データ連携してみましょう

では、実際にSitecoreの外にあるシステムと連携してみたいと思います。

今回はサンプルということで、URLであたえられた文字列を使って外部のWebサービスからデータ取得して表示する。という例を用いて開発の流れをお見せしたいと思います。

具体的にはURLで与えられた文字列を元にGoogleのサジェストAPIに接続して検索候補キーワードを取得。そのキーワード群をGoogleトレンドで表示してみたいとおもいます。
ひとつのキーワードを指定すると、候補のキーワードを併せてトレンドを表示できる。というページになる予定です。

少し細かいですが、実際の作業の流れをご覧ください。

wildcard-item_1

ワイルドカードアイテムを作成します

wildcard-item_2_layout

レイアウトの設定はサンプルアイテムのものをそのままつかいます

wildcard-item_3_site

ワイルドカードアイテムがページを表示できるようになりました

wildcard-item_5_sublayout_create

外部連携用のサブレイアウトを作成しました

wildcard-item_layout

ワイルドカードアイテムに先ほど造ったサブレイアウトを設定します

wildcard-item_8_google

Googleトレンドのサイトからグラフ埋め込みタグを表示してサブレイアウトに埋め込みます

wildcard-item_9_impl

サブレイアウトにパーツを張り付けて、キーワードを外部連携から取得するように変更します

wildcard-item_10_impl

指定のURLをもとにGoogleサジェストの結果キーワードを取得するロジックはC#コードで実装します。(説明用プログラムのため入力チェックなどは割愛しています)

以上で開発作業は終了です。

では実際にURLを変えて動作を確認してみましょう。

wildcard-item_11_result

「サイトコア」とそれに関連する候補でトレンド表示してみました

wildcard-item_12_result

「クリスマス」とそれに関連する候補でトレンド表示してみました

最後に

Sitecoreと外部システムとの連携を行うカスタマイズが非常に簡単であることがお分かりいただけたかと思います。

Siteocreは導入実績が多くそれだけユーザーに使われている仕組みだけあって、相当に高機能で扱いやすい仕組みです。ただ、それだけではなくあらゆる個所でカスタマイズが可能です。通常のCMSではカバー出来ない範囲も様々なシステムを組み合わせることで、柔軟にそれぞれの問題に応じた解決アプローチを取ることができます。

Webは移りかわりが早いもの。色々なシステムと連携して素早く価値を出していきたいですね。

おまけ

URLとアイテムのマッピングを便利にしてくれるSitecoreのシェアードソースモジュールがありますので、これを使うともう少し楽をして実装ができるようです。

http://trac.sitecore.net/WildcardModule/


ネクストスケープ企業サイトへ

NEXTSCAPE

検索する

タグ

メタデータ

投稿のRSS

著者

2010年末あたりからSitecoreという製品を利用したプロジェクトに関わっているエンジニアです。

Sitecore MVP(2013)に選ばれました。
Web、Sitecoreに興味があります。
「赤澤 光世」さんの全ポストを読む