SharePoint では0バイトのファイルをアップロードできない

人によっては今更のネタですみません。

0バイトのファイルをアップロード。まぁ通常運営していてなかなかありえない利用シーンですよね。なので僕も今まで知りませんでした。

先日、限られた環境で検証しようとした時に若干焦った事です。カスタムを施したカスタムリストの投稿を検証した際に、添付ファイルにファイルを添付するテスト事項もあり、いつもならExcelなどでテスト用ファイルを作るのですが、限られた環境という事でテキストファイルでテスト用ファイルを作成しました。いつもの自分の操作ならテキストエディタを開いて、適当に文字を入れてから保存をするのですが、なぜかこの時は無意識にデスクトップで右クリック→新規作成→テキスト ドキュメントという手順で、テキストファイルを作成しました。この場合、ファイルサイズは0バイトなんですね。ということで、偶然0バイトのファイルを作成したんです。これを利用してテスト投稿をしてみたのですが、SharePointのエラーページが出て投稿できませんでした。
エラー内容を見ても意味がわからず、原因不明で困っていた時に、色々やってみるとファイルを添付しない時には問題なく投稿される法則がわかり、その後、一緒にテストした人に「ファイル、0バイトじゃないですか?」と言われ、ようやく原因がわかった感じです。

で、検証してみました。

■ライブラリ
ライブラリに0バイトのファイルのアップロードを試みようとすると、丁寧に理由が記載されるのですぐにわかります。やはり通常の利用では0バイトのファイルを扱わないので、この表示は初めて見ました。

■リスト
添付ファイルの0バイトのファイルを添付しようとすると、添付ファイルを指定する操作は特に問題ないのですが、投稿をしようとするとSharePointのエラーページが表示されます。添付ファイルを指定する操作の段階でエラーになってほしいところです。また、これで投稿がエラーになってブラウザの戻るボタンをクリックしても、入力した情報は消えてしまいます。つまり苦労して入力した内容がパァになってしまうんです。

このエラーページには理由が記載されているので原因がわかりますね。ただ、この環境では理由が記載されていましたが、冒頭で同様のエラーページが出て焦った話の際の環境では、この理由が記載されていなかったんです。なので原因がわからずに焦った感じです。おそらくSharePointのバージョンの違いなのかと思いますが、詳しいことはわかりません。

ということで、冒頭の通り、通常運営していて0バイトのファイルを扱うことはないとは思いますが、こういう事があったぞという備忘録でした。

Nintex Formsの表示速度

Nintex FormsはSharePointの標準では実現できないフォーム画面のカスタマイズを比較的容易に実現できる便利なツールですが、過去にも色々クセがある事を紹介いたしました。

Formsでフォーム画面をカスタマイズする再に重要な点として、表示速度の問題は外せません。いくらUIが優れてフォーム入力が便利になっても、表示するのに時間がかかってしまってはUXとしては台無しです。

僕自身がFormsを使用した制作経験が少ないのですが、その少ない経験やググった結果から、Formsで表示速度に影響を及ぼすであろう原因を以下に挙げます。

・コントロール数
・ルール数
・カスタムしたJavaScript・CSS

もちろんサーバーやクライアントPCやブラウザ(得にIEは遅い…)などもありますが、同一環境での影響という意味では、大きくは上の3項目が挙げられます。カスタムしたJavaScript・CSSに関しては内容によって左右されますので、そういう意味でも表示速度に問題が出た場合の対応策として挙げやすいのが、単純にコントロール数やルール数をダイエットさせる方法かと思います。

デザインのみで利用しているパネルを妥協できる範囲内で削除してみたり、一つにまとめられるであろう列はまとめたり、表示・非表示で利用しているルールを本当に必要かどうか精査してみたり、バリデーションで利用しているルールを本当に必要かどうか精査してみたり。表示速度と言う観点に重点を置き、真剣に検討をすると意外とコントロール数もルール数も減らす事ができます。軽く検証したところ、20コントロールを削除するとIEでおよそ1秒~1.5秒早く表示される感じです。小手先の工夫でも十分に体感できる可能性があります。

コントロール数と単純に言ってもそのコントロールの種類でも左右されるのかもしれませんが、そこまでは把握できていません。ただ、軽く検証してみたところでは、コントロールの種類で大きく表示速度に左右される事はなさそうです。(ただし、別の場所からデータを引っ張ってくるようなコントロールは影響大きそうですが、そこまでは調べきれていません。)
おそらくですが、コントロール数が増えるほど表示時間が遅くなる原因は、コントロールを適切に配置するのに、CSSで大枠のdivにインラインで[top][left][height][width]といった位置情報が記述されていて、それらを表示の際に全てのコントロールで計算しているので時間がかかっているのではと思っています。(あくまでも予想なので違っていたらゴメンナサイ。)
また、例えばパネル内に非表示にした隠し項目や、タブのように開閉させてコントロール数を表示上で制御している場合でも、CSSでdisplay:none;で非表示にしているだけで、ソースを見るとHTML上では記述があり、上述の位置情報も計算されていたので、表示上のコントロール数ではなく、デザイン画面で実配置したコントロール数が影響範囲です。実際に表示速度が遅い状態でコントロールを非表示にしても遅いままです。

そういう意味でも、もし表示速度でお悩みの場合は、やはりコントロール数を減らしていく方向が一番考えずに表示速度を速くさせる方法なのかもしれないです。

Nintex Formsのユーザー列の注意点


SharePointのユーザー列はサジェスト機能で入力途中で候補がドロップダウンで表示されます。


Nintex Formsのユーザー列も同じです(Forms的には「人々」というコントロール名です)。ただ、若干見た目や表示項目が違います。この環境では設定していないけど、プロフィールに写真を登録していれば写真も表示されるようです。

どちらもSharePoint2007あたりでは存在していた、ダイアログでユーザーを検索する機能はなくなっています。
※Formsではレガシーコントロールとして「人々 V1」というものがあります。サーバーの全体管理から追加をします。
【参照】
Using the legacy People Picker control with Nintex Forms

 

Nintex Formsのユーザー列では、SharePointの標準のユーザー列にはない注意点があります。

サジェストのドロップダウンが下のコントロールに潜り込んで隠れてしまうんです。

原因はコントロールの重なり順です。過去の記事で軽く触れています。
【参照】
Nintex Forms コントロールのクセと対策 その1

PowerPointの「オブジェクトの順序」みたいな概念があり、上から順番に配置していく事を考えると、上にあるユーザー列のコントロールより、下にある複数行テキスト列のコントロールの方が前面にあり、構造上、背面にあるユーザー列のコントロールが隠れてしまうのです。

原因がわかれば対策はわかります。ユーザー列を前面に出せば良いです。該当するユーザー列を選択し、「最前面へ移動」をクリック。

解決しました。

この注意点は、作成中は結構盲点で見落としがちなので、ユーザー列を追加する際には気に留めておきましょう。

ちなみにFormsを起動した際のデフォルトの配置状態でもこの現象は起きます。

Nintex FormsでSharePointの選択肢を簡単に横並びにする

SharePointの選択肢列で不便に思うのが、ラジオボタンやチェックボックスが1列縦並びにしかできないこと。ムダに縦スクロールができてしまいます。選択肢が多い場合はドロップダウンにしがちですが、複数選択させたい場合はドロップダウンは使えません。

例えばこのように「好きなフルーツ」列を作りました。フルーツ大好きなので単数選択は僕にとっては酷な選択です。なので複数選択できるようにチェックボックスにしました。縦長になりますよね。こういうものだと思えば気になりませんが、なんとかしたい場合には、Nintex Formsでは2列以上に簡単にできます。

必要なコントロールの設定はこの3点です。

例によって文字だけでは意味がよくわからないので検証をします。

まず「列の数」で何列にしたいかを設定します。単純に何列にしたいのか数字を入力するだけでもOKだし、式も使えます。ここに「3」と入力するだけで、3列に設定してみました。簡単です。

次に「選択肢の配置」というのがわかりにくいです。

「下から右へ」はこんな並び順。これを見ると「下から右へ」の意味がわかりますね。

ここを「右から下へ」に変更するとこうなります。

つまり「右から下へ」というのはこういう事ですね。

最後に「列の配置」。

これは「固定」「浮動」とあります。今までは固定。

浮動に変更すると、こうなります。

固定は列ごとに左寄せされるのに対し、浮動は全てが左寄せになります。このままでは値と値の間の余白が不十分なので見づらく、何かしらの調整がしたくなりますね。

このようにFormsなら簡単に3つの設定で列の値を横並びにする事が可能です。

Nintex Forms で一度塗ってしまったコントロールの「背景塗りつぶし色」を透明に戻す方法

【結論】

「その他の色」から戻せる


例えばExcelでセルに色を塗った後に、元の透明に戻したい場合、「塗りつぶしなし」を選択すれば元の透明に戻せますよね。(白を選択しても見た目では元に戻るけど、厳密には上述の方法が元に戻す方法)

Formsでパネルなどのコントロールに色を塗る際に、「背景塗りつぶし色」で色を選択します。(「背景塗りつぶし色」ってネーミングがもうね…)

問題は塗った後に元の透明に戻したい場合。

Excelなどのような「塗りつぶしなし」的な解除ボタンはどこにもありません。操作の直後に戻すなら「元に戻す」ボタンで戻すことは可能ですが、他に色々な操作をした後に戻したい場合には、使えませんよね。

不可能かと思いましたが、分かりづらいところで透明に戻す方法があったので紹介します。

同じく「背景塗りつぶし色」で、一番下の「その他の色…」を選択します。

背景色ダイアログの「新しい色:」の下あたりにRGBの数値があって、そこを空欄にしてOKを押します。

透明に戻りました。

ちょっとわかりづらいですよね。数分悩んだので紹介してみました。

SharePoint で縦長ページのページ全体スクリーンショットが撮れない!→解決!

【結論】

ちょっと細工をすれば撮れます。


たま~にですが、ページのスクリーンショットを撮りたい時があります。(今の会社に入社してから頻度が増えました。)

SharePoint に限らずスクショを撮るには「PrtScn」キーを押せば良いのですが、それだとブラウザで開いたまましか撮る事ができません。(アクティブなウィンドウだけをスクショするなら「Alt」を押しながら「PrtScn」ですよね。)

縦長ページのページ全体のスクショを作るには、ペイントなどで切った貼ったを繰り返し…なんて面倒な作業も考えられますが、ダルいので便利なブラウザのアドオンやソフトを使いますよね。

アドオンを入れてまずは手始めにYahoo!トップページを撮るとこんな感じで縦長ページでもページ全体のスクリーンショットが撮れます。

この勢いでSharePoint のページでページ全体スクショを撮ったら…

ん???開いた領域しか撮れてない!!Yahoo!のトップページなどは普通に撮れたのでアドオンのせいではありませんでした。

これはSharePoint の作りの問題で、SharePoint のページはスクロールさせてもスイートバーやリボンは固定され、コンテンツエリアのみスクロールしますよね。ここが影響しているっぽいんです。

【解決法】

アドオン次第で成功したりしなかったりしたので、僕が成功した条件で紹介します。

  • FireFoxを使います(アドオン「FireBug」も入っています)。
  • スクショ用のアドオンは「Pearl Crescent Page Saver」を使いました。
  1. F12キーを押す
  2. 検索で「s4-workspace」を検索し、該当箇所を選択
  3. 「#s4-workspace」の「overflow:auto;」のautoをvisibleに変更(単にautoを削除するだけでもOK)
  4. F12キーを押す(スクロールバーが消えます)
  5. 「Pearl Crescent Page Saver」のアイコンから「ページ全体を画像として保存」をクリック。

おしまい。↓これで撮れたスクリーンショットです。ちゃんとページ全体が撮れています。

環境をFireFoxに限定したのは理由があり、IE11にスクショ用アドオンを追加して同じ方法で試したらバグっぽい感じでうまく撮れませんでした。ブラウザやアドインなど、環境によって成功しない場合もあり、ただそれを色々と検証するのが個人的にダルいので、成功した環境で紹介しました。IEじゃなきゃダメだという場合は、IEのアドオンを色々試してみてください。IEでも作業工程は上述の方法とほぼ同じです。

社内サポート業務の効率化にもつながる、SharePoint運用・運営部門の積極的な社内向け情報発信

企業でSharePoint (に限らず)を導入すると、少なからずIT部門に使い方や操作トラブルの問い合わせが入ると思います。利活用促進の一歩だと思えば問い合わせが入る事は喜ばしいこととは思いますが、多くの企業ではサポート業務専任スタッフはおろか、SharePoint 専任スタッフもおらず、だいたい他業務と兼任していることが多く、これらのサポート業務に忙殺され、他業務に影響が出ててしまう事もあります。

IT部門がサポート業務を担う、いや、渋々担わされている企業にありがちなのが、以下の状況。

  • 問い合わせは主に電話で受け答え。
  • 問い合わせ内容(質問・調査・回答)を保存していない。
  • 問い合わせ内容を個人で保存しているがチーム内で共有されていない。

つまり、悪い言い方をすれば「行き当たりばったり」。問い合わせが電話で、それを保存していない場合、実は過去に何度も同じ内容で問い合わせが来ているのに、受けたIT部門のメンバーが違う事で、各自毎回調査をして回答をするという、かなり非効率な状況になっていたりするんですよね。
以前にも書いたとは思いますが、IT部門はサーバー管理など運用面には関心があっても、運営面では無関心な事が意外と多いんです。また、ありがちなのがIT部門自体がSharePoint をあまり活用していないケースもあります。IT部門が主導で各種グループウェアなどを比較検討した結果選んだ製品を導入し、技術面でも詳しいのであれば、その段階では一番積極的に有効活用できる部門だと思うんです。でもそのIT部門が相変わらずメールやファイルサーバーを使っていて、導入したSharePoint を利活用していない。これじゃ社内展開がうまくいかないですよね。

そこでIT部門が積極的にSharePoint を利活用しつつ、社内サポート業務の効率化を図る、一石二鳥な方法があるんですよね。それが社内向けにSharePoint に関する情報発信をすることです。

  • 自発的にTips的な情報をブログなどで発信する。
  • ユーザーからの問い合わせはIT部門内で蓄積する。(IT部門内公開)
  • 問い合わせから良質な問い合わせを抽出しFAQとして社内公開する。

別に目新しいことではないんです。これだけでも十分なんです。

先にブログなどでTipsなどを発信する事で利用者のSharePoint スキルの底上げを図れます(読まれているかどうかは置いといてですよ)。
ユーザーからの問い合わせをIT部門内で共有する事で、チームメンバーのスキル底上げにもつながるし、同類の問い合わせに関しての調査・回答工程を省けます。
FAQとして公開する事により、ブログと同じくユーザーが自発的に問い合わせる前に自己解決できる可能性が出てきます。また、既出で解決済みの問い合わせを新規で受けたとして、該当するブログ記事やFAQを参照してもらうだけで済むので対応の時間効率化にもなります。これが1年2年…とコツコツ増える事によりナレッジは蓄積されます。

これもありがちですが、中小企業でIT部門のメンバーも少なく、SharePoint 担当者が一人で対応していた場合、この方が急に退職されたりして残されたIT部門のメンバーが途方に暮れる…みたいな。属人化させないためにも、日々ナレッジは蓄積し、できる限り共有されている仕組みは大事ですよね。

私は実際に運営で問い合わせを受けるサポート業務も兼任していたのですが、まぁ問い合わせ内容もピンキリで、時にはマイクロソフト社に助けを求める事もありますが、多くの場合は簡単な説明で解決できる内容でした。

このように実際にSharePoint を有効活用している事例を自然と見せる事により、少なからず社内全体の利活用促進に貢献できるのではと考えます。

一石二鳥どころかそれ以上だとは思いませんか?

このような提案を上長や組織内にする際に、自ら情報発信をするのに抵抗を感じる人がいたり、そもそも業務を増やしたくないと思われたり、抵抗勢力があるので厳しかったりもしますが、大事な事だと思うんですよね。もう一度言いますが、別に画期的な方法でもなく、誰でも思いつく事。だけどそれを実現できていない企業も少なくはないはず。

SharePoint リッチテキストエディタ内で改行をするとやたら行間が空いてしまう!?

【結論】

  • Enterは段落、改行はShift+Enter

これまた、SharePoint 知っている人にとっては常識なのかもしれないけど、投稿者レベルの利用者は実は結構知らない事だったりします。実際、過去に「行間なんとかならないですか?」というユーザーからの問い合わせが何度かありましたし、教えると初めて知ったというユーザーが多かったです。

先日の記事では投稿者・閲覧者レベルでの教育が必要と書きましたが、例えばこのような小さい事まででも社内ブログなどでTips的に発信すると、良いのではと思います。

本題に入ります。

ページのコンテンツエリアやアイテムの複数行テキスト列のように、Word感覚で文章を装飾できるリッチテキストエディタがあります。

この文章を作成中に改行をしようとEnterキーを押したところ、思った以上に行間が空いてしまって困ったことはありませんか?

改行の操作は「Shift+Enter」なんです。このくらいの行間になります。

じゃ、「Enter」はというと、段落扱いです。比較してみるとこんな感じ。

あれ?行は「改行」なら段落はなんだろう?改段落???次段落???ま、いっか…。

通常の文章でも改行と段落では段落間の方がスペースは広いですよね。なので改行をする場合はShift+Enter、次の段落にしたい場合はEnterと覚え、意識して使い分けをしましょう。

これ、実はSharePoint のクセじゃなくて、WordもPowerPointも同じなんですよね(ちなみにこのブログで利用しているWordPressも)。そのくらい常識でしょ?と思った方は、その常識は一旦拭った方が良いかもしれません。冒頭の通り、意外と知らない人は多いんです。(正直、僕だって SharePoint で仕事をする前は知りませんでしたもん。)たった少しの説明でコツコツと社内のコンテンツのクオリティが上がるのなら、その手間は「常識だろ…」と惜しまない方がみんなが幸せになります。

さて、ここまでで読み終えても良いですが、ここから先はHTML的な挙動についても書いてみます。

Shift+EnterとEnterはソースコード的にはどのような違いがあるか?リッチテキストエディタ内には「ソースの編集」というボタンからソースを見る事ができます。

1行目のソースはひとつの段落である事を示す<p></p>で囲まれます。つまり1行目でもあり、1段落目でもあります。

Enterを押して2行目を書くと2行目も<p></p>で囲まれます。なので2行目ではなく、2段落目です。

Shift+Enterを押して2行目を書くと改行を示す<br/>が追加され、全体では1段落目のまま、2行目は1段落目の2行目です。

SharePoint2007の頃はリッチテキストエディタで生成されるHTMLは非常に汚く見るに堪えないものでしたが、バージョンアップするごとにだいぶ良くなってきました。

SharePoint でビューのURLを大文字←→小文字で変更できない!あ、解決

【結論】

  • 大文字小文字の違いは違いと認識されず変更されない。
  • 法則がわかれば変更可能。

アプリ名やビュー名など表示名は気にするけど、URLまでは気にしない場合はどうでも良い記事です。

列の内部名やアプリのURL(ディレクトリ名?)は作成後に変更はできませんが、ビューに関してはビュー名の他に「このビューのWebアドレス」という欄で、URLの変更が可能です。URLにこだわる場合、大文字小文字も含めて一貫した規則性に従って作成すると思います。複合語の場合は、キャメルケースだの色々な命名規則がありますが、例えば頭文字を小文字で書いていたら、後から大文字に直せと言われた場合。

例として「viewName」を「ViewName」に変更する際に事象が確認できます。

▼「このビューのWebアドレス」が「viewName」になっています。

▼「このビューのWebアドレス」を「ViewName」と先頭を大文字Vに修正します。

▼ところがブラウザのURLを確認すると修正されていません(小文字のまま)。

▼再度ビューの編集ページを開いても「viewName」に戻ってしまっていました。

検証してみた結果なのですが、ビューの編集ページの「このビューのWebアドレス」欄では、大文字から小文字、小文字から大文字の修正は、内部的には大文字小文字の違いは認識されず、変更がない項目としてスルーされてしまうようです。

【対策】

変更されない理由がわかれば対策は簡単です。一旦別の文字列に置き換えて再度変更すれば良いだけです。例の場合だと…

▼「このビューのWebアドレス」からvを削除し「iewName」で修正します。(一旦他の文字列にしたいだけなので、極端な話「a」で修正してもOK)

▼ブラウザのURLを確認すると当然「iewName」に変わっています。

▼再度ビューの編集を開くと「iewName」になっているので、「ViewName」に修正します。

▼ブラウザのURLを確認するとちゃんと大文字に変わっています。

マニアックなところですが、実際に質問されて自分でも知らなかった事象だったので記事にしました。

SharePoint の利活用促進を本気で考えるなら閲覧者投稿者レベルでの教育が必要(だと思う)

※今回の記事は長文です。

サーバー管理者レベルでの参考書や無料セミナーなどはよくありますが、閲覧・投稿者レベルでのそれはほとんどないと思います。マイクロソフトからエンドユーザー基本操作マニュアルなるものもダウンロードできますが、あれもサイト管理者レベルなのかなと思います。(探せていないだけ?)

つまり、サーバー構築からアプリ(リスト・ライブラリなど)の作成・設定レベルはすぐに勉強できるけど、投稿方法や閲覧方法などは使いながら覚えて!的な感じです。しかしながら、SharePoint は直感的に全ての操作を把握するにはほど遠いUIでして、SharePoint に詳しい人には常識的な操作であっても、利活用の主役である閲覧・投稿者にとっては直感的に操作をするには厳しい部分もあります。

運営に長年携わっていて多かったユーザーに知られにくい機能の一例

  • ビュー内で列でソートやフィルターができる事。
    (例えばマウスオーバーしないと列名の横に「▼」が出ないなど、直感的には機能に気がつかないUI)
  • 個人ビューの存在
  • 通知機能

これを教えるだけでもSharePoint の印象が大きく変わるであろう機能も、意外と教えないと存在すら気がつかないまま何年もSharePoint を利用しているユーザーは少なくはありません。

ただ、これらSharePoint の機能紹介的な教育よりも大事であると思う事があります。

情報共有とは情報発信だけでは意味がなく、発信された情報が受信され活用されて意味を成します。つまり、発信した情報が読まれなければ意味がありません。言い換えると、投稿者は可読性を意識する事がポイントかと思います。

サーバー管理者やサイト管理者がいくらUIを気にしてデザインのカスタマイズをしたところでそれはあくまでも枠の部分。そこより大事なのは枠の中身です。その中身を作るのは投稿者。その教育が必要だとは思いませんか?
軽く例を挙げると…

  • 背景と文字とのコントラスト
  • 文章をカラフルにすれば良いというものではない
  • フォントサイズと行間の重要性
  • テキストリンクが装飾に埋もれてリンクと気づかれずクリックされない

などなど。実際アイテムの中身を見ると、受験生のようにテキストをカラフルにして、白背景に黄色文字を使ってチカチカしたり、リンク色と同じ色をつけているテキストがあって、クリックできるのかと思ったらクリックできなかったりイラっとするものもあったりします。思ってもいないような使い方をするんですよね。これはSharePoint に限らずプレゼン資料など人に見せる資料を作成する人全員に必要な教育でもあるんですけどね。

また、Webのマナーなども重要です。
例を挙げると…

  • 引用についてのマナー
  • 著作権について

こういう部分も閉ざされた空間だからといって自由であるわけではなく、社内のモラル・マナー向上においても教育は大事だと思います。

ちなみにこの記事を読んでこれらを常識だと思われている人は、すでに自身のスキルや知識に悪い意味で侵されています。非IT企業はもちろん、IT企業であっても必ずしも全従業員がITリテラシーやモラルが高いとは断定できません(従業員を信じたいですけどね。)。

また、なんでも「○○は禁止」といったネガティブな教育をすると利活用促進とは間逆の結果になりがちです。「○○はこうした方が良いですよ」的なポジティブな教育が必要ですね。利用したい・便利だと思わせる事が重要なので。

「教育」というと大きな話に聞こえてきますが、それこそSharePoint のブログ機能やSNS機能を利用して発信しても良いかなと思います。ディスカッション掲示板を利用してユーザー間で解決させる仕組みを作るのもアリかと思います。

サイトコレクションおよびサイトを管理者に渡して「はい、ご自由に」というやり方で運営をしていて、利活用されなくて困っている企業のIT管理者がいらしたら、運営・教育の重要性を少しでも感じていただければと思います。