[本] 「最適化」をあらゆる場面で取り入れる

最速の仕事術は人工知能が知っている (WirelessWire News)」で『最速の仕事術はプログラマーが知っている』という本の紹介があり、まさにその日 (9月22日) に Amazon で購入。

1章から2章くらいまでは「やり方」レベルの具体的な効率化の言及が多く、すぐにでも取り入れられるやり方がいくつも見つかった。よく考えずに慣例に従ってしまっていることが身近にあることを改めて思い知らされる...3章からは、もう少し抽象的なレベルでのお話。プレーヤーだったり、マネージャーだったり、経営者だったり、という視点での仕事の進め方について。例えば、「例外処理」を仕事を進めていく上でも作っておく、というのは、なんとなくやっていたことだけれども、名前をつけて指摘してもらえたので、明確に意識できるようになった。

プログラマーは徹底的に無駄を省く「最適化」を常に行っており、その最適化はプログラム内だけではなくて、作業・道具の使い方、プレーヤーとしての働き方、リーダーとしての働き方、経営者としての働き方、、、どのレベルにおいても適応可能である、それゆえに『最速の仕事術はプログラマーが知っている』ということなのだ。

一番最後の一文がカッコ良い:

本書で紹介してきた多くの思考法や、コラムで紹介したループの最適化や負荷分散、スケーラビリティの確保といった考え方は、プログラミング以外のあらゆる仕事に適用可能な、汎用性の高い「原理そのもの」なのである。(ibid.:219)

WirelessWire News でも言及がされているけれども、ぜひ2021年現在の最新の状況での「最適化」について、詳しく知りたいと思ったし、また、人工知能 (やディープラーニング等) について勉強したいと思った。

[本] 読書の秋、アウトプットの秋

強い日差しもひと段落して、過ごしやすい陽気になってきたので、この頃できていなかった読書とアウトプット活動を頑張ろうと決意。特にアウトプットは文字通り全然できていなあkったので、『アウトプット大全』を読むところからスタート。

著者の樺沢さんは、インプットの量もすごいし (例えば、月20冊の読書、月10本以上の映画、など[p.7])、アウトプットも凄すぎる (例えば、メルマガ、毎日発酵13年、YouTube、毎日更新5年、など [p.8])。そんな凄すぎる人がアウトプットの利点から、具体的な話し方、書き方、行動の仕方をわかりやすく教えてくれる、そんな本。

私は特に書くアウトプット(第3章)を続けていきたいと思っているので、書くことで脳幹網様体不活系(Reticular, Activating System) というカッコ良い名前の脳の部位が活性化して、記憶力や学習脳力が高まるとしれたことはなんだか嬉しい [pp.114f]。

また面白かったのは、ぼーっとする時間もアウトプットには大切であるという指摘。ぼーっとしているときには「デフォルトモード・ネットワーク」というカッコ良い状態が活発に稼働するとのこと。隙間時間をとにかく埋めてしまおうとするのではなく、空白の時間を作り出すことが脳味噌にとってすごく重要な意味を持つ [pp.142]]。

読書感想文のテンプレも紹介してもらえる。「ビフォー + 気付き + TO DO」[p.250] は書きやすそうなので、使っていきたい。

ふとしたときにパラパラめくり直してみるだけでも、毎回学びがありそう。

[本][英語] 推量の助動詞 will と must の対比

以前の記事では、推論用法の must「~にちがいない」とshould「~のはずだ」「きっと~だ」を取り上げた。日本語訳として表出する以前の意味の違いがあった。

今回は推論用法の will「~だろう」を取り上げて、must と対比的に理解をする。

柏野 (2012) によると、推論用法の mustは「現在入手できる情報」または「以前からの知識」に基づく推論であり、一方、willは「以前からの知識」に基づいた予測である。「以前からの知識」は「常識」「経験」などのことである。表にまとめてみよう:

助動詞 現在入手できる情報 以前からの知識
must
will ×

柏野 (2012) の例を利用して具体的に説明しよう。must による推論は「現在入手できる情報」「以前からの知識」のどちらを根拠とできる。なので:

  1. A: Someone's knocking at the door. (誰か、ドアをノックしている)
というAさんの発話に対して、
  1. B: That must be Linda; only Linda knocks that way.
  2. B: That must be Linda; she said she would come today.
のどちらの答え方もできる。前者は「ああいうノックの仕方はリンダしかいない」という「現在入手できる情報」を基にした推論であり、後者は「リンダは今日来るって言っていた」という「以前からの知識」を基にした推論である。一方で、willの場合は:
  1. B: × That will be Linda; only Linda knocks that way.
  2. B: That will be Linda; she said she would come today.
というように、「以前からの知識」に基づく予測しか許されない。

最後に、確信の強さについて柏野 (2012) から引用しておこう。

...一般にイギリス英語では must のほうが will よりも確実度が高く、アメリカ英語では will のほうが must よりも確実度が高い...
(ibid.: 38)
Forest は推量用法の willに対して「たぶん~だろう」という訳を当てているが、少なくともアメリカ英語であれば「たぶん」は不要と言える。

助動詞は調べれば調べるほど面白いし、わかるようなわからないような感じが募っていく..

  • 柏野健次. (2012). 『英語語法詳解―英語語法学の確立へ向けて』. 三省堂

[本][英語] いい本は、爽やかに頑張ろうと思わせてくれる

小野和俊さんの『その仕事、全部やめてみよう』を拝読。

「あ、それでいいんだ」と気づかせてくれるというか励ましてくれるような面白いエピソードがたくさんあって (例えば「キレる」お話)、また、具体的なアドバイスもある。肩の力を抜いてリラックスさせてらもい、同時に、前向きに頑張ろうと思わせてくれる、そんな素敵な本だった。文章を読むだけでこんな爽やかな気分にしてもらえるのだから、実際に一緒にお仕事をされている方は羨ましい (とはいえ、実際の現場はシビアで高い能力が要求されるのだろうけど...)。

YouTubeの Ghelia Monthly (ギリアチャンネル) で小野さんを知り、すっかりファンになってしまった。

[本][英語] 推量を表す must と should (ought to)

今日も英語のお勉強。以前の記事に引き続き、助動詞。 今回は must と should (ought to)。

いわゆる推量の意味で、mustは「~にちがいない」、shouldは「~のはずだ」「きっと~だ」と訳す。日本語訳からもわかるように、must は should よりも確信が強い。Forest から例を引こう (p. 122f):

  1. She must be Bobby's sister. (彼女はボビーのお姉さんにちがいない。)
  2. He should win the race. (彼はきっとレースに勝つはずだ。)

確信の度合い、という観点からから考えると、mustを使っている上の例文の方が、shouldを使っている下の例文よりも、確信度が高い。

ただ、実は、2つの助動詞の意味のちがいは確信の強さだけではないのだ。

must は「現在入手できる根拠に基づいた、現在の状況に関する確信」を表し、should は「判断の当否が将来において確かめられ得るような推測」を表す (今井 1995: 59)。
例を引用しよう:

  1. You must be crazy!
  2. ×You should/ought to be crazy!
  3. ×John must be back by tomorrow morning.
  4. John should be back by tomorrow morning.
  5. (ibid.: 59, 一部改)

3の例文が示していることは、ある人がおかしな言動をしており (現在入手できる根拠)、そこから「あなたはcrazyにちがいない」と確信を持って判断している (現在の状況に関する確信) ということ。なので、must がふさわしくて、4のようにshouldは不適切になる。一方、5,6 の例文の方は、ジョンが明日の朝帰ってくるかどうかは、明日の朝に当否がわかる (判断の当否が将来において確かめられ得るような推測」。よって should が適切である。逆に must は不適切となる。

この考え方を踏まえて、冒頭の Forest からの引用を見直してみよう。はじめの文は、ボビーとそっくりの話し方・口癖・外見...などから確信を持って判断している (現在入手できる根拠) 、ということで must を使っているのだろう。一方、2番の文は、レースが終わってみれば彼が勝ったかどうかが判明 (判断の頭皮が将来において確かめられる) するので should がふさわしい、ということになる。

must と should (ought to) の使い分けは、(1)確信の度合いの強さ、(2)「現在の証拠で現在の確信」or「将来確認できる推量」、の2点となるわけだけれども、おそらく、より根本的な違いは(2)の点になるのだろう。というのは、「現在入手できる根拠に基づいた、現在の状況に関する確信」であれば、必然的に確信の度合いは高くなり、「判断の当否が将来において確かめられ得るような推測」であれば確信の度合いは下がる (未来のこと確信を持って推測することは難しい) からだ。

助動詞は日本語訳を機械的に当てはめて満足していたけれども、色々調べてみると面白い。

[Windows] AutoHotKey で キーバインディング

個人的にはずっとMacを利用しているのだけれども、その理由の一つが「矢印キーを押さなくてもカーソルを動かせる」という、すごく小さい理由。矢印キーは大体エンターキーの下あたりにあるけれども、カーソルを動かすために一度右手をホームポジションから離して、カーソルキーを押して、Jのぽっちを探してホームポジションを取り直し、、、という小さな繰り返しが煩わしく感じてしまうのだけれども、Macであれば、特に設定もせずに、Control(^)+f/b/n/p でカーソルを右/左/下/上、に動かすことができる。さらにいうと、Control(^)+a/eで、行頭/行末 に移動したり、Control(^)+kで、カーソルから行末までをカットしたり、、、など、ホームポジションから手を動かさずともさくさくカーソルを動かすことができる。標準で Windows ではそのような使い方はできない。だから Windows を使いたくなかった。

職場のPCがWindowsという縛りがあり、渋々矢印キーを押しながら仕事をしていたのだが、少し調べてみたらAutoHotKeyという素晴らしいソフトがあるとわかった。これは、色々な機能があるようだけれども、AutoHotKeyを使うことによって、任意の実際の入力がなされたときに、任意の別の入力がされたようにマップすることができてしまう。例えば、CapsLock を押しながらfを押すと、矢印右ボタンが押されたことにできてしまう。このソフトを利用することで、Windows であってもホームポジションから手を離さずに、Mac と同じようにカーソル移動(その他)ができてしまう。

カーソル移動以外にも色々できるので、備忘も兼ねてシェア。なお ChangeKeyというソフトを使ってCapsLockをF13キーとして割り振っている:


;Ctrl + q で閉じる
^q::send, !{F4}

;Ctrl + k で カタカナ (F7キー)
^k::send, {F7}

;Emacs風。なお、CapsLockをF13に割り振っている(ChgKey を利用している。Scan
Code --> 0x0064)
F13 & a::send,{Blind}{Home}
F13 & e::send,{Blind}{End}
F13 & p::send,{Blind}{Up}
F13 & b::send,{Blind}{Left}
F13 & n::send,{Blind}{Down}
F13 & f::send,{Blind}{Right}
F13 & d::Delete
F13 & h::Backspace
F13 & m::Send {Blind}{Enter}
F13 & k::send +{End}{Delete}
F13 & u::send +{Home}{Delete}
; Altキーは ! , Ctrlキーは ^
!f::send, ^{Right}   ;カーソルを1単語右
+!f::send, +^{Right}   ;選択肢ながらカーソルを1単語右
!b::send, ^{Left}   ;カーソルを1単語左
+!b::send, +^{Left}   ;選択肢ながらカーソルを1単語左

;F13 (Capslock) を押しながら ↑で音量Up、↓でDown
F13 & Up::
Send,{Volume_Up 1}
SoundPlay, x64
Return

F13 & Down::
Send,{Volume_Down 1}
SoundPlay, x64
Return

;今日の日付を入力 F13(CapsLock) + t
F13 & t::
FOrmatTime, TImeString,, yyyyMMdd
Send, %TimeString%
Return

[本][英語] 可能性を表すmayとcan の違い

英語のお勉強メモ。助動詞は難しいのだけれども調べていくと面白い。

助動詞の may も can も「~かもしれない」という可能性を表せる。Forestから例をひいてみる (p. 120f):

  • We may have some rain tomorrow.「明日はいくらか雨が降るかもしれません。」
  • Anybody can make mistakes.「だれにだって間違いはありうる。」
さて、ここで問題にしたいのは may と can の差異である。「日本語訳」レベルでは全く同じになってしまうが、日本語に出てこない「意味」には違いがあるはずだ。今井 (1995) は次のように説明する (p. 61):
「可能性をあらわす」という点で may と can は等しい。だが、mayが「現実的」可能性を表すのに対して、canは「一般的・理論的」可能性をあらわす、という点では異なる。
具体例を見てみよう:
  • The area may be flooded after the typhoon.
    (台風の後なのでその地域はいま洪水になっているかもしれない)
  • The area can be flooded after a typhoon.
    (その地域は台風の後洪水に見舞わられることがあり得る)
  • (ibid.:61, emphasis in the original, 一部改)
1つ目の例文は、実際に台風があり(the typhoon)その結果として現実に洪水になっているかもしれない、ことをあらわす。これが「現実的」可能性ということ。一方、2つ目の例文は、台風が起きた場合 (a typhoon) その地域は洪水になり得ると言っている (台風一般から期待される降水量よりも地域の排水量のが少ない、など)。

冒頭のForestの例に戻ろう。"We may have some rain tomorrow." では現実の話をしている事になる。一方、"Anybody can make mistakes." では、一般論として、人間という生き物は間違えうるものだ、と語っている。

日本語訳には出てこない違い、とても面白い。

[Python] 場合に応じて異なる関数を呼ぶ、をスッキリと

PySimpleGUI の Cookbook はとても勉強になるし、読んでいて楽しい。例えば、 "Recipe - Callback Function Simulation" の部分を読んでいて、なるほどなぁ、と思ったことがあった。

ある入力が受けて、その入力に応じた関数を呼ぶ、ということはよくある。イメージで言うと、変数event の値が "1" なら function1を、"2" なら function2を呼ぶ、と言うケース:

# 関数の定義
def function1():
	print("function1 is called")
def function2():
	print("function2 is called")

# なんらかの入力がある
event = "1"

# 場合分けで実行
if event == "1":
	function1()
elif event == "2":
	function2()

# event が "1" なので function1() が呼ばれる
# "function1 is called"

if とか elif とかで書いても問題なく動いてくれるのだけれども、もっとシンプルに書く方法が今回のお話。場合分けが多くなったりした時にもとても役に立つ。どうやるかというと、辞書(dictionary)を使う。入力と関数を辞書に入れておく:

# 関数の定義 (上と同じ)
def function1():
	print("function1 is called")
def function2():
	print("function2 is called")

# この辞書を作っておく
dispatch_dictionary = {"1":function1, "2":function2}

# なんらかの入力がある
event = "1"

# 場合分けで実行
if event in dispatch_dictionary:
	function_to_call = dispatch_dictionary[event]
	function_to_call()

# event が "1" なので function1() が呼ばれる
# "function1 is called"

function_to_call に function1 を一度入れておいて、それから () をつけてあげるとその関数を呼ぶことができる。

PySimpleGUIにはランチャーアプリを作って利用しているのだけれども、このやり方でコードがずいぶんスッキリしてくれた。

[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
ちなみに、〇 は、そのボタンを押して離した場合の動作。左奥ボタンを押しながら↑にトラックボールを動かすとウィンドウの最大化、と言う感じ。とりあえずで設定してみただけなのだけど、今のところとても使いやすくて、便利。トラックボール、慣れると戻れない、と言うのは嘘じゃないみたい。

[Gadget] 話題の Anker Soundcore Liberty Air 2 Pro ワイヤレスイヤフォン ノイズキャンセリング付き、を使い始めました

Anker の Soundcore Liberty Air 2 Pro というワイヤレスイヤホンを使い始めた。リモートできず通勤しなければならない日が残念ながら結構あるので、職場に行った時に自分の世界に浸るために利用している。基本的には「ノイズキャンセリング (屋内モード)」で「ブラウンノイズ」や「ホワイトノイズ」をYoutubeの小さい音量で流し続けている (もったいない使い方...)。


このイヤホンは優秀なノイズキャンセリングがついていながら 12,980円 (執筆当時) という比較的低価格に抑えられており、YouTube や ガジェット記事でも高く評価する声が多い。新しいこれまでは Soundcore Liberty Air 2 Pro を導入するまでは、Sony の MDR-EX31BNというノイズキャンセリングイヤフォンを使っていたが、簡単にその製品との対比してみたい。

まずは「手軽さ」。Anker の方はケースを開けるとその瞬間に、ペアリングされているデバイスと接続され利用可能になる。コードもないので、そのまま耳につければOK。一方 MDR-EX31BN は、電源ボタンを長押しで起動するので、ひと手間かかる。2020年以降は、マスクを常用することが求められる可能性があり、その点でもやはり、一切コードがないイヤフォンの便利さが際立ってくるだろう。

次に「装着感」。Soundcore Liberty Air 2 Pro はかなり軽い感じで、長時間つけていても疲れない。MDR-EX31BN はかなりがっちりハマるので、長時間つけていると疲れてくる。

肝心な「音質」や「ノイズキャンセリング」について。これはなんとも難しいのだけれども、Anker と Sony では求めている音質やノイズキャンセリングの方向性がおそらく違うのだろうな、という印象で、一次元軸での比較は難しいように思う。ただ、あえて個人的な感覚を言うと、音質は Sony のがよくて、ノイズキャンセリングは Anker の方が良い (良い、と言うよりも、好き、といった方が良いかもしれない)。全体的に Sony の方が「ストイック」な印象で、Anker の方が「軽い」感じ。私は冒頭にも書いたように「ノイズキャンセリング (屋内モード)」+ 「YouTubeのノイズ」と言う(もったいない)使い方をしているけれども、その使い方であれば十分に遮音してくれる。ノイズキャンセリングだけでも周りの人のキータッチ音や話し声を随分低減してくれるのだけれども、プラスでYouTubeのノイズを流せば、ほぼほぼ自分だけの世界になる。とにかくぎゅっと集中しなければならない時などはとにかく頼もしい。設定で、「左イヤフォンを2回タップすると、外音取り込み」にしているので、話しかけられたりしたらモードを切り替えればお話しすることもできる。

「装着感」「音質」「ノイズキャンセリング」の辺りは好き嫌い・好みによって受ける印象が大きく変わってくるのだろうけれども、個人的には、Anker は大変気に入っている。

なお、「音質」に関連するのかもしれないけれども、「音量」を細かく設定できるのも嬉しい。使用環境にもよるのかもしれないけれども、私のPC環境だと、MDR-EX31BN よりも Soundcore Liberty Air 2 Pro の方が5倍くらい細かく音量を上げ下げできる (みたい)。微妙に音量を変化させられるようになったのは、地味だけれども嬉しい。

職場で手軽に自分の世界を作り集中したい、と言う方にはオススメできる。

[Gadget] Garmin Venu Sq で体調を見える化

ここ数年「疲れたなぁ」と感じて体調が回復しない時期がしばらく続いていた。それがきっかけで「体調管理」を意識しようと決意し、まずは健康にまつわるデータを取ることから始めてみることに。ちょうどその決意の頃、アメリカで Garmin Venu Sq というスマートウォッチが発売されているのを知り、早速輸入して使い始めてみた (今は日本国内で流通している)。

一番興味があったのが、「ボディーバッテリー (Body Battery)」。

ボディーバッテリーとは、「心拍変動、ストレス、アクティビティなどのデータを使用して予備エネルギー量を測定できる機能です。この機能は1から100の数字でユーザーのエネルギーレベルを表示します。(機能と特性:Body Batteryのよくある質問 より)」
ということで、自分の体力をまるでスマホの充電のように理解することができる。

まず朝起きて数値を確認すると (睡眠でボディーバッテリーは充電される)、一体どれくらい疲れが取れているのか/残っているのか、が確認できる。 やはり朝だるい時は数値も低い (気がする)。仕事中もたまにボディーバッテリーを確認すると、「どういう日はボディーバッテリーが低下するか」が見えてくる。そうすると次は、より具体的に「どういう活動・思考をするとボディーバッテリーが低下するのか (=ストレスがかかりやすいのか)」が見えてくる。私の場合、例えば、比較的乗り気ではない仕事よりも、情熱を注いでいる仕事の方がボディーバッテリーの減少が大きかった。それはチームでやる仕事なのだけれども、盛り上げていくためにテンションをグッとあげたり (心拍数も上がる)、また、メンバーの顔色や作業の進捗をみて気持ちを推測しながら進めていく必要があり、これもストレスになっているようだ。この発見は意外であった。今は、自分のストレスにもならず、かつ、チームで円滑に動いていける形を模索している。

ボディーバッテリーはある意味大きな指標であるけれども、手軽に手首で「心拍数 (Heart Rate)」「ストレスレベル (Stress Level)」「呼吸数 (Respiration)」といった小さな指標も確認できる。今現在の数値に加えて、ここ数時間の(心拍数は4時間、ボディーバッテリーは8時間)推移もグラフの形で表示できる。もう少し詳しくデータを確認したければスマホのアプリを利用する。

睡眠を記録してくれる機能では、単純な睡眠時間に加えて、睡眠の深さ別 (Deep/Light/Rem/Awake) に時間を計算してくれる。なお、新型コロナウイルス関連で話題になっている「血中酸素濃度」は測定できないみたい。

体調管理とは異なるけれども、決済機能について。Suica や Garmin Pay は使っていないのでわからないけれども、 Connect IQ Store からダウンロードしたスタバアプリはよく使っている。事前にスタバのカードを登録しておけば、スタバ店舗での支払いは表示されるバーコードを読んでもらえばOK。なお、Venu Sqからスタバカードへの入金は対応していないようなので (たぶん)、スマホからカードにチャージするようにしている。

Venu Sq は 音楽再生対応版音楽再生非対応版 の2つがある。私はスマートウォッチから音楽を聴くという生活スタイルがないので後者を使っています。こちらの方が少し価格も抑えられている。ランニングとかする方は前者の方が良いのかしら。

その他、気に入った点・気に入っていない点:

  • good: 軽い / バッテリーの持ちが良い (1週間くらい?) / 暗闇でも時刻を確認できる
  • bad: 手首の皮膚と合わず、濡れたままにするとかぶれる ( そうしたら反対腕につけるようにしている。軽いから気にならない)

参考

[Gadget] Scan Snap iX100 で手軽にスキャン

キーボードマウス、と、ガジェット関連の記事が連続しているけれども、今回もガジェット。Scan Snap iX100 というスキャナーを導入して使っている。

「何をスキャンしたいか」と「このスキャナーの得意分野」が合致すれば、とても便利。具体的にいうと、「本や雑誌ではなく」、「1枚〜数枚の紙 (レシート等含む)」をスキャンする用途のためには大活躍してくれるはずだ。

Scan Snap iX100 は、「オートシートフィーダが付属していない」ので、スキャンする際は手前から一枚ずつ差し込んでいくことになる。複数枚スキャンしたい場合は、一枚スキャンしたら、少しだけ間隔を置いて、次の紙をスキャンして、、、と続けていけばOK。また「片面読み取り」 なので、両面に印刷された紙をスキャンする際は、片面をスキャンし、その後、紙をひっくり返してもう一度スキャン、という流れになる。

本体はとても小さくて軽くて (初めはびっくりした)、机の隅に置いておけば気にならないし、引き出しにも十分入る。手前と上部のパネル(?)をひらけばすぐにスキャンができる状態になってくれるのでお手軽。ただ、スキャン中の音は多少あるので、気になる人は気になるかもしれない。

といことで、オートシートフィーダがついて両面スキャンができるタイプ (例えばiX1600など)とは違って、本や雑誌、また大量の書類を一気に・高速でスキャンするのには向かないけれども、1枚〜数枚程度の紙を手軽にスキャンする分には、とても便利。(ちょっとした情報が紙で配布される職場文化はいつまで...)

参考:

[Gadget] ゲーミングマウスで時短: Elecom M-DUX50 14ボタン

前回の記事は、Logicool の Kx800 Mx Keys について。前置きが長くて、肝心の Kx 800 の良さがあまり書かれていない感じもあるけれども、とにかく素晴らしい製品だと思っている。机にKx 800を置いてホームポジションに手をおくと、その瞬間にその製品の素晴らしさがわかってしまう。キーを押しているとそこにキーボードが存在しているのを忘れてしまうような「『変さ』の無さ」。ここまで「自然」に使える、キーボードが「 無」になるような違和感のなさを表現できるのは、Logicool の開発者のまさに技量なのだろうと思う。もちろん好みはあって、なかなかフィットしないと感じる人もいるだろうが、私にはぴったりであり、Kx 800 が壊れたらまた Kx 800 を買うという選択肢が残されておらず、人生の選択肢が逆に狭まってしまったような気もする。現状、コロナ禍にあり、なかなか自由に家電量販店に行って試打もしづらいけれども、もし何かの機会があったら、ぜひ触ってみて欲しい (iBaffalo のキーボードも「静音」以外の点では大変気に入っておりました!)。

さて、また前置きが長くなってしまったけれども、今回は職場マウス。Elecom の M-DUX50 というマウス。特徴としてはボタンがたくさんある (14個!)また、有線である。

上からの写真を見てもらうと、いわゆる左クリックのさらに左に黒い三角がある。これはG1ボタン。真ん中にG2ボタン。また、この写真ではわかりづらいですが、側面には縦2行x横4列=8個の四角いボタン、プラス、丸い大きなボタンが1つ配置されている。それぞれG3〜G11ボタンという名称がついている。この11のボタンに、左/右クリック+ホイールで合計14ボタン使えることになる。

では一体 G1〜G11ボタンは何のためについているかというと、一つ一つに特定の処理を割り当てることができるのだ。例えば、G1ボタンに「Ctrl + s」を割り当てると、そのボタンをクリックすると文章が保存できてしまう、という感じ。特定のキーの割り当ても可能だし、マクロとしてキー操作を記録し、そのキー操作を割り当てることもできる (例えば、「Alt + スペースを押してから、↓キー、そしてエンターキー」などなんでも)。側面の四角いボタンは小さいので、慣れるまでは大変だけど、一度コツ(?)を掴んでしまえばちゃんとおすことができる。

というわけで、「ウィンドウを最小化」「ウィンドウを削除」「保存」「コピー」「ペースト」「戻る」「進む」など、よく使う機能をマウスに登録しておくと、キーボードを使わなくてもその操作ができてしまう。また、有線なのでレイテンシーの心配無用で、しかも2000円台と、値段もお手頃。便利なガジェットで時短。

[Gadget] 良いキーボードはやはり良い: Kx800 Mx Keys

職場 では、Boyata のラップトップスタンド に Windows機をのせてを使っている (ちなみに Boyata のラップトップスタンドは下のようなやつ。テレワークの際にとても人気になり、売り切れ続出だった..)。

スタンドに乗せて使うと猫背予防だったり、目の疲れが軽減できたりなど良いことがあるけれども、やはりキーボードは外付けが欲しくなる。ということで、以前から持っていた iBuffaloのキーボード (YDKBU11)をしばらく利用していた。

このキーボードは数年前に、ヤマダ電機で購入したもの。当時は「有線接続」「静音」「安い」の3つを優先事項にあげてキーボードを探していた。レイテンシーが生じるのが怖くて「有線接続」、たくさん文字を打つ仕事なので「静音」、ただ資金には限りがあるので「安い」、という感じ。実際使っていて、レイテンシーは生じないし、すごく安かったし (ヤマダのポイントで購入できた)。使っている中で「軽い」「多少乱暴に扱っても壊れる気配がない」「指の油でテカテカしずらい」という点も気に入ってきた。

また、一番気に入った点は、「キーを取り外して場所交換ができる」という点 (これはおそらくメーカー推奨ではない使い方..)。この前の記事でもちらっと書いたけれども、Windows を使うときは、ChangeKey というソフトを使って、Ctrl(左) と Alt(左) を交換している (Windows だと、「スペースキー」が真ん中にあり、左に「無変換」、左に「Alt」、左に「Win」、左に「Ctrl」となっていることが多い(のかな)。スペースはそのままで、「無変換」を「IMEオフ」(これはIMEの設定からできる)、「Alt」を「Ctrl」(ChangeKey)、「Win」はそのままで、「Ctrl」を「Atl」(ChangeKey)に振り直す)。そうすると、Mac でいう 「Command + p」で印刷、「Command + w」でタブを閉じる、などと同じ動きでショートカットキーを使える。ということで、AltキーとCtrlキーを物理的に上に引っ張って取り外して交換すると、見た目と入力内容が一致する。

何年か iBaffalo のキーボードを使って、とても気に入っていたしまだまだ使えるのだけれども、唯一ガマンができなくなってしまったことがある。それは「静音」だ。「静音」が謳い文句の一つとなっている製品だが、、、、うるさいのだ。かちゃかちゃ、、、というキーボードからティピカルに連想される音がする。プログラムを書いていたりすると、ずーっとキーボードを打っていることになるが、段々とイライラしてくるし、きっと周りの人もイライラさせているに違いない、と思い、新しいキーボードを購入することを決意した (ずいぶん前置きが長くなってしまったけれども、これは iBafflo のキーボードへの愛着がそうさせているかもしれない。音以外の点ではとても気に入っている)。

ということで、やってきた ロジクールの Kx800 Mx Keys

これまでは重視していた「有線接続」ではないけれども、接続は極めて安定している。キーボードにON/OFFのスイッチがついているけれども、OFFからONにした瞬間に繋がる感じ (レシーバーをUSBポートに挿すタイプの接続をしています)。また、PCがロックしていたりスリープしていたりする状態でもラグがなく反応してくれる。肝心の「静音性」については、個人的には大変満足している。ガシガシ入力しても、全然うるさくない。Mac のワイヤレスキーボードよりも静かな印象がある (厳密な比較はできていなく、あくまでの印象)。ノイズキャンセリングイヤフォンをしていると、キータッチの音は全く聞こえないほどだ。また、押し心地も優しいし、キーや土台の表面処理も、なんというか、素晴らしい。指が喜んでいる感じがする。

使っていて便利だと思ったのは、一番右上のロックボタン。これを押すと、ロック画面へ遷移できることができる。例えば、Windows で書類を作っていて、誰かに話しかけられたりしたらすぐに右上のボタンを押せばロック。便利。また、その左のボタンを Logicool Options を使って、スリープに割り当ててみた。しばらく離席する際などには、一番右上でロック、そして一つ左のスリープを押す、というほぼワンアクションでOK。iBaffaloの方はスリープボタンがあってそちらを使っていたけれども、スリープは一定時間経過しないとロックしてくれない (設定の問題かもしれない)。なので、スリープして離籍して、なんかの拍子でマウスが動いてしまったりすると、スリープが解除されてしまう、なんてことがあった。

あえて難点を挙げるとすると、キーを物理的に取り外して交換できない、というあたりだろうか。

Kx800 Mx Keys、値段は決して安くはない、というか高い。けれども、今の所、買ってよかったなぁ、というのが感想。やはり良いものは良いのだなぁと。

[ブログ][CSS] ブログのテーマ変更 and シンタックスハイライター prettify の導入

先日、2年ぶりくらい(?)にブログを更新して、せっかくなので気分を変えてブログテーマも変更してみた。このブログをご覧になってくださっている方が使いやすい・見やすいテーマを基準としながらも、部屋の模様替えと同じで、どんなブログだと良い気持ちか考えながら。とりあえず運用しつつ、必要に応じて修正を加えていくつもり。

連動して、これまで利用していた highlight.js というシンタックスハイライターから、code-prettify へと変更してみた。昨日の記事は、新しく導入した code-prettify を利用している。こちらも可愛いので気に入っている。

code-prettify の導入及び使用方法について、こちらのページがとてもわかりやすかった: Bloggerでソースコードをきれいに表示する方法 | まあうさブラザーズ

事前準備としては: Theme -> オレンジのCustomizeボタン右の三角をクリック -> Edit html -> </html>の直前にコードを挿入。このブログでは:

<script src='https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js'/>
<style type='text/css'>
pre.prettyprint.linenums li{
list-style-type: decimal;
} 
にしている。linenums の li 要素に対するCSSの記述の部分は、毎行に行数を表示するためのもの (デフォルトでは5の倍数行に行数が表示される)。各ブログ記事内においては:
<pre class="prettyprint linenums">
コードコードコード
</pre>
でOK。

[Windows] Macと同じようなカーソル移動ができるように設定:CapsLock (F13) + a/e/b/k...など

普段は Mac を使っている人が、なんらかの制約 (例えば職場の支給PCなど) によって Windows を利用する時に困ってしまうことがいくつかある。そのうちの一つが「カーソル移動」だろう。例えば Mac では、文字を「control + a/e」で行頭/行末にカーソルを移動させたり、「control + b/f」で一文字分カーソルを前後に移動させたりすることができる (他にも、「control + あるキー」で一行上/下、一文字消す、行末まで消す、エンターキー代わる、などなど)。Mac の日本語配列キーボードだと、controlキーは a の左側にある。小指を少し動かして control を押しながら 普通の (?) 文字を押せばカーソルを動かせるし、文字を消したりできる。つまり、わざわざ手をホームポジションから移動させることなくカーソル移動だったり文字の削除だったりができるのだ。たくさん文字を打つような場面では重宝する。

Windows でも同じようなことができないかなぁ、と思いインターネットで調べていたら、見事な解決策を考えられている方が多数。導入してみたところ、「Windows を使う負担感」が激減したので、備忘も兼ねてシェア。なお、Windows 10 を利用。

Step1: ChangeKey で「Caps Lock」を「F13」にする。

Change Key を利用するのが簡単みたい。インストール後、Caps Lock の scan code を 「0x0064」とする。
これは、Caps Lock を F13 という、実際には存在していないキーとして利用できるようにする操作のよう。つまり、Caps Lock を押すと、F13 が押されていることになる。(あと、今回の記事の内容とは関係ないけれども、追加で、Ctrl左 と Alt左 を入れ替えている。Mac の command キーの場所に、Windows の Ctrl を置くようにすると、ストレスが減る)
参考: ChangeKeyを使用してWindowsキーをF13キーに変更する方法 | 情報科学屋さんを目指す人のメモ(FC2ブログ版)

Step2: AutoHotKey で 「CapsLock (=F13) + 〜」に、別のキーを割り当てていく。

AutoHotKey を利用すると、特定の入力を別の入力と置き換えることができる。例えば、「F13キーを押しながらaを押したら、Homeボタンが押されたことにする」ということが可能になる。2021年2月現在のスクリプト:

;Emacs風。なお、CapsLockをF13に割り振っている(AutoHotKeyを利用している。ScanCode --> 0x0064)
F13 & a::send,{Blind}{Home}
F13 & e::send,{Blind}{End}
F13 & p::send,{Blind}{Up}
F13 & b::send,{Blind}{Left}
F13 & n::send,{Blind}{Down}
F13 & f::send,{Blind}{Right}
F13 & d::Delete
F13 & h::Backspace
F13 & m::Send {Blind}{Enter}
F13 & k::send {Shift}+{End}{Delete}

;Ctrl + q で閉じる
^q::send, !{F4}

;F13 (Capslock) を押しながら ↑で音量Up、↓でDown
F13 & Up::
Send,{Volume_Up 1}
SoundPlay, x64
Return

F13 & Down::
Send,{Volume_Down 1}
SoundPlay, x64
Return
「Emacs風」のカタマリがキー操作関係。セミコロンはコメントアウト。
基本的には「::send,」の左側の入力をすると、右側の入力がされたことになる、というイメージ。{Blind}というのを挟むと、Shiftを押しながらの操作も可能になるらしい。 (Ctrl+q で Alt+F4, F13と上/下でボリュームUP/Down もついでに。)
あとは、当該のファイルを右クリックで run すれば完了。
また、shell:startup に当該ファイルを置いておくと、Windowsを起動した際に自動的にスクリプトが実行されるので便利。
参考:WindowsでもmacOSのようなキー操作を実現する | 学ぶ、考える、書き出す。

AutoHotKey を使うと、どのようなソフト・アプリでもキーバイドが有効になってくれるのが嬉しい。というのは、以前、Mac版のOfficeを使っているときは、VBAのIDEでは control + a などのキーバインドが効かなくてとても辛かった。今回の AutoHotKey のやり方だと、Windowsにも関わらず VBA でもなんでも上記のキーバインドが使えるようになる。VBA の IDE を使わなければならない時の負担感がずいぶん軽減される。

[Windows] AutoHotKey その2

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