「りんごは1個200円、みかんは1個100円とする。りんごとみかんを合計5個買った。合計金額は800円だった。このときりんごとみかんはそれぞれ何個ずつ買ったでしょうか?」よくある問題だ。解き方は簡単だ。買ったりんごの数をx、買ったみかんの数をyとおき、連立方程式を立てて解けば良いだけだ。書くまでもないが x + y = 5, 200x + 100y = 800 と式を立てる。この連立方程式を解くと x=3, y=2 と求まる。

数学においてこのように何らかの数を文字でおくことはよくある。いや、よくあるというか文字としておいて抽象的に考え本質を捉えることこそが数学とも言える。この文字は実は何だって良い。AとBでもいいし、αとβでもいいし、🚽と💩でもいい。慣習的にxとyを用いているだけだ。ではなぜ🚽と💩が使われないのか。もちろん絵文字そのものが最近できたものであるからだが、本来はもっと自由でもあっていいはずだ。🚽と💩はないにしても、xとyに拘る必要なんてない。おそらく理由としては分かりやすくするためだ。xやyとおけば大体変数だし、aやbとおけば大体定数を表す。つまり見る側の人間の認知の負荷を下げるためといっていいのかもしれない。

同じようにプログラミングにも変数というものがある。そのアプリケーションのユーザーIDであればuser_id、メールアドレスであればemailのように分かりやすい変数名を付ける。これも本当は何だって良い。hogeとfugaでもいいし、xとyでもいいし、🚽と💩でもいい。いや🚽と💩はそもそも文字コード的に無理か。とにかくuser_idとemailに拘る必要はない。タイピングしやすくするために頭文字だけ取って、uとeのようにしてもいいかもしれない。しかし一般的にはそれは推奨されない。なぜなら読みづらくなるからだ。数学の話と同様にプログラムも人間が読む。人間が読むときに分かりやすくあるべきなのだ。変数名に限らず、関数名やクラス名もパッと見てどのようなものか分かるものが求められる。

なぜこんな話をしたのか。それは昨今話題に上がる「AIが書いたっぽい文章」にも通じるものがありそうだからだ。分かりやすいものでいえば、強調部分をこのように**で囲むとかだ。しかしこれは表面的なものに過ぎない。本質的な部分でいえば、上に書いたような何でも置き換えられる文字が妙に整いすぎているというところにあるような気がしている。人間なんて所詮大したものではない。だからこそプログラミングにおける文字の置き方一つで苦しんだりするのだ。AIはそこをすっ飛ばしていかにも最適な文字を置く。そう、人間の愚かさが見えないほど整いすぎているのだ。プログラミングにおいてはそれでいいのかもしれない。いやむしろそっちの方がいい。しかし文章においてはそこから滲む人間らしさに何か大きな意味があるように思える。

この文章だってびっくりするぐらい整っていない。しかしそれで良いと思っている。まるごとAIに投げて整えてもらえばそれなりのものになるかもしれない。同時にそこから僕という人間の愚かさは消える。今この時代だからこそその愚かさを書かずして何を書くのか。僕は連立方程式を解くときにxとyを使わず、🚽と💩を使う人でありたい。そういうことだ。