2022-06-26

自作キーボード沼へ、その1: 薄さと絶妙なキー数が使いやすい Sparrow62 (+1) v2

わたしのSparrow62 (+1) v2、
矢印キーは試行錯誤中の状態

先月の書き込みでは、Kinesis Freestyle2というメーカー製の分離型エルゴノミクスキーボードを購入した顛末をご紹介しました。
Freestyle2を使って次のことを学びました。

  • 高さがあってタイプ音がうるさい印象のメカニカルキーボードスイッチを避けることができる
  • やはり分離型キーボードはより体に自然にフィットして、肩や腕に優しい、トラックパッドは真ん中置きが絶対的に良い
  • 厚めのキーボードは後方をチルトしないと奥の方のキーに指が届かない。手首を机に付けるタイピングスタイルでは指に負担がかかって疲れやすくなる
  • WindowsとmacOSのキーカスタマイズツールを使って、ある程度の入力キーの置き換えを行なってみたものの、どうしても限界があり、結局はフルカスタマイズできないと飽き足らなくなる

そして、より良いキーボードを求めてさらに色々と物色し始めました。
自作キーボードであれば、キーのカスタマイズはほぼ無限に自由にできます。

  • 多くのものは通常サイズの背の高いキースイッチ(Cherry MX互換)だけれど,少数だが背の低いLow Profileのキースイッチ(Kailh  choc)を採用あるいは両対応のものあり
  • 分離型のキーボードが自作キーボードの中では多数を占めていて、いい感じ
  • キーボードのキーの数も様々で、数字キーを含んだ6x4と、アルファベットのみの6x3に二分されています。6x3はホームポジションを一切崩さないメリット(ホームポジションの範囲にしかキーがないので崩れようがない)はありますが、Modifierをそれも複数を駆使しないと必要な文字が入力できません。わたしはコンパクトさよりも標準キーボードのようにすぐに全ての文字を入力できる方が好きだと思いました
  • キーの配列は、標準キーボードのように上下に隣り合ったのキーが横にズレているもの(ロースタッガード)と、指を斜めに動かさず前後に曲げ伸ばししてキーを押せるようにしたもの(格子状配列のオーソリニアと、中指・小指等の長さに合わせて縦に多少のずれがあるカラムスタッガード)があります

数ある自作キーボードキットの中で、作者さんが薄さにこだわって、かつ、キー数も過不足ない数を載っけた作品がありました。
それが、74thさん作のSparrow62 (+1) v2です(キーボードのビルドガイドBoothでの販売ページ遊舎工房での販売ページ)。
自作キーボードキットではありますが、初めてでも安心な組み立て済みのものも提供されている点もポイントが高いと感じました。

わたしの自作キーボード第一号(とはいっても作成はしていませんが)としてSparrow62 (+1) v2を約1ヶ月使っての感想、気付きです。

  • 足りないキーがないことは絶対的な正義だと思いました。単純な6x4だと、Escや右端の[や]やBackspaceやDelが収まらないのですが、Sparrow62 (+1) v2は左側にEsc用の追加1個、左右の中央にそれぞれ3個の追加キーが置かれていて、十分な余裕を持たせています
  • とは言っても、カーソルキーとF1〜F12のキーはありません。F1〜F12キーはMod+数字と-=で良いとして、カーソルキーをどこに置くかは迷いました。逆T配列を右下の端に置いたりと色々試してみましたが、右手のホームポジションであるJKLとIに置くのが今は一番しっくりきています(贅沢に右手側SDF Eにも同時に置いたりも便利です)。数字キーも左右に分断されていてとても押しにくいと感じるので、これもホームポジションのUIO JKL M,.を中心に配置する方式で検討中です
  • 親指キーの活用として、右手親指にSpaceキーとEnterキー、左手親指にBakspaceキーを置いています。わたしはSpaceは圧倒的に右手のみで入力していたのと、前方に進むSpaceとEnterを同じ右側に、前に戻るBackspaceを反対側と、右左に分けて置きました。Backspaceは通常のキーと同じくらい入力頻度が高いのも親指ブロックに置いた大きな理由です
  • ファームウェアがKMK Firmwareなので、キーマップはPythonインタープリタのソースコードになっています。これをテキストエディタで書き換えるだけでカスタマイズすることができて、いつでもどこからでもすぐに変更できる気楽さがうれしいです(これに対して多くの自作キーボードが採用しているQMK Firmwareはなにがしかの専用のツールがないとキーマップを変更できません)
  • わたしの場合、Cのキーをどうしても人差し指で押してしまう癖がついていることに気付きました。中指への矯正をやってみようとはしましたが、できそうにありません。ここは入力の気持ち良さを優先して、左手最下段は一文字右にずらして配置しています。押し出されてしまうBのキーは中央の追加キーのおかげで居場所が確保できました。左端、Aの下はShiftキーを置けたのでこの配置は一石二鳥です
  • こだわりのロープロファイルなので、ベタ置きでも、ダイソーのゴム製ノートPCスタンドを少し削って傾斜させても、どちらでも快適です

まだまだ、わたしのキーボード探求は続きそうです。
なお、本記事はSparrow62 (+1) v2を使って作成しました。

2022-06-16

Apple Silicon Mac上でIntel x86 Windowsのアプリを最も高速に実行する方法は、現時点はWine

Hypervisor Framework(これに対してVirtualization FrameworkはHypervizor Frameworkにひと皮被せてLinux OSを実行しやすくしたもの)を使ってArm版WindowsをApple Silicon macOS上で実行できることは既に知られていることです。
更にその中で、Microsoftのエミュレータ機能を使って、Intel x86用のWindowsアプリを実行することもできます。

Appleは独自技術を使ってIntel x86アプリを実行するRosetta 2を提供していますが、Arm Windowsの中ではRosetta 2を使用することができなくて、Intel x86 Windowsアプリの実行速度はそれほど高速ではありません(おおよそ半分の速度くらいでしょうか)。

従来から有名なWineを使用すれば、Windowsアプリの実行をWindows OSをインストールすることなしに行うことができます。
このWineが昨年からApple Silicon Macに対応しています。
WineはmacOS上で直接実行されるもの(仮想化は使用しない)なので、Rosetta 2が活用できます。
少し試してみたところRosetta 2らしい高速性が発揮できていることが確認できました(わたしが軽いベンチマークでよく使う7zipのbオプションで、Apple Siliconネイティブのバイナリに比べてIntel x86 Windowsバイナリは2割程度の速度減に収まりました)。
(QEMUやUTMでIntel Windowsを丸ごと実行した場合は3~4倍遅いのに比べると雲泥の差です。)

ただしWineは、Windowsアプリの実行のためのOS環境を互換ランタイムライブラリで代替する方式のため、たとえば.NETなど複雑なランタイムを使用したアプリは互換性が取れなくて実行できません。
わたしが一番使いたかったWindowsアプリであるPaint.NETも実行できませんでした。

しかしながら、Wineで実行できるWindowsアプリでさえあれば、現時点でApple Silicon Mac上で最も高速に実行する方法であることは間違いないと言えます。
ゲームアプリなどでWineが対応しているものもあるようです。

ちなみに、Intel WindowsアプリではなくてIntel Linuxアプリの場合は、前の書き込みの方法の、macOS 13 VenturaのVirtualization Frameworkの新機能を使って、Arm Linux VMの中でRosetta 2を使う方法が最速です。

Apple Silicon macOSのRosetta 2が進化して、仮想Arm Linux内でx86バイナリの実行をサポート

今日はApple Silicon Macの仮想化とIntelエミュレーションに関して2つの話題を書いてみたいと思います。

先日のWWDC22でmacOS 13 Venturaが発表されました。
盛りだくさんの新し機能の中で私が一番だと感じたのは、やはり、仮想環境の中でIntel x86バイナリの実行が出来るようになることです。
ただし、手放しに喜べる機能ではなくて次の使い方に限定されたものです(Apple Developerサイトの解説)。

  • Virtualization Frameworkを使ってArm版のLinuxを起動する
  • macOSが提供するツールを設定する
  • Arm Linuxの上でRosetta 2を使ってx86用のバイナリを実行できるようになる

x86のLinuxを直接実行できるとか、ましてやx86 Windowsを実行できるなどは、まだです。
Linuxではなくて、Arm Windowsの中でx86のWindowsアプリを実行する場合には、引き続きMicrosoftのツールを使うことになります。

Rosetta 2のx86エミュレーションはApple Siliconの非公開機能を使用しているのでとても高速に動作します。
また、現状のmacOSの仮想化機能では、仮想OSの中で仮想化機能を使用すること(Nested Virtualization)はまだできません。
今後も徐々にRosetta 2やVirtulization Frameworkの適用範囲が広がっていってほしいと願います。

2022-06-02

iPad Pro専用のiPadProOSがmacOSと共通化すればよいはず

Apple Siliconへの移行の仕上げの年のWWDC22開催までいよいよ1週間を切りました(キーノートのページ、WWDC22の全体目次ページ)。

前回の書き込みで指摘したように、Apple Silicon M1になったiPad Proは、処理性能面では完全にMacBook Airと同じものと言えます。

iPadに対してiPad Proのプレミアを付けて、iPadOSから派生してiPadProOSだけをmacOSと統合すればよいのです。
あるいは、むしろ逆にmacOSにiPadOSのタブレット由来機能を統合して、MacBook AirとiPad Proを共通化すればよいのです。

MacBook Airのディスプレイ部分とボトムパーツが分離できるようにして、あるいはiPadにフロ-ティングMagic Keyboardを付けた状態がMacBook Airみなしの状態になって、分離した状態では純粋はiPad Proタブレットモードとしての利用状態になり、一体化した時または外部ディスプレイとキーボードを接続した時にはmacOSモードでマルチウィンドウの動作になる、という仕組みです。

このiPad ProとMacBook Airのハイブリッドマシンは、あえて安価にしなくてもよいので、是非とも実現して欲しいものです。
iPad ProでもMacでもない、Apple Siliconによって生み出された新たなカテゴリの製品としてでも良いかもしれません。

さらに、iPad miniサイズやiPhone Pro Maxサイズで、ポケットに入るMacというものもとてもあこがれます。
これ、最高にわくわくしてしまいますね。