こんにちは、赤澤です。
今回もSitecoreに関して書きたいと思います。
Sitecoreは非常に優秀なCMS(コンテンツマネジメントシステム)です。
CMSの標準機能として独自データの定義(Sitecoreではテンプレートといいます)を行い管理することが可能です。たとえば「お知らせ情報」「会社情報」「商品情報」等といった様々な情報を、お使い頂く企業様毎に合わせて定義・運用していくことが可能です。
あらゆる情報をSitecoreの使い勝手の良い管理画面を用いて運用していくことができますので、管理や作業効率の面でもとてもメリットがあります。
ただし、ある程度の規模の企業様になりますと例えば「商品情報」はすでに専用のデータベースをお持ちであるということが珍しくありません。
勿論そういった情報をSitecoreに入れて管理することも可能ですが、既に専用のデータベースがあるのであれば、Sitecoreは情報コンテンツ/商品情報は既存のデータベース。と役割を分けた上でシステム統合することがデータ移行及び運用移行のコスト面で圧倒的にオススメです。
そこで、今回はSitecoreと外部データの連携ということについて簡単に説明させていただきます。
なお、本記事はSitecore Advent Calenderの12/23分の記事となります。サイトコア原水さん、参加させていただきありがとうございます。
※ほかのアドベントカレンダー記事に見習い、海外で撮った写真をタイトルとして利用しています。今回は数年前に旅行で訪れた韓国の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トレンドで表示してみたいとおもいます。
ひとつのキーワードを指定すると、候補のキーワードを併せてトレンドを表示できる。というページになる予定です。
少し細かいですが、実際の作業の流れをご覧ください。
ワイルドカードアイテムを作成します
レイアウトの設定はサンプルアイテムのものをそのままつかいます
ワイルドカードアイテムがページを表示できるようになりました
外部連携用のサブレイアウトを作成しました
ワイルドカードアイテムに先ほど造ったサブレイアウトを設定します
Googleトレンドのサイトからグラフ埋め込みタグを表示してサブレイアウトに埋め込みます
サブレイアウトにパーツを張り付けて、キーワードを外部連携から取得するように変更します
指定のURLをもとにGoogleサジェストの結果キーワードを取得するロジックはC#コードで実装します。(説明用プログラムのため入力チェックなどは割愛しています)
以上で開発作業は終了です。
では実際にURLを変えて動作を確認してみましょう。
「サイトコア」とそれに関連する候補でトレンド表示してみました
「クリスマス」とそれに関連する候補でトレンド表示してみました
最後に
Sitecoreと外部システムとの連携を行うカスタマイズが非常に簡単であることがお分かりいただけたかと思います。
Siteocreは導入実績が多くそれだけユーザーに使われている仕組みだけあって、相当に高機能で扱いやすい仕組みです。ただ、それだけではなくあらゆる個所でカスタマイズが可能です。通常のCMSではカバー出来ない範囲も様々なシステムを組み合わせることで、柔軟にそれぞれの問題に応じた解決アプローチを取ることができます。
Webは移りかわりが早いもの。色々なシステムと連携して素早く価値を出していきたいですね。
おまけ
URLとアイテムのマッピングを便利にしてくれるSitecoreのシェアードソースモジュールがありますので、これを使うともう少し楽をして実装ができるようです。