OneDrive(旧SkyDrive)は、ファイル名を含めたパス全体の長さが255文字以内という制限がある事をご存じですか?
調べてみた限り、制限される環境とされない環境がありますので、OneDriveを使う方は覚えておいて損はないと思います。
2014.07.18 フォルダ名を日本語にした場合の結果を追記しました
現象
- OneDriveが管理するローカル フォルダにおいて、ファイル 名を含めたパス全体の長さが255文字以上になる場合はエラー メッセージが表示される
※チェック機能が働いていますね
- 上と同じ環境でフォルダ名を全て日本語にし、ファイル 名を含めたパス全体の長さが235文字以上になる場合はエラー メッセージが表示される
- ブラウザ上でファイル 名を含めたパス全体の長さが255文字以上のオブジェクトを作成し、クライアントで同期が始まるとエラー メッセージが表示される
※例外処理として処理されてますね
- 同期エラーが発生するとOneDrive クライアントの再構築を行う必要がある
※一度だけSkyDrive.exe プロセスが落ちました
原因
OneDriveのヘルプ ページの「同期時のファイルへのパスが長すぎる」で制限についてしっかりと説明されています。OneDrive デスクトップ アプリの同期に関する問題説明には、
ファイル名を含めたパス全体の長さが255文字より短くする必要がありますと明記されています。
この説明はWindows 7や8、8.1が対象だと考えています。
その理由は2点だと考えています。
- Windows の文字長の制限
- ブラウザ上からの操作、AndroidやiOSなど他OSでは、この制限は適用されません
※Apple社Macは所有していないので確認できません
- ブラウザから操作
- OneDrive <-> Android(4.2.2)
- OneDrive <-> iOS(7.1.2)
予想ですが、Windows と異なるアーキテクチャを利用しているためだと思います。
大体の方はWindows をご利用でしょうからOneDriveに、パス全体の長さが250文字前後のフォルダを作成というシナリオは考えられます。
↓
Android から、パス全体の長さが255文字を超えてしまうファイル名の画像をアップロード
↓
Windows で同期エラーが発生
↓
OneDriveの再構築
マルチ デバイスでの利用を想定している以上、Windows用OneDrive クライアントと制限の整合性が取れていない事はまずいのではないかと思っています。
OneDriveを利用される方で今回のような使い方をしようとする方はいらっしゃらないと思いますが、注意が必要だと思っています。