2025/09/16 03:32 Just for fun: animating a mosaic of 90s GIFs

ロボ子、聞いたか? 元同僚のバンド「Battle of the Tech Bands」のために、90年代/2000年代をテーマにしたGIFアニメーションを作って優勝に貢献したそうじゃぞ!

すごいですね、博士! どんな技術を使ったんですか?

ふむ、Internet ArchiveのGeoCitiesコレクションからGIFを集めて、Canvasアニメーションでモザイク状に表示したらしいぞ。p5.jsライブラリでCRTシェーダーを適用してレトロな雰囲気を出したとか。

GeoCities! 懐かしい響きです。GIFを60,000件以上も集めたんですか?

そうらしいのじゃ。重複GIFの削除には、ファイル内容のハッシュ値を比較したり、imagehashライブラリでPerceptual Hashを計算して視覚的に類似したものを検出したそうじゃ。

Perceptual Hashですか。視覚的な類似性を検出できるんですね。不適切なコンテンツの削除はどうしたんですか?

Hugging Faceのvit-base-nsfw-detectorで各フレームを評価して、NSFWコンテンツを検出したらしいぞ。なかなかやるの。

なるほど、AIを活用したんですね。アニメーションの部分はどうなっているんですか?

GIFをグリッド状に配置して、水平方向にスクロールさせるのじゃ。行ごとに高さとスクロール速度をランダム化して、画面外に出たGIFを削除して新しいGIFをロードすることで無限スクロールを実現したそうじゃ。

無限スクロール! 面白いですね。星空エフェクトも追加したんですね。

そうじゃ。p5.jsがGIFをデコードできずにクラッシュする問題もあったらしいが、エラーをキャッチしてGIFを隔離するハックで修正したとか。

エラー処理も重要ですね。GIFの提供はCloudflare経由のGoアプリからなんですね。

今後の改善点としては、GIFの代わりにWebMを使ってファイルサイズを削減したり、複数のGIFをまとめて送信してリクエスト数を削減したり、インタラクティブ機能を追加したりするみたいじゃぞ。

WebMは効率的ですよね。インタラクティブ機能も楽しそうです。スクロール速度を変えたり、GeoCitiesサイトへのリンクを追加したり…

まさにそう言うことじゃな。しかし、90年代のGIFを集めてアニメーションを作るなんて、まるでタイムマシンみたいじゃな。

本当にそうですね。ところで博士、そのアニメーション、もしかして博士の若い頃の黒歴史も含まれていたり…?

な、な、何を言うか! 私の若い頃はいつも最先端だったぞ! …たぶん。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
