コマンドラインで操作を行う際、タイプミス防止や作業ミス防止のため予め決められたコマンドをコピー&ペーストすることも多いかと思います。このコピー&ペーストの際に発生しがちな事故を防止するためのツールを作ってみました。
20~30年前と違って今時そんな事故はないよと思うような事故から「あるある事例」まで、環境側で対策されてもクラウドが出てきたり環境の進化で「古(いにしえ)の事故」が復活したりもあるので油断できません。
・ありがちな事故
| 事例 | 解説 |
|---|---|
| 改行コード | 改行コード(CR/LF)の混入で、貼り付けからの即実行。configなどテキストファイルへCR(^M)の混入。EDI(電子商取引・データ交換)で頻繁に発生 |
| 複数行コピー | 意図せず手順書複数行、説明文やコメントまで誤ってコピー |
| 全角スペース | 透明な全角スペースが紛れ込んでいる。ウェブサイトからのサンプルコピーで起こりがち |
| 全角文字 | コピー元ファイルや指示書の英数字や「"」などの記号に全角文字が混じってる場合がある |
| 制御文字 | TABキーなど特殊な文字や制御文字の混入。これもよくある |
| Unicode 区切り | 上で記載した制御文字に含まれるが、特に「行区切り(U+2028)」と「段落区切り(U+2029)」はSlackなどのコミュニケーションツール経由のやりとりで発生しがち |
| Unicode BOM | Unicode BOM (署名EF BB BF)がutf-8文字列の先頭に混入。LinuxやEDIで厄介。 |
| UTF-8不正バイト列 | vim編集中に発生。全角2バイト文字のうち1バイトを消し漏れてデータとして残る |
| コマンドの途切れ | コマンド最後までをコピーできておらず rm -rf /etc/ssh みたいに途切れる |
| バイナリ | ファイル名をコピーしたつもりがバイナリ(ファイルそのもの)をコピー、からの貼り付け。command not foundが延々と表示され、ターミナルの表示がおかしくなる。昨今、コマンドと証跡画像が繰り返しコピーされるため、テキストをコピーしたつもりの時にも発生 |
| ゼロ幅スペース(ZWSP) | Webからのコピーで混入。パッと見、表示されていない文字なのでEDIやLinuxのエラーで特に厄介 |
これを防止するためのクリップボードビューア(名称未定)を作成することにしました。仕様は以下の通り
| 仕様 | 説明 |
|---|---|
| OS | 作業端末として現段階ではWindowsを想定 |
| 表示 | 表示領域が狭く作業の邪魔にならない(シンプル) |
| 順位 | 常に最前面に優先して表示(目視でパッと確認できる) |
| 最大文字長 | 300文字(昨今のk8sやsslなどコマンド肥大化傾向に対応) |
| モード | 簡易表示モード、全文表示モードを簡単に切り替え可 |
| 簡易モード | 全文または最初の100文字と最後の20文字を表示 |
| 全文モード | コピーした文字列すべてを表示する |
| 開発言語 | HSP3系 |
以上で開発を進めていきます。まずはいい感じに動いているβ版の画像キャプチャを公開。こんな感じで小さなウインドウが最前面でクリップボードのデータを監視します。
現時点でのアラートオプションとして、バイナリデータを保持している場合に警告をだします。昨今、コマンドを投入して、証跡画像を取得して・・の反復で事故もあるかと思います。これから改行コードなど対応文字を増やしていきます。
こんな感じで動いています。現在、ソフトウェア名やライセンスなど検討しています。このソフトは近いうちにオープンソースのフリーウェアとして公開予定です。

