View on GitHub

AFXW

AFXWの演習

ファイル操作とは

ファイル操作は,コマンドとディレクトリ構造の思い出し作業です.
ある操作がしたいときに,その操作のコマンドと,どの位置のファイルを入力にして,どの位置へ送るのかを思い出し決定しコマンドを打ち込みます.

このうち,操作やコマンドは何度も使うものはそのうち覚え,習熟していきます.
しかし,常時更新される自分のPCのディレクトリ構造を完全に記憶できる人はおらず,どこには視認性が高い現在のディレクトリのファイルだけや,デスクトップやマイドキュメントのフォルダしか記憶にありません.
そのため,いくつもエクスプローラーを立ち上げて視認性を挙げたり,すべてデスクトップにファイルを置いてデスクトップを散らかしたりすることになります.
このような操作は,すべての状態を視認可能にして,記憶の状態を確かにしてからファイル操作をすることは効率的ではありません.
より効率的に記憶を想起して,その状態を入力として与えることができればより効率的な動作が可能になります.

ファイル操作をするために記憶しておかないといけないディレクトリ構造には2種類あります.
それは,絶対パスかカレントパスから見た時の相対パスです.
当然,絶対パスでどこに何があるかを覚えている人は少なく,人の記憶に残っているのは,決まった特定のディレクトリ(デスクトップやDownload, マイドキュメント)など,用途の定まったディレクトリを起点として,相当な回数アクセスした場所くらいでしょう.
一方で,相対パスの情報は最も逐次更新されている場所であり,記憶(長期記憶)は存在することはほぼありません.
しかし,カレントディレクトリは,エクスプローラーでは,その他のディレクトリが見え,コマンドでもlsやdirコマンドひとつで,周囲の確認が容易にできるため,視認性が高いです.
また,ディレクトリの移動履歴も中期的な記憶としては残っているでしょう.

実際に行うファイル操作を,入出力ディレクトリの距離(記憶の距離?適切な言葉思いつかない)で分けると以下の4段階に分けられるます

  1. 現在のディレクトリと1階層のファイル移動で収まる処理
  2. 現在のディレクトリと履歴があれば収まる処理
  3. 現在のディレクトリと特定のディレクトリがあれば収まる処理
  4. 現在のディレクトリと指定した任意のディレクトリがあれば収まる処理

エクスプローラーを例に挙げて操作を分けるとと下記となります.

  1. 同一フォルダ内に,複数のファイルとフォルダがあって,いくつかのファイルを特定のフォルダにD&Dしてファイルを移動させる処理
  2. ファイルをコピーしたあとで,alt+←やbackspaceなどで履歴をたどってファイルを張り付ける処理 3.ファイルを選択して,左側のツリー構造の特定のフォルダ(デスクトップやドキュメント)に張り付ける処理
  3. 絶対パス指定で,フォルダを選択したり,2つエクスプローラーを起動して,出力先を選ぶ処理 通常,1と4くらいしか使っていないでしょう.

2画面ファイラは,この4をかなり高速に操作するために作られています.
一方で,1のための処理はあまりうまく作られていません.
なぜなら,原則,入力の窓から反対の窓へ出力するようにコマンドが設定されているからで,同じ窓内で終わる処理であっても左右の窓の状態を同一に保つなどの処理を追加で行わなければならない場合が多々出てきます.

この4の長距離移動の高速化に加え,1の近距離移動を拡張等で補うことで相当高速な動作が可能となります. しかし,拡張するための覚えるべきコマンド量の増加もバランスをとる必要がありでしょう. また,実際の処理としては,近距離移動よりも長距離移動のほうが多い気がします.近距離は参照するだけのほうが多いでしょう.