SharePoint JSリンクとURLトークンとかいうトラップ

※すでにこの手の記事はググれば出てきますが、自分への備忘録です。

早めにググればよかったのですが…ハマりました。

01
アプリパーツの編集でJSリンクを適用する欄があり、まぁ普通に考えればどこかにアップロードしたJSファイルのURLを指定すれば良いと思うけど、こんなところにトラップを仕掛けているんですよね。
普通のURLでは適用されません。URLトークンなるものがあるんです。トー君?誰?って感じですよ。

SharePoint 2013 の URL とトークン
https://msdn.microsoft.com/ja-jp/library/ms431831.aspx

↑のページの真ん中くらいに表があります。「~sitecollection」か「~site」あたりを使う感じですね。はじめてJSリンクを使う人にはトラップです。

僕がSharePointをはじめた7年前は、ググっても日本語の情報が少なかったです。英語が苦手なので数少ない情報源の方々には感謝してもしきれません。今はだいぶ情報を掲載されている日本人も増えてきましたので、ハマったら即ググった方が良いですね。

SharePoint 列の内部名

■内部名について

列には列名と裏側に内部名が存在します。列名・内部名ともにアプリ内ではユニークです。基本機能のみで利用している場合は内部名を気にする必要はありません。
列名は作成後に変更する事ができますが、内部名は変更できません。裏を返せば、Webパーツの開発などで、特定の列を参照したい場合、列名だとリストに権限さえあれば列名を変更できてしまうので、その後Webパーツが正常に動作しなくなります。
内部名なら列の作成後は変更できないので、列名を変更してもWebパーツも修正する必要なく正常に動作します。メンテナンス性を考慮すれば内部名を使った方が良いですね。

■内部名の調べ方

列の内部名の調べ方は、列の編集ページのURLを見ればわかります。
例えば以下は「タイトル」列のURLのサンプルです。
http://****.sharepoint.com/****/_layouts/15/FldEdit.aspx?List=*****&Field=Title
このField=より後ろが内部名です。つまり「タイトル」列の内部名は「Title」です。

■列名を日本語にして列を作成すると…

例えば「商品」という列名で列を作成すると、内部名をURLから取ってくると、
_x5546__x54c1_
これが「商品」列の内部名です。なんか気持ち悪いですね。
01

これを回避する方法として、列の作成時に列名を英数半角で一旦作成後、列名を日本語に編集する手があります。

▼「product」という列名で列を作成すれば、内部名も同じく「product」です。
02

▼その後、列の編集で列名を「商品」に変更します。
03

▼列名は「商品」だけど、内部名は「product」のままです。
04

※ただし…英数半角と書きましたが、例外がチラホラあるようです。例えば、「1」という列名で作成すると内部名は「_x0031_」でした。列名の頭に半角でも数字を入れるとこうなるようです。また、「col1」という列名で作成すると内部名は「_x0063_ol1」になりました。これに関しては法則がよくわからないです。深入りしない事にします…。

SharePoint デザインカスタマイズ検討についての考察

SharePointで社内ポータルサイトや部門サイトやチームサイトを運営されているケースが多いと思いますが、SharePointのデザインは昔から評判良くないです。特にSharePoint2013では時代がフラットデザイン化されてきている流れからか、シンプルに拍車がかかってきました。
SharePointは知っての通り国産製品ではないので、文化の違いから日本ではシンプルデザインをなかなか受け入れられない傾向にあると思います。欧米ではシンプルなデザインが好まれる傾向にあるようなので。
そこでデザインカスタマイズを検討されるかと思いますが、十分に検討をしてください。

SharePointで「見栄え」という意味でのデザインに凝る必要が本当にあるのかどうか?

日常、従業員同士の情報共有に利用される場合がほとんどかと思います。不特定多数のお客様に製品などを買っていただきたくて公開しているようなインターネット上のサイトとは用途やゴールが違うんです。

見栄えを良くすれば社内ポータルなどの利活用が促進されると安易に考えている方が結構いますが、例としては悪い例ですが「美人も三日で飽きる」です。カスタマイズ後のアクセス数は増えると思います。ただ、それも数日です。

利用用途を考えるとデザインよりもコンテンツのクオリティの方を重視すべきです。見栄えをよくするくらいなら、社内ポータルトップページに社員食堂のメニューを貼り付けた方が、よっぽどアクセス数は伸びます。
チームサイトなどは、デザインなんかにお金をかけるなら、メンバーにトレーニングをして便利さをアピールした方がよっぽど利活用促進されます。

もちろん予算が潤沢である場合は別です。見栄えを良くして損はありません。ただ、こんなご時勢ですし、費用対効果やお金をかけるべきポイントを考えるなら、SharePointでデザインカスタマイズをする際に重視すべきところは、見栄えよりも、ユーザビリティやアクセシビリティという観点です。

例えば、ナビゲーション部分をよりクリックされやすく工夫をしたり、ただのテキストなのか?リンクテキストなのか?が視認できるように工夫したり。

もちろん、カスタマイズする事による中長期的な管理面での影響やコストも検討事項です。

ノーマルのSharePointのデザインの印象が悪くても、使っていればそのうち慣れてきて気にならなくなるもんだと思います。

SharePoint の表記揺れと言えばナビゲーション

ナビゲーションの用語をSharePoint内でも統一して欲しいものです。

05

①の名称は?

  • トップリンクバー
  • グローバル ナビゲーション
  • タブ

②の名称は?

  • サイドリンクバー
  • 現在のナビゲーション
  • ローカルナビゲーション

などなど…。ナビゲーションの用語ひとつとっても様々な言い方があります。SharePointやWebに明るい人なら問題ありませんが、SharePoint初心者相手に同義語・類義語を様々使って話をすると、話がうまく伝わらない場合が多いです。

SharePoint内でも揺れているのですが、せめて自分が所属している組織内では、用語は統一させておくと、組織内でも対クライアントでも混乱が少ないのかなと思います。

ちなみに僕個人の中では「トップリンクバー」「サイドリンクバー」で統一しています。

SharePoint 内の表記揺れ

表記揺れは混乱の元だと思うんです。SharePoint に詳しい人には気にならないとは思うけど、これから利用しようと思っている人にとっては、同じ意味の言葉が複数ある事は大きな混乱ですよね。

SharePoint 2013 から個人的に非常に気になる表記揺れがあります。

SharePoint 2010 まで、アイテムについて「作成者」「作成日時」でした。

SharePoint 2013 からは、「登録者」「登録日時」に変わっています。

それは別にイイんです。

ところが…

▼リストの設定画面(登録者・登録日時)
01

▼ビューの設定画面(登録者・登録日時)
02

▼ビュー(登録者・登録日時)
03

▼アイテムページ(作成者・作成日時)
04

なんでアイテムページだけ昔のままなんでしょうかねぇ。

SharePoint 参照列があるリストをテンプレート化しても、別サイト・環境で展開すると参照列は使えません

SharePoint では、リストをテンプレート化すると、サイトコレクション内で再利用ができます。しかし、参照列が入っているリストをテンプレート化した場合、参照元リストが所属するサイト内なら問題なく展開可能ですが、同じサイトコレクション内でも別サイトで展開したら、参照列は動作しません。そもそも参照列が取得できるリストはそのサイト内のみですから。

では、参照元のリストもテンプレート化して、別サイトで先に参照元リストをテンプレートから展開してから、次に参照先リストをテンプレートから展開してみたらどうでしょうか?
答えは、これもダメです。

【検証1】同サイト内に展開

    • 「company」リストを作成
    • 「company」リストのタイトル列を「company」に変更
    • 「products」リストを作成
    • 「products」リストに「Company」列を追加し、参照で「company」リストの「company」列を取得
    • 2リストをテンプレート化
    • 「products」リストのテンプレートから同サイト内でリストを作成

01

02

【検証2】同サイトコレクションの別サイトに展開

  • 「company」リストのテンプレートから別サイトにリストを作成
  • 「products」リストのテンプレートから上項と同じサイトにリストを作成

↓「情報の取得先:」の部分が消えています。
03

↓「Company」列は空欄です。
04

つまり、この記事のタイトル通りが結果でした。

参照列は面倒ですけど作り直しのようです。

SharePoint 運営の心得

SharePoint の運営は、

「シンプルイズベスト!」

これに尽きると思います。

費用対効果はもちろん、手を加えるほど複雑になり、管理が行き届かなくなり、セキュリティやバージョンアップなどのリスクも高まります。運営ガイドラインもなく各サイトコレクションの管理者に自由に運営を任せてしまうと、中には仕様書などを全く残さずにカスタマイズしまくり、挙句の果てにはその本人はすでに退社…なんて事も。ブラックボックス化されたSharePoint をおそるおそる運営していくようになり、案の定、バージョンアップ時にトラブル続出…というシナリオは容易の想像できるかと思います。

業務上どうしても実装しなければいけない要件以外は極力実装しない方向に持っていくのも一つのテクニックかと思います。カスタマイズのスキルがあるほど陥りやすいのが、実は基本機能を工夫すれば実装できるようなものまで、すぐカスタマイズしてしまったり。

カスタマイズも開発も極力せず、SharePoint の基本機能で構築し、基本機能も極力機能を絞り、アクセス権限もシンプルに。

特に情報共有がメイン用途であれば、極端な話、1サイトに1リスト・1ライブラリさえあれば、十分かなぁとも思っています。

中長期的な運営を考慮するのであれば、SharePoint はシンプルイズベストなんだと思います。