Quantcast
Channel: Japan SharePoint Support Team Blog
Viewing all 138 articles
Browse latest View live

Office 365 テナント上の複数のYammer ネットワークについて

$
0
0

こんにちは、SharePoint サポート チームの関 友香です。

 

先日 (2018 3 31 日時点) Office 365 のメッセージ センターにて、Office 365 テナント上に存在する複数の Yammer ネットワークの統合の計画がアナウンスされました (MC133153)。これまでにも多数のお客様からOffice 365 テナントに多数存在している Yammer ネットワークについてご質問をお寄せいただいておりますので、本ブログにてご利用中のテナントの Yammer の確認方法、複数の Yammer ネットワークが存在している背景、Yammer ネットワーク統合に向けた対応方法などをご紹介させていただきます。

<目次>
1.
既存の Yammer ネットワークの確認
2. 複数のYammer ネットワークが作成された背景
3. Yammer ネットワークの統合
4. Yammer ネットワークの管理


1. 既存の Yammer ネットワークの確認

Office 365 テナントに多数のカスタム ドメインを登録している環境では、複数の Yammer ネットワークが作成されている可能性がございます。まずは、Yammer ネットワークの管理メニューから現在の Yammer ネットワークの構成状況をご確認下さい。

ネットワークの構成確認方法

1) Office 365 の全体管理者にて、Yammer ネットワーク (. https://www.yammer.com/contoso.onmicrosoft.com) にログインします。
2) 画面左上の [歯車ボタン] - [ネットワーク管理者] をクリックします。
3) [
ネットワーク] メニューから [ネットワーク移行] をクリックします。
4) [
手順 1/3 - 検証済みドメインのチェック/追加] 画面の以下の情報を確認します。

*下記の赤枠部分に Office 365 上のカスタム ドメインが多数存在している場合、お客様の環境では、テナント上に複数の Yammer ネットワークが存在している構成であることが確認できます。

これらの Yammer ネットワークは Office 365 テナントに紐づいており、この複数の Yammer ネットワークが上記アナウンスの対象となります。個々の Yammer ネットワークの管理方法をご案内する前に、このような構成となった背景を以下にご説明します。

 

2. 複数のYammer ネットワークが作成された背景

Yammer は元々 Office 365 とは別のサービスであったため、利用者の保持しているドメインをもとに Yammer 単体のネットワークを作成することが可能でした。上図の contoso.com などの Yammer ネットワークは、過去に無償版の Yammer ネットワークとして作成されたといえます。

これらの無償版Yammer ネットワークは、2016 年以降に展開された機能変更により、Office 365 テナントに所属することになり、Office 365 テナント上のカスタム ドメインに Yammer ネットワークが作成されている場合には対象の Yammer ネットワークを Office 365 テナントに紐づける動作となりました。(Yammer ネットワークがテナントに紐づくタイミングで、無償版からエンタープライズ版に自動的にアップグレードされます。) その結果、これまではテナントとは独立して存在していた無償版の Yammer ネットワーク (. contoso.com) がテナントに追加され、テナント作成と同時に作成される contoso.onmicrosoft.com Yammer ネットワークと併せて、複数の Yammer ネットワークが存在する環境が構成されるようになりました。

なお、カスタム ドメインに Yammer ネットワークが作成されていない場合には、Office 365 の既定のドメインに紐づいている Yammer ネットワーク (. contoso.onmicrosoft.com) にドメインが統合されます。カスタム ドメインを登録することで新しい Yammer ネットワークがテナントに作成される動作とはなりません。

 

3. Yammer ネットワークの統合

このように複数の Yammer ネットワークが存在している環境では、Office 365 のユーザーは、テナントに紐づくいずれか一つの Yammer ネットワークのみにアクセスすることが可能であり、各 Yammer ネットワークはプライベートなソーシャル空間となっています。複数の Yammer ネットワーク環境では、管理者の意図に反して、ユーザーが想定外の Yammer ネットワークにアクセスしてしまう等のお問い合わせも多数およせいただいており、Yammer ネットワークやユーザーの管理が煩雑になりがちです。これらの多数存在する Yammer ネットワークを一つにまとめる作業が今回通知 (MC133153) されておりますネットワーク統合です。ネットワーク統合は Office 365 全体管理者でも実施することが可能ですので、管理者にて行うことができる統合作業の動作をもとに、統合時の注意点をいくつかご案内します。より詳細な情報はこちらの参考資料に記載がございますので、併せてご確認ください。

 

注意点

・ 統合元から統合先の Yammer ネットワークには、ユーザーのみ (ユーザーの名前やプロファイル情報など) が移行され、統合元の Yammer ネットワーク上のグループを含むコンテンツは移行されず削除されます。 外部グループも同様に削除されます。

・ 統合した Yammer ネットワークはもとに戻すことはできません。移行後はネットワークとコンテンツにアクセスすることはできません。

・ 移行元の Yammer ネットワークに外部ネットワークがある場合は、移行先の Yammer ネットワークに紐づき、外部ネットワーク参加者もそのまま維持されます。

 

4. Yammer ネットワークの管理

上述しましたように Yammer ネットワークの統合を行うことで、統合元のネットワークのコンテンツが削除されるなどの影響がございますので、事前に Yammer ネットワークの利用状況をご確認いただき、必要に応じてネットワーク上のコンテンツをエクスポートいただくことをおすすめします。以下に手順をご案内します。


Yammer ネットワークのユーザー数やメッセージ数を確認する

Office 365 全体管理者にてログイン可能な Yammer ネットワーク上からテナントに紐づく各Yammer ネットワークの利用状況 (ユーザー数、メッセージ数、および作成されている外部ネットワーク情報) を確認することが可能です。

Yammer ネットワークの利用状況の確認手順

1) Office 365 の全体管理者にて、Yammer ネットワークにログインします。
2)
画面左上の [歯車ボタン] - [ネットワーク管理者] をクリックします。
3) [
ネットワーク] メニューから [ネットワーク移行] をクリックします。
4)
 [次へ] をクリックします。
5) [
ステップ 2/3 - 移行する Yammer ネットワークを選ぶ] 画面にて、テナント上に存在する Yammer ネットワークの利用状況 (ユーザー数、メッセージ数、作成されている外部ネットワークの情報) が表示されます。

 

Yammer ネットワーク上のコンテンツやユーザー情報を確認する

Yammer ネットワークに認証管理者としてログインすることで、ネットワーク上のコンテンツを CSV ファイルにエクスポートすることが可能です。もともと無償版として作成された Yammer ネットワークの場合、管理者が存在しないと考えられますので、以下の方法 “Yammer 認証管理者の追加手順” を実施した上、”Yammer ネットワークのデータエクスポート手順” をお試しください。

 

Yammer 認証管理者の追加手順
1) Office 365 テナントに、以下の条件を満たすアカウントを用意します。

・ Yammer ネットワークのドメインのメールアドレスを持つユーザー (例. admin@contoso.com)

・ Office 365 テナントの全体管理者

2) 作成した管理者アカウントで Office 365 にログインします。
3) Office 365 アプリランチャーの Yammer タイルをクリックします。
4) 管理対象の Yammer ネットワークにアクセスします。アクセスしている URL のアドレスが https://www.yammer.com/<ネットワークのドメイン> であることを確認してください。
5) 画面左上の [歯車ボタン] をクリックし、下図のように [ネットワーク管理者] メニューが表示されることを確認します。

 

 

Yammer ネットワークのデータエクスポート手順

データ エクスポートの機能を利用することで Yammer ネットワーク上のメッセージ、ユーザー、トピック、グループの一覧が csv 形式でダウンロード可能です。ダウンロードしたデータをインポートする機能はございませんので、予めご了承ください。

1) 認証管理者権限を持つユーザーで Yammer にログインします。
2) 画面左上の [歯車ボタン] – [ネットワーク管理者] をクリックします。
3) [データをエクスポート] をクリックします。
4) 必要情報を入力し、[エクスポート] をクリックします。

- 補足 -
エクスポートされた csv 形式のファイルを Excel で開く場合、文字コードの影響で文字化けが発生しますので、以下のどちらかの方法をお試しください。

A. CSV ファイルをメモ帳で開き、上書き保存したファイルをダブルクリックで Excel で開く
B. Excel のデータインポート機能を使用し、 UTF-8 を指定してインポートする

 

[参考情報]

タイトル : Office 365 で Yammer のドメインのライフサイクル全体を管理する

アドレス : https://support.office.com/ja-jp/article/9d9f9ee8-7c56-4f50-81f3-aa0a8d761e14

タイトル : ネットワークの移行: 複数の Yammer ネットワークを統合する

アドレス : https://support.office.com/ja-jp/article/a22c1b20-9231-4ce2-a916-392b1056d002

 

今回の投稿は以上になります。

 

本情報の内容は、作成日時点でのものであり、予告なく変更される場合があります。


Word/Excel に .mpp ファイルをオブジェクトとして埋め込んだ場合の動作について

$
0
0

こんにちは、SharePoint サポートの森村です。
Word/Excel に .mpp ファイルをオブジェクトとして埋め込んだ場合に発生する現象についてご案内いたします。

Project クライアント製品にて作成した Project ファイル (.mpp ファイル) を、Word Excel 等の他の Office 製品のファイルに埋め込んで使用する際に、下記のような現象が発生する場合があります。

  • 非常に小さなサイズで .mpp ファイルが挿入される
  • オブジェクトを挿入後に、ダブルクリックで Project を起動しようとしても Word/Excel もしくは Project でエラーが発生して起動できないことがある

本現象は製品の制限であり、残念ながら回避策はありません。
このため、Project ファイル (.mpp ファイル) をオブジェクトとして埋め込む必要がある場合は、下記の対処方法をご検討ください。

対処方法

  1. Word/Excel [挿入] - [オブジェクト] を選択します。
  2. "新規作成" タブで "アイコンで表示" にチェックを入れます。
  3. "オブジェクトの種類" "Package" を選択後、[OK] を押下します。
  4. ファイル名欄に挿入されたい .mpp ファイルを指定し、[次へ] を押下します。
  5. ラベル名としてファイル名が表示されるのを確認し、[完了] を押下します。
  6. 挿入された Package オブジェクトをダブルクリックすると、Project クライアントが起動し、.mpp ファイルの内容が表示されます。

今回の投稿は以上です。


本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。

Adobe Flash Player 30 をインストールすると、動画が再生されなくなる問題

$
0
0

現在 Adobe 社の Flash Player の最新版 (バージョン 30 以降) をインストールした Windows 7 端末において、IE 11 を利用すると Microsoft StreamOffice 365 Video にアップロードした動画が再生できなくなる問題が報告されております。

Windows 7 の IE 11 を利用している場合のみ、Microsoft StreamOffice 365 Video の動画再生処理に Adobe Flash Player を利用しているため、影響範囲は Windows 7 IE 11 のみとなります。

 

現在開発部門にて本問題について調査を実施しておりますが、現時点で確認できている暫定対処は以下となります。

Windows 7 以外の OS を利用する

・サードパーティーのブラウザーを利用する

Adobe Flash Player をバージョン 29 以下にダウングレードする。

 

参考情報

Microsoft Stream/Office 365 Video でご利用いただけるブラウザーについての詳細は、以下の情報をご確認ください。

タイトル : Microsoft Stream FAQ
アドレス : https://docs.microsoft.com/ja-jp/stream/faq

タイトル : Office 365 ビデオを利用する
アドレス : https://support.office.com/ja-jp/article/ca1cc1a9-a615-46e1-b6a3-40dbd99939a6

* [ビデオを視聴する] を展開し、詳細をご確認ください。

 

本問題によりご迷惑をおかけしていることを深くお詫び申し上げます。

今後本問題について進展が確認できた場合は、本稿にて情報を公開していく予定です。

SharePoint 2013 以降の Search Service Application のタイマージョブについて

$
0
0
こんにちは。SharePoint サポートの清です。

SharePoint 2013, SharePoint 2016 の複数台構成の環境で、Search Service Application を作成後、検索トポロジーを変更いただく際にご留意いただきたいことをお知らせします。

 

現象

オンプレミスの SharePoint Server 製品では、Search Service Application の検索コンポーネントを複数のサーバーに配置するよう構成できます。

Search Service Application に関連する一部のタイマージョブについて、検索サービス アプリケーションを作成したサーバー (管理コンポーネントが最初に作成されたサーバー) に紐づくタイマージョブがあります。

これらのタイマージョブと現在の検索管理コンポーネントをホストするサーバーが一致しない場合や、ファームにタイマージョブが存在しない場合には、正常に動作しないことが報告されています。

 

- 詳細

サーバーの全体管理サイトから Search Service Application を作成いただくと、サーバーの全体管理サイトをホストするサーバーに管理コンポーネントが設定されます。

たとえば、サーバーの全体管理サイトから作成後、検索トポロジーを変更して他のサーバーに管理コンポーネントを構成した場合、変更後のサーバーでジョブが動作するようには構成されません。

その他、ジョブが動作しているサーバーをファームから削除した際、該当のジョブが削除される報告を確認しております。

 

Search Service Application のサーバー固有のタイマー ジョブとして報告されているものは以下です。

DisplayName Name
検索カスタム辞書の更新 Search Custom Dictionaries Update for Search Application <SSA GUID>
検索アプリケーション <Search Service Application 名> のクロール ログのクリーンアップ Crawl Log Cleanup for Search Application <SSA GUID>
<Search Service Application 名>  のクロール ストア パーティションの再調整 Rebalance crawl store partitions for <SSA GUID>
検索アプリケーション <Search Service Application 名> の利用状況分析タイマー ジョブ Usage Analytics Timer Job for Search Application <SSA GUID>
スペル チェックのカスタマイズのアップグレード Spelling Customizations Upgrade for Search Application <SSA GUID>
スペル チェック辞書の更新 Spelling Dictionary Update for Search Application <SSA GUID>
Search Service Application <Search Service Application 名> の分析タイマー ジョブ Analytics Timer Job for Search Service Application <SSA GUID>
検索アプリケーション <Search Service Application 名> 用のクエリ分類辞書の更新プログラムです。 Query Classification Dictionary Update for Search Application <SSA GUID>

 

対処方法

これらのタイマージョブは、Search Service Application の作成時に登録されます。

そのため、タイマージョブに問題が発生した場合には、Search Service Application を再作成することでタイマージョブを含めて作り直すことが可能です。

検索専用の SharePoint サーバーで、はじめから管理コンポーネントをホストさせる場合には、SharePoint 管理シェルより作成することをご検討ください。

 

<手順>

1) 検索コンポーネントをホストするサーバーにファーム アカウントでログオンし、[SharePoint 2013 管理シェル] または、[SharePoint 2016 管理シェル] を管理者権限で起動します。

2) 以下のコマンドを実行し、Search Service Application と、Search Service Application Proxy を新規に作成します。

$ssa = New-SPEnterpriseSearchServiceApplication -Name "SSA" -ApplicationPool "SharePoint Web Services Default";

$ssaproxy = New-SPEnterpriseSearchServiceApplicationProxy -SearchApplication $ssa -Name "SSA Proxy";

 

 

3) 検索トポロジーを構成します。以下は、2 台のサーバーに対して各検索コンポーネントを割り当てる例です。

Search01, Search02 は検索コンポーネントをホストするサーバー名に適宜変更ください。

$newTopology = $ssa.ActiveTopology.Clone()

$hostA = Get-SPEnterpriseSearchServiceInstance -Identity "Search01";

$hostB = Get-SPEnterpriseSearchServiceInstance -Identity "Search02";

 

# サーバー上で、検索サービス インスタンスがオンラインであることを確認します。

# オフラインの場合は、Start-SPEnterpriseSearchServiceInstance -Identity "Search01"; Start-SPEnterpriseSearchServiceInstance -Identity "Search02"; で開始できます。

$hostA;

$hostB;

 

New-SPEnterpriseSearchAdminComponent -SearchTopology $newTopology -SearchServiceInstance $hostA;

New-SPEnterpriseSearchCrawlComponent -SearchTopology $newTopology -SearchServiceInstance $hostA;

New-SPEnterpriseSearchContentProcessingComponent -SearchTopology $newTopology -SearchServiceInstance $hostA;

New-SPEnterpriseSearchAnalyticsProcessingComponent -SearchTopology $newTopology -SearchServiceInstance $hostA;

New-SPEnterpriseSearchQueryProcessingComponent -SearchTopology $newTopology -SearchServiceInstance $hostA;

New-SPEnterpriseSearchIndexComponent -SearchTopology $newTopology -SearchServiceInstance $hostA -IndexPartition 0;

 

New-SPEnterpriseSearchAdminComponent -SearchTopology $newTopology -SearchServiceInstance $hostB;

New-SPEnterpriseSearchCrawlComponent -SearchTopology $newTopology -SearchServiceInstance $hostB;

New-SPEnterpriseSearchContentProcessingComponent -SearchTopology $newTopology -SearchServiceInstance $hostB;

New-SPEnterpriseSearchAnalyticsProcessingComponent -SearchTopology $newTopology -SearchServiceInstance $hostB;

New-SPEnterpriseSearchQueryProcessingComponent -SearchTopology $newTopology -SearchServiceInstance $hostB;

New-SPEnterpriseSearchIndexComponent -SearchTopology $newTopology -SearchServiceInstance $hostB -IndexPartition 0;

 

 

4) トポロジーをアクティブ化します。完了に時間が掛かる場合がございます。

$newTopology.Activate();

$ssa.ActiveTopology;

 

 

 

今回の投稿は以上です。

本情報の内容は、作成日時点でのものであり、予告なく変更される場合があります。

 

SharePoint Online で CDN を利用する

$
0
0

こんにちは、SharePoint サポートの森 健吾 (kenmori) です。

今回は SharePoint Online で、パフォーマンス チューニングを行うにあたり、必須事項となりつつある CDN について、簡単にご紹介します。

 

CDN とは

CDN (Content Delivery Network) は、Web ページなどが参照する静的ファイルなどを利用者に提供するための最適化されたネットワークです。

SharePoint Online 管理シェルを使用して、CDN の有効化されると、CDN 配信元に指定されたコンテンツが、地理的に分散された複数の CDN エッジ サーバーにキャッシュされ、キャッシュ プロキシとして機能します (下図点線部分)

ユーザー アクセス時には、ユーザーより地理的に近い場所にあるサーバーにアクセスし、代わりにキャッシュから静的ファイル コンテンツを取得する動作となります。

SharePoint Online ではマルチテナントの共有サービスによるデータ規模や大規模なスケールアウトといった性質上、オンプレミス製品で使用されていた Web フロント エンド サーバーキャッシュなどが、一部利用できない制約があります。

サービス内部に効率的なキャッシュ保持ができないため、CDN の利用がパフォーマンス チューニングの要となります。SharePoint では、サイト内に存在する静的コンテンツの多くがデータベース内に格納されています。そのため、CDN を利用することは Web サーバー負荷にとどまらず、データベースへのアクセス負荷を減らすことにもつながりますので非常に効果的です。

SharePoint の CDN は、そのスコープから下記 2 つに分類されます。

 

プライベート CDN
・ユーザーがプライベートの配信コンテンツにアクセスできるのは、CDN 配信元 (ライブラリ) においてその権限を持っている場合のみです。
privatecdn.sharepointonline.com で始まるクエリ文字列付きのアドレス形式です。
・ページ ライブラリなど、発行機能による URL 自動書き換え機能によって生成されるもののみ有効です。

パブリック CDN
・ユーザー権限がチェックされないため、匿名でのアクセスが可能であり、高速となります。
・システム側のファイル (JavaScript) など、ユーザー データに分類されないファイルには最適です。
publiccdn.sharepointonline.com で始まり、クエリ文字列が付与されないアドレス形式です。
・パブリック CDN のアドレスを直接ハードコードすることが可能です (推奨はしない)

 

より詳細な情報につきましては、以下のサイトをご参考にしてください。

タイトル : Office 365 コンテンツ配信ネットワーク ( CDN) の使用
アドレス : https://docs.microsoft.com/ja-jp/sharepoint/dev/general-development/office-365-cdn

 

CDN を使用しやすいシナリオ

1. モダン UI

モダン UI (新しいエクスペリエンス) には、本投稿にあるような CDN の有効化に関わらず、標準で最新の Web 技術を駆使したパフォーマンス チューニングが組み込まれており、弊社としてはモダン UI をお勧めしております。

また、SharePoint Framework (SPFx) などの、新しいエクスペリエンスを主なフレームワークとして導入されたカスタマイズ手法については、自動的に CDN などに対応しているため、パフォーマンス問題を自動的に最適化したソリューションをユーザーに展開することが可能です。

2. クラシック発行ポータル

モダン UI を採用できない場合、新規で SharePoint Online をご利用いただく場合、全社ポータルなどを作成するにあたっては、発行ポータルのテンプレートをもとに、サイト コレクションを作成することをお勧めします。

発行ポータルは、パフォーマンスに関して様々な考慮が組み込まれております。

  1. 管理ナビゲーションを使用するナビゲーション設定 (構造ナビゲーションにはパフォーマンス上の問題があります)
  2. ぺージ ライブラリ (CDN アドレスへの自動書き換え対応) をベースとしてページ作成が可能。

 

発行ポータルは情報を公開するために最適化された基盤となります。これに対し、最も頻繁に使用されるチームサイトは、チーム単位でコラボレーションするための基盤となりますので、上記のような機能が標準では備わっておりません。

 

3. 発行機能を有効化し、ページライブラリを使用

運用中のサイトが別のテンプレート (. チームサイトなど) で作成されていて、サイトのページ ライブラリ (. /SitePages) などにページが格納されている場合、CDN アドレスの自動書き換え機能をご利用いただくことができません。

この場合は、サイト コレクションの機能から “発行インフラストラクチャー” を有効化し、サイトの機能から “発行” 機能を有効化した上で、ページ ライブラリ (. /Pages) をプロビジョニングしてください。

その上で、該当ライブラリにページを作成し、コンテンツ (Web パーツなど) を移し替えることをご検討ください。

 

なお、ページ ライブラリ上のページに Web パーツの移植が難しい場合については、後記に代替案として URL をハードコードする方法を説明しておりますが推奨はされません。

 

CDN の有効化手順

前提として CDN の有効化には SharePoint Online Management Shell をクライアント端末にインストールしておく必要があります。

 

タイトル : SharePoint Online Management Shell
アドレス : https://www.microsoft.com/ja-jp/download/details.aspx?id=35588

 

SharePoint Online 管理シェルを使用して CDN を有効化ください。

なお、CDN を有効化しても、展開元のアドレスを指定した場合は、元のデータを参照することが可能です。そのため、本 CDN 有効化手順によって既存システムに影響することはありません。

 

1) 作業端末にログインし、[スタート] から SharePoint Online Management Shell を管理者権限で実行します。
2) 以下のコマンドを実行します。

Connect-SPOService -Url https://tenant-admin.sharepoint.com

補足 : ご利用のテナントの SharePoint 管理センターアドレスを指定ください。

3) 資格情報を入力するダイアログが表示されるので、テナントの全体管理者権限、または SharePoint Online の管理者権限を所有するアカウントの情報を入力します。

4) 以下のコマンドを実行して、Private および Public CDN を両方有効化します。

Set-SPOTenantCdnEnabled -Enable $true

5) 以下のコマンドを定期的に実行し、CDN 展開元のリストにおいて (configuration pending) というテキストが表示されなくなるまで待ちます。

Get-SPOTenantCdnOrigins -CdnType Public
Get-SPOTenantCdnOrigins -CdnType Private

 

補足 : 上記展開元のリストに userphoto.aspx (ユーザーの顔写真) という記載もありますが、現在の動作では userphoto.aspx はキャッシュされません。

 

6) CDN の展開元パスを増やす場合は、フォルダパスを展開元として有効にするリソースのパスをフォルダー単位で指定します。

Add-SPOTenantCdnOrigin -CdnType Public -OriginUrl "<CDN を有効にするリソースが存在する URL>"

7) 作業が完了すると、指定したリソースのパスに存在する対象ファイル (. .js/ .png / .css) (参考: Get-SPOTenantCdnPolicies) などが、SharePoint Online が利用するプロキシサーバーに配置されるようになります。

 

ページ ライブラリにおける URL の書き換え機能

SharePoint Online のクラシック UI において CDN を利用する場合は、ページ ライブラリをご利用いただくことを推奨いたします。

URL の自動書き換え機能によって、以下のようなユーザー指定のパスも、レンダリング時に CDN アドレスに書き換わって描画されます。

下記例にあるようなプライベート CDNだけではなく、設定に応じてパブリック CDN アドレスにも自動的に書き換わります。

 

例. スクリプト エディタ Web パーツへの記載

HTML 描画時

なお、編集中のページでは、描画時に CDN アドレスに置き換わらない場合があります。ページをチェックインおよび発行した上で、動作を確認ください。

 

ページ ライブラリ以外の場合

CDN アドレスへの URL の書き換え機能は、発行機能に限定されます。そのため、サイトのページ ライブラリ (. SitePages) 内のページには適用されません。

事前にページ ライブラリに移行することを検討することをお勧めしますが、要件上不可能な場合は CDN アドレスを直接ハードコードする方法もございます。

なお、SharePoint では、この方法を推奨しておりません。推奨しない理由としては、CDN が何らかの理由によって利用できない場合、リンク切れなどの現象を引き起こす可能性があることに起因します。

 

上記の前提の上、ハードコードによる CDN のご利用には、パブリック CDN を使用することが前提となります。

Add-SPOTenantCdnOrigin コマンドで、パブリック CDN にキャッシュしたいコンテンツの配信先を追加で指定する必要があります。

 

一通り、コンテンツのパブリック CDN への展開元を指定した上で、ページ上の参照先アドレスを以下のように書き換えます。

 

置き換え前アドレス
https://tenant.sharepoint.com/sites/portal/SiteAssets/Script/customscript.js

置き換え先アドレス
https://publiccdn.sharepoint.com/tenant.sharepoint.com/sites/portal/SiteAssets/Script/customscript.js

ページ ライブラリではなくても、このようにハードコードすることで CDN のメリットを享受することは可能です。

なお、CDN のアドレスは、ブラウザーのアドレスバーに直接指定して呼び出しても反応しません。HTTP 要求の Referrer ヘッダーをチェックします。

そのため、HTML タグを記述してページから参照させて呼び出し、動作を確認する必要があります。

 

参考情報

SharePoint Online を最高のパフォーマンスでご利用いただくため、下記ベスト プラクティスを是非ともご参考にしてくださいますようお願いいたします。

タイトル : Office 365 のネットワーク計画とパフォーマンスのチューニング
アドレス : https://support.office.com/ja-jp/article/e5f1228c-da3c-4654-bf16-d163daee8848

タイトル : SharePoint Online のパフォーマンスの調整
アドレス : https://support.office.com/ja-jp/article/f0522d4a-fbf4-41f9-854e-c9b59555091d

今回の投稿は以上です。

 

SharePoint アプリにおけるライブラリへのアクセスについて

$
0
0

こんにちは、SharePoint サポート チームの福永です。

iOS SharePoint アプリを使いサイド リンク バーからドキュメント ライブラリ以外のライブラリ (画像ライブラリなど) にアクセスする場合において、OneDrive アプリが立ち上がり対象のライブラリにアクセスできない事象が発生することが確認されました。

そのため、本ブログでは本事象が発生する要因と回避策について、ご紹介させていただきます。

 

現象

SharePoint アプリでサイド リンク バーからファイルを扱うライブラリを開く場合、OneDrive アプリが起動します。

各種ライブラリは用途に応じた特殊なビューを備えておりますが、OneDrive アプリは標準的なビューのみに対応しているため、サイド リンク バーから画像ライブラリなどにアクセスすると、下記のエラーが発生しライブラリを開くことができない事象が発生します。

なお、現時点の動作ではライブラリで "既定" として設定されているビューがサイド リンク バーの URL として設定されている場合のみ、OneDrive アプリが起動します。

そのため、サイド リンク バーに設定する URL をライブラリの既定以外のビューに変更することで、SharePoint アプリ上で該当のページを表示することが可能です。

 

- 補足

画像ライブラリなど本事象が発生するライブラリは、既定ではサイド リンク バーに表示されません。

そのため、本事象は手動でサイド リンク バーにライブラリの URLを設定いただいている場合にのみ発生します。

 

回避策

上述の通りライブラリの既定以外のビューの場合は OneDrive アプリが起動することなく、SharePoint アプリ上でライブラリが表示されます。

このため、既定のビューと同じ情報を持ったビューを新たに作成し、そのビューの URL をサイド リンク バー に設定いただくことで事象を回避することができます。

以下に、画像ライブラリを例として、初期設定で "既定" として設定されている [すべての画像] と同じ情報を持ったビューを作成する方法をご案内します。

 

<手順>

1) SharePoint Online のサイトにアクセスし、対象の画像ライブラリに対して "編集" 以上の権限を持ったユーザーでサインインします。

2) 画像ライブラリにアクセスします。

3) 歯車マーク - [ライブラリの設定] ボタンをクリックします。

4) ページ下部の [ビュー] セクションから [ビューの作成] リンクをクリックします。

5) "ビューの種類" のページでは、[既定のビューから作成開始] セクションから [すべての画像] をクリックします。

6) "ビューの作成" のページでは、[ビュー名] にビューの名前を入力し、[OK] ボタンをクリックします。

7) 作成されたビューに自動的に移動します。

 

手順 7) にてブラウザーのアドレス バーに表示されている URL を、対象のサイド リンク バーの URL として設定ください。

 

- 参考情報

[画像ライブラリ] の他、下記のライブラリにおいても上述の手順で SharePoint アプリ上で表示可能です。

また、[Wiki ページ ライブラリ] に関しましては特殊な動作となっており、回避策の手順をご実施いただかなくとも OneDrive アプリは呼び出されません。

-----------

・ ドキュメント ライブラリ

・ フォーム ライブラリ

・ メディア ライブラリ

・ データ接続ライブラリ

・ レポート ライブラリ

-----------

 

今回の投稿は以上になります。

※ 投稿の内容は記事の作成日時点の動作であり、予告なく変更される場合がございます。

Yammer データのエクスポートについて

$
0
0

こんにちは、SharePoint サポート チームの福永です。

Yammer に投稿された情報は、"データのエクスポート" 機能でエクスポートすることができます。

また、"添付ファイルを含める" 項目を ON に設定してエクスポートを行った場合、添付されたファイルが "files" ディレクトリ内にエクスポートされます。

"files" ディレクトリのファイルがスレッド内のどのファイルに該当するかは、CSV ファイル内の ID を元に確認いただく必要がございますので、確認方法をご紹介させていただきます。

 

<目次>

A. データのエクスポート手順

B. エクスポートした CSV ファイルから対象のファイルが添付されたスレッドを特定する方法

 

A. データのエクスポート手順

Yammer で投稿された内容は下記の手順でダウンロードいただくことが可能です。

 

1. Yammer のネットワーク管理者で Yammer のホームページにアクセスします。

2. "歯車マーク" - [ネットワーク管理] をクリックします。

3. [ネットワーク データのエクスポート] をクリックします。

4. "データのエクスポート" ページで適宜設定を行い、[エクスポート] をクリックします。

 

[次の日時までのすべてのデータをエクスポート] 項目で取得したいデータの当日を指定した場合、その日に投稿された内容やユーザーが出力されない場合がございます。

   その場合は、[次の日時までのすべてのデータをエクスポート] の日時設定で、翌日の日付を設定し再度お試し下さいますようお願いいたします。

 

※すべてのデータをエクスポート頂く場合、ご利用状況によりアップロードしているファイルが多い、等、データ量が多くなることが予測される場合には、データエクスポート中の問題を避けるため、期間を 1 か月や 1 日等に絞るなどの対応をご検討頂けますようお願い申し上げます。

 

<参考情報>

https://developer.yammer.com/docs/data-export-api

--- 一部抜粋 ---

Comprehensive Data Export: Export all the data on your network, including messages (including previous versions), Files, topics, users and groups. Note: We recommend downloading data with files by using a one-day range, to reduce the likelihood of errors caused by an unreliable data connection. If there are a lot of files on the specified day, we recommend exporting by using a one-hour range.

---------------------

Yammer からデータ エクスポートした CSV ファイルを Excel で開いた場合、文字コードが UTF-8 (BOM 付き) で書き出しが行われない為、2 バイト文字が入力されていますと日本語環境では Excel 上で正しく表示ができない場合がございます。

文字化けが発生した場合は、下記の手順での対処をお試しください。

 

エクスポートした CSV ファイルの文字化けを修正する方法

-------------------------------------------------------------------

1. Yammer からエクスポートした CSV ファイル を右クリックし [プログラムで開く] - [メモ帳] をクリックします。

2. メモ帳が開きましたらメニューバーの [ファイル] - [名前を付けて保存] をクリックします。

3. ポップアップ画面が表示されますので、ファイルの種類を [すべてのファイル] 、文字コードを [UTF-8] を選択し [保存] をクリックします。この手順にて、UTF-8 (BOM 付き) のファイルとして保存されます。

4. 保存された CSV ファイルを Excel で開いていただきますと正常な表示となります。

 

<補足>

"データのエクスポート" Yammer Enterprise でご利用いただける機能となります。

 

<参考情報>

タイトル:Yammer Enterprise からデータをエクスポートします。

アドレス:https://support.office.com/ja-jp/article/b303d8f3-007d-4ad4-81f8-54fb1ecfb3f2

 

タイトル:Yammer 概要

アドレス:https://www.microsoft.com/ja-jp/yammer/overview/default.aspx

 

B. エクスポートした CSV ファイルから対象のファイルが添付されたスレッドを特定する方法

"files" ディレクトリのファイルがスレッド内のどのファイルに該当するかは、下記の手順でご確認いただくことが可能です。

 

1. Export された ZIP ファイルに含まれる "files" ディレクトリから、スレッドを特定したいファイルのファイル名を確認します ( : 127413323.docx)

2. Export された ZIP ファイルに含まれる "Files.csv" を開きます。

3. "id" 列に、手順 1 で確認したファイル名の数字 (例:127413323) がある事を確認します。

4. 手順 3 で確認した id の行から "file_id" を確認します ( : 126160009)。また、同時に同じ行で実際に添付されたファイルのファイル名も確認します ( : test.docx)

5. Export された ZIP ファイルに含まれる "Messages.csv" を開きます。

6. "attachments" 列に手順 4 で確認した file_id (例:126160009) がある行を確認します。

7. 手順 6 で確認した行の "thread_id" を確認し、メモします ( : 1049589551)

8. Yammer にアクセスし、適当なスレッドを開きます。

9. 手順 8 で開いたスレッドの URL をコピーし、末尾の "threadId=1049589551" に含まれる数字部分を手順 7 で確認した thread_id に変更してアクセスします。

: https://www.yammer.com/contoso.onmicrosoft.com/#/Threads/show?threadId=1049589551

10. 開かれたスレッド内のメッセージに添付されたファイルから、手順 4 で確認したファイル名のファイルを見つけます。

 

 

今回の投稿は以上になります。

※ 投稿の内容は記事の作成日時点の動作であり、予告なく変更される場合がございます。

SharePoint Online のパフォーマンス チューニングについて

$
0
0

今回の投稿では、SharePoint Online のパフォーマンス チューニングについて、特に重要な点をご案内いたします。

一般的に運用の開始後は設定や構成の変更が難しくなりますので、パフォーマンス チューニングについては、構築の段階から考慮いただくことが重要となります。

 

クラウドサービスについては継続して動作が変更されるため、今後もパフォーマンス チューニングについての考慮点は段階的に追加や変更がされる可能性がありますが、以下にご案内する機能については今後パフォーマンスの改善を予定しておりません。

SharePoint Online をベストな状態でご利用いただくためには、可能な限り本稿の内容を考慮いただくことを、お願いいたします。

 

パフォーマンス チューニングの必要性

SharePoint Online はクラウド サービスとなりますので、データセンター側でサーバーの稼働状況を継続的に自動で監視し、必要に応じて適切なスケーリングを実施しています。

しかし、SharePoint Online は柔軟なサイト デザインや、カスタマイズ機能を提供していることから様々な利用方法が想定され、データセンター側のインフラにおけるスケーリングのみでは十分なパフォーマンスが得られないことがあります。

また、一部の機能においては深刻なパフォーマンス劣化が生じる可能性があるものの、データセンター側のスケーリングが対応しておりません。

このため、ご利用者様においても、パフォーマンス チューニングについては意識していただく必要があります。

 

パフォーマンス チューニングに関する情報は今後も随時して公開していく予定ですが、データセンター側のスケーリングが対応していない機能については、特に注意いただく必要があります。

詳細は次項にてご案内いたします。

 

データセンター側のスケーリングに対応していない機能

SharePoint Server 発行インフラストラクチャ/SharePoint Server 発行機能 (以下、発行機能) を有効にしているサイト コレクション/サイトで利用可能な以下の機能については、SharePoint Online のパフォーマンスに大きく影響する可能性があります。

・構造ナビゲーション

・コンテンツ クエリ Web パーツ

 

SharePoint Online はSharePoint オンプレミスと多くの機能を共有していますが、SharePoint Online は大規模にスケーリングされたクラウドのインフラで稼働しています。

特に SharePoint Online で発行機能を有効にしているサイト コレクション/サイトについては、SharePoint オンプレミスとのインフラの違いが大きく影響いたします。

SharePoint オンプレミスにおいて、発行機能によって提供される幾つかの機能は、Web フロントエンド サーバーのメモリ領域を使用したキャッシュ (オブジェクト キャッシュ) を利用することで、負荷の大きい処理を効率的に実施しております。

しかし、SharePoint Online はマルチテナントをホストする共有サービスでありホストするデータの規模が著しく膨大であること、大多数の Web フロントエンド サーバーが稼働して負荷分散されているため、キャッシュ ヒット率が極めて小さくなり、キャッシュは Web フロントエンド サーバーのメモリを非効率に消費するだけとなりました。このため、SharePoint Online では、現在オブジェクト キャッシュが廃止されております。

 

オブジェクト キャッシュの廃止以前から、オブジェクト キャッシュが特に大きくパフォーマンスに影響する機能として、上記の 構造ナビゲーションコンテンツ クエリ Web パーツがあります。

SharePoint Online のアーキテクチャにおいてはキャッシュによるパフォーマンス改善が期待できないため、これらの機能を利用している場合、当該サイトにおいて深刻なパフォーマンス劣化が生じる可能性があります。

 

本機能を以前からご利用されているテナントも多くあるような状況等から、機能を廃止する予定は現時点ではありませんが、本機能が影響してパフォーマンスの劣化が生じている場合、データセンター側でサーバーのリソース増強などの対応は効果的ではありません。アーキテクチャ上の問題を抱えているため、データセンター側のリソースをスケールアップ/スケールアウトした場合もパフォーマンスの根本的な改善が期待できないためとなります。

 

これら機能が影響してパフォーマンスの劣化が生じたことが弊社側で確認された場合、原則として機能の利用停止をお願いしておりますが、特に稼働中のサイトにおいて設定変更は大きな影響を伴うため、本機能においてのパフォーマンス チューニングに関する情報を以下にご案内いたします。

 

構造ナビゲーション

発行機能が有効なサイトにおいて、ナビゲーションは以下の 3 種類から選択することが可能です。

 

・構造ナビゲーション

・管理ナビゲーション

・検索型ナビゲーション

 

パフォーマンスの観点では管理ナビゲーション、または検索型ナビゲーションの利用が強く推奨されます。それぞれのナビゲーションの差異については、以下の公開情報をご確認ください。

 

タイトル : SharePoint Online のナビゲーション オプション

アドレス : https://support.office.com/ja-jp/article/adb92b80-b342-4ecb-99a1-da2a2b4782eb

 

構造ナビゲーションにおいては、主に以下の機能がパフォーマンスに大きく影響するため、利用可能な機能レベルは低下するものの、これら機能を無効にすることである程度はパフォーマンスの改善が期待できます。

しかし、これらの機能を無効にした場合でも、通常は管理ナビゲーション、検索型ナビゲーションの方がパフォーマンスは優れるため、新規環境構築の際や、既存環境でさらなるチューニングを要する場合は、ナビゲーションを構造ナビゲーションから変更することをご検討ください。

 

[サブサイトを表示する] 設定

本設定が有効な場合、ナビゲーションに設定されたサイトのサブサイトがナビゲーションに自動でリンクとして追加されます。

 

設定を無効にすることで、サブサイトがナビゲーションに自動で追加されなくなりますが、パフォーマンスは改善されます。

特に、サブサイトに固有の権限を設定している場合には有効となります。

 

設定変更は、サイトの設定ページにアクセスし、[外観] セクションの [ナビゲーション] から実施することが可能です。

セキュリティ トリミング、対象ユーザー

構造ナビゲーションはセキュリティ トリミングが有効な場合に、ページにアクセスしているユーザーの権限を確認し、アクセス可能なサイトのみナビゲーションに表示するように制御されます。

また、対象ユーザー機能によってナビゲーションの見出し、リンク毎に表示可能なグループを制御することが可能です。

これら機能を無効にすることで、全てのユーザーに全ての見出し、リンクが表示される様に動作が変更されますが、パフォーマンスは改善されます。

 

設定変更は、サイトの設定ページにアクセスし、[サイト コレクションの管理] セクションの [サイト コレクションのナビゲーション] から実施することが可能です。

 

コンテンツ クエリ Web パーツ

コンテンツ クエリ Web パーツ (以下、CQWP) の代替の機能は、コンテンツ 検索 Web パーツ (以下、CQSP) となりますので、パフォーマンスを改善し、SharePoint Online をベストな状態でご利用いただくためには、将来的に CQWP CQSP へ変更することをご検討ください。。

 

CQWP のパフォーマンスは、主に検索対象のリストが保持するアイテムの数、およびクエリの複雑さが影響します。

CQWP の特徴の 1 つとして、複数のリストに対して簡単にクエリを実行できることがありますが、複数のリストに対してクエリを実行する場合、検索対象の全てのリストが含むアイテムの合計数が 5000 個未満になるように注意いただく必要があります。

クエリの複雑さについては、定量化が難しい指標となりますが、留意すべき点が以下の公開情報で案内されておりますので、アイテムの合計数の件も含め、詳細はこちらをご確認ください。

 

タイトル : SharePoint でコンテンツ クエリ Web パーツまたはコンテンツ検索 Web パーツを使う場面

アドレス : https://support.office.com/ja-jp/article/346a0f48-38de-409b-8a58-3bdca1768929

 

タイトル : コンテンツ クエリ Web パーツではなくコンテンツ検索 Web パーツを使用して SharePoint Online でパフォーマンスを向上させる

アドレス : https://support.office.com/ja-jp/article/e8ce6b72-745b-464a-85c7-cbf6eb53391b

 

 

パフォーマンス チューニングについてのリンク集

Microsoft が公開している SharePoint Online に関するパフォーマンス チューニングについての情報を以下にお纏めいたしました。これら記事についても、是非ご一読ください。

本ブログにおいても、今後もパフォーマンスに関する情報は随時発信していく予定です。

 

タイトル : SharePoint Online のパフォーマンスの調整

アドレス : https://support.office.com/ja-jp/article/f0522d4a-fbf4-41f9-854e-c9b59555091d

 

タイトル : SharePoint Online のパフォーマンス問題を診断する

アドレス : https://support.office.com/ja-jp/article/3c364f9e-b9f6-4da4-a792-c8e8c8cd2e86

 

タイトル : SharePoint Online ポータル パフォーマンス ガイダンス

アドレス : https://docs.microsoft.com/ja-jp/sharepoint/dev/solution-guidance/portal-performance

 

タイトル : SharePoint Online で CDN を利用する

アドレス : https://blogs.technet.microsoft.com/sharepoint_support/2018/06/20/sharepoint-online-cdn/

 

今回の投稿は以上です。

本情報の内容は、作成日時点でのものであり、予告なく変更される場合があります。


SharePoint Online IE ドキュメント モードの変更について

$
0
0

IE のドキュメント モードが、順次 Edge モードに切り替わる変更が適用されてきております。

とり急ぎとなりますが、下記のような現象が発生した場合は、ドキュメント モードを IE10 モードに戻す回避策を含めてご検討ください。なお、情報に進展などがあれば、本ページにてアップデートいたします。

 

目次

  1. InfoPath ブラウザー フォームで People Picker のユーザー解決ができなくなる。
  2. 最新のパッチが適用されていない IE11 がクラッシュする
  3. Office ファイルがクライアントではなく、ブラウザーで開くようになる。
  4. ActiveX オブジェクトを使用しているカスタム ページが動作しなくなる
  5. エクスプローラー ビューが表示できなくなる

 

詳細

1. InfoPath ブラウザー フォームで People Picker のユーザー解決ができなくなる。

InfoPath のブラウザー フォームには以下のようなものがあります。この動作に対する回避策は、本投稿下部に記載の方法しかありませんので、実施を検討ください。

  • SharePoint 2010 形式ワークフローにおける各種フォーム
  • フォーム ライブラリ
  • [InfoPath のカスタマイズ] で生成したカスタム フォーム (例. newifs.aspx, editifs.aspx)

2. 最新のパッチが適用されていない IE11 がクラッシュする

社内で修正プログラムの適用管理を行っている場合は、下記のパッチを含む最新のパッチを適用する必要があります。修正プログラムがすぐに適用できない場合は、本投稿に記載の方法を実施ください。

タイトル:2017 年 11 月 15 日 — KB4048957 (マンスリー ロールアップ)
アドレス:https://support.microsoft.com/ja-jp/help/4048957

•Internet Explorer で SharePoint Online サイトが動作しなくなる問題を修正しました。

3. Office ファイルがクライアントではなく、ブラウザーで開くようになる。

SharePoint のリスト ビュー Web パーツにおいて、サーバー レンダリングを使用している場合、Office ファイルを開くためにハイパーリンクをクリックすると、ブラウザーで開くようになります。

サーバー レンダリングには以下のようなものがあります。

  • ビューのスタイルで "既定" 以外を選択している場合
  • Web パーツの設定で、サーバー表示にチェックを入れている場合
  • SharePoint Designer で、XSL をカスタマイズしている場合

Edge モードでは、ActiveX のロードが制限されます。SharePoint はファイルを開く際に、Office アプリケーションのインストール有無を確認しますが、その際に ActiveX (SharePoint.OpenDocuments : OWSSUPP.dll) を使用します。このロードが制限されて、Office クライアントがインストールされていないと判断され、ブラウザーで開く動作に至ります。

クライアント サイド レンダリングの場合は、Protocol Handler で強制的に開く動作が適用され、問題なくクライアントで開きます。

そのため、この現象に関しては、クライアント サイド レンダリングに切り替えることも対処策となります。

 

4. ActiveX オブジェクトを使用しているカスタム ページが動作しなくなる

原因は同上となりますが、Edge モードでは ActiveX のロードが制限されます。そのため、ActiveX を参照したカスタム ページにおいては JavaScript などのスクリプト処理が影響を受けます。

開発コード上で Edge モードで動作させたい場合は、別の方法を調査してください。

また、下記のサイトもご参考にしてください。

タイトル : Internet Explorer 11 と Internet Explorer 10 で ActiveX コントロールを使う
アドレス : https://support.microsoft.com/ja-jp/help/17469/windows-internet-explorer-use-activex-controls

5. エクスプローラー ビューが表示できなくなる

ポップアップ ブロックが表示され、エクスプローラーで開くが動作しないことが報告されています。

タイトル : SPO and sometimes a Pop-Up appears and you do not want them?
アドレス : https://blogs.msdn.microsoft.com/joerg_sinemus/2018/05/14/spo-and-sometimes-a-pop-up-appears-and-you-do-not-want-them/

 

回避策

下記のページに記載された回避策をご検討ください。

タイトル : Display a classic SharePoint Online site in Internet Explorer 10 document mode
アドレス : https://support.office.com/en-us/article/4b4572b7-9223-45ec-8497-557a643da12a
機会翻訳 : https://support.office.com/ja-jp/article/4b4572b7-9223-45ec-8497-557a643da12a

今回の投稿は以上です。

 

本情報の内容は、作成日時点でのものであり、予告なく変更される場合があります。

 

 

SharePoint Online で IE ドキュメント モードを 10 に変更するサンプル コード

$
0
0

以下のサイトに記載された IE のドキュメント モードを 10 に指定するコードが記載されております。

本投稿では、これを応用し SharePoint Online の全サイト コレクション (OneDrive for Business 個人用サイトを除く) を対象として設定を適用します。

タイトル : Display a classic SharePoint Online site in Internet Explorer 10 document mode
アドレス : https://support.office.com/en-us/article/4b4572b7-9223-45ec-8497-557a643da12a
機械翻訳 : https://support.office.com/ja-jp/article/4b4572b7-9223-45ec-8497-557a643da12a

 

事前準備

下記の内容を実施済みのクライアント環境においては、事前準備の項目を再度実施する必要はございません。

1 : SharePoint Online 管理シェルのダウンロード

サンプル スクリプトを実行するための実行環境として SharePoint Online 管理シェルをダウンロードします。

以下のリンクより最新版がダウンロード可能です。

タイトル : SharePoint Online Management Shell
アドレス : https://www.microsoft.com/ja-JP/download/details.aspx?id=35588

2 : スクリプトの実行ポリシーを変更する

1)SharePoint Online Mnagement Shell を管理者として起動します。
2) 以下のコマンドを実行し、現在の PowerShell の実行ポリシーを確認します。

Get-ExecutionPolicy

3) 以下のコマンドを実行し、PowerShell の実行ポリシーを変更します。

Set-ExecutionPolicy RemoteSigned

補足 : RemoteSigned 以上の実行ポリシー (例. Unrestricted) が指定されている場合は、指定の必要はありません。

 

コードの実行

1) 以下のコードを DisableEdgeMode.ps1 として保存します。

param(
 $adminurl,
 $username,
 $password, 
 $Disable = $true,
 $Verbose = $false
)

##the first two lines of the script load the CSOM model:
$loadInfo1 = [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client")
$loadInfo2 = [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client.Runtime")

function ExecuteQueryWithIncrementalRetry($retryCount, $delay)
{
 $retryAttempts = 0;
 $backoffInterval = $delay;
 if ($retryCount -le 0)
 {
 throw "Provide a retry count greater than zero."
 }
 if ($delay -le 0)
 {
 throw "Provide a delay greater than zero."
 }
 while ($retryAttempts -lt $retryCount)
 {
 try
 {
 $script:context.ExecuteQuery();
 return;
 }
 catch [System.Net.WebException]
 {
 $response = $_.Exception.Response
 if ($response -ne $null -and $response.StatusCode -eq 429)
 {
 Write-Host ("CSOM request exceeded usage limits. Sleeping for {0} seconds before retrying." -F ($backoffInterval/1000))
 #Add delay.
 Start-Sleep -m $backoffInterval
 #Add to retry count and increase delay.
 $retryAttempts++;
 $backoffInterval = $backoffInterval * 2;
 }
 else
 {
 throw;
 }
 }
 }
 throw "Maximum retry attempts {0}, have been attempted." -F $retryCount;
}

$securepwd = ConvertTo-SecureString $password -AsPlainText -Force
$cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $username, $securepwd
Connect-SPOService -Url $adminurl -Credential $cred
$siteurls = Get-SPOSite | select Url

foreach ($siteurl in $siteurls)
{
 try
 {
 $script:context = New-Object Microsoft.SharePoint.Client.ClientContext($siteurl.Url)
 $spocred = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($username, $securepwd)
 $script:context.Credentials = $spocred

if ($Disable)
 {
 #To apply script to a site collection (disable Edge) uncomment the 4 lines below:
 $featureguid = new-object System.Guid "80E47777-D21C-46E0-9139-7C7741EB4B54"
 [void]$script:context.Site.Features.Add($featureguid, $true, [Microsoft.SharePoint.Client.FeatureDefinitionScope]::None)
 ExecuteQueryWithIncrementalRetry -retryCount 5 -delay 30000
 }
 else
 {
 #To apply script to a site collection (re-enable Edge) uncomment 4 lines below:
 $featureguid = new-object System.Guid "80E47777-D21C-46E0-9139-7C7741EB4B54"
 [void]$script:context.Site.Features.Remove($featureguid, $true);
 ExecuteQueryWithIncrementalRetry -retryCount 5 -delay 30000
 }
 if ($Verbose -eq $true)
 {
 Write-Output ($siteurl.Url + ",OK")
 }
 }
 catch [System.Net.WebException]
 {
 Write-Output ($siteurl.Url + ",NG," + $_)
 }
}

 

2) SharePoint Online Management Shell を起動します。
3) スクリプトを配置したフォルダーに移動し、作成した .ps1 ファイルを以下のように実行します。

.\DisableEdgeMode.ps1 -adminurl https://tenant-admin.sharepoint.com -username accountname -password password

パラメータ

-adminurl ・・・ SharePoint 管理センター アドレス
-username ・・・ 各サイトに変更処理を行う管理者ユーザー
-password ・・・ 上記ユーザーのパスワード
-Disable ・・・ $true の場合、IE10 モードに変更 / $false の場合、再度 Edge モードに切り戻し (省略可 : 既定 $true)
-Verbose ・・・ $true 成功時のログも出力 / $false 成功時のログを省略 (省略可 : 既定 $false)

 

4) PowerShell 上で実行結果を確認します。

サイト コレクションの機能が有効化された場合は、以下のように URL, OK と表示されます。

成功例 (-Verbose $true の場合)

https://tenant.sharepoint.com/sites/siteA,OK

サイト コレクションの機能が有効化に失敗した場合、以下のメッセージが表示されます。

以下のメッセージが表示された場合は、スクリプトの実行アカウントがサイト コレクションの管理者として登録されているかをご確認ください。

失敗例

https://tenant.sharepoint.com/sites/siteB,NG,リモート サーバーがエラーを返しました: (401) 許可されていません

 

切り戻し

ドキュメント モードの変更を元に戻す場合は、スクリプト実行時の $Disable オプションに $false を指定して実行します。

.\DisableEdgeMode.ps1 -adminurl https://tenant-admin.sharepoint.com -username accountname -password password -Disable $false

 

今回の投稿は以上です。

本情報の内容は、作成日時点でのものであり、予告なく変更される場合があります。

 



                       

SharePoint Online で管理ナビゲーションを使用する

$
0
0

今回は、管理ナビゲーションの利用イメージや使い方について説明します。

はじめに

サイト コレクションの機能より、”発行インフラストラクチャー” をアクティブ化するとナビゲーションが既定で構造ナビゲーションが使用されます。
しかし、様々な弊社公開情報に記載の通りSharePoint Online では構造ナビゲーションは、ページ描画時のパフォーマンスに深刻な影響を与える場合があることが認識されています。
しかし、管理ナビゲーションに移行する場合、用語ストアなど聞きなれない言葉がたくさん出てくるため躊躇する方もいらっしゃると思います。本投稿では管理ナビゲーションへのスムーズな移行を目的とし、その設定や注意事項などを解説します。

1. 概念 - 管理ナビゲーションと用語ストアの関連性について

下記の図が、管理ナビゲーションにおける各専門用語の関連性となります。

上記図の説明

  • サイトのナビゲーション設定では、ナビゲーションに使用する用語セットを 1 つ選択します。

サイト ナビゲーションと用語セットの関係性は 1:1 です。用語セットを 1 つのサイトのナビゲーションで使用した場合、他のサイトでは同時に使用できません。画面上で設定しようとするとエラー ダイアログが出る場合がありますし、設定できたとしてもナビゲーション メニューがエラー表示となります。

  • サイトのナビゲーションに使用する用語セットを選択した後は、用語ストアを編集する操作の流れとなります。
  • 用語ストア配下に存在する用語が各ナビゲーション メニューに相当する形になります。
  • 用語ストア内には、テナントとサイト コレクションを 2 種類の範囲が指定できます。ただし、テナントの範囲で用語ストアを編集するためには、用語ストア管理者権限が必要となります。

 

2. 基礎 - ナビゲーション設定の基本手順について

1) サイトのナビゲーション設定について

[サイトの設定] [ナビゲーション] をクリックします。最初に、該当サイトで管理ナビゲーションを使用するよう設定します。

発行ポータルをテンプレートとしてサイト コレクションを作成した場合、トップサイトのナビゲーション設定は管理ナビゲーションが既定値になっています。

 

2) サイトのナビゲーションに使用する用語セットを選択 (または作成) します。

[用語セットの作成] をクリックすると、用語セットが作成され、自動的にサイトのナビゲーションとして選択されます。

また、作成済みの用語セットを選択することも可能です。

 

3) [用語ストア 管理ツール] にアクセスし、用語セットを編集します。

サイトが使用する用語セットが決まった後は、用語ストアの管理ツールを使用して用語 (ナビゲーション メニュー) を編集していきます。

 3-1) 用語セットの全般設定や使用目的を確認します。

3-2) 用語の作成をクリックして、用語を組み立てていきます。

3-3) 各用語 (ナビゲーション メニュー) に指定するハイパーリンクを指定します。

また、"メニューでの表示" にて、グローバル ナビゲーションや現在のナビゲーションといった表示位置も忘れずに指定します。

 

3. 応用 - テナント全体の用語セットから、用語をコピーする方法

これまでご説明の通り、サイト ナビゲーションと用語セットの関係性は 1:1 です。用語セットをあるサイトのナビゲーションで使用した場合、他のサイトでは同時に使用できません。

 しかし、用語セット内に生成した用語については、別の用語セットで再利用することが可能です。以下に、その手順を含めて方法を紹介します。

 

1) SharePoint 管理センターで用語ストアの管理者を指定します。

 テナントのスコープで用語セットを編集するために必要です。

2) テナント スコープの用語ストアに用語をあらかじめ作っておきます。

補足 : 用語セットの作成・編集時には一番下 (System の下) に表示されており、再表示すると上記のようにアルファベット順に表示されます。

 3) サイトのナビゲーション設定から、用語ストア編集ツールに遷移し、[子用語を含めた用語の固定] メニューを使用します。

再使用の元となる用語を指定します。

下記の通り、テナントで使用していた用語が配下を含めてコピーされました。

 

4. 補足事項

1. 構造ナビゲーションと比較した際の制限事項

構造ナビゲーションには様々な機能が存在しておりましたが、これらの代用する機能は管理ナビゲーションにはありません。

  • サイト構造に応じて、自動的にメニューを生成する機能はありません。
  • 対象ユーザーに応じてメニューの表示・非表示を切り替えることはできません。
  • クリック時に別タブで開くなどの操作は実施できません。

2. 既知のエラーなど

サイトのナビゲーションの用語セットの候補を複数作成し、それらを切り替えていると、以下のようなエラーが発生する場合があります。

エラー

ナビゲーション このサイトに管理ナビゲーション用語セットが不適切に添付されています。 の読み込みでエラーが発生しました (相互関係 ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx)

用語セットが、どのサイトで使用されているかという情報は、Web フロント エンド サーバー側にキャッシュされています。この情報がクリアされるまでしばらくかかりますので、キャッシュとの不整合がある間は上記のエラーが発生する可能性があります。

用語セットが該当サイト以外で使用されていないことが確認できる場合は、数時間程度待つことで解消されますので、お待ちください。

[用語セットの作成] ボタンを生成して、該当サイトではじめて管理ナビゲーションを使用している状況においては、このエラーは発生しません。

3. 参考情報

下記に、本投稿に関連する情報について、リンクを記載いたします。

タイトル : SharePoint Server の管理ナビゲーションの概要
アドレス : https://technet.microsoft.com/ja-jp/library/dn194311(v=office.16).aspx

タイトル : SharePoint Server でナビゲーションの用語セットを計画する
アドレス : https://technet.microsoft.com/ja-jp/library/dn194310(v=office.16).aspx

タイトル : SharePoint Online のナビゲーション オプション
アドレス : https://support.office.com/ja-jp/article/adb92b80-b342-4ecb-99a1-da2a2b4782eb

タイトル : SharePoint Online のパフォーマンス チューニングについて
アドレス : https://blogs.technet.microsoft.com/sharepoint_support/2018/06/25/spo-performance-tuning/

今回の投稿は以上です。

 

本情報の内容は、作成日時点でのものであり、予告なく変更される場合があります。

 

SharePoint Online で発行機能を有効にする場合の留意点

$
0
0

サイト コレクションの作成後に SharePoint Server 発行インフラストラクチャ/SharePoint Server 発行機能を有効にする場合、主にパフォーマンスの観点で以下のような留意すべき事項があります。

・ナビゲーション

・ページ (Pages) ライブラリ

 

一般的に運用の開始後は設定や構成の変更が難しくなりますので、本稿の内容を構築の段階で考慮いただくことを、推奨いたします。

 

なお、サイト コレクションの作成時に、発行ポータル” (英語: Publishing Portal) テンプレートを利用される場合は後述の内容は考慮された状態でサイト コレクションが作成されます。

このため、発行機能の利用を検討される場合は、サイト コレクションの作成時に、”発行ポータル” テンプレートを利用することもご検討ください。

 

ナビゲーション

サイト コレクションの作成後に SharePoint Server 発行インフラストラクチャ機能を有効にすると、ナビゲーションに構造ナビゲーションが設定されます。

以下のブログ投稿でも紹介していますが、構造ナビゲーションを利用すると深刻なパフォーマンスの劣化が生じる可能性があるため、SharePoint Server 発行インフラストラクチャ機能を有効にした場合は、ナビゲーションを管理ナビゲーションに変更することが強く推奨されます。

 

タイトル : SharePoint Online のパフォーマンス チューニングについて

アドレス : https://blogs.technet.microsoft.com/sharepoint_support/2018/06/25/spo-performance-tuning/

 

タイトル : SharePoint Online で管理ナビゲーションを使用する

アドレス : https://blogs.technet.microsoft.com/sharepoint_support/2018/07/02/using-managed-navigation-in-sharepoint-online/

 

 

ページ (Pages) ライブラリ

チーム サイト等の発行機能が既定で無効であるテンプレートでサイトコレクションを作成すると、サイトを構成するページのファイル (.aspx ファイル) サイトのページ” (SitePages) ライブラリに保持されます。

一方で、サイトの機能の “SharePoint Server 発行機能を有効にすると、ページ” (Pages) ライブラリが作成され、本ライブラリにもサイトを構成するページのファイルを保持することが可能です。

何れのライブラリも同様の機能を保持しているように見えますが、ページライブラリはSharePoint Server 発行インフラストラクチャを有効にしているサイト コレクションに最適化されているため、SharePoint Server 発行インフラストラクチャを有効にしている場合は、ページライブラリを利用することが一般的に推奨されます。

 

・発行機能はポータルサイト等の閲覧を主目的としたサイト向けの機能となります。サーバー側の動作で、閲覧に最適化された機能が幾つかありますが、ページライブラリに存在するページ ファイルにのみ有効となります。

・主にカスタマイズのパフォーマンス チューニングにおいて有効な CDN の利用に最適化されています。

 

なお、サイトのページライブラリで作成したページ ファイルを、ページライブラリに移行することは出来ません。このため、サイトの構築段階で ページライブラリについて考慮することが重要となります。

 

タイトル : SharePoint Online CDN を利用する

アドレス : https://blogs.technet.microsoft.com/sharepoint_support/2018/06/20/sharepoint-online-cdn/

 

 

補足

既に広く知られている情報になりますが、SharePoint Server 発行インフラストラクチャを一度でも有効にしたサイト コレクションは。サイト テンプレートがサポートされませんので、ご留意ください。

 

タイトル : Office 365 SharePoint Online または SharePoint Server 2013 [テンプレートとしてサイトを保存] 機能が利用できない

アドレス : https://support.microsoft.com/ja-jp/help/2492356/

 

タイトル : 発行機能とサイトテンプレートについて

アドレス : https://blogs.technet.microsoft.com/sharepoint_support/2014/05/23/691/

 

 

 

今回の投稿は以上です。

本情報の内容は、作成日時点でのものであり、予告なく変更される場合があります。

発行用イメージ列の制限について

$
0
0

こんにちは。SharePoint サポートの清です。

今回の投稿では、SharePoint Online における発行用イメージ列 (*) の制限事項についてご案内します。

SharePoint Online の環境において、リスト等で発行用イメージ列をご利用いただく場合、モダン UI での表示に対応していないため、モダン UI では画像が表示されない現象が確認されています。

本動作につきましては、改善するべき動作として開発部門へのフィードバックを実施しておりますが、現状の対処としましては、モダン UI でのご利用がある場合には、ハイパーリンクまたは画像列、複数行テキスト列等で代用いただくことをご検討くださいますようお願いいたします。

 

* 発行用イメージ列について

発行用イメージ列は発行機能を有効化したサイトにおいて作成されるサイト列です。

既定では、サイト列として、[お勧めのイメージ] や、[ページのアイコン] [ページのイメージ] などページ レイアウトの列に作成され、アーティクル ページや、ウェルカム ページ等のページのイメージとなる画像を管理するためにご利用いただけます。

上述のような既定で作成される列の他に、サイト列として発行用イメージ列を別途作成いただくことも可能です。

 

- クラシック UI

- モダン UI

今回の投稿は以上です。

本情報の内容は、作成日時点のものであり、予告なく変更される場合があります。

 

SharePoint Online の HTTP 調整 (応答コード 429) に関して

$
0
0

SharePoint Online は、データセンターの安定稼働のため、HTTP アクセスの一部をブロックして負荷調整する機能が備わっております。

SharePoint Online では、様々な利用者がファーム環境を共有しており、それぞれのお客様の利用状況に合わせて様々な HTTP 要求が送信されています。

サービス提供者の立場から、各利用者の利用状況や負荷状況の事前予測は不可能であり、個別に異なった運用対処もできません。このような予測しない高負荷が発生した際に、データセンターを守るための共通の基盤を用意する必要があります。

HTTP 調整は、上記背景のもとサービスの継続稼働のため、データセンター側の各種様々なパフォーマンス カウンタ値をもとに、HTTP アクセスに重みづけのルールを考慮して、高負荷と判断される際に優先度の低い HTTP 要求から受信直後・処理開始前にブロックし、負荷を自動調整 (縮退運転) するような設計で実装されています。

以下に例を記載します。データや指標などについては理解を促すための完全に恣意的なものです。

  • 優先度 A HTTP 要求は 15:00 のみにブロックされています。
  • 優先度 B HTTP 要求は 15:00 18:00 にブロックされています。
  • 優先度 C HTTP 要求は 12:00, 15:00, 18:00 にブロックされています。

優先度により、それぞれ異なったしきい値があるため、このように異なった結果になる例となります。

 

HTTP アクセスの優先度付けについて

SharePoint Online への HTTP アクセスは重みづけされ、優先度が判断されます。

例えば、通常ブラウザー アクセス、JavaScript などの非同期アクセス、クロールなどの内部アクセス、カスタム アプリケーション (CSOM/REST) など、SharePoint Online には様々な要求が送信されます。これらは独自かつ非公開のアルゴリズムで優先度付けされます。公開情報の記載から、一般的な例を記載します。

  • ユーザー アクセス (ページ描画などの要求) の方が API よりも優先されます。
  • API 実行の場合、HTTP要求の UserAgent 指定によっても優先度が影響されます。
  • 調整は例外なくすべての HTTP 要求にかかります。(製品サービス内部の HTTP 要求も含む)

 

アプリケーション開発者の留意点

アプリケーション開発者は、下記の内容に留意してプログラムを開発していただきますよう何卒ご協力をお願いいたします。

 

1. リトライ処理を組み込む。

HTTP 調整によるブロックを完全に回避する方法はありません。

アプリケーション開発者はブロックされた際に、ユーザーへの混乱を引き起こさないようプログラムを実装する必要があります。

例えば、バッチ処理の場合はリトライなどを組み込み、ブロックを受けても処理がリトライされ、正常に完了するように実装する必要があります。

画面 UI に関する API 処理がブロックされた場合は、リトライは難しいと思われます。その場合は、ユーザーに手動再実行を促すなどにとどまり、予期せぬエラーや深刻なエラーが発生したなどのキャプションを出すことは避けてください。

 

2. ユーザー エージェントを修飾する。

ユーザー エージェントを修飾することで、調整機能は HTTP 要求の優先度を適切に判断することができます。このことにより、優先度の低い HTTP 要求のみにかけられた一部の調整項目を回避することができます。

なお、ユーザー エージェントを指定することで、データセンター側がアプリケーションの動作を監視・追跡しやすくなります。

 

3. データ センター側に不用意に負荷をかけるようなコードを書かない。

アプリケーションによる処理を少しでも早く終わらせるため、データセンターに対して極端な並列処理を実施することや、インターバルのないリトライ処理を行うことは推奨されません。

このような実装を行った場合、調整によりブロックされた状態から復旧するまでに、より多くの時間がかかる可能性があります。

なお、増分バックオフを実装しても調整を回避できない場合は、何度も処理をリトライするのは逆効果です。急ぎの場合は、まずは業務時間後や週末などのオフピーク時にスケジューリングの上実行いただくことで調整を回避できる場合があります。

 

マイクロソフト サポートで対応できること、できないこと

1. HTTP 調整の詳細なアルゴリズムの公開はできません。

Office 365 をとりまく環境には、様々なアプリケーションが存在します。悪意のあるアプリケーションも存在することから、具体的なアルゴリズムの公開は安定稼働やセキュリティに深刻な影響を与える可能性があります。

そのため、このような要求をサポート部門としてお受けし、回答することはできません。

また、実際の設定も様々な運用上の経緯などを経て、データセンターの安定稼働のため更新されていますので固定ではありません。

 

2. 調整の一部緩和や変更依頼は受け付けておりません。

繰り返しとなりますが、データセンターに予期せぬ高負荷が生じた場合 HTTP 調整はサービス ダウンを防ぐための最も重要な砦となります。

弊社サービスとしては、サービス全体としての安定稼働を最優先事項として掲げているため、いかなる理由があり仮に一部のユーザーのみが恩恵を受けたとしても、サービス全体に危険を及ぼすようなリクエスト (調整の緩和や処理変更) を受けることはできません。

3. データセンターのパフォーマンス イシューによる調整が多発している場合

HTTP 調整は、サービス側の健全性に大きく依存します。サービス全体のパフォーマンスや健全性が低下してマルチ テナントに影響を与える状況に至っている場合、サポート部門としては調整に対して直接対処するのではなく、サービスのパフォーマンスや健全性の問題を解決するよう働きかけることで、HTTP 調整の多発を解決する方向性で対応することが可能です。

 

参考記事 

本投稿は、下記の記事をもとに作成しております。

タイトル : SharePoint Online で調整またはブロックを回避する方法
アドレス : https://docs.microsoft.com/ja-jp/sharepoint/dev/general-development/how-to-avoid-getting-throttled-or-blocked-in-sharepoint-online

タイトル : Data migration and SPO service throttling
アドレス : https://blogs.technet.microsoft.com/sposupport/2017/08/12/data-migration-and-spo-service-throttling/

以上となります。

本情報の内容は、作成日時点でのものであり、予告なく変更される場合があります。

サンプル コード : SharePoint 2013 形式ワークフローの状態出力

$
0
0

今回の投稿では、特定のリストに関連付けられた SharePoint 2013 形式ワークフローの各インスタンスの状態を出力する SharePoint Online用のサンプル コードをご紹介します。

SharePoint 2013 形式のワークフローの状態列は、ワークフローの状態列をクリックすれば、下記のように表示されます。

しかし、列自体に、ワークフローの実際の内部状態を表示しないため、リスト ビューなどでワークフローの状況が把握できないというご質問を受けます。

SharePoint 2013 形式ワークフローは、SharePoint 2010 形式ワークフローよりも、リトライ処理が堅牢に実装されております。

そのため、ワークフローの処理が失敗する可能性は低いですが、リトライしても成功しない処理 (. 削除済みアイテムを削除する) をリトライし続け、リトライ回数を枯渇して一旦停止になる場合もあります。

今回の投稿では、このようなシナリオにおいて SharePoint 2013 形式ワークフローの内部状態を確認し、エラーとなったワークフローを検出するサンプル スクリプトをご紹介します。

事前準備

下記の内容を実施済みのクライアント環境においては、事前準備の項目を再度実施する必要はございません。

1 : SharePoint Online Client Components SDK のダウンロード

サンプル スクリプトを実行するための実行環境として SharePoint Online Client Components SDK をダウンロードします。

以下のリンクよりダウンロード可能です。

タイトル : SharePoint Online Client Components SDK
アドレス : https://www.microsoft.com/en-us/download/details.aspx?id=42038

 

2 : スクリプトの実行ポリシーを変更する

1)PowerShell を管理者として起動します。
2) 以下のコマンドを実行し、現在の PowerShell の実行ポリシーを確認します。

Get-ExecutionPolicy

3) 以下のコマンドを実行し、PowerShell の実行ポリシーを変更します。

Set-ExecutionPolicy RemoteSigned

補足 : RemoteSigned 以上の実行ポリシー (例. Unrestricted) が指定されている場合は、指定の必要はありません。

  

コードの実行

1) 以下のコードを GetWfStatus.ps1 として保存します。

param(
 $siteUrl,
 $listName,
 $username,
 $password,
 $outfile,
 $resume = $false
)

Add-Type -Path "C:\Program Files\Common Files\microsoft shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\microsoft shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
Add-Type -Path "C:\Program Files\Common Files\microsoft shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.WorkflowServices.dll"

function ExecuteQueryWithIncrementalRetry($retryCount, $delay)
{
  $retryAttempts = 0;
  $backoffInterval = $delay;
  if ($retryCount -le 0)
  {
    throw "Provide a retry count greater than zero."
  }
  if ($delay -le 0)
  {
    throw "Provide a delay greater than zero."
  }
  while ($retryAttempts -lt $retryCount)
  {
    try
    {
      $script:context.ExecuteQuery();
      return;
    }
    catch [System.Net.WebException]
    {
      $response = $_.Exception.Response
      if ($response -ne $null -and $response.StatusCode -eq 429)
      {
        Write-Host ("CSOM request exceeded usage limits. Sleeping for {0} seconds before retrying." -F ($backoffInterval/1000))
        #Add delay.
        Start-Sleep -m $backoffInterval
        #Add to retry count and increase delay.
        $retryAttempts++;
        $backoffInterval = $backoffInterval * 2;
      }
      else
      {
        throw;
      }
    }
  }
  throw "Maximum retry attempts {0}, have been attempted." -F $retryCount;
}

function EnumWorkflowsInFolder($list, $ServerRelativeUrl)
{
  do
  {
    $camlQuery = New-Object Microsoft.SharePoint.Client.CamlQuery
    $camlQuery.ListItemCollectionPosition = $position
    $camlQuery.ViewXml = "<View><RowLimit>5000</RowLimit></View>";
    if ($serverRelativeUrl -ne $null)
    {
       $camlQuery.FolderServerRelativeUrl = $ServerRelativeUrl
    }
    $listItems = $list.GetItems($camlQuery);
    $script:context.Load($listItems);
    ExecuteQueryWithIncrementalRetry -retryCount 5 -delay 30000

    foreach($listItem in $listItems)
    {
      if ($listItem.FileSystemObjectType -eq [Microsoft.SharePoint.Client.FileSystemObjectType]::Folder)
      {
         $script:context.Load($listItem.Folder)
         ExecuteQueryWithIncrementalRetry -retryCount 5 -delay 30000
         EnumWorkflowsInFolder -List $list -ServerRelativeUrl $listItem.Folder.ServerRelativeUrl
      }

      $wfic = $script:wfis.EnumerateInstancesForListItem($list.Id, $listItem.Id);
      $script:context.Load($wfic);
      ExecuteQueryWithIncrementalRetry -retryCount 5 -delay 30000
 
      foreach ($wfi in $wfic)
      {
        WriteOut -text (($listItem.Id.ToString()) + "," + (GetWorkflowSubscription -subid $wfi.WorkflowSubscriptionId) + "," + $wfi.Status) -append $true
        if ($resume)
        {
            if ($wfi.Status -eq "Suspended")
            {
                $script:wfis.ResumeWorkflow($wfi)
                ExecuteQueryWithIncrementalRetry -retryCount 5 -delay 30000
                Write-Output ("Resumed workflow on Item ID = " + $listItem.Id.ToString())
            }
        }
      }
    } 
    $position = $listItems.ListItemCollectionPosition
  }
  while($position -ne $null)
}

function GetWorkflowSubscription($subid)
{
  if ($script:wfsubhash[$subid.ToString()] -eq $null)
  {    
    $sub = $script:wfss.GetSubscription($subid)
    $script:context.Load($sub)
    ExecuteQueryWithIncrementalRetry -retryCount 5 -delay 30000

    $script:wfsubhash[$subid.ToString()] = $sub.Name
    return $sub.Name
  }
  else
  {
    return $script:wfsubhash[$subid.ToString()]
  }
}

function WriteOut($text, $append)
{
  if ($outfile -eq $null)
  {
    Write-Output $text
  }
  else
  {
    if ($append)
    {
      $text | Out-File $outfile -Append -Encoding UTF8
    }
    else
    {
      $text | Out-File $outfile -Encoding UTF8
    }
  }
}

$script:context = new-object Microsoft.SharePoint.Client.ClientContext($siteUrl)
$pwd = convertto-securestring $password -AsPlainText -Force
$credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($username, $pwd)
$script:context.Credentials = $credentials

$wfsm = new-object Microsoft.SharePoint.Client.WorkflowServices.WorkflowServicesManager($script:context, $script:context.Web)
$script:wfss = $wfsm.GetWorkflowSubscriptionService();
$script:wfsubhash = @{}
$script:wfis = $wfsm.GetWorkflowInstanceService();

$list = $script:context.Web.Lists.GetByTitle($listName)
$script:context.Load($list)
ExecuteQueryWithIncrementalRetry -retryCount 5 -delay 30000

$wfSubs = $wfss.EnumerateSubscriptionsByList($list.Id);
$script:context.Load($wfSubs);
ExecuteQueryWithIncrementalRetry -retryCount 5 -delay 30000

WriteOut -text "ItemId,WorkflowName,Status" 
EnumWorkflowsInFolder -List $list -serverRelativeUrl $null

 

2) PowerShell  を起動します。
3) スクリプトを配置したフォルダーに移動し、作成した .ps1 ファイルを以下のように実行します。

.\getwfstatus.ps1 -siteUrl https://tenant.sharepoint.com/sites/workflowsite -listName ドキュメント -username account@tenant.onmicrosoft.com -password password

パラメータ

-siteUrl ・・・ サイトのアドレス
-listName ・・・ リスト名
-username ・・・ 処理を実行するユーザー
-password ・・・ 上記ユーザーのパスワード
-outfile ・・・ 出力先ファイル (省略可 : 既定値はコンソール出力)
-resume ・・・ $true の場合 一旦停止したワークフローを強制開始 (省略可 : 既定値 $false)

補足

  • リスト ビューのしきい値と、HTTP 調整対策の内、増分バックオフ リトライに対応しています。
  • 大規模なリストに対して、本スクリプトを実行する場合、HTTP 要求数が増える可能性があります。万が一のことを想定し、オフピークの時間帯に実行してください。

今回の投稿は以上です。

本情報の内容は、作成日時点でのものであり、予告なく変更される場合があります。

 


Project Online の [Project] タイルの動作変更について

$
0
0

こんにちは、サポートの森村です。
本記事では Project Online [Project] タイルを使用した場合の動作について、弊社の米国のエンジニアが公開済みの下記ブログ記事の内容についてご案内いたします。

タイトル : Project Online: The new Home experience
タイトル : https://blogs.technet.microsoft.com/projectsupport/2018/08/15/project-online-the-new-home-experience/

Project Online 関連のサブスクリプション (Project Online PremiumProject Online ProfessionalProject Online Essentials) のライセンスを割り当てているユーザーの場合、Office 365 にサインインするとアプリケーション ランチャーに [Project] のタイルが含まれています。
本日 2018/8/28 時点では [Project] タイルをクリックすると、既定の Project Web Access サイトコレクション (PWA サイト) である、/sites/pwa にアクセスする動作となっております。
こちらの動作を、近日中に変更し、下記のような「Project ホーム画面」 (https://project.microsoft.com/) に移動する動作となる予定です。
[Project]
タイルの動作を以前のままにする、等の設定変更はできませんので、従来通り /sites/pwa PWA サイトへの直接アクセスが必要な場合は、ブックマーク等の機能を利用いただくか、あるいは Project ホーム画面最下部の [Project Web App に移動] をクリックしてください。

Project ホーム画面

画面の説明
● [新規作成] メニュー

既定の PWA サイト (/sites/pwa) 上でプロジェクトの作成権限がある場合は、こちらのメニューから既定の PWA サイト上に新規プロジェクト作成を行うことが可能です。
なお、既定の PWA サイト以外の別の PWA サイトに対し新規プロジェクトを作成することはできません。また、作成する PWA サイトを変更することもできません。

● [お気に入り]
下部の [最近] に表示されているプロジェクトをマウスでポイントし、☆マークをクリックするか、三点リーダーメニューから [お気に入りに追加] を選択すると、お気に入りのプロジェクトとして表示されます。

● [最近]
最近該当ユーザーによって作成、編集されたプロジェクトの一覧が表示されます。クリックすると該当プロジェクトが [プロジェクト センター] 上で表示されるページに移動します。
複数の PWA サイトを使用しているユーザーの場合は、既定の /sites/pwa PWA サイト以外の PWA サイトで作成したプロジェクトについても表示が行われ、またクリックすることで別 PWA サイト上のプロジェクトが表示される動作となります。

● [Project Web App に移動]
既定の PWA サイト (/sites/pwa) に移動します。

関連ブログ情報
PWA サイトにアクセスするためには、Project Online 関連のライセンス付与の他に、PWA サイトへのアクセス権付与が必要です。
詳細は下記のブログ記事などをご確認ください。

タイトル : Project Online を使用する際にはライセンスおよびアクセス権限の割り当てが必要です
アドレス : https://blogs.technet.microsoft.com/sharepoint_support/2015/04/06/project-online/

今回の投稿は以上です。


本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。

構造ナビゲーション、CQWP によるパフォーマンス劣化について

$
0
0

以下の公開情報でご案内しておりますように、SharePoint Online で構造ナビゲーション、コンテンツ クエリ Web パーツ (以下、CQWP と略します) を利用するとデータベースに負荷が生じ、サイト アクセス時にパフォーマンス劣化が生じる場合がございます。

 

タイトル : SharePoint Online のパフォーマンス チューニングについて

アドレス : https://blogs.technet.microsoft.com/sharepoint_support/2018/06/25/spo-performance-tuning/

 

構造ナビゲーション、CQWP を以前からご利用されており、特に設定変更や運用の変更などを実施していないにも関わらず、突然パフォーマンスが劣化することについての疑問を頻繁にお問い合わせいただくため、以下に考えられる要因をご紹介いたします。

なお、上述の公開情報に記載のとおり、構造ナビゲーション、CQWP を利用することによってパフォーマンスが劣化する場合、データセンター側でのサーバーのリソース増強などによる対応は効果的ではありません。

よりパフォーマンスに優れる代替機能への置き換えや、パフォーマンスのチューニングが有効な対処となりますので、構造ナビゲーション、CQWP をご利用されている場合は上述の公開情報を参考にお早めに対処をご検討ください。

 

パフォーマンス劣化が生じる要因について

構造ナビゲーション、CQWP は負荷の大きなクエリがデータベースに対して実行されるため、データベースのリソースを消費し、データベースからの応答が遅延することでパフォーマンスが劣化します。

SharePoint Online は単一のデータベースに複数のサイト コレクションの情報や、テナントの規模によっては OneDrive for Business の情報も保持されるため、当該機能によるパフォーマンス劣化の影響範囲としては、最大でテナント全体となります。

 

SharePoint Online はデータセンター側で継続して動作が追加/更新されており、また SaaS 型の共有サービスのため、他のテナントとサーバーやデータベースも共有しております。

突然発生したパフォーマンスの劣化は、主にこの様な要因が影響しており、以下に考えられる具体的なシナリオをご案内いたします。

 

1.     フロントエンドサーバーの増加、キャッシュの廃止

SharePoint Online は利用者が継続して増加しており、現在多くのフロントエンドサーバーが稼働している状況となります。

構造ナビゲーションや CQWP は従来よりデータベースへの負荷が大きな機能となるため、フロントエンド サーバーのキャッシュを利用することでパフォーマンスを維持しておりました。

しかしながら、利用者の増加に伴いフロントエンド サーバーの数が増えることにより、キャッシュ ヒット率が極めて小さくなりました。

キャッシュにヒットしない場合はデータベースへ接続する動作となるため、SharePoint Online の利用者の増加と共にデータベースへの負荷がより生じやすい状況 (パフォーマンス劣化が生じやすい) となりました。

フロントエンドサーバーのキャッシュは非効率にメモリを消費するだけとなり、現時点においては構造ナビゲーションや CQWP でのキャッシュ利用は廃止されております。

 

2.     データベースが保持する情報の増加

運用を継続すると共に、データベースが保持する情報は増加することが想定されます。

また、上述の通りデータベースは複数のテナントで共有されているため、自社テナント以外が要因でデータが増えることも想定されます。

データベースが保持する情報が増えると、同じクエリでもクエリ対象のデータが増加し、一般的に負荷は増加します。

データベースが保持する情報の増加による負荷の増加は、その他の機能においては通常は影響が生じない程度となりますが、データベースへの負荷が大きい構造ナビゲーションや CQWP はより影響を受け、パフォーマンス劣化が生じる可能性があります。

 

3.     バックエンドの処理の変更

SharePoint Online はバックエンドで様々な処理やメンテナンス タスクが動作しており、これらも継続して機能が追加、更新されています。

バックエンドの処理もテナントが利用するデータベースにアクセスするため、これらの追加、更新によって以前よりもデータベースのリソース消費量が以前より相対的に大きくなる場合があります。

一般的なご利用においては影響が生じないようにバックエンドの処理も設計されておりますが、データベースへの負荷が大きい構造ナビゲーションや CQWP はより影響を受ける可能性があります。

 

 

今回の投稿は以上です。

本情報の内容は、作成日時点でのものであり、予告なく変更される場合があります。

[改訂版] SharePoint Online HTTP 調整 (応答コード : 429) 対策の増分バックオフ リトライ

$
0
0

過去のブログ投稿でもご案内しておりますように、CSOM などのクライアント サイド API を利用するプログラムにおいて、HTTP 調整機能への対策として増分バックオフ リトライを実装することを推奨しています。

タイトル: PowerShell サンプル : SharePoint Online HTTP 調整 (応答コード : 429) 対策の増分バックオフ リトライ
アドレス: https://blogs.technet.microsoft.com/sharepoint_support/2016/10/08/powershell-csom-sample-code-for-spo-http-429-incremental-backoff-retry/

 

従来弊社より案内していた増分バックオフ リトライのサンプル コードでは、Exponential Backoff というアルゴリズム (指数関数的にリトライ間隔を大きくする実装) を推奨していましたが、最新のベスト プラクティスにおいては、HTTP 応答の “Retry-After” ヘッダーの値を利用してリトライ間隔を指定する実装を推奨しています。本実装は、SharePoint Online だけでなく、Microsoft Graph API 等においても同様の推奨事項となります。

 

タイトル: SharePoint Online で調整またはブロックを回避する
アドレス: https://docs.microsoft.com/ja-jp/sharepoint/dev/general-development/how-to-avoid-getting-throttled-or-blocked-in-sharepoint-online

タイトル: Microsoft Graph throttling guidance
アドレス: https://developer.microsoft.com/en-us/graph/docs/concepts/throttling

 

本稿では、冒頭のブログで紹介している PowerShell で実装した増分バックオフ リトライを、最新のベスト プラクティスに変更したサンプルコードを紹介します。

HTTP 調整機能への対策としては、トラフィックの修飾 (User Agent の指定) も有効となりますので、併せてサンプルコードで実装しています。

 

$siteUrl = "https://tenant.sharepoint.com"

# 必要なアセンブリをロードします
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll";
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll";

# SPO に接続します
$script:context = New-Object Microsoft.SharePoint.Client.ClientContext($siteUrl);

# ユーザー名入力を促します。
Write-Host "Please input user name : "
$username = Read-Host

# パスワード入力を促します。
Write-Host "Please input password : "
$password = Read-Host -AsSecureString

$creds = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($username, $password);
$script:context.Credentials = $creds;

# UserAgent を指定します。
$script:context.add_ExecutingWebRequest({
    param ($source, $eventArgs);
    $request = $eventArgs.WebRequestExecutor.WebRequest;
    $request.UserAgent = "NONISV|Contoso|Application/1.0";
})

function ExecuteQueryWithIncrementalRetry {
    param (
        [parameter(Mandatory = $true)]
        [int]$retryCount
    );

    $DefaultRetryAfterInMs = 120000;
    $RetryAfterHeaderName = "Retry-After";
    $retryAttempts = 0;

    if ($retryCount -le 0) {
        throw "Provide a retry count greater than zero."
    }

    while ($retryAttempts -lt $retryCount) {
        try {
            $script:context.ExecuteQuery();
            return;
        }
        catch [System.Net.WebException] {
            $response = $_.Exception.Response

            if (($null -ne $response) -and (($response.StatusCode -eq 429) -or ($response.StatusCode -eq 503))) {
                $retryAfterHeader = $response.GetResponseHeader($RetryAfterHeaderName);
                $retryAfterInMs = $DefaultRetryAfterInMs;

                if (-not [string]::IsNullOrEmpty($retryAfterHeader)) {
                    if (-not [int]::TryParse($retryAfterHeader, [ref]$retryAfterInMs)) {
                        $retryAfterInMs = $DefaultRetryAfterInMs;
                    }
                    else {
                        $retryAfterInMs *= 1000;
                    }
                }

                Write-Output ("CSOM request exceeded usage limits. Sleeping for {0} seconds before retrying." -F ($retryAfterInMs / 1000))
                #Add delay.
                Start-Sleep -m $retryAfterInMs
                #Add to retry count.
                $retryAttempts++;
            }
            else {
                throw;
            }
        }
    }

    throw "Maximum retry attempts {0}, have been attempted." -F $retryCount;
}

# ここから実装したい任意のコードを書きます。
$web = $script:context.Web
$script:context.Load($web)
#$context.ExecuteQuery() を以下に置き換えます。
ExecuteQueryWithIncrementalRetry -retryCount 5
$web.Title = "RetryTest"
$web.Update()
#$context.ExecuteQuery() を以下に置き換えます。
ExecuteQueryWithIncrementalRetry -retryCount 5

 

 

今回の投稿は以上です。

本情報の内容は、作成日時点でのものであり、予告なく変更される場合があります。

Viewing all 138 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>