sosukesuzuki.dev

February, 11 2023

Prettierはデフォルトでインデントのためにタブを使うべきなのだろうか

Prettier がデフォルトでインデントのためにタブを使うべきかどうか、現時点での私の考えです。

useTabs のデフォルト値を true にするという提案

Prettier には useTabs というオプションがあり、インデントのためにタブを使うかどうかを boolean で指定できます。デフォルトでは false が設定されています。

2 年ほど前に Prettier v2 の準備をしているときに Change useTabs to true by default という、useTabs のデフォルト値を true に設定することを提案する issue が作成されました。

この issue での議論は活発に行われ、建設的なコメントや逆に全く建設的でない人格を批判するようなコメントなど、実に多くの意見が寄せられました。

この issue が作成れたのは v2 をリリースする直前だったので、私は「まだ十分コンセンサスが得られていないように思うから、少なくとも v2 でこのような変更を行うのは難しいと思う」という理由でこの変更を v2 には実装しませんでした。

最近は v3 の準備をしており、「v2 のときは無理だったけど、あれからもう二年経ってるし、賛成している人も多いから再度考えてほしい」というようなコメントが投稿され、再びこの issue は活発になりました。

理想

私達はこの問題に対してどのように対処するべきなのでしょうか。

インデントにタブを使うアクセシビリティ上の利点 で説明したようにタブにはスペースと比べてアクセシビリティ上の利点が存在します。ですので理想的には、Prettier はデフォルトでタブを使うべきだと思います。Prettier のようなツールはできるだけ多くの人に対してアクセシブルであるべきだ、というのが個人的な考えです。

useTabsは設定できるんだから、タブを使いたい人が勝手に true にできるんだからそれでいいじゃん」という意見もありますが、私はこれには反対です。デフォルトでアクセシブルになっているのが理想だと考えています。

現実

「Change useTabs to true by default」には 344 もの :+1: がついており、コメントを見ても多くの人が賛成しているように見えます。

しかし私は、多くの人が賛成しているように見えているだけだと考えています。

わざわざ GitHub のこの issue までたどり着き何かしらの反応を残す人のほとんどは、この問題について強い興味がある人たちだと思います。

Prettier のユーザーのほとんどはこの issue に興味がないか、あっても気づいていません。スペースを使うことにこだわりがある人もいますし、こだわりはないものの変更を嫌う人もいます。

もしも私達がこの提案を受け入れた場合、そのような人たちから「もとに戻せ」とか「こんな議論があったなんて知らなかった」といった厳しい言葉が飛んでくることでしょう。

私はそれが本当に嫌です。疲れるしやる気を大きく削がれることになるでしょう。

私にとって最も問題なのは、消耗してオープンソースソフトウェアに向き合えなくなることです。

なので個人的には、この提案を受け入れたくありません。

ありえない話ですが、逆に言えば Prettier を使っているすべてのユーザーがこの変更に賛成するならば、私も喜んで賛成します。

おわりに

多くのユーザーを抱えているオープンソースソフトウェアにおいて大きな変更を行うという意思決定は本当に重いものだということを、身を持って感じています。

よりアクセシブルであるべきだと本心で思っているのに、そのための変更によって多くのユーザーに影響をあたえるのが怖いのです。

この議論はまだ決着していないので最終的にどうなるかはまだわかりません。悩んでいます。