Excelテキストコンバータ作成時の気配り

Excelはテキストコンバータとして非常に優秀だ。ある一定のルールに従ったテキストを別のルールに置換する。ちょっとしたルールであれば、関数でなんとかなってしまうし*1、少し複雑なルールであればVBAを使えばよい*2。場合によっては、関数とVBAの組み合わせなんてこともできる。まあ、とにかくEXCELにかなうテキストコンバータはそうあるものではない。

いろいろなVBAで作るテキストコンバータを見てきたけれど、VBAマスタはプログラマだけではなく、スーパーなユーザがなることが多いので、残念ながらちょっとした気遣いが欠けることが多い。以下に、ちょっとした気遣いを記載しようと思う。

・変換終了を表示する

変換が終了したら、ユーザに変換が終了したことを伝えよう。ループ処理終了後に「変換処理が終わりました」というメッセージボックスさえ出すだけで、ユーザの満足度は向上する。メッセージボックスが出ない場合、ユーザは「変換がうまくいかなかった」のか、「変換がうまくいって終了したのか」を認識することができない。

・処理件数を表示する

テキストコンバータは、一般的に複数行のデータをコンバートするのであるが、全行を処理したことがユーザにわかるように、処理対象の件数を変換後にユーザに伝えた方がよい。これは上記「変換終了」表示に含んでもよい。

・変換に長時間かかるのであれば、実行前に「本当に実行するか」ユーザに問う

VBAの起動トリガは、ボタンが多いと思うけれど、ボタンを押下すると問答無用に処理が始まってしまうのはよろしくない。ボタンの押し間違えなんて、簡単に発生するのだから、処理開始してよいかをユーザに問わなければならない。このときに、ボタンのフォーカスは「No」か「キャンセル」に当たっていること。

・変換に長時間かかるのであれば、ループ内にDoEventsを入れる

ループ内にDoEventsを入れておくと、ブレイクが効くのだ。処理を強制的に中断することができる。永久ループも脱出できるのだ。だから、DoEventsをループに入れておくのは極めてお勧めだ。処理を開始してしまったが最後、処理が進んでいるのか、止まっているのかわからない状態に陥ることはよくあるので、DoEventsを入れることをお勧めする。

ーー
まあ、こんなことを注意するだけで、結構使い勝手は向上したりする。ユーザからなかなか出てこない要望なので、ちゃんと対応するといいかもしれない。

*1:例えば、数千件のデータをDBのテーブルに入れたいとき、INSERT文を作成するのような関数を用意する

*2:例えば、1レコードが5行から10行あるようなデータを1行10列に変換したい等

何かが上達するということ

3月のライオンという漫画に「電気圧力鍋」が超絶便利であることが描いてあった。それをなんとなく覚えていて、Amazonで価格を調べたところ、予想よりは安いことが分かった*1
調べてみると、電気圧力鍋というものは「圧力管理や温度管理を電子制御でやってくれる鍋」であるので、いわゆる低温調理も可能なようだ。

昔からあまり料理ということをしたことがないが、電気圧力鍋のレシピ集にはポトフや、豚バラ大根、低温調理のローストビーフなんかが掲載されており、非常に簡単に作れそうに見えたので、なんとなく電気圧力鍋を購入してみたのだ。
https://www.t-fal.co.jp/sp/products/pressurecookers/epc/manualtype/lakulacooker/


さて、電気圧力鍋が届いたので、料理経験値0のおっさんがレシピ通りに作ってみると、各レシピで1回目に何らかの失敗をするものの、2回目以降はおいしいものが作れるようになった。実はたいていのレシピには料理を作る人の暗黙知が潜んでおり、経験値0のおっさんはその暗黙知を読み取れないのだ(笑)。失敗は最大の先生であり、失敗によって暗黙知が習得されていく。

とはいえ、材料切って入れ、ボタン押すだけで、「煮る」、「蒸す」、「圧力調理」、「低温調理」が簡単に行えてしまう電気圧力鍋は確かに非常に便利な料理器具であった。

電気圧力鍋調理を行うようになってから、料理に対する心理的な抵抗感が徐々に薄まってきたため、電気圧力鍋を使わない簡単な調理も行うようになった。日本という国は、調味料文化が著しく発達していて、専用調味料さえ買ってくれば、そこそこおいしい料理が、経験値0おっさんにも作れてしまうのだ。

以上のことから、なんとなく思ったことは、結局ものごとの上達、特に守破離の守の上達のための要素は3つある。「トライ」と「エラー」と「エラーの修正」で、このうちどれが欠けても上達は難しいんじゃないかということだ。3要素を繰り返し行うことでもっとも効率化されるんじゃないかなと思ったりした。

多分、何かを上達させるためには「トライの障壁」を下げ、「軽いエラーが起きやすい環境」を与え、エラーが発生したら原因を考えさせる、というのが最も良い方法なのだなと、思ったりした。

*1:もちろんピンキリであろうが

Windowsでコピー可能な意外な項目

Windowsを使用する上でなくてはならない機能、ctrl+cによる選択項目コピーだが、意外なものがコピーできることがある。

メッセージボックス

画面上にメッセージボックスが出ている場合、メッセージボックスにフォーカスを当てた状態でctrl+cを実行すると、メッセージボックスの内容が「テキスト」でコピーされる。画面キャプチャよりも便利なので、覚えておくと良い。


'---------------------------
タイトル
'---------------------------
てきとうなメッセージ
'---------------------------
はい(Y) いいえ(N)
'---------------------------

メモ帳に貼り付けて、エラーメッセージだけ抜き出せば、あとはGoogleさんなり、生成AIさんなりに、エラーメッセージを使って問い合わせれば良いのだ。

IPアドレス

WindowsIPアドレスを設定する場合、第一オクテットから第四オクテットまで、4つに区切った状態で設定する。実は、IPアドレス欄のどのオクテットにフォーカス当てても、ctrl+cで、フルIPアドレスがコピーされる。


192.168.2.10

さらに言えば、ドット区切りのIPアドレスをコピーして、いずれかのオクテットにフォーカスあてて貼り付ければ、ちゃんとIPアドレスがフルで貼り付けられる。

10.10.100.1

IPアドレスが管理表に記載されていて、その通りに設定しなければならない場合に、コピペできるのは、作業ミスの軽減という観点からもよいことだ。*1

この2つを知るだけで、システム管理者はなんとなく楽になる風味なのではないかと思ったりしたりした。

*1:まあ、個人的には管理表に「IPアドレスを設定するスクリプトを自動生成する」ような仕組みを用意するけど

会社のPC環境はどうあるべきなのか

リモートワークが浸透した結果として、会社のPCはラップトップ型(いわゆるノートPC)が増加したように思う。ノートPCの良さはその可搬性なのだけれど、その代わりに犠牲にするものもある。ディスプレイの小ささと、キーボード位置の固定、拡張性の低さだ。
なので、潤沢な予算があるのであれば、会社にはデスクトップPCを置いておいて、移動時にはノートPCを使うというのが理想的なのだと思われるけれど、社員1人に2台のPCを割り当てられる企業はそう多くないだろうし、複数台割り当ててしまうと、ノートPC紛失の発見が遅れることも考えられる。

以上のことから、ノートPCをデスクトップPC的に使用するというのが現実解だろう。では、デスクトップPC的なノートPCの使用方法とはどんなものだろうか。

デュアルディスプレイ

ノートPCの最大の弱点である、画面の小ささであるが、これは外部モニタを接続してしまえばよい。最近のPCであれば、USB のType-CポートとHDMIポートがついているだろうから、Type-Cポートに「HDMI変換アダプタ」的なものをつけてしまえば、外部ディスプレイが2つつけられることになる。基本、大きさの同じディスプレイ2つは作業効率を格段に高め、かつディスプレイは現在非常に安価なので外付けのデュアルディスプレイは必須の装備といえる。

Windowsデュアルディスプレイ設定

外部ディスプレイ表示時に非常に邪魔になるのが、ノートPC本体のディスプレイ表示だ。本体ディスプレイは、ほかのディスプレイに比べて小さいので、カーソルが迷子になりがちだ。なので、「外部ディスプレイ接続時は本体ディスプレイ非表示」の設定を行った方がよいだろう。

本体ディスプレイをクリックして
マルチディスプレイ設定で切断を選べばよい
外付けキーボード

ノートPCのキーボードはどんなに頑張っても使用者の好みには合わないので、基本外付けキーボードをつけるとよい。
5000円くらいで「配給品」を用意し、配給品を使用する人には配給品を渡す、好みのキーボードを使用したい人には、個人的な購入と使用を許可し、配給品を渡さないというようなルールを作ればよいのではないか。

拡張性

ノートPCは拡張性がほぼ存在せず、できたところでメモリ増設とSSDの増設くらい。現状であればメモリは最低でも16GB、SSDは256GBは用意した方がよいが、増設せずにそのノートPCの一生を終わらせたいのであれば、購入時にSSDを512GBにしておいた方が無難だろう*1
交換できないであろうCPUについてはCore i5相当(Ultra5相当)のCPUをつけておくべきである。またGPUをつけてしまうと可搬性が著しく減少するので、GPUはつけない。しかしこれでは、現在の仕事に必要となりつつある、動画編集ができない*2。なので、動画編集用は専用のPCを購入してタイムシェアリングすべきだろう。場合によっては動画編集環境をクラウドで借りるなどすればよいのだ。

ポート不足対応

基本的にノートPCには、大量のUSBポートが用意されているわけではないので、上記対応によってポート数が足りないような事態になることも懸念される。個人的にはUSB Type-Cの1ポートを
HDMIポート
・電源供給ポート
・TypeーA
・Type-C
・LANポート
に変換する、以下のような製品を使用している。このようなものはいろいろ販売されているので探してみるとよいかもしれない。




まあ、なんだかんだで結構お金かかってしまうけれど、PC2台持ちよりははるかに安価なので、検討してみるといいんじゃないかなと思いますです。

*1:Windowsがどこまで肥大化するか分からんので

*2:できなくはないんだけどめちゃくちゃ時間がかかる

使いこなすという呪縛

最近気になることが「使いこなせていない」という言葉だ。
例えば
・新しいスマホ買ったんだけど使いこなせてない
・XXっていう調理器具買ったんだけど使いこなせてない
等だ。

何をもって使いこなしていると思うのかは、人によって異なるだろうけれど、大体の場合「その製品の機能を十分に使う」ことが使いこなすということだろう。

基本的にほとんどすべての製品について、機能を十分に使うなんてことはできない。使いこなせるのは大体、「専門家」が「単機能」のものを使う場合だけだ。例えば日本料理の料理人は包丁の機能を十分につかえる。しかし、どんな料理人だって、一般家庭用の多機能電子ジャーを十分につかうことはないと思う。ほとんどの場合、どんなに多機能であっても炊飯にしか使用しない。パンだの発酵機能だのは使用しないのだ。

基本的に多機能な製品は「購入する人がその中の1機能以上を使用したい」のであれば、購入目的を満たしている。だから使いこなせている・いないというのは「自分の目的を達せられているか」だけが評価基準なのではないか。

最近Youtubeに、とあるお笑い芸人の「自作PCを購入する」という動画があがっていた。
①ゲーム(マインクラフト)配信用のPCが欲しい
②以前の配信で自分のゲーム画面だけカクついていた
③カクつかないPCを作りたい
という内容だった。

完成したPCは要望を5倍以上満たすようなPCであった*1。それについて閲覧者からこんなコメントがついていた。
・こんなPC使いこなせねーんだから無駄だ

しかし、自作PCの購入者にとっては上記①から③の条件を満たせれば、使いこなせているということでいいんじゃないだろうか。そもそも、何をもって使いこなせるといっているのだろうか。PCの性能を十分に発揮させるということであれば、現在の高スペックPCでそんなことができる人間は皆無だろう。

だから、使いこなせている使いこなせていないなんてことは気にせず、やりたいことが1つでもできればそれでいいんじゃないのかね?と思ったという話でした。

*1:14700K、4070 Ti SUPER、2TB SSD、64GBメモリ

SELECT要素に何百項目あろうがキー入力すればそこにたどり着くよ

税金の申告WEBページにて、生まれ年の入力が1890年始まりの選択であることが話題になっているようだ。
問題と思われている項目は2つあるとおもわれる。

① 1890年生まれなんていねーよ
②「1890」始まりであることによって、130以上の項目をユーザの選択肢とさせちゃうこと

上記①はまあ個人的にどうでもいいと思う。MIN値を毎年確認して更新するなんて無駄そのものだ。
上記②については、まあその懸念はわかるのだけど、意外と知られていないのが、PCの場合*1、HTMLで選択肢を定義する「SELECT」要素はキー入力を受け付けてくれるということだ。要は選択肢にフォーカスおいて、1985と入力すれば、1985が選択されるのだ。このことをアピールするだけで、いいんじゃないだろうか。

要はこのような表記にすればよいということ。


年を選択してください。PCの場合、キー入力も可能です。

まあ、こんなのが最も簡単な解決方法だと思うよ。

*1:スマホではできないかも、、、スマホで税金申告するかな?

amazonアソシエイトのAPIテスト

書影表示のテストを実行