Appleのお茶目なプログラマーがiOSに隠し持たせたアスキーアート自動生成命令がギークっぽくて面白い
価値ある情報をユーザー視点で発信するブログ
iOS用の世界一実用度の高いPython統合開発環境、Pythonistaを開発しているOle Zornさんが面白いものを発見していました。
それは画像をアスキーアートに変換するiOSに隠された命令。
TIL there's a UIImage category method called ASCIIDescriptionWithWidth:Height: in AssetsLibrary.framework that actually produces ASCII art.
— omz (@olemoritz) May 24, 2016
カメラロールにアクセスするときに使うフレームワーク、AssetsLibrary.frameworkをロードするとUIImageに付加されるカテゴリメソッドのようです。
- (id)ASCIIDescriptionWithWidth:(int)arg1 height:(int)arg2;
Pythonistaを自身で使っている際に、UIImageのメソッドの補完候補の中に偶然見つけたのだとか。
Pythonista
カテゴリ: Productivity
販売元: Ole Zorn(サイズ: 225.2 MB)
全てのバージョンの評価: (46 件の評価)
Pythonistaにあるモジュール objc_util は、Objective-CのクラスをPythonから呼び出すためのもの。Pythonistaユーザーからリジェクトを心配されるほど強力です。
Pythonistaはまた、インテリセンスのような補完機能を持っていて、文脈を理解して補完候補を出してくれるのです。iOS上で動作するXcodeと言っても過言ではありません。
シミュレーターで実際に試してみました。
UIImage *img = [UIImage imageWithContentsOfFile:@"/Users/hoge/Dropbox/Twitter/avatar.png"]; NSLog([img ASCIIDescriptionWithWidth:80 height:80]);
結果はこんな感じです。左上のものが、元々の画像です。
こんな命令がどこかで使われているわけもなく、使う予定もなく作られたものでしょう。
Pythonista的にはこんな感じです。PILのImageからUIImageにキャストする方法がよく分からなかったので、一度画像を保存するようにしてみました。UIImagePickerControllerを直で使うにはdelegateがらみが面倒そうだったので横着しました。
実行結果。イメージピッカーで任意の写真を選んだ後、コンソールにプリントされると同時にクリップボードにもコピーするようにしてみました。
さらに発見は続きました。このことを聞きつけた @omichde さんが、この命令にバーストモード(iOS標準の写真.appでシャッターボタンを長押し)で撮影した写真を処理させると、アニメーションGIFを生成することに気づいたのです。
ASCIIDescriptionWithWidth:height: on a burst image back to an animated GIF: https://t.co/0v2lK1dg63 #cool hacking
— Oliver Michalak (@omichde) May 25, 2016
実用性は皆無ですが、この無駄な作り込みが何とも愉快です。
これを作ったのはだれなのか? もちろん、Appleのプログラマーにほかなりません。それが、この話の面白味のキモ。
AssetsLibrary.frameworkのプログラミングを担当したプログラマーが、イースターエッグ的に作った命令なのでしょうね。これを隠し持たせたまま、まんまとリリースすることに成功した当人の、ほくそ笑みが思い浮かぶようです。
世の中に億という単位で普及しているiOSデバイスの一つ一つに、アスキーアート自動生成機能が潜んでいると考えると、これは”帆場暎一”を超える偉業を成し遂げた、というと言いすぎでしょうか?
Pythonista
カテゴリ: Productivity
販売元: Ole Zorn(サイズ: 225.2 MB)
全てのバージョンの評価: (46 件の評価)