イースターエッグとオープンソース

勤務先のことは自分のブログでは書かないポリシーだが、それがオープンソースになっていると、そのオープンソースについてということでコメントできるのでちょっとうれしい。

前職*1ではソースが基本的に公開されていない*2製品の開発を担当していたので、ソースコードからわかる事実について社外の人と話すことができなかった。話すことが許されなかったこともあるし、話してもそれが相手もアクセスできる情報ではないため、あまり意味が無かったこともある。オープンソースだと、いざとなったら、ソースの該当箇所を示すことができるので楽だ。

オープンソースのメリットはほかにも感じることがある。イースターエッグの存在もその1つだ。

私の担当していたWindowsはWindows 2000からイースターエッグを組み込むことを禁止した。イースターエッグが組み込まれているような製品には、ほかにも製造元や特定の機関のみが利用できる機能が組み込まれていることが疑われるからだ。バックドアと言われるような機能を組み込むことでアメリカ合衆国政府はユーザーのWindowsにアクセスして、必要な情報を得られるのではないかなどと疑われたこともあった。

そのため、当時の開発責任者だったBrian Valentineの英断により、イースターエッグは禁止された。代わりに製品のウェブページで開発者の名前が映画のエンディングロールのようにして表示されたのではなかったかと思う。

社員としてこの方針は支持したものの、一抹の寂しさを感じなかったわけではない。私が関わった製品で私の名前がイースターエッグとして組み込まれているのは、Windows NT 4.0 Server, Terminal Server Edition日本語版だ。今となっては、どのような操作だったか忘れてしまったが、確かヘルプか何かを表示した上で、指がつりそうなキーコンビネーションをすることで私をはじめとする開発者の名前が表示できたはずだ。

マイクロソフトに限らず、同じような理由で少なくなってきてしまったイースターエッグだが、オープンソースだとそのような心配はいらない。

たとえば、about:によりいろいろな表示がされることはすでにメディアで取り上げられているが、これもソースを見れば一発でわかる。

\trunk\src\chrome\browser\browser_about_handler.cc

// The URL scheme used for the about ui.
static const char kAboutScheme = "about";

// The paths used for the about pages.
static const char kCachePath = "cache";
static const char kDnsPath = "dns";
static const char kHistogramsPath
= "histograms";
static const char kObjectsPath = "objects";
static const char kMemoryPath
= "memory";
static const char kPluginsPath = "plugins";
static const char kStatsPath
= "stats";
static const char kVersionPath[] = "version";

<略>

if (LowerCaseEqualsASCII(url->path(), "internets")) {
// about:internets doesn't have an internal protocol, so don't modify |url|.
*result_type = TAB_CONTENTS_ABOUT_INTERNETS_STATUS_VIEW;
return true;
}

一方、オープンソースだと、すぐにばればれで、ちっともイースターエッグではないという課題もあるが。


Disclaimer

このブログは及川卓也の個人的なものです。

ここで述べられていることは私の個人的な意見に基づくものであり、私の雇用者には一切の関係はありません。

*1:マイクロソフト

*2:契約すれば入手できる