Magnolia Tech

いつもコードのことばかり考えている人のために。

PBTFANS COOKIES 'N CREMEというキーキャップを買った

PBTfans Cookies 'n Cremekbdfans.com

Keychron Q60に付属していたキーキャップ、色は本体ときちっと合ってて良いのだけど、微妙に刻印の感じがボヤっとしているのが気になったので、キーキャップを入れ替えた。

意外とHHKB配列だと「\」キーが合わない(揃っていない)ものが多いので、ちょうど良いものがなかなか無かったけど、KBDfansだとTofu 2.0がHHKB配列をサポートしているからか、HHKB配列に合わせたキーが揃っているキーキャップが多数用意されていた。

その中で、PBTFANS COOKIES 'N CREMEというキーキャップを買った。

ちょっと白が強いけど、いい感じ。

Kailh Midnight Silent V2 Switch / Tactileを導入した

Keychron Pro K6には、「Keychron K Pro スイッチ」が装着されているが、軽快にタイピングすると「周りに人が居る環境では気になる......」というレベルの音が鳴り響く。

そこで、Kailh Midnight Silent V2 Switch / Tactileを導入。

打鍵感といい、音の感じといい、HHKB Professional2 Type-Sに近い感じになった。

しばらくこれで常用してみることにした

『SLOサービスレベル目標』- SLI/SLO/エラーバジェットを私たちは設定できるのか?と考えた

発売されてすぐに買ったものの、なかなか手をつけていなかった『SLOサービスレベル目標』をようやく読んだ。

以下、読書メモ

  • 繰り返し出てくるのは、「完璧を目指さないこと」…目指すのはある程度の完璧さであり、限られたリソースの中、個々の要素に囚われすぎず、全体最適を目指すこと
  • サービスの信頼性は、「ユーザー目線」であるべきで、サービスを提供する側の目線では無い
  • SLI、サービスレベル指標は、ユーザーにとって価値が得られたか否かの閾値、基準を示すもの……例えば、ユーザーへの画面表示は2秒以内に行われるべきである、といった定義がされる
  • SLO、サービスレベル目標は、サービスレベル指標がどの程度の割合となるべきか、その目標を示すもの……例えば、ユーザーへの画面表示が2秒以内に行われる割合を8割とする、といった定義がされる
  • SLOとは障害を起こしても許容される頻度の目標値であり、あるいは正常に動作していなくてもユーザーが重大な混乱に陥らないと保証する目標値

待って!!!

果たして組織の中で、「障害を起こしても許容される頻度」なるものを議論し、定義できるのだろうか……経営陣は秒で「ゼロに決まってんだろ」と言ってくるかもしれない。「障害なんて、有ってはならない」としか言ってこないかもしれない……でも、実際にはあるんだけど。

もし起きたら、全部すぐ対応して、障害が無い状態に回復させるんだろ?そこに判断の余地は無いんだろう?という議論にならないだろうか。

少なくとも、エンジニアの組織から一歩出た時に、この議論に陥らないだろうか?

エラーバジェットが貯まる前に、起きたら即対応か、優先順位が低いものはスタックに積まれ、そして、そのスタックから取り出されることは永遠になく、常に新規のサービス追加か、優先度最大の即対応が必要な障害へ対応が求められるのではないか?

伝家の宝刀「全部最優先で!」が発動しませんか?

「今月は、まだあと5000個までのエラーを出しても大丈夫だなー」とか思って運用している人、監視している人って居るのだろうか?


と、思いながら読み進めていくと、以下の意思決定ロジックが出てきた。

「エラーバジェットが余った?」→「より多くの機能をリリース」 「エラーバジェットが超過した?」→「信頼性に集中」

この意思決定ができるのはマネジメントをする側だけだ。勝手にサービスリリースは減らせないし、勝手に改善活動もできない。リソースを投下する先を決めるのは、あくまでマネジメントサイドであり、経営の問題だ。


「2.3.1 100%は不要である」という章にすごく大事なことが書かれている……それはつまり「100%は不可能だ」ということ。そして、「2.3.2 信頼性にはコストがかかる」へとつながっていくのだけど、この二つの章をマネジメントする側が納得して読めるか否かで、この本がもたらす価値が変わってくる。

「それはダメ、有ってはならない、コストはかけられないが、信頼性は下げてはいけない」となってしまうと、この先いくら読み進めても何の意味も無い。そして、そんな価値観の人が多いんじゃないかな?と思ってしまった。


ただ、お金に関する計算や、取引が一定の割合で失敗しても良い、という目標を掲げる組織はおそらく無いと思われる(有ったら怖い)。この本の中にも厳密性が担保されるべき例として出てくる。実際、SLIの事例として出てくるのは応答時間に関するものが多い。時間を担保するのもとても大変だし、応答時間が重要なビジネスの指標になる場面があることも分かる(遅いサイトは利用されず、離脱されてしまう……一方で、社内システムは遅いからとって離脱されるだろうか?


結局、何を許容して、何は許容できないか、それをきちんと議論、合意することが大事なんじゃないか?と思ったし、本の後半で出てくる指標の考え方や、信頼性を担保する仕組みも、その合意無しには何の意味もないなーと。

SLIやSLOが定義できる対象って、そんなに有るのだろうか、そしてそんなにサービス運営に於いて、優先されるべき内容なのだろうか?と考えた、答えはまだ無い。

Glorious Keyboard Switch サンプルパック

いろいろなスイッチを試したくなって、Glorious Keyboard Switch サンプルパックを買ってみた。

写真にはPandaスイッチが含まれるように見えるけど、実際には含まれていない(事前に知ってたので、特に驚かなかったけど、知らなかったらアレ)。

一番静かだし、今までLinear一択だと思っていたけど、感触からTactileの方が好みなんじゃ?という発見が有った。

あと、同じLinerでも赤より、黒の方が好みだということも分かった。

やっぱり色々と試してみるものですね。しかし、一通り試してみると、割と「これどうする?」ってなるな……

HHKB Professional2と、Keychron Q60のキー配列設定について考える

2023/9/6: なんか、雑に書きすぎたので、全面的に、記載を見直してみた


先日、Keychron Q60という英語配列のHHKB完コピキーボードを購入した(厳密に言うと、スペースキーが少し長いので、完コピではないらしい)。

blog.magnolia.tech

日常的にWindowsノートと、MacBook Airを切り替えながら使っていて、これまでは切り替える度にMacモードに設定された英語配列のHHKB Professional2を差し替えていた。

HHKB Professional2はキー配列のモード切り替えがディップスイッチ方式になっていて、1日に何度も切り替えるのはちょっと面倒臭いのでMacモードのままの設定でWindowsも使っていた。一方でKeychron Q60は、MacとWinのモード切り替えスイッチが有って、簡単に切り替えられるようになっている。

それぞれ最適な配置になるように、改めてHHKBの配列について調べた。


US配列のHHKB Professional2は、Sun Type-3というマシンのキーボードを出発点として設計されているので、JIS配列版のHHKBとも違うし、一般的な101キーボードとも違って、独特な配列になっている(そして、初代HHKBの発売以来、まったく変わっていない)。

HHKBの配列の経緯については、考案者の和田 英一先生の論文が公開されていて、ここに全て書かれている。特に、一般的なキーボードと違って、Backspaceキーの位置にDeleteキーが優先されて置かれている理由が興味深い。

happyhackingkb.com

その後、実際の製品化に向けて、調整が行われた経緯もまとまっている。

happyhackingkb.com


特に特徴的な配列といえば、以下の点が挙げられる。

  • 他のキーボードでは左上だったり、省スペースキーボードではFn+ESCキーに割り当てられがちな「`」キーが一番右上に配置されている
    • Windowsでは日本語入力の切り替えキーにも使われるので意外と利用頻度が高いし、Markdownでもコードブロックの表記によく使われるので、修飾キー無しに入力できるのは便利
  • 一般的なキーボードでBackspaceキーの位置にDeleteキーが配置されている
    • ただし、Macの場合はDeleteキーが配置されていて、macosでの挙動はWindowsでのBackspace相当になっている(カーソルの左側を消す)
  • spaceキーの横は、「Altキー」ではなく、「◇(⌘)キー」が配置されていて、Windowsでは使わないMetaキー(又はMacの⌘キー)が割当られている
  • 「◇(⌘)キー」 の横には「Alt(Opt)キー」が配置されている。

つまり、「`」キーを除くと、Macで使う分にはあまり違和感の無い配列になっているけど、Windowsだとちょっと違和感がある。

やはりWindowsではスペースキーの横がAltキーであってほしいし、Deleteキーの位置にあるキーはBackspaceキー相当の挙動をしてほしい。できればWindowsキーが欲しい。

一方で、Macで使う分には刻印通りに動いて欲しい。

表にまとめると、こんな感じ。

キーの種類 Mac Win
左◇ Command Alt
左Alt Option Windows
Delete Backspace Backspace

ただし、これが一度に設定する方法がない。キーマップの配置を変更するツールとか入れればいいのかもしれないけど、それもちょっと環境管理が面倒。

ディップスイッチの設定は、以下のサイトに解説がされている。

happyhackingkb.com

Windowsでは、SW1, 3, 5をオンにすると、自分の理想通りの設定になるけど、それだと今度は⌘キーの位置が入れ替わってMacが使いづらくなる...

というわけでHHKB Professional2はメインの場所とは別にWindows機のみを使う場所が有るので、その場所の専用キーボードとして使うことにして、Windows専用のモードに設定することにした。

メインの環境では、Keychron Q60を使うことにした(VIAで、DeleteキーをBackspaceキーに変えるところだけ変えた)。


初代HHKBに一番近いのは、今のモデルだと「PFU キーボード HHKB Professional Classic 英語配列/白」になるそうだ。

happyhackingkb.com

Keychron Q60を購入した

2023/9/10 しばらく使ってみて、ちょっと書き換えた


いろいろなキーボードをリリースしているKeychronのキーボードの中でも変わり種の一つ、Keychron Q60を購入した。

キー配置がHHKB完コピになっていて、通常CAPS LOCKがある位置にCTRLキーが有るし、右上に「`」キーが配置されている。そして、カーソルキーはない。

Keychron Q60 QMK カスタムメカニカルキーボード(US ANSI 配列)keychron.jp

ただ、スペースキーがキー一個分、オリジナルのHHKBより右に長く、厳密に同じ配列ではないのだけど、普段右側の修飾キーをあまり使わないのでそれは全然気にならなかった。

また、有線専用モデルなので無線機能は、ない。


HHKBにない機能としては、バックライト機能や、キー配列のWinモードと、Macモードの切り替え機能、VIAによるキー配列のフルカスタマイズに対応している点が挙げられる。

また、筐体がHHKBと違って、プラスチックではなく金属なので、ずっしりと重い。


こちらのレビューによると、GroupByで限定販売されたものが2023年に入って一般販売されたものだそうだ。

green-keys.info


一方で、キースイッチはメカニカルなので、キータッチ時の音は、静電容量式とは全然違う。Gateron G Pro Redが搭載されているモデルを使っているけど、軽快にキー入力を始めてしまうと、静電容量式のHHKBより明らかに周りの人が気にするくらいの音量になるので、周りの人への配慮は多少必要かも。


キー配列が英語版HHKBにすっかり慣れてしまって変えたくはないけど、いろいろなキースイッチの打鍵感を試してみたい人向け、というか、それ以外に買う人が居るのだろうか(価格も意外と高い)と思えるモデル。

MacとWinを結構頻繁に切り替えて使う人には、HHKBよりも便利(ディップスイッチをいちいち変えなくても、最適なモードにできる)なところもメリットかな。


通常のKeychronのキーボード配列だと、Keychron Q2あたりが近い気がする。 右上のINSキーを「`」に置き換えて、CAPS LOCKをCTRLに置き換えれば、ほぼ同じ操作感になる (カーソルキーが無いモデルだと、一番右上の位置がdeleteキーになってしまうので、ちょっとずれてしまう)


Keychron K6 Proもストロークの深い打鍵感が気に入っていて、継続して使っている。

blog.magnolia.tech

『基礎からの新しいストレージ入門』は、書名のとおりの基礎がわかる1冊

ストレージというキーワードを聞いて思い浮かべる技術は、人それぞれ結構分かれると思います。

アプリケーションレイヤーから見ると、「何かデータが溜まっている場所」くらいの認識だし、クラウドが普及してきたことでシビアに残容量を気にしながら使うとかもなくなってきた(お金以外)。

そんなだんだんとその存在を気にしなくなっていくストレージに対して改めて基礎から入門できるのが『基礎からの新しいストレージ入門』です。

代表的なストレージの3つの種類……

  • ブロックストレージ
  • ファイルストレージ
  • オブジェクトストレージ

に分けて、それぞれの基本的なハードウェア構成、ソフトウェア構成、アクセス方式、特性を淡々と、特定の製品に依らずに解説されています。

ブロックストレージをどのくらいの抽象度で外部に公開していくのか?その感覚が掴めて、「でも結局、このインタフェースの先にはブロックストレージがあるんだよなー」という感覚が掴めれば、この本を読んだ価値がある、というものではないでしょうか。

あと、「第5章ストレージ管理と設計」が特に良くて、ここに出てくるキーワード(特にバックアップと監視)はしっかりと押さえておきたいですね。

バックアップも、監視も、膨大な先人たちの知恵の元に出来上がっているプラクティスなので、たいていの「いいことかんがえた」は、「いいこと」ではないのです。


特定のファイルシステムの解説も無いので、これだけで実践的なストレージの管理ができるようになるわけではないですが、イラストが工夫されていて、ビジュアル的な分かりやすさが配慮されているところも良いところです。

ところで、ストレージのアイコン、いつまで3層の円柱のままなんでしょうね。

既に何かすら分からないものが、「保存」のアイコンがフロッピーディスクのままになっている以上に当たり前に使われていて謎ですね。


それなりの経験値が溜まっている人は、この本を読んで新しい知識を獲得することはあまり無いと思いますが、体系化された「説明の仕方」を学ぶには非常に良い本だし、リファレンスとして手元に置いておきたい1冊です。