🏛主な公開物🏛️
主な自作の商売道具たちです。
手持ちのキーボードをエルゴノミックキーボードに進化させることのできる、特殊形状のキーキャップセットです。 DMM.make さんでいつでも 3D プリントできるほか、Daily Craft Keyboardさんでも在庫してくださっています(2023/02 現在)。せっかくだから自作ならではのものを作ろう、という裏テーマがあります(キーの形状がひとつひとつ異なるので、金型のコストが高い=大量生産のハードルが高い?)。
コア技術: 3DCAD
単語間の共起関係(n-gram)を使った補完エンジンです。「『Looks good to』とくれば次は『me』だろう」のように、直前の単語列から次に入力したいであろう単語を推測し、先回りして提案します。キャッシュにパトリシア木をネストした謎のデータ構造を用いて、補完候補が増えても高速に動作します。
コア技術: n-gram, パトリシア木
Git を利用した補完エンジンです。プログラムを途中まで書いて呼び出すと、同じリポジトリの中からそれらしいコード片を探してきて続きを勝手に書きます。似たコードを何度も書く場合に便利です。トライ木を下敷きにした独自アルゴリズムで補完候補を選定します。上の「company-symbol-after-symbol.el」より遅い代わりに、より大胆な補完ができます。
コア技術: Git, 共通部分列の抽出, ヒューリスティック
シンプルで予測可能な補完エンジンです。入力中の単語の続きを、同じファイル、または同じ言語の別ファイルから引いてきます。キャッシュにパトリシア木を使用し、補完候補が増えても高速に動作します。あいまいマッチにも対応しているほか、「厳格マッチに失敗したらあいまいマッチにフォールバックする」などの dwim な挙動も設定できます。
コア技術: パトリシア木, あいまい検索
縦にも横にもズレた、独特な配列を採用した分割キーボードです。エルゴノミックでありながら、一般的なキーボードで身についたタイピングの癖もそのまま活かせるデザインを目指して発明しました(自作するからには、デバイス側が人間様の癖に合わせるべきという思想があります)。すべてのキーにホームポジション+1でアクセスできるので、慣れると手を一切移動せずに全ての仕事ができます。アイデア自体はシンプルに見えますが、そこそこの数を設計してきてやっと辿り着いた配列で、分割エルゴノミックキーボードの一つのゴールだと感じています。
コア技術: 基板設計 (電子回路, 基板CAD), 3DCAD, 組み込み
LED を最大限活かすデザインと、シンプルながら均整の取れたレイアウトが特徴の、超コンパクトな一体型自作キーボードです。エルゴノミクスというよりは、ビジュアルや打鍵感・音などを重視した設計になっています。
コア技術: 基板設計 (電子回路, 基板CAD), 3DCAD, 組み込み
可愛さを重視した、激薄・コンパクトな直行配列自作キーボードキットです。 Choc V2 と呼ばれる特殊なスイッチを採用し、通常の MX (互換)スイッチでは実現できない激薄設計になっています。
コア技術: 基板設計, 筐体設計, 組み込み
Emacs のスクロールをなめらかにするプラグインです。スクロールする過程をアニメーションで表示することで、何が起こったかをわかりやすくし、カーソルを見失いづらくします。おまけで、 UI 部品を整理したり、ミニマップを表示したり、 Emacs の UI を現代的にする諸機能もついています。
インデントに合わせて縦線を表示する Emacs プラグインです。簡易的な構文解析を行い、インデント幅が一定ではない言語(Lisp 系など)にも対応します。 Emacs プラグインの非公式リポジトリ MELPA にて 80万 DL を達成 (2023/02 現在)。
コア技術: 簡易的な構文解析
LaTeX の文章を WYSIWYG で書けるようにしようとした、狂気の Emacs プラグインです。シンタックスハイライトと文字合成の仕組みを悪用しています。
コア技術: 簡易的な構文解析, 文字合成
Google Docs のようなリアルタイム共同編集を Emacs 上で行えるようにするプラグインです。独自のプロトコルで Emacs 同士を直接接続し、カーソルの位置や編集内容を同期します。ゼミで使うために作りました。暗号化していないので、機密文書をインターネット越しに共有するのは非推奨です。
コア技術: ソケット通信
grep 結果をそのまま編集し、各ファイルに書き戻せる Emacs プラグインです。ファイルを跨いだ一括置換など、リファクタ作業に便利です。検索部分も Emacs Lisp で実装されているため、 grep コマンドの存在しない環境 (当時の Windows など) でも動作し、 Emacs 特有の正規表現にも対応しています。
キー入力をジャックして、あらゆるアプリケーションで Emacs コマンドを使えるようにしてしまう Windows 向けツールです。マクロ機能なども含め大部分のコマンドが移植されており普通にかなり便利ですが、 Mac に乗り換えてしまったため現在は使っていません。本家 Emacs になぞらえた設計(hook ベース)になっており、 Emacs ユーザーであれば比較的簡単にコマンドやプラグインを追加できます。Vim のノーマルモードを再現するプラグインなどもあるので Vim 派の方もぜひ。
Source Code Pro に NasuM と Nerd Font を合成したコーディング向けフォントです。
コア技術: フォント編集
コンパイルの結果、各種ドキュメント、等々のポップアップウィンドウをいい感じに扱えるようにする Emacs プラグインです。 popwin.el の動作がしばしば不安定に感じられたので、その代用として、 shackle.el を拡張する形で実装しました。
「機械彫刻用標準文字」の可愛さに惚れて作った、コーディング向け合成フォントです。等幅化した上で、足りない漢字を「RoundedM+」から合成します。スタイルセットの切り替えや、「ゼロの中央に点を打つ」などのコーディングフォントにありがちな加工に加えて、個人的な趣味で「略字少なめ丸ゴシックR」から略字を拝借してくることもできます。※権利周りの懸念から、公開しているのは生成スクリプトのみです。
コア技術: フォント編集
「iAWriter Mono」をベースにしたコーディング向け合成フォントです。足りない文字は「NasuM」から合成します。視認性が高いわりに見た目は落ち着いていて実用的です。今はこれをメインに使っています。※権利周りの懸念から、公開しているのは生成スクリプトのみです。
コア技術: フォント編集
「C〜Mキーを親指で押す」という尖ったアイデアに基づいた、きわめてコンパクトな分割キーボードキットです。ケース内部の空洞をなるべく減らすことで打鍵音を改善するなど、当時としては斬新なアイデアを盛り込んでいました(後に界隈では一般的なテクニックとなりました)。表裏で配列が異なる、珍しいタイプのリバーシブル基板になっており、製造コストも抑えています。
コア技術: 基板設計, 筐体設計, 組み込み
Git のブランチや stash を、「コンテキスト」と呼ぶ仮想的なディレクトリで管理できる Git 拡張です。 Git の内部オブジェクトをゴリゴリ操作するハック的な実装になっていて、技術的に面白いと思います。
コア技術: Git
Web ページ上で実行すると、要素のマージンやパディングが可視化されたり、要素と要素の間の実距離が計測できたりするブックマークレットです。 CSS の微妙なズレなどをデバッグするのに便利です。
Emacs 上で動作するグラフィカルなシステムモニタです。Emacs 上でちょっとしたグラフィックを動かす実験として作りました。画像データをその場でメモリ上に生成しながら表示しています。 Emacs プラグインの非公式リポジトリ MELPA にて 30万 DL を達成 (2023/02 現在)。
日本語文書でも単語単位の移動コマンド (M-f, M-b) を使えるようにする Emacs プラグインです。裏で簡易的な形態素解析を行います。
コア技術: 簡易的な形態素解析