my- は打ちにくい
個人用の Emacs Lisp に prefix として my/ や my- を付けるのはよくある。しかし、僕はこれをやめたくなってきた。いちばん単純な理由は、=M-x= で打ちにくいからだ。=m= と y は同じ右手人差し指で、しかも下段から上段へ飛ぶ。毎日何度も打つには気持ちよくない。
代わりを考える
では何に置き換えるか。過去には our- を使っていた時期もあったし、=we-= も考えた。たしかに we- は my- よりかなり打ちやすい。だが、こういう一人称ベースの prefix は、所有者を示すことはできても、その関数が何をするのかは示さない。あとから見返すと、結局「なぜこの prefix なんだっけ」となる。
sym- のように自分のハンドル由来の prefix にする案もある。これは衝突回避には強いが、少し大げさだし、やはり関数の役割そのものは説明しない。逆に a- のような短い prefix は打ちやすいが、今度は意味が薄すぎる。候補をいくつか眺めてみると、万能の短い prefix を一つ決めて全部に付ける、という発想自体に無理があるように思えてくる。
自然な名前にも弱点はある
では prefix をやめて、用途ベースの自然な名前にすればよいかというと、今度は ELPA や MELPA にある既存パッケージと衝突しやすくなる。個人設定であっても、名前空間の問題は消えない。
名前と印を分ける
今のところ、いちばんしっくり来ているのは、人間向けの名前と機械向けの印を分けるやり方だ。関数名そのものは自然に付ける。そのうえで、「これは自作物だ」という情報はシンボルプロパティに持たせる。たとえば note-capture-today のような普通の名前を付けておいて、別途 symdon-object のようなプロパティを付ける。そうすれば prefix に「自作物であること」まで背負わせなくて済む。
既存のものは少しずつ減らす
これまで our- や my/ や my- で定義してしまったものをすぐ全部直すつもりはない。そういう名前は互換を残しながら少しずつ減らしていけばよいと思う。大事なのは、新しく書くものまで惰性で my- にしないことだ。
今の結論
結局、欲しかったのは my- の代わりになる新しい prefix ではなく、違和感の少ない命名規則だったのだと思う。名前はできるだけ普通に付ける。そして、自作物であることの区別は名前ではなくメタデータに任せる。しばらくはその方針でやってみたい。
一旦、今日の堂々巡りはここまでにする。