世界を動かす技術を、日本語で。

公共のAndroid APIにおけるジョークとユーモア

概要

Androidの公開APIには、開発者向けの ユーモラスなイースターエッグ やジョークが複数存在。 実用性よりも 遊び心や開発者文化 を反映したメソッドや定数が含まれる。 本記事では、その代表的な APIや定数の由来・用途 を解説。 実際の開発現場での 使われ方や影響 も紹介。 Android開発者ならではの 小ネタや歴史的背景 を知ることができる内容。

Android APIに隠されたジョーク・イースターエッグ集

  • Androidの公開APIには、 開発者向けのジョークやイースターエッグ が多く存在
  • 普段は目立たないが、 公式ドキュメントやソースコード を読むと発見できる
  • これらは 開発者文化や歴史的背景 を反映したものが多い

ActivityManager.isUserAMonkey()

  • UIが「monkey(サル)」によって操作されているかを判定する メソッド
  • 実際は UI Exerciser Monkey というテストツールの起動判定
  • 開発中に 予期せぬ操作(例:緊急通報) が発生したことが実装のきっかけ
  • Android 2.2 Froyo(API 8)から 公開API

UserManager.isUserAGoat()

  • 開発者向けジョークの 代表例
  • 「このユーザーがテレポートの対象かどうか」を判定する メソッド
  • Android 4.2(API 17)で初登場、当初は常に false を返していた
  • Android 5.0 Lollipop(API 21)で Goat Simulator のインストール判定に変更
  • Android 11(API 30)以降は再び常に false、理由は「goatのプライバシー保護」

UserManager.DISALLOW_FUN

  • Android 6 Marshmallow(API 23)で追加された デバイスポリシー
  • 「ユーザーが楽しむことを禁止する」ための 定数
  • 公式説明文も 皮肉やジョーク を含む内容
  • 実際に利用すると、 イースターエッグの無効化 などが可能
  • 教育機関などで 生産性維持のために使われる ケースも

Chronometer.isTheFinalCountdown()

  • Android 8 Oreo(API 26)で追加された メソッド
  • 呼び出すと Europeの「The Final Countdown」YouTube動画 を開くIntentを送信
  • 実用性よりも 完全なジョーク実装

PackageManager.FEATURE_TOUCHSCREEN_MULTITOUCH_JAZZHAND

  • Android 2.3 Gingerbread(API 8)で追加された 定数
  • 5点マルチタッチ対応端末を「 Jazz hands」で表現

Log.wtf()

  • 「What a Terrible Failure」の略とされる ログ出力関数
  • 想定外の致命的エラー時に アサーションレベルで記録

AdapterViewFlipper.fyiWillBeAdvancedByHostKThx()

  • Android 3.0 Honeycomb(API 11)で追加された メソッド
  • 名前が ネットスラング調でユーモラス
  • AppWidgetHostによる ビュー切り替え時に呼び出される

IBinder.TWEET_TRANSACTION & IBinder.LIKE_TRANSACTION

  • Android Binder IPCで使われる 取引タイプ
  • TWEET_TRANSACTIONは「ツイート送信」を示すが 実際には何も行わない
  • LIKE_TRANSACTIONは「アプリが好かれている」ことを通知、 自己肯定感向上用ジョーク

SensorManager.SENSOR_TRICORDER

  • Star Trekの架空デバイス「Tricorder」への オマージュ定数
  • Android 1.0から存在、API 15で 非推奨

SensorManager.GRAVITY_*

  • 太陽系の天体重力を表す 定数群
  • GRAVITY_DEATH_STAR_I(Star Wars)、GRAVITY_THE_ISLAND(LOST)など ジョーク天体 も含む

<blink>タグ

  • Androidのレイアウトシステムに 隠されたタグ
  • 子要素を 点滅させる 機能を持つ
  • 2011年のコミットで追加、 非公式・未ドキュメント

まとめ

  • Android APIには、 開発者の遊び心や歴史 が色濃く反映されたジョーク要素が多数
  • 一部は 実用性も兼ねる が、ほとんどは ユーモアや文化の共有 が目的
  • こうした要素は 開発者同士の会話や話題 のネタとしても活用
  • Androidの進化と共に 消えたり変化するジョークAPI も存在
  • APIやコードを読むことで、 Android開発の裏側や文化 を垣間見ることができる

Hackerたちの意見

自分のデバイスでisUserAGoatやisUserAMonkeyを試したいなら、これを作ったよ!ちょっとしたアプリだから、よかったら使ってみてね。: https://play.google.com/store/apps/details?id=com.trianguloy... 他のイースターエッグも追加できるかも。

Android 15のデバイスでは、あなたのアプリがインストールできないんだ。Googleが最低限のcompileSdkを強制してるみたい。ビルドをアップグレードできるかな? :)

それはかなり楽しそうだね!特に、DISALLOW_FUNポリシーをチェックする何かがあればなおさら。ブログ記事を読みながら、GitHubでソースコードが公開されているAndroidアプリが使ってるか調べてみたけど、出てきたのはシステムの設定アプリのコードだけだった。バージョンのイースターエッグをロックするためのやつね。君が初めてのサードパーティになるかもしれないね!

BeOS(今はHaiku)を思い出すな。「is_computer_on()」や「is_computer_on_fire()」っていう関数があって、どちらもすごくいい説明がついてるんだ。 https://www.haiku-os.org/legacy-docs/bebook/TheKernelKit_Sys...

興味がある人のために: https://github.com/haiku/haiku/blob/master/src/system/libroo...

面白いことをしようとしてるのは分かるけど、その状態は現代のコンピュータでは普通なんだよね。OSは深いスリープからの復帰や、マザーボードの温度が200度の状態を管理すべきだと思う。

Delphiを思い出すな。そこには「EProgrammerNotFound」っていう例外があるんだ。 https://docwiki.embarcadero.com/Libraries/Athens/en/System.S... すごく真面目な(でも短い)ドキュメントページがあって、すごく乾いたユーモアを感じたよ。

これは技術文書におけるジョークやユーモアのことだね。あんまり好まれないことも多いけど、ドキュメントにちょっとしたユーモアがあるのは好きだな。これについて書いたよ: https://passo.uno/experiment-humour-documentation/

X11について、思いつくままに言うと:レガシーなクルフトを切り替えるグローバル変数は「party_like_its_1989」って呼ばれてるんだ。 https://gitlab.freedesktop.org/xorg/xserver/-/blob/master/di... DRI2拡張の変更履歴は「素晴らしさ!」、「真の卓越性」、「悟りを得た」などが書かれてるよ: https://www.x.org/releases/X11R7.7/doc/dri2proto/dri2proto.t...

<blink>」タグは初期のHTML標準の公式な一部だったけど、ティーンエイジャーがオンラインに現れて常識が戻ったんだと思う。古いウェブページとの互換性を保つためにあったんじゃないかな。

この「blink」は特定のUI XMLの方言であって、HTMLじゃないよ。

そうそう、そこがblinkタグの概念の発祥だよね。今は廃止されたHTMLタグだけど。でも、ブログ記事で言及されているのは、AndroidのXMLレイアウトビューシステムに存在する隠れた(AFAIK文書化されていない)blinkタグについてなんだ。これはシステムのWebViewブラウザとは独立したものだよ(多分、blinkタグ用のコードはまだ含まれてると思うけど、それは驚くべき発見ではないだろうね)。他にAndroidのビューでHTMLタグに本当に対応する組み込みタグがあるかは分からないな。

こんな大企業のコードベースに、こういうユーモアがまだ残ってるのが好きだな。APIを使ってると気づかないけど、ソースコードを見ると、こういう小さなイースターエッグがあって、コードの背後には本物の人間がいるって思い出させてくれる。最近のソフトウェアの冷たい感じと比べると、この対比が人を温かい気持ちにさせるよね。正直、もっとこういうのが必要かも。

FBでは何年も、危険なトークンや本当に廃止されたトークンには「_DO_NOT_USE_OR_YOU_WILL_BE_FIRED」を付けるのが標準だった。みんなそのジョークに乗ってたよ。パンデミックの真っ最中で、約50%の社員が2020年以降に入社したとき、これや他のことが恐怖や不安を引き起こすって不満になったんだ。リモートの人たちをうまくオンボーディングして、文化の一部だと感じさせるのができてなかったな。[1]: 大企業だったから、この発言は私がアクセスできた範囲内での真実だった。

Reactの「__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED」でこれを見たのを覚えてる。似たような軽い感じの長い名前が好きだったんだ。でも残念ながら、これもデファンニフィケーションの犠牲になったみたいだね。https://github.com/facebook/react/pull/28789

OpenVMSでは、DCL(シェルとメインのスクリプト言語)でこれが終了コードとして使われてた。$ exit 2928 %SYSTEM-W-FISH, 私のホバークラフトはウナギでいっぱいだ

このスレッドに返信するのを、面接する人には必須にしたいな。私を面接する人にもね。本当に「この世には2種類の人がいる」って瞬間だわ。

なんで?グーグラーがAPIにジョークを加えるのは、クリスマスディナーでのダジャレと同じくらい面白くないよ。

「Chromeのタスクマネージャーに隠されたカラムがあって、ブラウザプロセスがテレポートしたヤギの数を表示する」 これがもう動かないって知って、すごくがっかりしたよ。スクリーンショット付きの古い投稿があるよ: https://www.100-geek.net/articles/goats_teleported?action=ar... 234カラムから16カラムに、なんて大掃除だ。