カテゴリ「SharePoint 2013」の117件の投稿 
Internet Explorer の互換モードと SharePoint についての注意点
Internet Explorer (以下、IE) には互換モードがあります。たとえば、IE 11 を使っていた場合でも、そのページを開く場合は IE9 と同等の機能で表示するといったことが可能です。
どの互換モードを使うかは、Webサーバー側でサイト単位で設定したり、Webページに meta 要素を追加したり、HTTPヘッダーを指定したりすることで決まります。場合によっては 組織内のシステム管理者側で設定するグループポリシーの影響も受けます(参考:Group Policy and compatibility with Internet Explorer 11)。
SharePoint の場合は、マスターページに設定される meta 要素が影響します。meta 要素は次のような記述です(IE9対応モード指定の例)。
<meta http-equiv="X-UA-Compatible" content="IE=9">
この記述はオンプレミスと Office 365 (SharePoint Online)とで違いがあります。さらに既定のマスターページによっても違いがあります。なお、以下に記述する内容は今後更新される可能性が高いため 2015年8月現在の状況として記載しておくことに留意してください。
[オンプレミスの SharePoint 2013 SP1 以降の状況]
オンプレミスの SharePoint Server 2013 が持つ既定のマスターページは seattle.master と oslo.master です。まず、seattle.master を見てみると下記の通り IE10 との互換性を確保するように指定されていることがわかります。
同じく Oslo.master も確認してみると、seattle.master と同様に IE=10 となっています。
結論としては、いずれのマスターページを使用していても IE10がターゲットになっているということです。
[Office 365 (SharePoint Online)]
続いてクラウド環境である Office 365 ではどうでしょうか? ちょっと様相が変わります。まず、seattle.master を見てみましょう。meta タグでの指定が見当たらず、その代り次の SharePoint サーバーコントロール (SharePont:IECompatibleMetaTag)が定義されています(ちなみに、このサーバーコントロールについて調べてみたのですが、現時点では何の情報も公開されおりませんので、結果から推測する挙動を推測するしかありません)。
このマスターページを使っている SharePoint サイトのページをレンダリングしたところ、今のところ生成されたソースは以下の通り IE10 互換になっています。Oslo.master についても同様です。
ところで、SharePoint 2013 からは HTML マスターページという新しい機能が追加されています。この機能は、発行サイトもしくは 「SharePoint Server 発行」フィーチャーをアクティブ化すると利用できます。この機能により、master ページではなく、これに関連づく HTMLファイルを使ってデザイン変更を行えるようにするというもので、これによって SharePoint Designer がなくとも、メモ帳や Dreamweaver などでも編集が手軽にできるようになったわけです。HTML側を編集すると、これに合わせて master ページを自動生成してくれるという仕組みです。
さて、この HTMLマスターページの側を確認すると、実は IE9 互換モードになっています。
さて、挙動を確認してみましょう。HTMLマスターページ既定の seattle.master および oslo.master のいずれを指定しても、レンダリング時には既定では IE10 モードになるようです。
しかし、seattle.html もしくは oslo.html をコピーして作成した独自のマスターページを適用するとどうでしょうか。下記のように IE9 と IE10 の両方の互換モードが追加されてしまいます。結果として IE9 互換モードに引きずられます。そのため、IEに関しては、CSS3 のほとんどが利用できなくなってしまいます。
※IE9互換モードにならないようにするには、このタグを削除してしまいたいところですが、このタグを削除すると対応する *.master が壊れてしまうというトラブルに見舞われました。SharePont:IECompatibleMetaTag サーバーコントロールが関係していそうですが、このトラブル対応は修正が厄介であるため、最善策としては削除ではなく、meta要素の属性を IE=10 や IE=Edge に変更するなどといった対応を行った方がよいようです。
[結論]
マスターページのカスタマイズは、もともと高度なものであり、極力行わずにできるだけ CSS のみで対応していきたいところですが、フッターを追加したりしたい場合は、どうしても若干の変更は必要です。また、全社向けの情報発信ポータルサイトでは見栄えが重視されるため、局所的にはカスタム作成のマスターページを使うことになります。この時、上記のような挙動を意識しておかないと、HTML5 や CSS3 対応にしていく際に、予想した結果とならないことになります。十分にご注意ください。
[参考]
SharePoint REST API - JSON Light
SharePoint では REST API を使用した SharePoint コンテンツへの CRUD 処理が行えます。以前は詳細(Verbose) OData メタデータのみをサポートしていましたが、現在では JSON Light もサポートしています。この対応は、オンプレミスでは Service Pack 1 のアップデートで行われ、既に Office 365 側も利用できるようになっています(※ SharePoint とは別に、WCF Data Services 5.0 は既に OData v3 にて対応済みです)。
さて、JSON Light 対応とは何か? 簡単に説明しておきましょう。
従来は、REST API を呼び出す際に要求ヘッダーに次のように指定していました。
"accept:application/json;odata=verbose"
このため、多くのSharePoint 資料は verbose を指定しています。
verbose 指定は現在ではオプション扱いです。verbose を指定することですべてのメタデータを取得してきます。しかし、開発者側からは特に使用する必要のないメタデータがある場合、これをすべて取得することはペイロードの増大につながるため、避けたいところです。
JSON Lightに対応することで、1.メタデータなし、2.最小限、3.完全 のいずれかを指定できるようになりました。
1. メタデータを指定しない場合は、"accept: application/json; odata=nometadata" と指定します。
2. 最小限のメタデータのみでよい場合は、 "accept: application/json; odata=minimalmetadata" と指定します。なお、メタデータ要求を明示しない " " の場合は、既定値はこの minimalmetadata 指定をした場合と同じです。
3. すべてのメタデータを取得したい場合は、従来通り記載します。
ちなみに、Office Blog に公開されていてる記事では、リストからいくつかのリスト アイテムを要求した場合の応答データサイズが計測されています。
- verbose : 46,647バイト
- minimalmetadata : 11,173バイト
- nometadata : 6,832バイト
不必要なメタデータの取得はしないよう心がける必要がありますね。
[SP2013] July 2015 CU
2015/7/14 付でオンプレミスの SharePoint Server 2013 では、7月のCUが公開されています。これに伴い、下記ページも更新しました。
今回の更新では、検索関係の更新がいくつかあります。なかでも検索結果のランキング調整などのための統計データを格納している Analytics Reporting Database のスキーマが更新されているため、更新プログラム適用後は次のコマンドを実行することで、構成ウィザードを実行する必要があります。これを実行しないと、クロールが動かなくなってしまいます。
iisreset psconfig.exe -cmd upgrade -inplace b2b
製品構成ウィザードはサーバーセットアップ時に使用する以外に、このように更新プログラム適用後に実行することで SharePoint が使用しているデータベースの更新なども行います。
ちなみに、既存の Analytics Reporting Database は今回の更新によりURLのサポートが 4000文字まで拡大するということですが、具体的に明記されていないものの、おそらくデータベース内の ItemUri カラムのことでしょう。更新プログラム適用前は、この最大文字数は 2000 となっています。
[既存システム]
JavaScript による SharePoint サイト上での開発サンプル
SharePoint 2013 および Office 365 の SharePoint Online 上では、JavaScript を使って様々なソリューション開発が可能です。弊社コースである「Microsoft SharePoint 2013 クライアント サイド開発入門」コースでは、JavaScript を使った基本的な開発手法を網羅的に身に付けられるようになっています。
演習では次のような、ユーザーニーズのある機能を実装します。
- 緊急情報をポータルトップに表示する。掲示情報のメンテナンスはユーザーが手軽に行える。
- 緊急のメールをポータルトップから簡単に一斉配信できる
- お知らせ情報の見栄えを華やかにカスタマイズする
- 特定の種類のドキュメントを手軽に検索できる、カスタム検索ページを作成する
演習内容の紹介動画を公開しておりますので、手軽につくれる「こんなの欲しかった」というものがあれば、ご受講をご検討くださいませ。
また、ちょっとかじったことがあるというような初級の JavaScript 開発者の方も、中級レベルの知識が身に着けられるようなテキスト構成にしています。SharePoint のサンプルコードなどを読むには中級レベル程度の知識は必要です。たとえば、次のような JavaScript 関係の用語をうまく説明できないなぁという方も、スキルアップ目的に参加をご検討いただけると幸いです。
- 厳格モード
- function式とfunction文
- オブジェクト リテラル
- クロージャー
- プロトタイプ