やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

Calc セルを変更から保護する

 保護の代わりにリビジョン管理すべき。

目的

 保護の目的はユーザの操作ミスを防ぐことである。

保護対象

対象 指定方法 備考
セル メニュー→書式セルセルの保護タブ→保護するにチェックする シート保護されていること
シート メニュー→ツールシートの保護をクリックする
ドキュメント メニュー→ツール表計算ドキュメントの保護をクリックする

ワークフロー

 2種類ある。

種名 解除に必要な操作
A パスワードなしシート保護 メニュー→ツールシートの保護をクリックする
B パスワードありシート保護 メニュー→ツールシートの保護をクリックしてパスワードを入力する
  • パスワードなしは事実上、メニューをミスクリックしただけで解除されてしまう
  • パスワードありは、パスワードを忘れてしまったら修正できなくなってしまう

 あれ、どっちも別のヒューマンエラーによって保護できないか編集できなくなるという別問題に発展してしまうのでは? 保護って要らない子じゃね?

保護は使わずリビジョン管理すべき

保護でミスは防げない

 保護の目的は誤操作を防ぐことである。表計算ソフトはしばしば間違ってセルを変更してしまうことがある。これを予防できうる。

 だが、今度は解除するときに苦労する。

 パスあり保護だとパスワードを忘れる可能性がある。変更できなくなって大惨事。よってパスなしで保護するのが安全。でも、どうやって解除するのか手順を忘れうる。また、UIもバージョンごとに変更されるだろうから解除の手順が変わりうる。

 さらに、パスなし保護の場合はメニューの誤操作で解除できてしまう。つまり誤操作に誤操作を重ねたら誤操作を保護できなくなる。誤操作しまくりな人の操作から守ることはできない。本末転倒。

 パスワードありなら、そんなミスは起こりづらい。誤操作でパスワードが一致することは非常に稀だから。ただしパス忘却リスクが生じる。

 おわかりだろうか。保護したところで、操作ミスもパスワード管理ミスも起こりうるのだ。

 保護ではヒューマンエラーを防げない。

 よってミスを防ぐという目的も達せられない。

 発想の転換をすべきだ。ミスは予防すべきものではなく、ミスった後で挽回できるようにすべきものなのだと。

ミス誘導→表計算ソフトを使うのが恐くなる

ミス誘導→表計算ソフトを使うのが恐くなる

 そもそもミスしやすいUIなのが問題である。

 たとえば、外部ソースとリンクしていたら開いただけで保存確認される。ユーザが内容を一切変更していないのにだ。これでは誤って変更してしまったときの保存確認と区別がつかなくなる。「よくわからんけど保存しちゃえ」が癖になりうる。

 区別をつける方法はある。外部ソースとリンクしているファイルは、最初に開いたとき、まず最初に保存してしまえば区別できるようになる。だが、それを常に気にし続けることは現実的でない。外部ソースリンクしているかどうかは文書ごとに異なる。そのような違いを常に気にし続けることは不可能だ。そのようなCalcの動作仕様など覚えていられない。絶対に忘れる。そもそも計算したい主題に集中したい。ツールの挙動を意識せねば気づかず破壊してしまいうるなら、それはもう便利な道具たりえない。

 表計算ソフトは気づかずミスして破壊しやすい。破壊せず運用しようとすると大変だ。これはもう保護しようがすまいが関係ない。

 そしてミスが生じる。怒られ、損失を被る。

 かくして、表計算ソフトを触るのが怖くなってしまう。

リビジョン管理によるフェイルセーフ

 ミスは防げない。そこで、ミスを防ぐのでなく回復できるようにする。

 保護でなくリビジョン管理するのだ。

 安全工学におけるフェイルセーフの考え方である。つまり前の状態に戻せるようにする。

 復元できること。これがヒューマンエラーから守り安全に管理するただひとつの解法である。

 Calcには自前でリビジョン管理機能がある。

  1. メニュー→編集変更の追跡Record

 結論:ヒューマンエラーから守りたいなら保護でなくリビジョン管理すべき。

所感

 いつかCalcのベストプラクティスをまとめたい。以下のような機能が多数あるから。

  • 手間がかかりすぎて現実的でない機能
  • 下位互換の機能
    • 「データ範囲名」でなく「セル範囲名」を使うべき
    • 書式を直接指定するよりスタイルを使うべき
  • 不要な機能
  • できないこと
    • 行や列の固定は1行1列まで(複数行列できない。大グループヘッダを固定できない)

 なんというか、とっ散らかったアプリだな。もっと必要最小限にまとめてくれ。機能を精査するのに無駄な時間をとられる。そして忘れる。ほんとダサい。

対象環境

$ uname -a
Linux raspberrypi 5.4.51-v7l+ #1333 SMP Mon Aug 10 16:51:40 BST 2020 armv7l GNU/Linux