設計がダメなヤツ。ソフトウェアとしてデキが悪い。
- 昔の解説(動画)を見ると、
${env:USERPROFILE}\OneDrive\ドキュメント\
と${env:USERPROFILE}\ドキュメント\
が同一のディレクトリの異なる2つの変更可能ビューとなっていたようだ。これはさすがに誤操作のもと(「重複ファイルだから消そう」)。
今は、${env:USERPROFILE}\OneDrive\ドキュメント\
と${env:USERPROFILE}\ドキュメント\
は別なディレクトリの扱い。
例えば、${env:USERPROFILE}\OneDrive\ドキュメント\
はモニタリング専用(Read Only View)で、変更不可なファイルシステムに見える、とかの方法もあったと思うが。 ${env:USERPROFILE}\OneDrive\ドキュメント\
と${env:USERPROFILE}\ドキュメント\
は別なディレクトリとしたらしたで、また別な使い勝手の悪さが生まれた。${env:USERPROFILE}\Xxx\
をOneDrive管理化にすると、${env:USERPROFILE}\OneDrive\Xxx\
ができる。このときはディレクトリ&ファイルの移動〈move〉が使われるようだ。${env:USERPROFILE}\OneDrive\Xxx\
をOneDrive管理から外すとフォルダー&ファイルは消える。- 元のディレクトリは再作成されるが、中身は空になる。
- クラウド上には物理的に存在する
${env:USERPROFILE}\OneDrive\Xxx\
の処理はユーザーの手動。
- クラウド上には物理的に存在する
- 最悪!
いかにもダメな挙動の実例(経験した時系列順):
${env:USERPROFILE}\Pictures\
に大量の画像ファイルが存在していた。- なんかのはずみで(おそらくBasic契約のタイミングで勝手に)、「画像」がOneDrive管理下になってしまった。
- が、
Pictures\iCloud Photos\
が iCloud のダウンロードフォルダだと検出して、Pictures
をOneDrive管理下にすることをOneDrive 自体が諦める(これは賢明な判断)。 - だがなぜか:
${env:USERPROFILE}\Pictures\Screenshots
と${env:USERPROFILE}\Pictures\Camera Roll
だけは管理しようと OneDrive が試みる。${env:USERPROFILE}\Pictures\Screenshots
と${env:USERPROFILE}\Pictures\Camera Roll
は消えて、フォルダ&ファイルは移動する。- 移動先は
${env:USERPROFILE}\OneDrive\画像\スクリーンショット\
と${env:USERPROFILE}\OneDrive\画像\カメラロール\
。 - 手動で(OneDrive のUIから)、「画像」をOneDrive管理下から外す。
このときのUIもわかりにくい。
OneDriveアプリケーションの歯車・アイコン → 設定・メニュー項目 → ダイアログ・サイドバーのアカウント・ボタン(アカウントタブ)→ フォルダーの選択・ボタン → 「画像」のチェックマークを外す
- しばらくすると、
${env:USERPROFILE}\OneDrive\画像\スクリーンショット\
と${env:USERPROFILE}\OneDrive\画像\カメラロール\
が消える。 ${env:USERPROFILE}\Pictures\Screenshots
と${env:USERPROFILE}\Pictures\Camera Roll
が再作成されるが、中身はカラッポ。空のフォルダーのタイムスタンプは最新になる。- この挙動は、多くの人は「ファイルが消えてしまった」と思うだろう。 そんなことも予想できないのか? > 設計者
- 実際には、クラウド上で
\マイファイル\画像\スクリーンショット\
、\マイファイル\画像\カメラロール\
の下にファイルが残っている。ローカルに復元したいなら手動でやるしかない。
いやはや。なんでこんなことになるのかの見当はつく(ソフトウェア設計アルアル)が、酷いことになったもんだ。
悲惨さに輪をかけているのがファイル名の二重管理。
- ファイルシステムの生の名前が論理的な名前にマップされる。マップ情報はレジストリに持っている、「"ドキュメント" <--> "Documents"」のように。
- UIでは日本語の名前を使う。
- システムウェアは、名前の変換を適切に行う。
ところが:
${env:USERPROFILE}\Xxx\
と${env:USERPROFILE}\OneDrive\Xxx\
は、UI上では同じ名前となっている。${env:USERPROFILE}\Xxx\
は名前マップを経由して表示されている。${env:USERPROFILE}\OneDrive\Xxx\
は、ファイルシステムの生の名前がそうなっている。- クラウド上でのURLの編成はまた別な名前を使っている。UIにあわせて「マイファイル」とか入れてる。
- 名前マップはレジストリで設定できるが、PCのベンダーごとにも違うらしい。「ピクチャ」か「画像」か、など。
これでは人間もソフトウェアも混乱してしまう。
こういうデキの悪いソフトウェアは、「運用でカバー」するしかない。
ここから追記
OneDrive の停止に関して次の方法の説明を見つけた。
- クラウド上のフォルダー/ファイルをすべてローカルに落として、非揮発性のファイル(緑チェックマーク)にする。
- OneDrive を常駐プロセス(スタートアップ時起動アプリ)から外して起動しないようにする。
- その他の操作はしない。
上記を採用する理由は:
- OneDriveの設定の「バックアップの管理」からフォルダーの同期停止をすると、ローカルからは消える仕様だから。
なるほど。だが、そもそも、ローカルからは消える仕様がどうかしている。しみじみ設計者がイカレている。
さらに、「アカウント」の設定において、PCとクラウドのリンクを解除するという項目がある。つまり、「OneDrive をやめる」ことが:
- Microsoftアカウントのレベルで、PC←→クラウド・リンクを解除〈削除〉する。
- OneDrive の設定として、特定フォルダーの同期を停止する。
- OneDrive プロセスを起動しない。
- OneDrive\ フォルダーを削除する。
- アプリケーションである OneDrive をアンイストールする。
- OneDrive 契約を破棄する。
- MSアカウントを削除する。
(1)生きている人間、(2)アカウント、(3)ローカルファイルシステム、(4)クラウドファイルシステム、(4)アプリケーション (5)動作しているプロセス などの各種実体とその関連性が複雑だし、個別の概念も設計が悪すぎる。フントにどういう輩が設計している?
それと、「バックアップ」という言葉を使っているが、同期とアーカイブは違うし、違うけど区別が難しいから注意すべき。OneDrive同期のしているファイルを、「クラウドにバックアップがあるから消してもいいや」と消す人がいるのは当たり前。そういう当たり前も考慮して設計しないと。