共感覚プログラミング

皆さんこんにちは、近藤です!

私の自己紹介ではたびたび、 PHP の組み込み関数である「 compact() はかわいい」と記しています。

今回はその理由を書いていきたいと思います。なお、記事タイトルはネタバレです。

目次

  • compact() はかわいい?
  • 私の共感覚
  • 私と小説
  • 私とプログラミング
  • 私と compact()
  • おわりに

compact() はかわいい?

3 年ほど前になるでしょうか。
初めて return compact('foo', 'bar'); を目にしたとき、衝撃を受けました。
その丸っこさ! やわらかさ!! かわいらしさ!!!

compact() を毛嫌いしていた当時の上司に、使う・使わないは別として「 compact() はかわいいじゃないですか」と主張して「かわいい……????」と返されたことを今でも覚えています。

Fusic に来てからも時々同じことを口走っているものの、今まで共感を得たことは特にありません。
そもそも何で自分はこんなに compact() をかわいいと思いこんでいるのか、我ながら疑問です。

ただ一つはっきりしているのは、私は compact() を「共感覚」によって認識している、ということです。

私の共感覚

「共感覚ってなに?」という方に非常に簡易な、そして私個人の解釈を説明すると、
「共感覚とはある事物を、複数の感覚を使って認識すること」です。

音を耳で聞きながら匂いを感じたり、数字を正しく読みながら色を感じたり。
共感覚を持つ人間は 1 学級に 1 人はいるだとか、いないだとか言われています。

正確かつ詳細な説明はインターネットの海にお尋ねください。

さて、私が自認している共感覚は「文字列や文章にフォントを感じる」ものです。

初見で compact() をかわいく感じたのは、構成する英字そのものに曲線が多かったとか、エディタに適用しているのが丸みを帯びたフォントだったとか、それだけのことではありません。

compact() の文字列とフォントを正しく認識した上で、そこに重ねて丸っこい文字が浮かぶのです。
それは今まで見たことのないフォントのようで、これまで見てきた柔らかい印象のフォントすべてを合成したような、不思議な文字です。
一度こう認識してしまうと、たいてい元々のフォントはいまいち認識できなくなります。
ものすごく意識を集中させると、浮かんできたものを引き剥がせることもありますが、妙な疲労感を伴うのでやりません。

この「フォントを感じる」という感覚。
初めて自覚したのは、ある小説を読んだときでした。

私と小説

私は読書がすきな子供でした。
心踊る冒険ファンタジーや、薄幸な主人公が精神的にボコボコにされながら幸せを掴み取る少女小説、まだ見ぬ高校生活を描いた青春小説……物語はなんでもすきでしたが、中でも特別すきなのが、ミステリー小説でした。

一口にミステリー小説といっても、ジャンルは多岐に渡ります。
しかし私はこだわりを持たない子供だったので、日常の謎もサスペンスもサイコ・スリラーちっくなものも、何でも果敢に読んでいました。

そして小学校高学年か、あるいは中学生になったばかりのある日、トラウマにぶち当たります。

登場人物たちが誰も幸せになれず、不幸のどん底のまま死んでいく。クライマックスで救いがあるかと思いきや、深い絶望に突き落とされて幕引き――その描写の巧みさと残酷さで、心に大きな傷を負い、長いこと余韻を引きずりました。
今振り返れば「物語の力ってすごい」「思春期の感受性ってすごい」と思えるのですが、当時はそんな余裕はなく……。

以降、その小説と同一作者の本を読むと、文章がぐにゃぐにゃに歪むようになりました。
それが私の自覚した、一番はじめの共感覚でした。

この「ぐにゃぐにゃ」を正確に伝えることは難しいのですが、認証に使われる CAPTCHA がずらずら並んでいる様子をイメージして頂けると一番近いかもしれません。
当然、そんな文章は読めたものではありません。
同作者の本は今でも一冊、特にすきだったものを持っていますが、未だに読み返せていません。

この「ぐにゃぐにゃ」事件から、私は自分の共感覚を意識的に自覚するようになりました。

ある作家の本を読むときは、なんだか字体が妙に丸っこく、ポップに見える。
ほかのある作家は、一冊を読み通す中で安定せず、角ばっていることもあれば、垂れていたり、細く泳ぐようなフォントになったりする。
担任の先生が連絡帳に書いた文字は、そのまま認識している気がする。
でも、同じように先生が PC で作った「学級だより」の文章は丸みが強い。

そうやって少しずつ自分の見え方を紐解いて、高校生に上がる頃にはだいたいのパターンを掴み始めていました。
私は「文字」そのものに何かを感じるのではなく、文章全体の意味合いや雰囲気からフォントを感じている。それは小説に限らず、友達とやり取りするメールやインターネットで見かける記事にも当てはまる。手書きはもともと書かれている文章以上のことが「見える」から、共感覚が働かないのではないか……。

しかし高校卒業後、思わぬ伏兵に出会います。プログラミング言語です。

私とプログラミング

初めて見たプログラミング言語は C 言語でした。
そのときは何も感じず、「あるがまま」の文字を認識していました。

しかしプログラミングそのものへの理解を深め、友人のコンパイルエラーを一緒に解消しようと画面を覗き込んだとき、急に視界が変わりました。

なんか……なんか、ごちゃごちゃしている!!

ある変数は柔らかいフォントなのに、すぐ下に定義されたメソッド名は角ばっている。 2 〜 3 行ごとに挿入されたコメント文はやたら濃く太く、ちらちらと主張してくる。
画面に映る 1 ファイルの中でたくさんのフォントが泳いでいました。

決してひどいスパゲッティコードだったとか、数多のロジックの破綻があったとか、そういうことではないのです。
なぜそんなふうに見えたのか、未だに自分でもわかっていないのですが、とにかくそれが転機でした。

以来、ソースコードに対しても共感覚をもって見るようになりました。

全く知らない既存システムの改修をするときは、たいてい全体が一体感を持った「なんだかとにかく読みづらいギチギチしたフォント」に見えます。これに関しては、私の心理状況が如実に現れている気がしてなりません。

初期開発から入っているシステムのコードや FW ・ライブラリを読み解くときは、今のところ非常に不安定です。
誰が書いたか、なんの言語か、整頓されたコードかどうか……そういったことは、見え方にはあまり関係がないようです。
レビュー中に気分が悪くなるほどぐちゃぐちゃに見えることもあれば、数ファイルごとにフォントが統一されていたり、本来のフォントで 30 以上のファイルすべてを見通せることもあります。

私と compact()

ここまで読んで、気づいた方もいらっしゃるかもしれません。

compact() という組み込み関数であれば引数が何であれ、どこでどう使われていようと、常に同じ「丸っこく・やわらかく・なんだか愛らしい」フォントに見えるというのは、実は私の中ではイレギュラーな現象なのです。

なんで?

……わからない……。

この謎を解明すべくアマゾンの奥深くに旅立つことも考えましたが、恐らく答えは一生出ないので、おとなしく日々の業務に勤しみます。

ただイレギュラーゆえに特別で、積極的に使う組み込み関数でもないのに、思い入れを持っているのは間違いありません。
compact() はかわいい。かわいいは正義。つまり compact() は最強。

そういうわけで、私は自己紹介に compact() はかわいいと書くし、あわよくば同志が現れ「え〜めっちゃわかる〜 compact() かわいいよね〜〜」と言い合える日がくることを願っています。

おわりに

「共感覚があるんだ〜」なんて誰にも言ったことがないし、言われたこともないので、「イタイやつが現れたな」と思われないかビクビクしています。

しかし同時に、実は案外身近に共感覚のある人がいるのでは? と考えていますし、その人たちに「自分はこんなふうに感じているよ」と教えてもらえたら、それはすごく楽しい……と、思うのです。たぶん、きっと。

また、非常に残念なことに、自分が書いたものにはなんの感動もないのか、共感覚が働いたことはありません。
作文でも、チャットでも、プログラミングでも。

もし共感覚のある方がいたら。
そしてもしプログラミング言語に対して感じられるタイプの方がいれば、いつか私の書いたコードがどう見えるか教えてほしいな、と思うのでした。

ところでこの記事何回 compact() って言っているんでしょうね。
今までコードとして書いたものを超えた気がします。ウケますね。