MacbookでJISキーボードでUS(ANSI)キーボード配列を使ってしばらくたった

hachi.hatenablog.com

を見ると100日以上経過してたので検証結果を書く。 結論としては大体書くことができる。 正直JIS配列に戻すのがしんどいぐらいに慣れてて、大学の授業のときにブラインドタッチでアメリカ合衆国憲法をタイピングさせられてて覚えたのはなんだったんだ?ぐらいにスイッチできている。

デメリットで上げていた

  • *, _ が思ったより遠く感じるというのも慣れればそうでもない。あと _ はキーマップでJISと同じ場所にしている
  • _, : がShiftが必要なのがちょっと面倒。これも最初だけ。

あとは Shift + 6 の ^とShift+7の &、,Shift + ¥の ~ がまだ覚えきれないけど、& に比べたら他の二つは使用頻度が低いのでさして困っていないし、& も JISの時よりも指を動かさなくてよい(JISはShift + 6)ので楽ではある。 Karabiner-Elementsに大分依存しているところがあるので提供が終了されると詰むんだけど完全にUSキーボードに変えるモチベもわかないので当面はこの構成が最適解な気がする

MacbookでJISキーボードでUS(ANSI)キーボード配列を使っている

TwitterとかでJIS・USキーボードでの話とか、アーケードコントローラ・レバーレスコントローラの話を見てて自分にとって最適なものを模索している(N回目)これも大分前に一度試したけどそのときは挫折したけけど今回はなんとかなりそうな予感がしている(M回目)

今のところ持っている仮説としては

  • IDE, Slackなどのツールは非JISキーボード配列の国で作られているので各種ショートカットはUSキーボードに最適化されているないか?
    • 事実、RubyMineなどのショートカットはUSキーボードに最適化されている
    • 1Passwordのデフォルトショートカットに cmd + \ に割り当てられているが、RubyMineで cmd + ] を割り当てようとするとなぜか1passwordのショートカットがかってしまう
  • メインで使っているプログラミング言語(Ruby, TypeScript)は英語がデフォルトなのでUSキーボードの方が最適なのではないか
  • とはいえ、日本語+英語を使っているので日本語の「英数」と「かな」の切り替えは必須なのではないか

ということで、今使っているJISキーボードに対してKarabiner-Elementsを使ってUSキーボード配列に割り当てている。仕事ではまだ1日しか使っていないので、意識レベルだとJIS配列のほうが当然使いやすいが、今のところ以下のところに気づいている。

USキーボードを使って得たメリット

  • 各種ツールのデフォルトショートカットはUS配列に最適化されているので、IDEのKeymapの変更はほとんどいらないのは楽
  • ;, = , ' などをShift押しながら入力しなくていいのは楽

デメリットとしては

  • *, _ が思ったより遠く感じる
  • _, :がShiftが必要なのがちょっと面倒
    • 特に : を打つときには都度 Shiftを打つのは面倒かもしれない

2ヶ月ぐらい使ってみてちゃんと検証しよう

転職に伴って新しく入れたChrome 拡張機能とRubyMineプラグインとか

転職しました。それに伴いいくつかChrome拡張機能をRubyMineプラグインを追加したのでご紹介

Next.js

フロントエンドでNext.jsを使ってSPAで画面を構成しています。なので、Reactのdeveloper toolsでコンポーネントの中を見ながらデバッグをしたりしています。IDEプラグインもデフォルトで入っているNext.js Supportのプラグインを使っています。この辺は変わり映えしないですね

chrome.google.com

GraphQL

GraphQLを使い出したのがいちばん大きな変わったところです。集中してパフォーマンスチューニングをしていたときに、Chrome拡張機能に GraphQL Network Inspector をいれて確認していました。

chrome.google.com

この拡張機能でいちばん便利だったのは、GraphQLのヘッダーとクエリとvariablesがコピーできるところです。コピーした後にRubyMineのScratchファイルでGraphQLを実行してます。

Terraform

Terraformを書く機会が増えたので使ってます。リソースを補完すると必須項目も勝手に自動生成してくれるのでマジ便利。

その他

前からGitのコミットログに Conventional Commits を使いたいと思っていたのですが、覚えきれなくて挫折していました。そんな中でConventional Commits というプラグインを見つけました。通常のコミットログに補完してくれるので便利

これまでGitHubのリンクをシェアするときにはGitHubのWeb画面に行って、ショートカット y を押してとやってたのですが、GitLinkというプラグインを使うと一発でリンクがとれます。ショートカットキーをアサインしてます。

RubyMineは 株式会社サムライズム - 開発者向け生産性向上ツール、サービス さんから購入していますが、同社が出しているCIcloneを使っています。GitHub Actionsの結果をバルーン通知・結果をIDE上から見れるプラグインです。失敗した時のみ通知して、ログを見て修正してます。マジ便利。

ということで、生産性を爆上げしてくれてる拡張機能+プラグインでした

2022年まとめ

新サービスの開発

今年前半は既存プロダクトの体制から離れて一エンジニアとして新サービスの開発を行っていました。デザイナー陣が頑張ってグッドデザイン賞に応募してくれていたので退職したあとに受賞したのを聞けて嬉しかったです。頑張って欲しい。

www.g-mark.org

マンションの購入

夫婦二人で住んで、更にリモートワークをするには賃貸は高いなぁと思っていて、今年頭ぐらいから探していました。4ヶ月ぐらい探して住宅ローンやらリフォームやらやったことないことばかり。銀行口座が100万単位で減る、1000万単位で増えるという体験はあんまり心臓には良くなかったですね。

妻の入院

やはりこれが一番大きなイベントでした。何より無事に帰ってきてくれてよかったというのが一番。病院いったり、書類書いたりとやること多かったことに加えて、新居への引越しが重なって更に大変。これはもう二度と起きてほしくないです、はい。

転職

前職で5年ぐらい働いていましたが、今年11月に転職しました。新しい会社では2ヶ月ぐらいパフォーマンスチューニングやら、インフラコスト下げたりとかやってました。毎日改善が目に見えて嬉しいし、使ったことないGraphQLとかNext.jsとか難しいけど楽しいです。

テニス

去年から引き続き継続してます。体重は減ってないけどやっぱりテニスは楽しい。来年も引き続きやっていくぞ!

2023年へ向けて

12月に再び少し体の調子を崩してしまったのでそこをちゃんとケアしつつ、楽しくやっていきたいなと思ってます。あとは、仕事と妻との時間と一人の時間をどうやって確保していくかが課題です。頑張っていくぞ

それでは良いお年を!

今年買ってよかったもの

2022年買ってよかったものを書く。

iPhone14 Pro

iPhone11 Proからの乗り換え。バッテリーがへたっていたのでまぁ変えるかなぁ...ぐらいのノリで変えた。iPhone11 Proではマスクをつけた状態でFace IDが解除できなかったがこれはできる。ちょっとしたことだけど体験はよかった。ちょっとしたことだけど時短になる。

 

 

Audio Technica ATH-CC500BT

正直、軟骨伝導骨伝導のちゃんとした違いは分かってない。Audio Techinica製品を使ったことがないのと、USB Type-Cで充電できるところが決め手になった。毎日使っているが特に不満はない。前に別製品の骨伝導ワイヤレスイヤホン使っていたけどそっちより長く使えている。

REALFORCE キーボード Mac用配列 静音 ワイヤレス

ワイヤレスタイプのREALFORCEが出たので購入。リモートワークで常時ディスプレイに繋いで仕事をしているので、ものすごい変わったかと言われるとそうでもないが机の上にケーブルがないので心なしかスッキリしている。使い心地などは安定の製品なので言わずもがな。

あとは、除湿器とかコーヒー飲むためにARAS マグカップ 大とかいろいろ買ったはず。どれもよかった。2022年は日本の経済をたくさん回したので褒めて欲しい。

 

開発環境向けMinIOでバージョニングを有効にしたオブジェクトの削除をしたい 2022 夏

やりたいこと

本番ではAWS S3上でバージョニングしたオブジェクトをバージョニング情報含めてを削除したい

どうして?

例えば顧客のデータを削除するときにS3にバージョニングしているとそれが復旧できて本当に削除されていないやんという話になるため

開発環境ではどうする?

S3の代わりにMinIOをつかう。docker-compose.ymlはこんなかんじ。 MinIOで記載されているのは MinIO | Learn more about MinIO's Erasure Code Implementation

version: "3"
services:
  minio:
    image: minio/minio
    command: server --console-address ":9001" /data{1...4}
    environment:
      MINIO_ACCESS_KEY: root
      MINIO_SECRET_KEY: password
    ports:
      - "9000:9000"
      - "9001:9001"
    # Versioningを使うための準備
    volumes:
      - ./tmp/data1:/data1
      - ./tmp/data2:/data2
      - ./tmp/data3:/data3
      - ./tmp/data4:/data4

バケットを作ったときにVersioningをONにするインタフェースが出てくる。

Rubyからデータを削除する

aws-sdk-s3 を使う。

client = Aws::S3::Client.new(access_key_id: 'root', secret_access_key: 'password', endpoint: 'http://127.0.0.1:9000', force_path_style:true)
resource = Aws::S3::Resource.new(client: client)
bucket = resource.bucket('development')
bucket.object_versions(prefix: 'test').each(&:delete)

Intellij IDEAで効率よくdirenvを使う 2022春

以前、Intellij IDEAでdirenvを読み込ませるか?という記事を書いた。それの2022春版(というかオフィシャルページに書いてあった) hachi.hatenablog.com

手順

f:id:hs_hachi:20220305150911p:plain
Ruby SDK and Gems

f:id:hs_hachi:20220305151007p:plain
New Local with Custom Configuratorを選ぶ

f:id:hs_hachi:20220305151122p:plain
Rubyのパスとdirenv exec とenvrcファイルがあるパスを追加する

f:id:hs_hachi:20220305151251p:plain
追加したパスを選択してOKを押す

気をつけること

  1. RubyのPathを選択するときはrbenvのversionsのパスを選択する
  2. IDEを再起動すると再びIDE.ruby-version を読みに行ってrbenvのパスを見に行くので上記で追加したRubyのパスを選ぶ必要がある

自分はほとんどIDEを再起動することがないので特に困っていない。

オフィシャルページ

www.jetbrains.com