ごきげんよう。本記事は、Goodpatch のエンジニアがお送りする Goodpatch Advent Calendar 2015 の2日目の記事として、特に役に立たない、ささやかなコラムをお届けする。

さて

読者諸兄姉は、ソフトウェアの名前や、コマンドの名前、モジュールの名前をどうやって決めているだろうか?適切な名前やネーミングルールを設けることは、あらゆる点でメリットがあるだろう。ブランディングに役立てることも出来るし、適切なモジュール名を名付けることで、ソースコードの運用・保守への貢献も期待できる。名前付けは、整理整頓であり、表現でもあるのだ。
もちろん、合理的な名前ばかりで無くても良い。ささやかな楽しみだったり、悪ふざけだったり、自己満足かも知れないが、それでも良いと思う。何しろプログラムを書くのは人間であり、完全に合理的な人間など存在しないのだから。

この記事では、名前付けによって独特の世界観を表現しているソフトウェアをいくつか紹介したい。

ImageMagick

ImageMagickは、言わずと知れた画像処理の為のライブラリである。
ImageMagickのWebサイトを徘徊すると、髭もじゃの魔法使いのイラストが目に着くだろう。
ソースコードやライブラリ名に、wandmagick wand といったキーワードが散見され、魔法使いのを内包していることが伺える。わざわざにせずとも、例えば変換器みたいな無機質な名前にすることも出来たはずなのに、あえてこのように名付けるところにセンスを感じる。

充分に発達したプログラミング技術は、魔法と見分けが付かない

FuelPHP

FuelPHPは、PHPのMVCフレームワークである。fuel は和訳すると燃料だ。コマンドラインツールはoilと名付けられており、油の匂いを漂わせている。

Sails.js

Sails.js は、Node.js上で動作するサーバーサイドMVCフレームワークである。Sails.jsは、Rails like であり、強力なスキャフォールディングツールが付属している。
sailsとは、帆のことである。Sails.jsにおいては、サーバーをスタートさせるコマンドは sails lift である。up とか start とかでなく lift であるところに、センスを感じる。

Primus.js

Primus.js は、Node.js上で動作するリアルタイム通信フレームワークである。リアルタイム通信といえば、Socket.io が思い浮かぶが、Primus.js(読みはプライマスだろう) は、Socket.io をふくめた何種類かの実装をラップして抽象化したレイヤーである。
Primus.js は、 全体を管理する神*Primus*と、通信を行うドライバたる *Transformer*と、Transformer に魂を吹き込む(!?)Spark で構成されている。これらの用語の出典は「トランスフォーマー」シリーズだろう。ソースコードの世界には本来、神も魂もトランスフォーマーも存在しないはずだが、この大胆なネーミングには感銘を受ける。

Chef

Chef は、言わずと知れた、サーバーの構成を管理するためのツールであり、「Infrastructure as Code」というキーワードで注目を浴びた。
Chefにおいては、サーバーの構成を記述したファイル一式を Cookbook と呼んでおり、Chef Supermarket というサイトで Cookbook を入手することができる。
また、Chefには、knife というコマンドラインツールもある。
マーケットのエコシステムも含めて独特の世界観を表現しているのである。
ただ、公式サイトも含めて一切、料理人らしさが感じられないのは、少し残念である。

まとめ

もちろん今回紹介できたのは氷山の一角である。読者諸兄姉も、今までの人生で出会ったソフトウェアやソースコードを思い返してほしい。世界観に引き込まれるような面白いネーミングをしているものがきっとあるはずだ。
そういったソフトウェアやソースコードにインスピレーションを受けて、好きなモノ(映画でも漫画でもスポーツでも)の世界観を、自分のソフトウェアやソースコードで表現してみるのも一興ではないだろうか。できれば親しみやすいイラストやAAも添えて。もちろん、チームメンバーに迷惑をかけない範囲内で!


前日の記事は*よしこさん*の Prottのテストを支える3つの施策(power-assert導入 & Protected branches & CI高速化) である。

明日はsagarayaさんから iOS関連の話題である。
Swiftのprotocol extensionでmixin的なものを実現する

Goodpatch Advent Calendar 2015

謝辞

(記事の内容とイメージイラストの*サボテン*は無関係であり、筆者の趣味によるものであることを表明する)