人生シーケンスブレイク

シーケンスブレイクとは

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

Happy Hacking Keyboard HYBRIDのキーマップ変更機能が残念だった #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枚目の購入です。HHKB2枚でセパレートキーボードを試す為にType-Sを買い増して使っていました。

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

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

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

何が残念か

キーマップ変更機能でDvorak配列に変更するとZキーがQWERTY配列でいう/に割り当てられるが、ZキーのFnレイヤーもリマップされてしまうため、QWERTY配置でいう Fn + / が入力できなくなる。

これは 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 key以外ではESCやSpace, Fnなどの話だと私は読み違えてしまいました。

というか、QWERTYとはシェアは大きく差があるものの、Dvorak親指シフトと同じかその次ぐらいには有名な配列だと思っていたのでDvorakで弊害があるとは思っていませんでしたが、念の為購入の際には確認しておこうと考えていました。

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

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

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

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

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

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

www.itmedia.co.jp

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

ハードウェアでリマップする為に買い替えたようなものなので、この時の落胆は相当のものでした。

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

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

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

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

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

PFUへ期待すること

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

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

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

と書いて欲しいです。

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

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

ので、購入する前にこの制約に気付くということはほぼ不可能だと思われます。
HYBRID購入者で購入前にこの制約を知っていた方は居るのでしょうか?

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

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

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

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

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

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

Ergodox EZ 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

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

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

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の底面に触れることがないようになっていることが分かる。

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

Vimでググったコマンド一覧

徐々に増える。

検索(ハイライト)した文字列をそのまま置換する

一度 /<search_word> または * でハイライトした状態で

:%s//<replace_word>/g

:%s/<search_word>/<replace_word>/g と同じ結果になる。

空行削除

:g/^$/d

3行以上の空行を2行空行に置換する

:%s/\n\{4,}/\r\r\r/ 

重複している行を削除

:sort u

検索文字列を含む行を削除

:g/search/d

または、一度 /search で検索して

:g//d

検索文字列を含まない行を削除

:v/search/d

または、一度 /search で検索して

:v//d

文字をn個挿入する

normalモードで 100i-
文字列も日本語も可能。

macOS で JMeter をインストールする 2019

あらすじ

macOS Mojave で JMeter をインストールしようと思ったが、インターネット上の情報は錯綜していたので最新のスムーズなインストール方法を残しておく。

現在の手軽な方法

$ brew cask install java
$ brew install jmeter

以下細かい記録

JMeterインストール

Homebrew に JMeter があるようだったのでそちらをインストールすることにした。

$ brew install jmeter
==> Downloading https://homebrew.bintray.com/bottles/jmeter-5.1.1.mojave.bottle.tar.gz
==> Downloading from https://akamai.bintray.com/75/75fe29e4b60b96e881c3b64475d4f7fc268cd405e300b31f1aa3ce6cb26c4211?__gda__=exp=1570438461~hmac=9517ddefa9f0b663e575518e6da1acaf
######################################################################## 100.0%
==> Pouring jmeter-5.1.1.mojave.bottle.tar.gz
🍺  /usr/local/Cellar/jmeter/5.1.1: 2,492 files, 121.8MB

その後、 JMeter を起動しようとしたが、JAVA環境が必要だと怒られたので環境を構築することにした

$ jmeter
Unable to find any JVMs matching version "(null)".
No Java runtime present, try --request to install.
Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
At least one of these environment variable is needed to run this program

$ jmeter --request
Unable to find any JVMs matching version "(null)".
No Java runtime present, try --request to install.
Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
At least one of these environment variable is needed to run this program

JAVA環境構築

2019年現在、Oracle JDK 有償化に伴い、Oracle のサイトからダウンロードしようとすると Oracle のアカウント作成またはサインインを求められてしまうので、 Open JDK をインストールする。
Open JDKbrew cask でインストール可能。

$ brew cask install java
==> Satisfying dependencies
==> Downloading https://download.java.net/java/GA/jdk13/5b8a42f3905b406298b72d750b6919f6/33/GPL/openjdk-13_osx-x64_bin.tar.gz
######################################################################## 100.0%
==> Verifying SHA-256 checksum for Cask 'java'.
==> Installing Cask java
==> Moving Generic Artifact 'jdk-13.jdk' to '/Library/Java/JavaVirtualMachines/openjdk-13.jdk'.
Password:
🍺  java was successfully installed!

これで JMeter が起動できるようになった。

$ jmeter
WARNING: package sun.awt.X11 not in java.desktop
================================================================================
Don't use GUI mode for load testing !, only for Test creation and Test debugging.
For load testing, use CLI Mode (was NON GUI):
   jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
& increase Java Heap to meet your test requirements:
   Modify current env variable HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m" in the jmeter batch file
Check : https://jmeter.apache.org/usermanual/best-practices.html
================================================================================
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.bulenkov.darcula.DarculaLaf (file:/usr/local/Cellar/jmeter/5.1.1/libexec/lib/darcula.jar) to constructor com.apple.laf.AquaLookAndFeel()
WARNING: Please consider reporting this to the maintainers of com.bulenkov.darcula.DarculaLaf
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release

f:id:ShineSpark:20191008003559p:plain
JMeterGUI