そうだったのか！ソフトウェア開発に息づくギリシャ神話

# はじめに

紀元前約15世紀から始まったとされるギリシャ神話は普段の生活に深く根ざしていて、日常の様々な場面でギリシャ神話が由来となっているものを見つけることができます。

例えば**サイレン**の語源となっている**セイレーン**は、美しい歌声で船乗りを誘惑し、心を奪ってしまうという伝説の海の精であり、その姿は[スターバックスコーヒーのロゴ](https://www.starbucks.co.jp/press_release/pr2010-446.php)にもなっています。

私たちが行っているソフトウェア開発でも、調べてみると「あの名前はギリシャ神話が由来だったのか！」という発見がたくさんありました。その中で有名なものをいくつかご紹介します。

# 名前

## トロイの木馬 (Trojan horse)

**トロイの木馬**はソフトウェアに関わりがあるギリシャ神話として、もっとも有名ではないでしょうか。

神**ゼウス**は人間が増えすぎた事を憂い、その数を調整しようと画策します。これが後の**トロイア戦争**へとつながりました。

戦争も終盤、舞台となったトロイの城の前に大きな木馬があり、トロイ軍はこれを敵のギリシャ軍が降参して献上したものと思い込みます。この木馬を場内へ入れてから、まちを挙げて勝利の大宴会を開きました。ところが、この木馬の中には多くのギリシャ兵士が潜んでいたのです。トロイの兵士たちが寝静まってた頃、潜んでいたギリシャ兵士が一気になだれ込み、見事襲撃に成功します。そしてこれがトロイア戦争終戦の決め手となりました。

これになぞらえて、「有用な（少なくとも無害な）プログラムあるいはデータファイルのように偽装されていながら、その内にマルウェアとして機能する部分を隠し持っていて、何らかのトリガによりそれが活動するファイル等」を**トロイの木馬**といいます。

## Zeus

[Zeus](https://github.com/burke/zeus) は Rails のプリローダー gem です。Rails は起動時に行われる処理のため起動が遅いのですが、プリローダーを使用することでその起動時間を短縮する事ができます。

しかし、Zeus は Rails 5 には正式に対応しておらず、Rails 5 以降は [Spring](https://github.com/rails/spring) が公式なプリローダーなので利用されるケースはかなり少ないはずです。

Zeus と Spring の比較については下記の記事が参考になります[^zvss]。

[^zvss]: 2013年とかなり古いので注意

- [Spork/Zeus/Spring によるテスト実行時間の短縮 \- RSpec/Capybara入門 \- Ruby on Rails with OIAX](https://www.oiax.jp/rails/rspec_capybara_primer/spork_zeus_spring.html)

さて、**ゼウス**はギリシャ神話の要となる神であり、幾多の神を生み出しています。

全知全能の神ですが、女性関係にはとてもフリーダム。姉**ヘラ**にはカッコウに変身してアタック、当時の妻**テミス**と別れて結婚します。

また、白い牡牛に変身してテュロスの王女**エウロペ**[^Europe]が気を許したところで島に連れ去ります。
[^Europe]: ヨーロッパの語源となったとも言われる。

さらには、父親を殺害されると予言され塔に幽閉されていた**ダエナ**には黄金の雨に変身してジョインしたという話があります。このシーンを描いた絵画について次のページが参考になります。

- [ダナエの絵画13点。金色の雨となったゼウスとの間にペルセウスをもうけた王の娘 : メメント・モリ　\-西洋美術の謎と闇\-](http://mementmori-art.com/archives/36067735.html)

ちなみに三番目の妻ヘラはこれらゼウスのプレイボーイな性格に激しく嫉妬し、相手とその子どもに仕打ちを行います[^hela_child]。ヘラは**結婚の神**だったというので、なんというかまぁ物事上手くいかないという事ですね。このような神と言えども人間味あふれるストーリーがギリシャ神話の魅力でもあります。
[^hela_child]: 子どもに罪はないのだが。

## Eclipse

[Eclipse](https://www.eclipse.org/) は Java で記述されたオープンソースの IDE (統合開発環境) です。プラグイン拡張により Java のみならず、複数の言語に対応した開発や便利な機能を利用する事ができます。

IDE というと、ここ数年は [IntelliJ IDEA](https://www.jetbrains.com/) に押されているイメージがありますが、Eclipse もまだまだ現役で開発が続けられています。バージョン 3.2 から 4.8 までコードネームがあり、4.5 までギリシャ神話のキャラクターに由来する名前になっています[^eclipse35]。

[^eclipse35]: 3.5 はギリシャ神話のゼウスの妻ヘラによって雌牛に变身させられたイオになる予定だったが、入出力の I/O と似ているため、これまでのガリレオ惑星にちなんで惑星の発見者 Galileo と名付けられた。


| バージョン | コードネーム | ギリシャ神話のキャラクター |
| ------- | --------- | -------------- |
| 3.2 | Callisto | アルカディア王リュカーオーンの娘・カリストー |
| 3.3 | Europa | テュロスの王女・エウロペ |
| 3.4 | Ganymede | トロイアの王子・ガニュメデス |
| 3.6 | Helios | 太陽神ヘリオス |
| 3.7 | Juno | ゼウスの姉で正妻ジュノ |
| 4.4 | Luna | 月の神アルテミス |
| 4.5 | Mars | ゼウスとヘラの子供で戦いの神アレス |

ちなみに私がエンジニアとしてキャリアをスタートした時は、バックエンドを Spring Framework、フロントエンドを Flex Builder (途中で Flash Builder に改名）で実装していたのですが、いずれも Eclipse 上で開発を行っていました。しばらくメモリが4 **ギガ**バイトで、1日に何度かハングアップするたびにマシンを再起動をしていた記憶があります。

## ギガ

**ギガ**は量の接頭辞とされており、後置された単位の 10^9 倍を表します。

例えば1ギガバイトは1バイトの 10^9 倍になります。ただし、コンピュータの世界では 2^30 倍として表される事もあり、2^30 を厳密に表現するために**ギビ**という単位があります。例えば [AWS EC2 のインスタンスタイプ一覧](https://aws.amazon.com/jp/ec2/instance-types/) ではメモリサイズの表現として **GiB（ギビバイト）** が使われています。

**ギガ**の由来はギリシャ神話の巨人**ギガンティス**からとられています。

## Amazon Athena

[Amazon Athena](https://aws.amazon.com/jp/athena/) は AWS の分析関連サービスで、S3 に保存・蓄積したログに対して SQL クエリを投げて分析を行えるサービスです。

大容量データ分析サービスとしては Google の [BigQuery](https://cloud.google.com/bigquery/) を利用するケースが多いと思いますが、Google の外からはデータを一度 BigQuery に転送させる必要があります。Athena はデータソースとして S3 に蓄積・保存されたログを分析するため、分析対象の一時データが AWS にあり BigQuery へ転送・分析するほどでもない、というケースで利用しやすいです。

ギリシャ神話では、神ゼウスが最初の妻**メティス**を飲み込んだ後、激しい頭痛がするので斧で頭を割ってみたところ、武装した女神**アテナ**が誕生したという話があります。

ちなみに「妻を飲み込む？斧で頭を割る？武装して生まれる？そんなバカな！」というツッコミはギリシャ神話では野暮である事をここでお伝えしておきます。

アテナは理知的で気高い戦いの神として存在するため、ビジネス（またはデータ分析）を戦いと見立てた Amazon の思いが名前に込められているのではないでしょうか。

## ケルベロス認証 (Kerberos)

**ケルベロス認証**はシングルサインオンを提供するネットワーク認証方式で、マサチューセッツ工科大学 (MIT) の Athena プロジェクトによって開発されました。

ギリシャ神話でのケルベロスは冥界の番犬として登場し、現在も様々なゲームで登場しているので、知名度はとても高いと思います。

## Apache Cassandra

[Apache Cassandra](http://cassandra.apache.org/) はオープンソースの分散データベース管理システムです。

ギリシャ神話でのカサンドラは**トロイの木馬**の舞台、トロイの王女です。

彼女は太陽の神**アポロン**から、自分の恋人になる代わりに予知能力を授けられたのですが、その予知能力によってアボロンが自分を捨てる未来が見えてしまい、アポロンの愛を拒否します。これに怒ったアポロンが、カサンドラの予知を誰も信じなくなるという呪いをかけます。これが原因でカサンドラは城の前にトロイの木馬があった時に、木馬を場内に入れることは破滅につながることを予言していましたが、誰にも信じてもらえませんでした。

予知能力の功罪について考えられさせられるストーリーですね。

ちなみに[カサンドラ症候群](https://ja.wikipedia.org/wiki/%E3%82%AB%E3%82%B5%E3%83%B3%E3%83%89%E3%83%A9%E7%97%87%E5%80%99%E7%BE%A4)もこのカサンドラが由来になっています。

## デーモン (Daemon)

デーモンは Unix 系のマルチタスクオペレーティングシステム (OS) において動作するプロセス（プログラム）で、主にバックグラウンドで動作するものを指します。具体例としては crond, httpd, inetd などが挙げられます。

ギリシャ神話では半神半人の守護神として登場しています。

分子をより分けてくれるという物理学や熱力学の空想上の存在であるマクスウェルの悪魔が発想の元になっていて、バックグラウンドプロセスの「裏でひっそりと動いて、常に仕事をしてくれる」という動きが、マクスウェルの悪魔の動きと酷似しているのがきっかけになっているようです。

- [BSDカーネルの設計と実装―FreeBSD詳解](https://www.amazon.co.jp/dp/4756146791/)
- [デーモン君のソース探検―BSDのソースコードを探る冒険者たちのための手引き書](https://www.amazon.co.jp/dp/4756144152)

## アトラシアン (Atlassian)

[アトラシアン (Atlassian)](https://www.atlassian.com/) はオーストラリアのシドニーに本社を置くソフトウェア企業で、代表的な製品として JIRA や Trello、Bitbucket などがあります。

ギリシャ神話では**アトラス**はティタン神族の一人として登場します。 全知全能の神ゼウスがその地位を確立する前、**オリンポスの神々**[^olympus]を引き連れ、ゼウスの父**クロノス**の**ティタン神族**と戦いを繰り広げます。**ティタノマキア**と呼ばれるこの壮絶な戦いは、オリンポスが勝利し、戦いに敗れたアトラスは罰として世界の西の果てで天空を支える役を課せられます。

[^olympus]: カメラや内視鏡のメーカーであるオリンパスの社名は神々が住んでいたオリンポス山が由来。

アトラシアン創業者の一人、マイク・キャノンブルックスはこのアトラスに惹かれて社名をアトラシアンとしました。アトラシアンの昔のロゴは、人が何かを支えているように見えるのですが、これはアトラスが天空を支える場面だったのですね[^atlassian_logo]。

[^atlassian_logo]: 悟空が元気玉を準備しているようにも見えます。

また、真・女神転生やペルソナシリーズなどの作品で有名なゲーム会社の[アトラス](https://www.atlus.co.jp/)も社名がギリシャ神話が由来ではないかと思うのですが、ソースは見つかりませんでした。

## Prometheus

[Prometheus](https://prometheus.io/) はイベントの監視と警告に使用されるオープンソースソフトウェアです。

神ゼウスは増えすぎてしまった人間の数を調整しようとトロイア戦争を仕向けるなど、人間に対して冷遇する事が多かったのですが、人間に協力的だったのが神プロメテウスです。プロメテウスは人間を創造した神とされ、ゼウスが人間から火を奪ったため、プロメテウスが神から火を盗んで人間に与えました。そのため、現在、我々が火を使えるのはプロメテウスのおかげとされています。

ただし、この事件によってプロメテウスはゼウスの怒りを買い、生きながらにして肝臓を鷲についばまれる罰を与えられてしまいました。神は不死身なので、傷は夜のうちに再生します。**ヘラクレス**によって開放されるまで、3万年もの間毎日この責め苦を受ける事になりました。

また、余談ですが、プロメテウスの弟**エピメテウス**はゼウスから**パンドラ**という名の女性を贈られます。パンドラはゼウスから「絶対に開けてはいけない」と渡された壺を持参していたのですが、ある日この壺を開けてしまい、中から様々な災いが出てしまいます。これが**パンドラの箱**[^pandora]です。

[^pandora]: もともとは壺だったが、口承の経過で箱になったとされる。

## デメテルの法則

[デメテルの法則](https://ja.wikipedia.org/wiki/%E3%83%87%E3%83%A1%E3%83%86%E3%83%AB%E3%81%AE%E6%B3%95%E5%89%87)は**最小知識の原則**とも呼ばれる、オブジェクト指向プログラムの設計におけるガイドラインです。

ギリシャ神話での**デメテル**は豊穣の神として登場します。また、デメテルとゼウスとの間に生まれた**コレー**が**ハデス**によって冥界に連れされ、コレー奪還を成功させますが、コレーは冥界からハデスからもらったザクロの身を4粒を食べてしまっていたため、1年の1/3を冥界で過ごさなければならなくなります。コレーが冥界で過ごす間、母デメテルは悲しみ、季節が誕生したとも言われています。

## ニーモニック

**ニーモニック**とは、コンピュータのマイクロプロセッサに与える命令の種類を表す番号（オペコード）に、人間が分かりやすいように付けられた英数字の短い符号を指します。

例えば8086マイクロプロセッサにおいて、AXレジスタとBXレジスタを加算して、結果をAXレジスタに格納する命令は、マシン語で表現すると次のような2バイトになります。

```
2進数表現： 00000001 11011000
```

このままだと人間にって分かりづらいため、ニーモニックでは次のように表現します。

```
ADD AX,BX
```

ニーモニックは、ギリシア神話に登場する記憶を神格化した女神**ムネーモシュネー**が由来とされています。

ムネーモシュネーはゼウスとの間に9人の学芸を司る女神を生みましたが、この女神たちは**ムーサ**と呼ばれ、ムージアム (museum) の語源にもなっています。

## Hermes

[Hermes](https://github.com/facebook/hermes)は、Android 上の React Native の実行に最適化した Facebook 製の軽量な JavaScript エンジンです。

ギリシャ神話では**ヘルメス**は**ゼウス**の子どもとして登場します。泥棒と嘘の才能があったため、忠実な部下として活躍しました。また、ヘルメスは貿易、紋章、商業の神でもあったので、Facebook はこの名前をプロダクトに授けたのではないでしょうか。

また、ヘルメスは**ケーリュケイオン**という杖を携えていて、一橋大学の校章にもなっています。医療・医術の象徴として世界的に広く用いられているシンボルマークである**アスクレピオスの杖**はケーリュケイオンとよく似ているので混同されやすいのですが、全くの別物です。

| ケーリュケイオン | アスクレピオスの杖 |
| :----------: | :-----------: |
| ![ケーリュケイオン](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36122/69972da8-86aa-0b83-830d-b6238fab6a57.jpeg) | ![Esclapius_stick.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36122/0a474a90-badc-a36b-d638-c3a2a3f91008.png) |

ちなみに、エルメスというとファッションブランドの[エルメス・アンテルナショナル社](https://www.hermes.com/jp/ja/)が真っ先に頭に浮かんだ方も多いと思いますが、こちらは創業者の名前がティエリー・エルメスであり、直接の関係は無さそうです。

# 参考

- [統合開発環境"Eclipse"の歴代バージョンとコードネームについて① \- 大河ブログ](http://alailama2039.hatenablog.com/entry/2019/08/08/154246)
- [UNIX/Linuxでよく使われる「Daemon」\(デーモン\)プロセスの語源とは？ \- GIGAZINE](https://gigazine.net/news/20180206-unix-linux-daemon/)
- [創業の精神：沿革：オリンパス](https://www.olympus.co.jp/company/milestones/founding.html)
- [Atlassian Summit U\.S\. 2017 \- Product Keynote レポート \- Atlassian Japan 公式ブログ \| アトラシアン株式会社](https://www.atlassian.com/ja/blog/summit17-product-keynote)