ダメなOneDrive

設計がダメなヤツ。ソフトウェアとしてデキが悪い。

  • 昔の解説(動画)を見ると、${env:USERPROFILE}\OneDrive\ドキュメント\${env:USERPROFILE}\ドキュメント\ が同一のディレクトリの異なる2つの変更可能ビューとなっていたようだ。これはさすがに誤操作のもと(「重複ファイルだから消そう」)。
    今は、${env:USERPROFILE}\OneDrive\ドキュメント\${env:USERPROFILE}\ドキュメント\ は別なディレクトリの扱い。
    例えば、${env:USERPROFILE}\OneDrive\ドキュメント\ はモニタリング専用(Read Only View)で、変更不可なファイルシステムに見える、とかの方法もあったと思うが。
  • ${env:USERPROFILE}\OneDrive\ドキュメント\${env:USERPROFILE}\ドキュメント\ は別なディレクトリとしたらしたで、また別な使い勝手の悪さが生まれた。
    1. ${env:USERPROFILE}\Xxx\ をOneDrive管理化にすると、${env:USERPROFILE}\OneDrive\Xxx\ ができる。このときはディレクトリ&ファイルの移動〈move〉が使われるようだ。
    2. ${env:USERPROFILE}\OneDrive\Xxx\OneDrive管理から外すとフォルダー&ファイルは消える。
    3. 元のディレクトリは再作成されるが、中身は空になる。
      • クラウド上には物理的に存在する ${env:USERPROFILE}\OneDrive\Xxx\ の処理はユーザーの手動。
  • 最悪!

いかにもダメな挙動の実例(経験した時系列順):

  1. ${env:USERPROFILE}\Pictures\ に大量の画像ファイルが存在していた。
  2. なんかのはずみで(おそらくBasic契約のタイミングで勝手に)、「画像」がOneDrive管理下になってしまった。
  3. が、Pictures\iCloud Photos\ が iCloud のダウンロードフォルダだと検出して、Pictures をOneDrive管理下にすることをOneDrive 自体が諦める(これは賢明な判断)。
  4. だがなぜか:
    1. ${env:USERPROFILE}\Pictures\Screenshots${env:USERPROFILE}\Pictures\Camera Roll だけは管理しようと OneDrive が試みる。
    2. ${env:USERPROFILE}\Pictures\Screenshots${env:USERPROFILE}\Pictures\Camera Roll は消えて、フォルダ&ファイルは移動する。
    3. 移動先は ${env:USERPROFILE}\OneDrive\画像\スクリーンショット\${env:USERPROFILE}\OneDrive\画像\カメラロール\
    4. 手動で(OneDrive のUIから)、「画像」をOneDrive管理下から外す。
      このときのUIもわかりにくい。
      OneDriveアプリケーションの歯車・アイコン → 設定・メニュー項目 → ダイアログ・サイドバーのアカウント・ボタン(アカウントタブ)→ フォルダーの選択・ボタン → 「画像」のチェックマークを外す
  5. しばらくすると、${env:USERPROFILE}\OneDrive\画像\スクリーンショット\${env:USERPROFILE}\OneDrive\画像\カメラロール\消える
  6. ${env:USERPROFILE}\Pictures\Screenshots${env:USERPROFILE}\Pictures\Camera Roll が再作成されるが、中身はカラッポ。空のフォルダーのタイムスタンプは最新になる。
  7. この挙動は、多くの人は「ファイルが消えてしまった」と思うだろう。 そんなことも予想できないのか? > 設計者
  8. 実際には、クラウド上で \マイファイル\画像\スクリーンショット\\マイファイル\画像\カメラロール\ の下にファイルが残っている。ローカルに復元したいなら手動でやるしかない。

いやはや。なんでこんなことになるのかの見当はつく(ソフトウェア設計アルアル)が、酷いことになったもんだ。

悲惨さに輪をかけているのがファイル名の二重管理。

  • ファイルシステムの生の名前が論理的な名前にマップされる。マップ情報はレジストリに持っている、「"ドキュメント" <--> "Documents"」のように。
  • UIでは日本語の名前を使う。
  • システムウェアは、名前の変換を適切に行う。

ところが:

  • ${env:USERPROFILE}\Xxx\${env:USERPROFILE}\OneDrive\Xxx\ は、UI上では同じ名前となっている。
  • ${env:USERPROFILE}\Xxx\ は名前マップを経由して表示されている。
  • ${env:USERPROFILE}\OneDrive\Xxx\ は、ファイルシステムの生の名前がそうなっている。
  • クラウド上でのURLの編成はまた別な名前を使っている。UIにあわせて「マイファイル」とか入れてる。
  • 名前マップはレジストリで設定できるが、PCのベンダーごとにも違うらしい。「ピクチャ」か「画像」か、など。

これでは人間もソフトウェアも混乱してしまう。

こういうデキの悪いソフトウェアは、「運用でカバー」するしかない。

ここから追記

OneDrive の停止に関して次の方法の説明を見つけた。

  1. クラウド上のフォルダー/ファイルをすべてローカルに落として、非揮発性のファイル(緑チェックマーク)にする。
  2. OneDrive を常駐プロセス(スタートアップ時起動アプリ)から外して起動しないようにする。
  3. その他の操作はしない。

上記を採用する理由は:

  1. OneDriveの設定の「バックアップの管理」からフォルダーの同期停止をすると、ローカルからは消える仕様だから。

なるほど。だが、そもそも、ローカルからは消える仕様がどうかしている。しみじみ設計者がイカレている。

さらに、「アカウント」の設定において、PCとクラウドのリンクを解除するという項目がある。つまり、「OneDrive をやめる」ことが:

  1. Microsoftアカウントのレベルで、PC←→クラウド・リンクを解除〈削除〉する。
  2. OneDrive の設定として、特定フォルダーの同期を停止する。
  3. OneDrive プロセスを起動しない。
  4. OneDrive\ フォルダーを削除する。
  5. アプリケーションである OneDrive をアンイストールする。
  6. OneDrive 契約を破棄する。
  7. MSアカウントを削除する。

(1)生きている人間、(2)アカウント、(3)ローカルファイルシステム、(4)クラウドファイルシステム、(4)アプリケーション (5)動作しているプロセス などの各種実体とその関連性が複雑だし、個別の概念も設計が悪すぎる。フントにどういう輩が設計している?

それと、「バックアップ」という言葉を使っているが、同期とアーカイブは違うし、違うけど区別が難しいから注意すべき。OneDrive同期のしているファイルを、「クラウドにバックアップがあるから消してもいいや」と消す人がいるのは当たり前。そういう当たり前も考慮して設計しないと。