8 ポイント 投稿者 GN⁺ 2026-01-11 | 2件のコメント | WhatsAppで共有
  • 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件のコメント

 
roxie 2026-02-27

本当に驚異的ですね

 
GN⁺ 2026-01-11
Hacker Newsのコメント
  • HNでこれを見られてうれしい :D
    サーバーを少し再起動することになって申し訳ない。前回同じことが起きたときの教訓のおかげで、DigitalOcean droplet のサイズを調整した
  • すごいとは思うけど、文字数で制限すると マルチバイトのUnicode文字 を使ってASCII文字を圧縮するメタゲームが生まれる
    例えば eval(unescape(escape\<<97 wide characters>>`.replace(/u../g,'')))` のような形で、97個のUnicode文字を194個のASCIIに復元できる
    いっそ Ford Prefect と Mr Prosser の会話みたいに「194文字を140文字に収めたことにして、そのまま表示しよう」という合意があってもいい
    デモパーティーの4096バイト制限みたいに、実際には Crinkler で12〜20KBを圧縮して収めるのと似た理屈だ
    • beta.dwitter.net/top のベータフロントエンドには「compressed」トグルがあり、好きな方式で見られる
    • 単純に UTF-8バイト基準 で制限を設けるのも方法だ(例: 140バイト)
    • 140バイトはASCII文字でおよそ160文字分に相当する。制御文字を除けば170文字まで可能だ
    • このコメントはHNで見た中でいちばん返信が付いたものかもしれない :-)
    • HHG(Hitchhiker’s Guide) のリファレンスに気づいた者としてうれしい
  • Dwitter はこの冬で 10周年 を迎える
    昔のインタビューを見つけたが興味深い: Mediumインタビュー
    本当の魔法は コミュニティ にある: Discordコミュニティ
  • Dwitterで140文字以内で作られた ジェネラティブスケッチ集 をまとめた
  • 以前、Dwitter の Autohotkey版 の小さなコンテストに参加して、歯車アニメーションで優勝したことがある
    アニメーションGIF
    詳細は Autohotkey フォーラムの投稿 を参照
  • Dwitter のようなサイトを見ると、人間の 創造性への信頼 が新たになる
    制約があると、むしろ多様性が爆発する。視覚的錯覚、短い文章、予想外の方向への実験など
    制約は集中を促し、失敗のコストを下げて実験を後押しする
    たいていのプラットフォームは機能を追加して創造性を広げようとするが、むしろ複雑にしてしまう
    制約が楽しさを生む というルールをよく思い出す
    いつ制約がより良い結果を生み、またいつ制約が見せかけのように感じられるのか気になる
  • Twitter初期の 140バイトコードゴルフ に深くハマっていた時期がある
    その経験が自分の コードの考え方 を完全に変えた
    小さなコミュニティでバイト節約テクニックを共有しながら、Mandelbrotレンダリングから Sudoku ソルバーまで作っていた
    10年後、自社のコードベースで昔作った UUID実装 を見つけたときは本当に驚いた
    関連リンク: YouTube動画, Byte-saving techniques, UUID gist
  • 今日初めて知ったこと:
    js_func`string`
    
    これが有効なJS構文だということ。js_functagged template literal として呼び出される
    これからは console.log\weeee`` みたいなものを使ってみるつもり
    • いくつかのライブラリはこの構文で JSX風構文 をビルド工程なしでサポートしている
      例: htm, lit.dev
    • 自分も最近この機能を コード内画像ジェネレーター で使った
      小さなSVGデータをインラインコードとして保存し、13KBのサンプラーを作った
      サンプルリンク
    • この構文が SQLやGraphQLテンプレート で使われる理由を今やっと理解した
      例:
      sql`SELECT * FROM users WHERE id = ${userId}`
      gql`query GetUser { user(id: ${userId}) { name email } }`
      
  • Dwitter は好きだが、eval の使用は止めてほしい
    その代わり、もっと多くの ショートカット を追加してほしい。例えば sMath.sign を意味するが、もっと拡張できたはずだ
    • こういうプラットフォームは、まず存在してこそルールを「破る」方法が生まれる
      後から変えると 固定された目標 が失われ、魅力が薄れる
      beta.dwitter.net はエンコーディングのアクセシビリティを改善しつつ、固定目標を保っている
      Math.sin や CSS 色エンコーダのような例外は実用上の理由で追加されたものだ
      Dwitter 2 では、もっと多くの 事前定義文字 を含めて、ユーザーが自分で拡張できるようにしようという議論もあった
      結局重要なのは 創造性 だ。ルールをひねること自体が創造的な行為でもある
    • 採点方法を UTF-8バイト単位 に変えれば、eval 問題を根本的に解決できる
      文字列リテラルでのデータ圧縮は可能だろうが、コード全体の圧縮は減るはずだ
    • dwitter.net を長く使っているが、eval 許可には満足している。ルールはルール(あるいはルールなし)だ
  • 関連例として、