ヒント機能をどうするか [lattic]

Posted on June 1, 2021

開発中のアプリについて。一応製品名も決まっていて、 lattic という。個人的にまだあまりしっくりきていないけど、コードネームなり製品名がないと何の記事なのか見分けづらいから公表しました。タイトルにタグを入れておいたので興味のない人はタグを見てスルーしてください。

今回はヒント機能について取り上げる。ここでいうヒント機能というのは、何らかの視覚的手段を用いることで、文書構造の把握を補助する機能のことを指す。

ベタな構造化エディタでは構造そのものを操作対象とするため、ヒント機能のようなものはそもそも不要である。ただ、そうすると別の問題が出てくる。キーボードで操作するのが異常に難しくなるのだ。マウスなどのポインティングデバイスならあるいは不可能でないと思う。でも、マウスでポチポチなんかやってられん。そういうわけで lattic ではキーボードでの操作性(≒プレーンテキストエディタの使いやすさ)と構造編集機能を両立する方針を採っている。

具体的にはたとえば、文書中のどの位置でも Backspace が機能するといったことが保証されている。文書に構造が入っているにも関わらず、である。普通のテキストエディタを使っている人からすれば「何を当たり前のこと言ってんだ」となると思うが、構造化エディタでこの性質が保証されているのは自分が知る限り一つもない。よくあるのはこんなやつだ―表の中身を(ある程度)保持したまま、表だけを解除しようと思って表の先頭で Backspace を押してみたが何も起きなかった、あるいは表がまるごと削除されてしまった―違う、そうじゃない。

この辺りの詳細は別記事に譲るが、とにかく、上の性質を保証するためには構造を直接の操作対象とせず、ユーザーにとって暗黙的なものにしなければならない。そのため、構造の把握を助けるヒント機能が重要になる。自分はもはやヒント機能なしである程度操作できるが、初めて使う人はヒント機能なしではおそらく何が起きているのか理解できないと思う。

このヒント機能は開発初期からずっと悩みの種で、(これからもそうだと思うが)正直どうすればいいかわからない。ヒントが強いと窮屈な印象を与えるし、かといってヒントが弱いと構造がよくわからない。今のところ以下のようなヒントに落ち着きつつある。(文書の先頭から↓を押し続けて末尾まで移動する図)

罫線が形成されるグリッドを表わし、罫線の色がインデントレベルを表わしている。この方式は愚直でわかりやすくはあるけれども、カーソルの周辺に罫線が表示されるため少し窮屈な印象を与える。

別の方式としてこんなものも実験してみている。

こちらはエディタの「へり」を利用して、カーソル周辺の構造を可視化している。罫線を表示する方式ほどわかりやすくはないけれど、ノイズが少ないため編集に集中できるのではないかと思う。周辺視野で構造の把握が可能ならば、この目論見も悪くなさそうだ。自分で試した感じではなんかうまくいきそうだった。

もちろん人それぞれ好みがあるので、最終的にはヒントの方式をたくさん用意してオプションで切り替えてもらうことになると思う。でもデフォルトを何にするか決めないといけない。

どちらが好みか教えてもらえれば助かります。意見・感想ももちろん歓迎です。