- Dwitter は、140文字以内の JavaScriptコードで視覚的デモを作成して共有できるプラットフォーム
- 各投稿は「dweet」と呼ばれ、コードとともに 即時実行されるグラフィックアニメーション を表示
- ユーザーは コメント、リミックス、ハッシュタグ を通じて交流し、コードの改変や再創作が活発に行われている
- hot, new, top(週/月/年/全期間) など、さまざまな並び順で人気コンテンツを探せる
- 短いコードで複雑な視覚効果を実現する 創造的プログラミング実験の場
Dwitter.net 概要
- Dwitter.net は、140文字制限のJavaScriptコード で視覚的デモを制作するWebプラットフォーム
- 各デモは「dweet」と呼ばれ、ブラウザで即時実行される アニメーショングラフィック を生成
- ユーザーはログイン後に新しい dweet を作成したり、既存作品を リミックス(remix) したりできる
- サイトでは hot, new, top(週/月/年/全期間) など、さまざまな並び順で人気コンテンツを探せる
- 各 dweet には 共有、全画面、報告、コメント 機能が含まれている
代表的な dweet の例
- “Bubble universe colour expansion” は、多彩な色使いと明確な視覚効果で評価されている
- コメントでは “A whole universe!” のような反応が寄せられている
- “Ants! 🐜” は、短いコードでアリの群れを表現した作品で、 “god level dweetage!” などの称賛を受けている
- “Trees, shadows, hills.” は、木々や影、丘を描いたアニメーションで、 “Amazing stuff!” という反応を得ている
- “Flight Over Destroyed City ✈️” は、破壊された都市の上を飛ぶ飛行シーンを実装
- コメントでは “i love the smell of sulfur and uranium in the morning” など、ユーモラスな反応が続いている
- “Solar Orbit ☀️🌘” は、惑星軌道を140バイト以内で実装し、 “How did you fit a whole planetary system in 140 BYTES OF JAVASCRIPT!?!?” という驚きを引き起こした
コミュニティ活動とリミックス文化
- 各 dweet は 他ユーザーのコードをベースにリミックス でき、元作品へのリンクが明示される
- コメントには 技術的フィードバック、感想、ユーモア が混ざり合い、活発なコミュニティの雰囲気を形作っている
- ハッシュタグ機能により、#space, #galaxy, #lighting, #scene などテーマ別の探索が可能
技術的特徴
- コードの多くは eval(unescape(escape
...)) 形式で圧縮されており、140文字制限の中で最大限の視覚効果 を実現している
- コード内では Canvas API を活用した図形、色彩、動きの表現が中心
- 各 dweet にはコード長(例:
// 136/140)が明示されており、最適化と圧縮技術 が重要な要素になっている
創造的プログラミング実験の場
- Dwitter は コードゴルフ(code golf) と 視覚芸術 を組み合わせた形で、開発者同士の 創造力の競争 を促進している
- シンプルなコードで複雑な視覚的結果を生み出す過程は、プログラミング美学 として評価されている
- このプラットフォームは、芸術的表現と技術的圧縮の境界 を探る実験空間として機能している
2件のコメント
本当に驚異的ですね
Hacker Newsのコメント
サーバーを少し再起動することになって申し訳ない。前回同じことが起きたときの教訓のおかげで、DigitalOcean droplet のサイズを調整した
例えば
eval(unescape(escape\<<97 wide characters>>`.replace(/u../g,'')))` のような形で、97個のUnicode文字を194個のASCIIに復元できるいっそ Ford Prefect と Mr Prosser の会話みたいに「194文字を140文字に収めたことにして、そのまま表示しよう」という合意があってもいい
デモパーティーの4096バイト制限みたいに、実際には Crinkler で12〜20KBを圧縮して収めるのと似た理屈だ
昔のインタビューを見つけたが興味深い: Mediumインタビュー
本当の魔法は コミュニティ にある: Discordコミュニティ
アニメーションGIF
詳細は Autohotkey フォーラムの投稿 を参照
制約があると、むしろ多様性が爆発する。視覚的錯覚、短い文章、予想外の方向への実験など
制約は集中を促し、失敗のコストを下げて実験を後押しする
たいていのプラットフォームは機能を追加して創造性を広げようとするが、むしろ複雑にしてしまう
制約が楽しさを生む というルールをよく思い出す
いつ制約がより良い結果を生み、またいつ制約が見せかけのように感じられるのか気になる
その経験が自分の コードの考え方 を完全に変えた
小さなコミュニティでバイト節約テクニックを共有しながら、Mandelbrotレンダリングから Sudoku ソルバーまで作っていた
10年後、自社のコードベースで昔作った UUID実装 を見つけたときは本当に驚いた
関連リンク: YouTube動画, Byte-saving techniques, UUID gist
js_funcは tagged template literal として呼び出されるこれからは
console.log\weeee`` みたいなものを使ってみるつもり例: htm, lit.dev
小さなSVGデータをインラインコードとして保存し、13KBのサンプラーを作った
サンプルリンク
例:
evalの使用は止めてほしいその代わり、もっと多くの ショートカット を追加してほしい。例えば
sはMath.signを意味するが、もっと拡張できたはずだ後から変えると 固定された目標 が失われ、魅力が薄れる
beta.dwitter.net はエンコーディングのアクセシビリティを改善しつつ、固定目標を保っている
Math.sin や CSS 色エンコーダのような例外は実用上の理由で追加されたものだ
Dwitter 2 では、もっと多くの 事前定義文字 を含めて、ユーザーが自分で拡張できるようにしようという議論もあった
結局重要なのは 創造性 だ。ルールをひねること自体が創造的な行為でもある
eval問題を根本的に解決できる文字列リテラルでのデータ圧縮は可能だろうが、コード全体の圧縮は減るはずだ
eval許可には満足している。ルールはルール(あるいはルールなし)だ