はじめに
最近、Go言語のGopherを見るたびに「かわいいな」と思います。
プログラミング言語や開発者向けプロダクトには、ときどき妙に印象に残るキャラクターがいます。GoのGopher、GitHubのOctocat、そしてJavaのDuke。機能そのものを説明しているわけではないのに、なぜか技術の印象と一緒に記憶に残ります。
そういえば、自分がはじめて「自分のPCを用意してプログラミングを始めた」きっかけはJavaでした。1995〜1996年ごろに、バイト先の店長にJavaを教えてもらったのが始まりです。
それ以前にも、Logo(ロゴライター)やBASICのようなものは、学校や友達が触っているのを見ていました。ただ、自分で環境を用意して「これは自分でもやってみよう」と思った入口はJavaでした。
そのころのJavaの記憶には、言語仕様だけでなく、マスコットキャラクターのDukeの印象も残っています。この記事では、最近のGopherのかわいさを入口に、JavaのDukeがどういう存在だったのかを少し振り返ってみます。
※本記事は個人の記憶を起点にした整理メモです。DukeやGopherの由来については、Go公式ブログとdev.javaの公式ページで確認できる範囲を参照しています。
技術のキャラクターは、なぜ記憶に残るのか
技術を選ぶ理由は、本来なら機能、性能、エコシステム、学習コスト、チームの状況などで決まります。
ただ、最初に触れるときの印象は、それだけではありません。
- ロゴや色
- ドキュメントの雰囲気
- サンプルコードの読みやすさ
- コミュニティの空気
- マスコットやキャラクター
こういうものも、意外と入口の印象を作ります。
特にキャラクターは、技術の説明を直接するわけではありません。それでも、見る人に「親しみやすそう」「楽しそう」「少し触ってみたい」という感覚を残します。
GoのGopherは、その意味でとても強いキャラクターだと思います。小さくて、表情があり、いろいろな派生イラストも作りやすい。Goの言語仕様のシンプルさとは別に、Gopherの存在がGoのコミュニティの親しみやすさを支えているように感じます。
Gopherはどこから来たのか
Gopherについて気になって、Go公式ブログ「The Go Gopher」を読んでみました。すると、自分が漠然と思っていたのとは少し違う話でした。
Gopherをデザインしたのは Renée French というアーティストです。ここまでは知っている人も多いと思います。面白いのは、現在のGo Gopherの元になったキャラクターは Goのために最初から生まれたものではなかった ということです。
公式ブログによると、Gopherが最初に登場したのは Goプロジェクトのおよそ15年前で、ニュージャージーのラジオ局 WFMU の年次募金イベント用Tシャツ のためにRenéeがデザインしたものだったそうです。
そのあと、このキャラクターは Bell Labs のメールシステムでアバターとして使われたり、別の Bell Labs の活動から Plan 9 のマスコット Glenda(WFMU gopherの「遠い親戚」と紹介されています)が生まれたりと、いろいろな場所に顔を出していました。
そして2009年、Goがオープンソースとしてローンチされるタイミングで、Renée自身が「WFMUのgopherを Goのマスコットとして adapt しよう」と提案します。こうして Go Gopher が誕生しました。
補足:公式ブログには「The gopher has no name, and is called just the "Go gopher"」と書かれています。名前はなく、ただ "Go gopher" と呼ぶのが正しい呼び方のようです。
つまり Gopher は、
- もともとは別の場所(ラジオ局のTシャツ)で生まれたキャラクター
- 長い時間をかけてあちこちで使われた
- 最終的に Goのマスコットに「採用」された
という流れで今の姿になっています。最初からGoのために生まれたわけではない、というのが個人的には少し意外なポイントでした。
JavaにもDukeがいた
JavaにもDukeというマスコットがいます。
いまJavaと聞いて思い浮かべるものは、人によってかなり違うと思います。
- エンタープライズ開発
- JVM
- Spring
- Android開発の歴史
public static void main- コーヒーカップのロゴ
自分にとっては、そこにDukeの印象もあります。
当時のJavaには、少し未来っぽい雰囲気がありました。「Write once, run anywhere」という言葉に代表されるように、環境をまたいで動くことが強く語られていました。そこにDukeのようなキャラクターがいることで、単なる堅い技術というより、どこか動きのあるものとして記憶に残ったのかもしれません。
もちろん、当時の自分がDukeの由来を詳しく知っていたわけではありません。ただ、Javaには「あのキャラクターがいる」という印象はありました。
Dukeはどこから来たのか
Dukeは、単にJavaの横にあとから置かれた飾りではなかったようです。
dev.javaの公式ページによると、DukeはSun Microsystems の Green Project で作られた、Star7 というインタラクティブな携帯型ホームエンターテインメントコントローラーのデモに登場したキャラクターとして紹介されています。
Star7のタッチスクリーンUIの中心にいたのがDukeでした。Dukeは、ユーザーのためにタスクをこなす 「software agent」 を表す存在だったとされています。
ここが面白いところです。
Dukeは、単なる言語のロゴではなく、もともとはユーザーインターフェースの中で動くキャラクターでした。ボタン、マウス、ポップアップメニューといったデスクトップ中心のUIとは違う、新しい体験を見せるための存在だったわけです。
また、Dukeを作ったのは Joe Palrang というグラフィックアーティストです。公式ページでは、彼がその後 Shrek、Over the Hedge、Flushed Away といったアニメーション映画にも関わった人物として紹介されています。
そして、Javaが最初に公開され、コーヒーカップのロゴが作られたのとほぼ同じタイミングで、DukeはJavaの公式マスコットになりました。さらに2006年には、Dukeは BSDライセンスでオープンソース化 されています1。グラフィックの仕様はOpenJDKの「Project Duke」で公開されていて、開発者やデザイナーが自由にDukeで遊べるようになっています。
そう考えると、Dukeの印象が少し変わります。
ただの「Javaのかわいいやつ」ではなく、初期Javaが持っていた 新しいコンピューティング体験への期待を背負ったキャラクター だった、と見ることができます。
自分がJavaを始めたころの空気
1995〜1996年ごろに、バイト先の店長にJavaを教えてもらいました。
いま考えると、かなり不思議な入口です。学校の授業でもなく、専門書を自分で選んだわけでもなく、バイト先の店長から教わる。けれど、当時の新しい技術との出会い方は、そういう人づての偶然が多かった気がします。
Logo(ロゴライター)やBASICは、学校や友達がやっているのを見ていました。興味はありました。でも、自分のPCを用意して、環境を作って、自分でもやってみるところまで進んだのはJavaでした。
Javaは難しかったはずです。環境構築も今ほど楽ではなかったと思います。それでも始めてみようと思えたのは、言語そのものへの興味だけでなく、当時のJavaがまとっていた雰囲気もあったのだと思います。
その雰囲気の一部として、Dukeの存在がありました。
キャラクターは機能ではないが、入口になる
技術にキャラクターが必要かと言われると、必須ではありません。
Javaの価値はDukeがいることではないし、Goの価値もGopherがかわいいことではありません。GitHubの価値もOctocatだけで決まるわけではありません。
ただ、技術を覚えるとき、人は機能だけを覚えているわけではないと思います。
どんなロゴだったか。
どんなドキュメントだったか。
どんな人に教わったか。
どんな環境で最初のコードを書いたか。
その周りに、どんなキャラクターがいたか。
こういう周辺の記憶が、あとから技術への印象を形作ります。
Gopherを見て「かわいいな」と思ったとき、自分の中では少しだけDukeの記憶とつながりました。プログラミング言語にキャラクターがいることは、技術をやわらかく見せるだけでなく、あとから思い出すための目印にもなるのかもしれません。
GopherもDukeも、それぞれ「もともとは別の文脈で生まれて、あとから言語の顔になった」というところが共通しているのも、調べてみて気づいたポイントでした。
まとめ
GoのGopherを見てかわいいと思ったことをきっかけに、JavaのDukeを振り返ってみました。
- Gopher は、現在のGo Gopherの元になったキャラクターがGo専用に作られたわけではなく、もともとはWFMUというラジオ局のTシャツのためにRenée Frenchがデザインしたもの。Bell LabsでのアバターやPlan 9のGlenda(遠い親戚)などを経て、2009年のGoオープンソース化のタイミングで、WFMU gopherをadaptする形でGoのマスコットに採用された
- Duke は、Sun Microsystems の Green Project が作った Star7 のUIキャラクターとして登場し、ユーザーのために動く「software agent」を表す存在だった。デザインは Joe Palrang による
- どちらも「言語のために最初から作られたロゴ」というよりは、別の文脈で生まれて言語と結びついていったキャラクター、という共通点がある
自分にとってJavaは、バイト先の店長に教わり、自分でPCを用意して始めた最初のプログラミング体験でした。その記憶の中にDukeが残っているのは、技術そのものだけでなく、当時のJavaが持っていた雰囲気まで含めて覚えているからだと思います。
キャラクターは機能ではありません。けれど、技術に近づくための入口になったり、あとから思い出すための目印になったりします。
そう考えると、プログラミング言語やプロダクトにキャラクターやアイコンなどがあって、そこから親しみをもてることは、思った以上に大事なのかもしれません。
参考(公式情報)
-
より精緻には、OpenJDK公式ページによると 2006年11月13日に New BSD License(3-clause BSD)でオープンソース化されています。本文では読みやすさを優先して「2006年にBSDライセンスで」とまとめています。 ↩




