2019年3月

2019年3月 4日 (月)

たまには、バリッと開発寄りの記事を書きます。

SharePoint Framework を使うとモダンサイトはもちろん、クラシックな SharePoint サイトでもクライアント サイド実行の Webパーツを独自に作成できます。

この Framework は現在はSharePoint Framework 1.7 (2018年11月リリース)が最新で、もうすぐ v 1.8 がリリースされるところまで来ています。v 1.7で追加された目玉機能の一つがプレビュー機能ではあるものの、"SharePoint Framework for Teams Tabs" のサポートです。

SharePoint Webパーツを Teams のタブとしても利用できるようにするというもの。

2019-03-04_16-39-25

作り方の大まかな流れは次の通りです。

  1. Yeomanジェネレータ実行時に --plusbeta オプションを指定してスキャッフォルディングする
  2. Teams フォルダーが生成される
  3. 通常通り Webパーツコードを記述していく
  4. Gulp bundle --ship および Gulp package-solution --ship を実行する
  5. Teams フォルダー内のファイルを Zip 化し、Teams 側へアップロード
  6. アプリをタブとして追加

では、分かりにくいであろうところを少し補足していきましょう。

まず Yeoman ジェネレータですが、v1.5 から --plusbeta オプションが追加されました。このオプションを追加することでプレビュー段階の機能を試せるようになっています。Teams タブとして利用するにはこの --plusbeta オプションが必要です。

>yo @microsoft/sharepoing --plusbeta

ソリューションパッケージを Ship モードで作成すると下図の通り Teams フォルダー内に manifest.json と Teams内で使用する既定のアイコンが2つ用意されます。

SPFxTeamsTabSolutionInVSC

このフォルダー内のファイルを手動で単純に ZIP化します。

これをTeamsのチーム所有者が下記の場所からアップロードするだけです。

2019-03-04_16-19-07

アップロードが終わると、アプリ一覧に SPFx アプリが表示されます。

2019-03-04_16-19-47

あとは、SharePoint サイト上で Webパーツが動作し、同じものがTeams内でも動作することを確認してみましょう。ちなみに、デモのアプリはカレント SharePoint サイト内のライブラリ一覧を取得するようにしています。Teams 内で動作させているように見えるこのアプリですが、実体となるコードは SharePoint側でホストされることになるため、同一サイトを利用しているTeamsのチーム上でも同じ結果が得られます。

SharePoint のモダンサイトでは RSS Webパーツを利用したくても、コネクターとして提供されているうえに、Office 365 グループに接続されていることが前提になってしまっています。コミュニケーション サイトを前提にポータルを作るとなると、Office 365 グループ接続はしないでしょうし、仮に Office 365 グループに接続されていたとしても、このコネクター自体、あまり使い勝手がよくありません。

実際に同様のご質問を、以前、研修時にも頂きました。

さて、今のところ最善策として取り得る選択肢の一つは SharePoint Framework を使って独自に Web パーツを作るかということですが、これもいきなりはハードルが高い。そこで手軽に利用することを考えると PowerApps アプリとしてページに埋め込んでしまうというのも一つの手です。

実際に作成してみているのが下記のページです。PowerApps の公式 Blog の RSS フィード("https://powerapps.microsoft.com/en-us/blog/feed/")を読み込んでいます(細かい話ですが、"New!" アイコンは発行日が今日から一週間以内かどうか簡単な判定式を書いて表示しています。基本的な手順だけではアイコンまでは表示できないのでご注意を)。

RssPowerAppsBlog

ちなみにSharePoint Framework に関しては React コントロールを使った Webパーツの紹介およびソースコードが最近実施された SharePoint Developer Community (PnP) の Community Demo でも公開されています。

PowerApps アプリの作成

大まかな手順は次の通りです。

  1. 空の携帯電話レイアウトからキャンバス アプリを作成
  2. データソースとして RSS コネクターを追加しておく
  3. OnStart もしくはメインスクリーンの OnVisible に次の式を指定
    ClearCollect(feeds,RSS.ListFeedItems("https://powerapps.microsoft.com/en-us/blog/feed/"))
  4. ギャラリーコントロールを配置し Items プロパティに feeds コレクションを設定
  5. 画面上部にHtmlテキスト コントロールを配置し、Galleryで選択したアイテムの Summary 部分を表示

もちろん、細かい微調整はするのですが、大体は上記のような感じで作成します。さらに言えば、SharePoint リストの RSS フィードは利用できませんので注意しましょう。そもそも、SharePoint リストなら、PowerApps から SharePoint コネクターを使えばリストデータは取得できるため RSS フィードは利用する必要がありません。

音声はありませんが、手順をビデオにしているので参考になれば幸いです。

2019年3月 2日 (土)

Office 365 のテナントを契約し、SharePoint Online を使い始めると既定で一つだけサイトコレクションが作成されていることに気づくでしょう(もちろん、管理者でないとなかなか気づきませんが)。このサイトコレクションはルート サイトとも呼ばれ、SharePoint Online のURLの直下に作成されます。

もともとはクラシックなチームサイト テンプレートから作成されるサイトであり、何も設定変更しなければトップページは Wikiページのままでクラシックのままとなります。

しかし、モダンサイトにそろそろしたい。

弊社で提供しているOffice 365 の利活用ナレッジサイトである "オフィスアイ ラーニング ポータル" もこのルートサイトを以前から使用していたため、もともとはクラシックなチームサイトです。しかし、トップページをサイトページに切り替えるなどしてモダン化を行っています。しかし、モダンサイトの設計思想だとこの手のサイトは「コミュニケーション」サイトの方が都合がよい。ですが、サイトテンプレートは差し替えることができないというジレンマを抱えています。

さてここで朗報です。以前からアナウンスだけはされていたのですが、「ルートサイトにコミュニケーション サイトの操作感が適用できるようになる」という機能が 2019/3/1 にようやく開発中というステータスになりました。ロードマップに掲載されています。

https://www.microsoft.com/ja-jp/microsoft-365/roadmap?filters=&searchterms=46338

EnableCommunicationSiteExperience

現在はチームサイトベースなので、サイドリンクバーが表示され、フッターが設定できない。SharePoint ハブを構成して、メンバーサイトはすべてコミュニケーションサイトで作成しているため、全体的なデザインの統一感が図れずあまり美しくないのです。ですが、これがコミュニケーションサイトと同様になればカスタマイズもしやすくなります。