🐼

ソースコードのgrep可能性という視点

2024/12/04に公開

tl;dr

  • 個人的にスコープの小さなマクロやエイリアス、ショートハンドを避ける傾向にある
  • 「色んな方法でコードを読める」ということを大事にしているのかも

背景

某所でNeovimのAPIについて語らっていたのですが、ネーミングが冗長だよね、という話になりました。

vim.api.nvim_buf_set_extmark(...)
vim.api.nvim_buf_create_user_command(...)
...

Luaからアクセスする際は、共通してvim.api.nvim_から始まる関数にアクセスします。
API以外の関数も基本的にvimという名前空間に閉じ込められているので、

vim.fn.bufnr(...)
vim.keymap.set(...)

のように、何かと名前が(少し)長くなります。
そして、様々なプラグインや設定ファイルを覗くと、よく次のようなエイリアスじみた変数を置いていることがあります。

local api = vim.api
local keys = vim.keymap

個人的な忌避感

世間ではよく見るモノなので、あくまで個人的な感覚にとどまるものであろうとは思いますが、
私はこういう「短く書くためにエイリアス的なものを用意する」ことを避ける傾向にあります。

以前より自覚していたのですが、改めて理由を考えてみると、どうも

割と「grepしたときにノイズが混ざる確率をデメリットと感じている」のがデカい気がしている。
この例に限らず、いうて数文字省略するだけのshort handsは例え狭いスコープでも避ける傾向にある。

というところがあるようです。

現代的な開発とgrep

このこだわりには「今時grepかよ」というツッコミはごく当然に生じるものだと思います。
ですが、その当然の感覚も、様々な技術に支えられているが故のものでしょう。

  • VSCodeやNeovim(+LSP)などの現代的なテキストエディタによる支援
  • 各種のリファクタリングツール
  • 各種の継続的な自動テスト、診断

それらを充実させて、grepなど要らない!という状況を作るのも大事なのですが、個人的には
それらの支援を受けられない状況は容易に発生しうるという強迫観念にも似たものが拭えていません。

現実的にデメリットがあるか、というのを冷静に測るとまるでどうでもいいんだけど、本能がそうさせるんだ

なんだかんだ「いろんな方法で読める」ことは結構重要なのではないか、という視点がありますね、ぼくは

終わりに

色々な人たちが「いかに楽にプログラムを書くか」に心血を注ぐ今、grepの様な古い方法は顧みられないことも多いです。
しかし「楽な環境」に強く依存することへ、ある種の恐怖を抱く例もあるのだ、という1つの声をここに記してみました。

Discussion