雑なsharepoint運用基礎講座

qiita、ログインのトラブルがあって放置してました。。

その間運用を押し付けられて以来色々得たシェアポ絡みの基礎知識と教訓をまとめてみました。
~~私のように何も知らずにサイトの運用を押し付けられた方向けのメモです。~~
多少知識的に怪しい点があるかもしれませんが、ご指摘頂ければと思います。
(また有用な情報はむしろ下さい_:(´ཀ`」 ∠):)

## sharepointってそもそもなんぞや？
自分の解釈では社内の情報共有サービス(一昔前で言うグループウェア)であり、CMSを包含しています。
インターネットにもシェアポサイトがあるかもしれませんけど、、まあ基本はってことです。

幾らでもwebに情報がありますし、いろんな切り口があるので納得する迄調べてもらえればと思いますが、、

なお、この講座では社内サイトを前提とした話をします。

## sharepointを使う意味
社内に情報掲示するだけでしょ？
全部wordpressや他のCMSで良くない？
と誰しも思うと思います。
というか私は雑なのでそう思いました。

確かにCMSの機能はシェアポにもあるのですが、情報共有基盤となると「誰にどれをアクセスさせていいか、誰にアクセスさせてはいけないのか」「承認を得て掲示する」と言った、細やかな情報統制の概念が必要になります。
また、シェアポはこのアクセス制御をActive Directly依存にできるので、大企業に向いてるとも言えます。

ま、幾らでもwebに情報がありますし、いろんな切り口があるので納(

#sharepointの設計や思想
説明も兼ねて基本的なsharepointの概念のおさらいをします。

sharepointは、技術面から見た基本構成としてはweb向け三層ないし四層アーキテクチャです。
SQLserver→sharepointサーバ→IIS→ブラウザとかそんな感じ。

オンプレミスのsharepointを担当する場合は、アプリサーバ自体が管理対象となる事もあるかと思いますので、ほんの触りだけ説明します。
アプリサーバにはweb guiがあり、ログインしてサーバ全体の動作設定や動作ログ確認などが簡単に出来ます。のでまずはレッツログイン。
重要なポイントとして、アプリサーバ一つで複数のsharepoint webサイト(後述の「サイトコレクション」)を作成、管理する事ができます。
このため、__一つのサーバだけど蓋を開けたら複数のシステムが動いてた__、なんて事もザラにあります。
~~先に言え。~~

ちなみに設計書がなくその手の見えないサイトがありそうな不安がある方は一度管理画面を覗いて見るといいかもしれません。
なんか作ってあるかは判断できます。

ここまではwebサイトのファームとしての話。

ここからは一つのwebサイトとしての機能にフォーカスします。

sharepointはwebサイトの基本構成単位の最上位に
「サイトコレクション」
という名前で、箱として定義してます。

で、その箱に「アプリ」を追加していきます。
アプリとか言ってますが、実際には、デフォルトで用意された掲示板や共有フォルダ(「ドキュメントライブラリ」)、CMS的な情報の箱(「リストライブラリ」)、「サブサイト」などの定義された機能をコピーし、利用できる形になるだけです。
全てが「アプリ」と同じ層？レベル？で追加されていきます。
ちなみに「サブサイト」を追加すると、その配下にもアプリを追加できます。つまりネストできるという事です。
サブサイト単位での権限管理なども可能ですので、ある程度サブサイトは独立してサイト運営できます。
ちなみに「アプリ」はC#とかで開発できます。

__管理者は大体、この「サイトコレクション」自体のサイトの設定や権限、および配下の「アプリ」の設定や権限(とついでにデータ)を管理する形になります。__

「」で括った用語くらいは理解しておいた方が良さそうです。

他のCMSと大きく違う思想として、パワーユーザーがカスタマイズしていく下地がまずあります。
実際、アプリの追加はぽちぽち、アプリの外面は本格的にコードしなくてもHTML、CSS、JavaScript辺りでカスタマイズは実装出来ます。

だからこそ、他のシステムよりも管理者とユーザーの垣根が低い事が多く、そこが運用上裏目に出ることがあります。
取り急ぎ権限付与状況を見て、軽率にユーザーにフルコントロールや編集権限を渡してないか確認しましょう。

また開発では適当な人が短期間で製造することもあり……設計書が無いとか、設計書じゃなくてConfigメモじゃねーか！とか、無残な過去のカスタムソースを見ても、めげないで欲しい。

情報共有基盤としては、前述の通り、基本はADをベースにアクセス制御する作り。
ファイル共有基盤としてはバージョン管理ファイル共有機能(o365ならブラウザなどで編集できたりする)、MSofficeツール群の連携がデフォルトなど、どちらも事務や管理が容易になるような思想です。

### 余談:「sharepointベースの小さいシステムだから楽よ」の真実

よく上記のような発言を耳にするのですが、(機能の多い)sharepointに小さいカスタマイズを入れた、というパターンが非常に多いので、__その場合別にシステム規模としては小さくない。__
みんな雑に渡されるかもだけど気をつけて。

~~まあシェアポ知ってればそう言えるかもしれないけど、大概この発言をする人はシェアポの機能を知らず、面倒は見てない。
あと静かな、というのは微妙に語弊があって、クリティカルな問題が出てないだけで細かい問題はいっぱいです。(体感)~~

## 開発者視点の利点と弱点
開発面の利点は設定でのカスタマイズの幅が大きいところ、よってテストも少ない、最悪プログラミング言語を用いてプラグインできる、辺りになるかと思います。
カスタマイズの幅が大きいの意味は、例えば下書きや承認などの機能の追加はコードなくボタンポチ！で終わるあたりとか、リストのスキーマや選択肢、ビューもGUIでぽちぽち。
新しい情報の箱作成もぽちぽちでおわりだし。

他方、情報共有基盤としての弱みは申請処理がデフォルト頭弱すぎ、基本全体公開であるため閲覧者を動的に変更したい場合はどうするか？、5000件を超える大量のコンテンツを管理するには検討がいる、ワークフローはあるがバッチ処理にあたる機能はない、あたりかと思います。
ここは後述します。

あ、あと言い忘れましたが、めちゃくちゃレスポンスは遅いです。オンプレのシェアポでも3秒で帰ってこないこともありますし、onlineだとお察しです…。
これに社内ネットワークの帯域も絡んできます。
開発しないでこれだけ出来るならまあペイするよね、と思ってください。
フルスクラッチ勢は障害なのかと思ったりイライラするかもだけど。

#よくある問題
- アクセスできないよ問題

まず間違いなく聞かれる「xxにアクセスできない」の件の解決方法ですが、まず基礎知識として、シェアポは以下の2種類のアクセス権限があるのを意識しましょう。

(1) sharepointサイト全体へのアクセス権限
(2) 各アイテムのアクセス権限

エラー状況によってどちらを調べるべきか自ずとわかると思います。

1.の場合は「サイトの権限」に該当ユーザーがいるか確認します。ADグループが設定されてる場合、結構漏れや思い違いがあるよ。
2.の場合は、対象アイテムを開いて「共有相手の確認」を行うところからスタート。
アイテム自体とアイテムの箱(アプリ)に対する権限設定が別にあったりと、Windowsのファイルアクセス制御の概念に近く、継承状況を紐解いていかないといけないので、じっくり行きましょう。
システム内で共有相手を追加削除してると更に追求が大変。
混乱してきたらシーケンス図にすることを片隅に入れておいて貰えるとよいかなと。

- onlineとオンプレの問題

o365をお使いの企業が増えてくるとやはり検討されるのがシェアポをonlineに持っていってクラウド化しよう！の話。ですが、ちょっと待って。

1. データ移行だけでそこそこ工数取るし、見合うかな？(オンプレ移行の方が楽ですしね)
2. onlineのレスポンスの遅さもさることながら、瞬断やら処理遅延やら原因不明のエラーが割と多いよ、用途的に許容される？
3. インターネット接続の帯域を食いつぶすしネットワークの設定がめんどくさいよ、インフラ耐えられる？
4. グローバル展開が比較的容易だけど、オンプレと違いリージョンごと不具合出る可能性あるので確認したほうがいい。(特にチャイナ)
 
ここら辺は利用者や部門に要確認かと思います。

どの程度xxなの？系の話は、テナントのその時の状況や社内の帯域によるので、深く聞かれても曖昧な回答しかできないので非常に困る所ですが…



弱みへの所感や提言などの話は次の回にでも。