人生シーケンスブレイク

シーケンスブレイク(Sequence breaking、シークエンスブレイクとも)とは、テレビゲームにおいて開発が想定している攻略ルートを逸脱し、ショートカットする行為のことである。

入力ソースが3種類以上ある時にVimで検索しようとするとIMEがおかしくなることがあった

macOSの入力ソースを3種類以上設定されている際に、MacVimで iminsertimsearch の設定を0以外に設定していると想定通りにIMEが切り替わらない事象があった。

f:id:ShineSpark:20200221195803p:plain
入力ソースが3種類ある例

Dvorakユーザーなので、Kinesisなどのハードウェア上でキーボードレイアウト変更が可能なキーボードの場合には ABC (QWERTY) を、 ハードウェア上でレイアウト変更ができないキーボードの場合には Dvorak を適宜選んで利用していた。

が、Vim起動後に QWERTY / Dvorak を切り替えると IME On / Off でなく QWERTY / Dvorak になったりしてしまった。

モード切り替え時にVim上からIMEを制御しないように、

set iminsert=0
set imsearch=-1

とすることで対応した。

EscでVimのinsertモードを抜けつつIME OFFにして直接入力にする

Vimのinsertモードを抜ける際に、 Esc だけではIMEが有効なままになっていたのをそろそろ見直すことにした。

Karabiner-Elements - Software for macOS のkarabiner.jsonに以下を追加して、 Esc キー押下時に、Esc + 英数キー 押下と同じ挙動を行うようにした。 設定して1ヶ月以上経つが、 Esc を押す度に英数も押されてしまうことによる副作用は今の所まったく感じられない。

    "description": "Change Escape to Escape + Eisuu",
    "manipulators": [
        {
            "from": {
                "key_code": "escape"
            },
            "to": [
                {
                    "key_code": "escape"
                },
                {
                    "key_code": "japanese_eisuu"
                }
            ],
            "type": "basic"
        }
    ]
}

自分は Command + EEsc としているので、こちらも同様にした。

{
    "description": "Change Left_command + e to Escape + Eisuu",
    "manipulators": [
        {
            "from": {
                "key_code": "e",
                "modifiers": {
                    "mandatory": [
                        "left_command"
                    ],
                    "optional": [
                        "any"
                    ]
                }
            },
            "to": [
                {
                    "key_code": "escape"
                },
                {
                    "key_code": "japanese_eisuu"
                }
            ],
            "type": "basic"
        }
    ]
}

今ではもっと早く設定しておけばよかったと思っているぐらい快適。

WealthNavi for 住信SBIネット銀行 を解約して、よりおトクな WealthNavi を契約した

TL;DR

住信SBIネット銀行きっかけでWealthNavi for 住信SBIネット銀行を使っていたけれども、WealthNaviの方がおトクなのでWealthNaviに移行した

事の発端

元々住信SBIネット銀行のランク判定条件だったこともありWealthNavi for 住信SBIネット銀行を契約していたが、昨年11月頃にたまたまアプリの不具合で 長期割 というWealthNavi限定のプログラムの存在を知った。

f:id:ShineSpark:20200219011053p:plain

長期割が適用されると、手数料が最大で0.90%まで割引されるようになる。

自分が200万円ほど運用していた時には月々数千円手数料として差し引きされていたことと、向こう数十年引かれる手数料が少し安くなるのは大きなメリットになるのではと思ったので長期割について調べてみることにした。

WealthNavi と WealthNavi for 住信SBIネット銀行 の違い

調べたり実際にウェルスナビ株式会社に問い合わせをした結果、以下の違いがあることがわかった。

WealthNavi

  • 独自キャンペーンがある
  • 長期割がある

WealthNavi for 住信SBIネット銀行

移行に関する諸注意

自分は既にスマプロランク3であったし、キャンペーンはどちらも独自とのことなので実質長期割があるWealthNaviの方が良さそうだったので、WealthNaviに移管することにした。

移管方法についてウェルスナビ株式会社に問い合わせた所、WealthNaviやWealthNavi for ○○は、特定口座の為下記の制約を受けることを知った。

  • 移管といった概念はない
  • いずれか1つしか契約できない
  • 同一年内に再開設はできない

もしWealthNaviへ変更する場合には一度WealthNavi for 住信SBIネット銀行を解約し、翌年以降にWealthNaviを新規に申し込む必要がある。

再契約処理

昨年11月に長期割の存在を知りこれらの情報を確認したので、早々に手続きを行った。手続きはスムーズですぐに解約・登録口座に入金が行われた。

自分の場合、200万円強を2年程度運用していたのだが、解約時に幾つか税務処理等々で数万円差し引かれたものの10万円オーバーの金額がプラスで返ってきた。

  • 11月中旬には解約申し込み
  • 外国証券取引口座解約請求書 が郵送で届くので、必要事項を記入の上で返送
  • 予定通り年内に解約手続きが完了
  • 1月4日にWealthNaviを新規に申し込み
  • 1月中旬から運用開始

で再契約が完了した。

現在

こんな感じで長期割までのカウンタが表示されるようになった。

f:id:ShineSpark:20200219013757p:plain

200万円以上預けると長期割の手数料割引率が上がっていくので、当面は月々の積立金額を増やして運用することにしている。

ちなみに、自動積立した金額の反映は 引落日の【3営業日後】に行われ、恐らく反映日の夜間にETFの購入が行われる為時間が掛かるので、住信SBIネット銀行の定額自動振込サービスでクイック入金を行って入金している。

こちらであれば平日10時までに入金されればその日の夜間ETFの購入が行われるので反映が早い。

これでWealthNaviは最適化ができた。

ロボアドバイザー投資1年目の教科書

ロボアドバイザー投資1年目の教科書

コミットメッセージに自動でチケットIDを入れたい

やりたいこと

feature/${チケットID}-awesome-function みたいなブランチ名でコミットした時に、自動でコミットメッセージのプレフィクスに [#チケットID] を挿入しておきたい。

実行環境に左右されたくなかったので、bash / zshだけで実装したい。

githooks prepare-commit-msg を使う

Git - githooks Documentation

#!/bin/sh
COMMIT_MSG_FILE=$1
CURRENT_BRANCH=$(git rev-parse --abbrev-ref @)

if [[ $CURRENT_BRANCH =~ ^[^/]+/([0-9A-Za-z]+)[-|_]?.+$ ]]; then
  TICKET_ID=${BASH_REMATCH[1]}
  if [[ -n "$TICKET_ID" ]]; then
    echo "[#$TICKET_ID] $(cat $COMMIT_MSG_FILE)" > $COMMIT_MSG_FILE
  fi
fi

以下解説。

  • $1 には $git commit した際にエディタでコミットメッセージを入力する際のメッセージ。 sampleに倣って変数に格納した。
  • 現在のブランチ名は git rev-parse --abbrev-ref @ で取得できる
  • BASH_REMATCH[1]は 正規表現でマッチした1番目のキャプチャを取得する。この場合にはifの条件式内の () で括った箇所。
  • チケットIDがうまく取得できていたら、オリジナルのコミットメッセージファイルの中身の先頭にチケットIDを追加したものを出力する。なお、きちんと > $COMMIT_MSG_FILE しないとエディタ上に反映されない

オリジナルのサンプルはこちら git/hooks--prepare-commit-msg.sample at master · git/git

できた

こんな感じになる。

f:id:ShineSpark:20200213015624p:plain

いいですね。

実用Git

実用Git

HHKBのキーマップ変更機能が残念だった #hhkb

はじめに

2019/12/10に発売されたHappy Hacking Keyboard HYBRID Type-S / 無刻印を発売日に購入しました。

f:id:ShineSpark:20191227034049j:plain

自分は過去に

  • HHKB Lite2
  • HHKB Lite2 for Mac
  • HHKB Professional2
  • HHKB Professional Type-S

を購入したのでこの度で5枚目の購入です。最近はHHKBを2枚配置して疑似分割キーボードとして使っていました。

Dvorakユーザーの私は発売当日のプレスリリースを見てキーマップ変更ができると知り、その日に開催された HHKBユーザーミートアップ vol.3 | Peatix に参加した折にHYBRID Type-Sを早速購入しました。

世のレビュー記事では概ね高評価ですし、私も打鍵感やUSB Type-C対応には満足しています。

しかしながらキーマップ変更機能で非常に残念だった点がありました。この記事がPFUの担当者の方の目に止まり、いつかファームウェアアップデートで対応してもらえることを期待して敢えてこの記事を書きます。

何が残念か

Dvorak配列では右Shiftの左隣のキーがZなので、このキーをZに割り当てようとすると、

f:id:ShineSpark:20200508221955p:plain

Zキーは"特殊な動作を行うために予約されている"というポップアップが出て、

f:id:ShineSpark:20200508222217p:plain

FnレイヤーまでZにされてしまい、長年HHKBで打鍵してきた が従来のキーで打てなくなる。

f:id:ShineSpark:20200508222722p:plain

これは Q, X, Z, 左Ctrl, 右Shift キーをリマップした際にはFnレイヤーも同キーで強制的に上書きするという仕様に起因する為、Dvorak配列に限らずそれらのキーをリマップした際にも同様の問題が発生します。

どうしてもを入力したい場合には、長年HHKBで打鍵してきたキーマップとは異なる位置にをリマップするしかありません。

とはいえ、他のカーソルキー配置との兼ね合いや、使い慣れたキー配置を変更するのは難しく、結果としてハードウェアでのキーマップを諦め、今まで通りOS/ソフトウェア上でのリマップに頼ることになります。

これではキーマップ変更機能は全く使い物になりません。

キーマップ変更機能について

キーマップ変更機能について、PFUではこのように紹介されています。

プレスリリース

制御キーの割り当てを変更できるDIPスイッチに加えて、キーマップ全般をカスタマイズできる(注3)「キーマップ変更機能」を装備しました。 専用ソフトウェア(Windowsで動作)による操作は直感的でわかりやすく、設定内容はHHKB本体に保存するため、接続するPCやスマホを変えても、同じキーマップで使用できます。[HYBRID Type-S/HYBRIDのみ]
(注3)キーマップ変更は、特別な機能を割り当てられた一部のキーを除きます。 PRESS RELEASE | 高性能コンパクトキーボード「Happy Hacking Keyboard」ラインナップ一新 | 株式会社PFU

f:id:ShineSpark:20191227014056p:plain

HHKB公式サイト

制御キーの割り当てを変更できるDIPスイッチに加えて、「HYBRID Type-S」「HYBRID」は制御キーと文字キー全般(※)のキーマップをカスタマイズできる「キーマップ変更機能」を装備。 ソフトウェア(Windowsで動作)によるキーマップ変更は直感的で扱いやすく、設定はHHKB本体に保存されるため、他のデバイスでも同じキーマップで使用できます。 好みの反映、最速追求、タイピング競技やeスポーツのための最適化など、よりプロフェッショナルな“マイ・キーボード”の構築が可能です。 キーマップ変更ツールは無償でダウンロードいただけます。 ※特別な機能を割り当てられた一部のキーを除く。 Happy Hacking Keyboard | HHKB HYBRID Type-S | PFU

f:id:ShineSpark:20191227014341p:plain

「特別な機能を割り当てられた一部のキー」 とは

特別な機能を割り当てられた一部のキーを除くという表現がありましたが、modifireキーやSpace, Fnキーと私は読み違えてしまいました。

というか、QWERTYとはシェアは大きく差があるものの、DvorakWindowsmacOSUbuntuで標準サポートされている配列なので、新機能としてキーマップ変更機能をアピールするのであればDvorak配列ぐらいは考慮されているだろうと思っていました。

それでも、キーボード配列周りは何かとトラブルがありがちなので、念の為購入の際には確認しておこうと考え、ユーザーミートアップの際に直接スタップに確認することにしました。

HHKBユーザーミートアップ vol.3 にて

両サイトを一通り熟読の上で、発売日夜の HHKBユーザーミートアップ vol.3 | Peatix に参加しました。

HHKB HYBRIDの実機とキーマップツールが並んでおり、スタッフも常駐していたので、早速キーマップツールの仕様について「私はDvorak配列ユーザーなのですが、Fnレイヤーも含めて問題なくリマップできますか?具体的にリマップできないのはどのキーですか?」とスタッフに質問しました。

スタッフの方も具体的にどのキーがリマップできないかまでは把握していなかったようで、実際にツールをお試しくださいとデモPCがあるブースへ案内されました。
(Dvorak配列を普段使っていない方にとって私の質問に回答するのは難しいと思っているので、ここで具体的な回答がいただけなかったことは気にしていません。)

私はそこで幾つかのキーのリマップを試しました。
HHKB HYBRIDの実機が初めてお披露目された場なので、デモブースには沢山の人だかりがあったので、手早く気になるFnレイヤーのリマップの挙動だけ急いで確認しました。

30キーほどリマップすればこの問題に気付いたかもしれませんが、よもやDvorak時にリマップすることになるキーの内Q, X, Zキーに限りFnレイヤーをリマップできないとは知らなかったので、幾つかのキーでFnレイヤーも個別にリマップできることを確認したところですっかりすべてのキーでリマップできるだろうと思ってしまいました。

また、PFU公式のテキストではありませんが、発売日当日に公開されたITmediaのレビュー記事にはDvorak配列などを想定した機能だろうと書いてあったこともあり、まあリマップできるだろうと安心してしまいました。

www.itmedia.co.jp

購入後、いざ自宅ですべてのキーをリマップしようと試みた際にこの仕様に気付き、ハードウェアでDvorakに変更するデメリットが大きいので、あれこれ試行錯誤したものの今まで通りソフトウェア上でリマップするしかないとの結論に至りました。

元々Type Sを所有しており、ハードウェアでリマップする為に買い替えたようなものなので、この時の落胆は相当のものでした。

何故ハードウェアでキーマップ変更をしたいのか

キーマップを変更したいというユーザーは少数だと思うので、簡単に理由を述べてみようと思います。

QWERTY以外のキーマップ利用者にとっては、個人利用のPCは自分でキーマップを一度変更すればよいのですが、それ以外の環境ではOSやソフトウェアでキーマップを都度変更する必要があります。

それ以外の環境とは、私にとってはVirtualBoxAmazon WorkSpacesなどの仮想環境やiPadです。検証などで一時的に仮想環境を利用する際に環境単位でリマップするのが非常に手間です。
特にWindowsレジストリを書き換えるか何かしないとリマップできないので触ること自体が億劫だったり、ハードウェア上でリマップできるKinesisキーボードを利用したりしていました。

HHKBでもハードウェア上でキーマップ変更ができるようになることで、仮想環境でも同じ鞍を利用し続けられるようになるというのは非常に魅力的なアップデートだったのです。
それが実現できないと知ってしまった時の落胆は非常に大きいものでした。

PFUへ期待すること

個別にFnレイヤーをリマップできないキーを公式サイトにも明記して欲しい

「※特別な機能を割り当てられた一部のキーを除く。」 のような曖昧な表現でなく、最初からハッキリと

以下のキーも特殊な操作用に予約されているため、Fn押下時のキーの割り当てができません。
`Q`, `X`, `Z`, '左Ctrl', '右Shift'

と書いて欲しいです。

私はこの制限について、PFUのサポートセンターに問い合わせ回答を貰うまで知ることができませんでした。
サポートセンターの方からは、キーマップツールのヘルプ(ツールを起動し、右上の3つ点アイコンをクリックして表示されるメニュー内)にも記載があるとの案内もいただきましたが、

  • 公式サイト, 説明書にはリマップできないキーについて具体的な記述なし
  • 購入前にキーマップツールを起動してヘルプを読むという発想が困難
    • そもそも、キーマップツールはHHKB HYBRIDをUSB接続した状態でないとヘルプ画面に遷移できない

ので、購入前にこの制限に気付くということは不可能です。
HYBRID購入者で購入前にこの制限を知っていた方は居るのでしょうか?

もし購入前にこの情報を知っていたら、元々Type-Sを所有していたので私は購入を見送りました。
プロモーションとしては正しい表記かも知れませんが、買ってからリマップできないと気付いた時の落胆はユーザーの満足度を大きく損ねています。

ファームウェアアップデート、キーマップツールのアップデートでこれらのFn押下時のキーも任意にリマップできるようにして欲しい

一番求めているのはこれです。

キーボードへのこだわりが強いユーザーが多いことや、非常時にはUSB経由で初期化等ができれば充分だと思うので、制限を外して任意にリマップできるようにして欲しいです。

どうしても制御用のキーを配置する必要があるのであれば、ツール上で制御キーを必ず何かしらのキーにマッピングするまで書き込みできないUIにすればよいだけで、先述のキーにだけFn押下時もリマップできない制約をつける必要はないはずです。

過去にergodox-ezを利用していましたが、Layerごとに任意のキー配置ができるのが理想です。

Oryx: The ZSA Keyboard Configurator

キーマップ変更機能が不要なユーザーにとっては打鍵感もよく、ケーブルも無くなり、有事の際にはUSBハブなど無しで直接Type-CでMacBook Proと接続できるようになった最高のキーボードだと思います。

だからこそキーマップ変更だけ何とかしてください!お願いします!!

2019年にいっぱい買ったAnker製品のまとめとそのレビュー

今年になって在宅でリモートワークすることが増えて、それに伴ってパソコン周りの環境をAnker製品で買い揃えたので記録しておく。

Anker PowerPort

MagicTrackpad2, Kindle, iPadなどを充電したり、検証端末を充電したりに使う。

電源プラグでコンセントからの直給電のため、電力不足に悩まされることもない。

Anker 7-in-1 プレミアム USB-Cハブ

USB-CのみのMacBook Pro買い替えに伴い、USB-Cハブが必要だった為購入。

MacBook Pro用のUSBハブは乱立していてどれを買えばよいのか悩んだが、本体横に接続するタイプはどのメーカー製品も発熱が問題らしかった中、このUSB-Cハブは評判が良かったのでこれにした。

5-in-1や、3-in-1もあるが、値段がそれ程変わらないので7-in-1にした。

ほぼ1年利用したが、概ね満足している。

USB-Cポートx2が1つのみになる代わりに、有線イーサネットの別バージョンも販売されている模様。

Anker PowerWave 10 Stand

ワイヤレス充電器。3000円以下だったので試しに買ってみたら最高だった。

スマホを立て掛けるだけで充電されるので、ここ10数年間の毎日ケータイやスマホを有線で充電するという日課から解放された。 度々離席する際に、都度ケーブルを抜いて戻ってきたら挿し直すという手間が無くなることがこれ程便利とは使ってみるまで分からなかった。

これのお陰で出掛ける前に気付いたらバッテリーがきれそうで困った...みたいなことが一切なくなった。

Anker PowerCore 10000 Slim PD

以前持っていたモバイルバッテリーも殆ど使ってないのだが、大型台風が来るということで一応買ってみた。古いモバイルバッテリーはメルカリで1000円位で売れた。

以前のモバイルバッテリーよりは軽くて薄いのでカバンに常備して置いてもかさ張らない。

Anker Soundcore2

ふとPC用スピーカーが欲しくなり購入。
重低音がしっかり出るというレビュー通り、値段の割にはいい音が出る。

AUXは自動音量コントロールのせいか、うねるような音が流れると音量が変になるのでちょっと微妙。
Bluetooth接続は満足しているので、次があればよりスピーカーサイズの大きい上位機種を買ってもいいと思っているくらい。

Happy Hacking Keyboard をキーボードブリッジ無しでDIYで尊師スタイルにした

あらすじ

巷で尊師スタイルと呼ばれる、Macbook Proのキーボード上にHHKBを置いてトラックパッドはそのまま内蔵のものを利用する置き方でHHKBを使いたかった。

調べてみると、純正のキーボードブリッジがあるらしいのだが、クリア色は既に売り切れ・数倍の価格でマーケットプレイスで出回っている状況で、ホワイト色は多少在庫があるようだが、手元のMBPはスペースグレイなので色が合わない...

と悩んでいた所、ゴム板をHHKBの底に貼り付ける方法でDIYしている人が居たので自分も実践してみた。

sheklog.com

必要なもの

3×100×100mmのゴム板が売っているのでこれを購入。

光 ゴム板 100角×3mm KGR-3100

光 ゴム板 100角×3mm KGR-3100

  • メディア: Tools & Hardware

自分が買った時には61円。安すぎて申し訳なかったので他の商品も一緒に注文してしまった。

両面テープ

10mm幅が良い。

丸カッター

オルファ(OLFA) ロータリーカッターLL型 136B

オルファ(OLFA) ロータリーカッターLL型 136B

  • メディア: おもちゃ&ホビー

普通のカッターでも切れると思うけど、こっちの方がキレイに切れる。

カッターボード

カッターで切る時にテーブルを保護して傷つけないためのもの。
丸カッターとカッターボードは実は書籍を自炊する際に元々所有していたので、今回の経費は61円のみ。

DIY

あらかじめMacbook Proに HHKB を重ねて、どれくらいの幅のゴム板であればキーボードと重ならないか確認する。

自分が所有しているものはMacBook Pro (15-inch, 2018)だが、HHKBの両端に5mmずつゴム板を貼り付け、内蔵キーボードの上に載せたとしても内蔵キーボードのキーを押してしまうことがないことが確認できたので5mm幅のゴム板を両サイドに貼り付けることにした。

f:id:ShineSpark:20191015015426j:plain

10mm幅の両面テープを貼る。

f:id:ShineSpark:20191015015416j:plain

カッターでカットする。

f:id:ShineSpark:20191015015409j:plain

HHKBの裏に貼る。HHKBは110mmなので、100mmのゴム板で充分。誤って内蔵キーボードを打鍵しないように今回はできる限り端に貼り付けた。

f:id:ShineSpark:20191015015223p:plain

完成図。内蔵キーボードの真上に置いても内蔵キーボード側のキーが打鍵されることがなくなったので、これで出先でもMagic Trackpadを持ち歩くことなくHHKBを使うことができるようになった。

f:id:ShineSpark:20191015015846p:plain

接写したもの。3mmのゴム板によって内蔵キーボードのキーがHHKBの底面に触れることがないようになっていることが分かる。

当面これで使って見る予定。 ダメだったら両面テープを剥がせばいいだけなので気軽。