[Python] Ctrl + C (右クックからコピー) したものを取得する pyperclip

エクセルで保存した情報を簡単に処理して、その結果を社内のデータベースに転記する作業がある。そのデータベースのインターフェースはブラウザになっていて、恐ろしいことに(?)そのブラウザに表示される100~300くらいある(場合によってはもっとたくさんある)テキストボックス(inputで作られている)には、一括でエクセルのデータをコピペすることができないようになっている。なので、基本的には、100~300ある(場合によってはそれ以上の)テキストボックスには、エクセルの計算結果を一つずつコピペ、または、一つずつ手入力することが求められる設計となっている。

誰にとっても明白なように、一つずつコピペをしたり手入力するのは時間の浪費であるし、またミスの温床になりかねない。なので、ブラウザに入力するための別のエクセルを作成して、そこに一度計算結果をコピペして、そこからそのエクセルのVBAでブラウザに情報を渡すようにしている。

情報の処理・保存用のエクセル→→(コピーandペースト)→→ブラウザに情報を渡すVBAエクセル→→(VBA)→→ブラウザに入力完了

このVBAエクセルのおかげで作業はずいぶん楽になったのだけれども、やはりまだ辛い。結局、初めのエクセルから次のエクセルへコピペする作業は、文字通り「作業のための作業」であるからだ。ということで、少しでもこの作業を有意義なもの(?)にしようと考えて、少し調べてみたら、Python の pyperclip というライブラリーを使うとなんとかなりそうだと判明。pyperclip はコピーした文字列を取得できてしまう便利なライブラリ。新しいフローとしては:

情報の処理・保存用のエクセル→→(コピー and Python実行)→→ブラウザに入力完了
となり、少しだけ作業工程を減らすことができる。なお、"Python実行" のところでは pyperclip で情報を取得して、selenium で入力という流れ。

準備としては、まずはインストール。

pip install pyperclip
コピー(Ctrl+C、Cmd+C、右クリックからコピー)してクリップボードにある文字列を取得するには:
import pyperclip
pyperclip.paste()
でOK。例えば、エクセルで縦に1から4まで入力して、その範囲をコピーしてからpyperclip.pate()を使ってみる:
print(pyperclip.paste())
# 1
# 2
# 3
# 4
Windows なら改行は "\r\n" なので分割してリスト化もできる:
print(pyperclip.paste().split("\r\n"))
# ['1', '2', '3', '4', '']
最後の空が気になるので、シンプルに:
print(pyperclip.paste().split())
# ['1', '2', '3', '4']
のが簡単。

1列なら単に .split() でリスト化できるけれども、2列だと少し工夫(?)が必要。

エクセル上で1と5が横に並んでいるのは、"1\t5" というように、タブで区切られている。改行は上と同じ。なので、横に見て [[1,5],[2,6]...]というリストが欲しければ、まずは改行("\r\n")で区切り、それからタブ("\t")で区切ってあげれば良い:
print([i.split("\t") for i in pyperclip.paste().split("\r\n")])
# [['1', '5'], ['2', '6'], ['3', '7'], ['4', '8'], ['']]
やっぱり最後は空になってしまうので、if ではじいてあげる:
print([i.split("\t") for i in pyperclip.paste().split("\r\n") if len(i)>1])
# [['1', '5'], ['2', '6'], ['3', '7'], ['4', '8']]

pyperclipを使えば、一列のデータでも、2列(以上)のデータでも、コピーができるデータであれば簡単に取得して、リスト化ができると分かった。後は selenium に頑張ってもらってチクチク入力すれば完了。

[Coffee] Breville The Smart Grinder Pro でエスプレッソ

「巣篭もり」「おうち時間」の重要性が増しており、気軽にカフェにも行けないような今日この頃。ワクチンの普及によって社会的な状況は変わるかもしれないけれども、とは言え、おうちで美味しいコーヒーを飲めたらいいなぁと思い、ついに念願だった電動のコーヒーミルを購入。

Breville の The Smart Grinder Pro という製品。購入にあたり、検討したところは:
  1. エスプレッソ用の細かさで挽ける [must]
  2. ドリップ用の細かさでも挽ける [must]
  3. ポルタフィルターに直接挽いた粉を入れられる [wish]
  4. 価格が高すぎない [must]
  5. 見た目がおしゃれに思える [wish]
  6. お掃除がかんたん [wish]
というあたり。エスプレッソでもドリップでもどちらでも利用できて、価格がほどほどのもの (例えば10万円、とかは無理)が必須条件。可能であれば、ポルタフィルターに直接粉が落とせる (一度他の入れ物に入れてから、ポルタフィルターに移すのは大変)、関連して、お掃除がかんたんなのがよい (掃除が大変だと、そのうち面倒くさくて使わなくなる)。あとは、せっかく買うので、できればおしゃれ (に見える) ものが良いなぁ、とかんがえて色々調べてみて出てきたのが Breville。

挽く際の細かさは、写真の向かって右側の丸いところをカチカチ回すことで設定可能。エスプレッソの時は"15"、ドリップの時は"50"という数値が今のところのお気に入り。なお、この数値は前回の数値が保存されるので、一度コンセントを抜いてしまっても、次に同じ数値で挽くことができる。参考までに、"50"の細かさで挽いた粉がこんな感じ:

中深煎りとか深煎りの豆を買ってきておくと、手軽にエスプレッソにもできるし、ドリップコーヒーにもできる。今までは手挽きのミルを使っていて、手挽きのミルの良さを楽しんでいたのだけど、電動で手軽に挽けるのはまた別の良さがある。なお、注意点(?)として、コンセントがアースつき。

利用するコンセントの縦棒が2本( | | )だけの場合は、変換コード (例えば、アース有りプラグを、縦棒2本+アースターミナル用の電線 に変換してくれるもの) を利用する必要がある。

海外の製品だけど、今のところは東日本の普通の住居の電気 (100V, 50Hz) で利用できている。

手軽にエスプレッソもドリップも飲みたい方はおすすめです。

[IPad][JavaScript] iPad アプリ “Koder” で JavaScript のお勉強

諸事情があって、JavaScriptの勉強を始めた。

JavaScriptは2年くらい前に少しだけ触ったことがあるだけ (簡単なWebページを作った) なので、記憶も抜けているし、なんなら難しい印象が残っている (camel capital が怖い)。PCでも良いけど、iPadで気軽に勉強ができればいいなぁ、なんて考えて、なにげなく Apple Store で Koder という無料エディターをダウンロードしてみたら、どうやら JavaScript に対応しているらしい。初めの初めの初めの一歩、くらいのコードしか書けないのだけど、試しに書いてみたら、ちゃんと動いてくれた。コードのハイライトもしてくれるし、あとは、dark theme 対応なのも地味に嬉しいところ。

アプリを立ち上げて、例えば、適当にフォルダーを作成してみる。左下の方に + ボタンがあるので、押してみる。

そうすると、"New Folder" というボタンが出てくるので、押してみる。なお、ファイルを作るには、"New File" でOK。

フォルダー名を適当に決める。今回は、JavaScriptPractice にしてみる。入力したら "Create" をタッチ。

そうすると、初めの画面にフォルダーができる。作成したフォルダーをタッチして、フォルダーに入り、また + ボタンを押してから、ファイルを作成する。

なんでも良いのだろうけど、"index.html" という名称で保存。そうすると、html ファイルが作成されるので、作成されたファイルをタッチすることで、入力画面に移ることができる。

適当に入力。今回は htmlファイルの中に JavaScript のコードを書いたけれども、もちろん、別ファイルを作成して読み込むことも可能。その場合は、画面右側のエディター部分に、なんとタブ形式で表示してくれる。まだ試していないけれども、例えばcssファイルを作れば、それもタブで表示してくれるのではないだろうか。

コードを書いたら、入力モードから出る。この時は、外付けキーボードを使っていたので、Esc で抜けられた。入力モードから出たら、上の方の目のマークを押すと、アプリ内でlocalhostが立ちあがる。

テキストボックスに適当な文字列を入力して、追加ボタンを押すと、下のp要素の内容がその文字列に変わってくれる。

iPad で手軽にコードを試してみることができるようになり、勉強がはかどりそう。先日はWWDC21 があり、いろいろな発表があったけれども、iPad もますます便利になってくれて、嬉しい限り。

[Gadget] Mx Ergo というトラックボール式マウス、とても良いです

以前の記事で、14個もボタンがついているゲーミングキーボードを利用しているという話をしたけれども、実は今は仕事では違うマウスを使っている。

それで、今使っているものはこれ:

ロジクールの Mx Ergo 。一番の特徴としては、トラックボール式。普通のマウスは、マウス本体を動かすけれども、トラックボール式だと、左にあるボールをぐりぐり親指で動かすことでポインターを操作することになる。

ゲーミングマウスは非常に便利だったのだけれども、親指でボタンを押し込み動作をたくさんしているとどうしても親指が痛くなってしまった (腱鞘炎予備軍的な)。なので、解決策を模索していたところ、このマウスを使うと、ジェスチャー(特定のボタンを押しながら、特定の方向にトラックボールを動かす)に、特定の動作 (戻る、ウィンドウを閉じる、保存、など)を割り当てられることが判明。さらに、「普通のマウスよりも、細かい作業ができますよ〜」と言う話を聞いていたので、飛びついてみた。結論としては、買ってよかった。

トラックボール式の導入にあたって、当初懸念していた点は:

  1. 細かい操作ができるか
  2. トラックボールを動かすのに慣れることができるか
  3. 親指が腱鞘炎気味だったけれども、さらに痛くなることはないか
  4. ジェスチャーで思い通りの動作ができるか
と言うあたり。まず、1つ目だけれども、細かい作業は問題ない。むしろ普通のマウスよりもやりやすいかもしれない。例えば、絵を描いたりはしないけれども、普通の事務作業を行うにあたっては、一切問題なし。

2つ目。慣れるのにかかった時間は3分くらい。人によるだろうけれども、私はあっという間に慣れてしまった。それで、慣れてしまうと、普通のマウスを動かすのが重くて少し億劫になるくらい。また、心配していた腱鞘炎も一切問題なし。ボールがスムーズに動いてくれるので、力を入れなくても動いてくれるし、動かしたいだけでピッたり動いてくれる。

最後のジェスチャーだけれども、これも基本的にはうまくいっている。前のマウスのマクロ機能が優秀すぎて、文字通りどんな作業も割り当てられていたので、それと比べると物足りないのかもしれないけれども、Mx Ergo は基本的には期待する動きを全て割り振ることができる。参考までに、今は次のような割り当てにしている:

    左奥ボタン
    • 〇 デスクトップの表示/非表示
    • ↑ ウインドウを最大化
    • → Ctrl + t
    • ↓ ウインドウを最小化
    • ← Ctrl + w
    左前ボタン
    • 〇 Esc
    • ↑ Ctrl + s
    • → 進む
    • ↓ Alt + F4
    • ← 戻る
    中央ボタン
    • 〇 Enter
    • ↑ 拡大
    • → End
    • ↓ 縮小
    • ← Home
ちなみに、〇 は、そのボタンを押して離した場合の動作。左奥ボタンを押しながら↑にトラックボールを動かすとウィンドウの最大化、と言う感じ。とりあえずで設定してみただけなのだけど、今のところとても使いやすくて、便利。トラックボール、慣れると戻れない、と言うのは嘘じゃないみたい。

[Windows] AutoHotKey その2

職場の Windows PC に AutoHotKey というソフトを導入して、キーバインドを変更 したら、ものすごくキー入力が楽になった。ホームポジションから手をはずさずに上下左右、行頭・行末にカーソルを移動させたり、文字を削除したりできる。ストレスフリー。 カーソル移動系...