メインコンテンツへスキップ

CSSだけでマイクラが爆誕!その完成度が話題に

·3 分
2025/05 CSS マインクラフト Web開発 フロントエンド 技術デモ

CSSだけでマイクラが爆誕!その完成度が話題に

引用元:https://news.ycombinator.com/item?id=44100148

globie 2025/05/26 20:56:20

CSSで見た中で間違いなく一番すごいね。これ見てすぐに「A Single Div」[0]を思い出したよ、あれは11年間で見たCSSデモの中で一番クールだったんだ!今回のこれが一番だね。じっくり見るよ。ありがとう!
[0]: https://a.singlediv.com/

ericrosedev 2025/05/27 01:35:04

この最新すごい技術見た?
https://diana-adrianne.com/purecss-lace/

qwertox 2025/05/27 05:42:43

信じられないね。最初はすごく疑ってたんだけど、neckruffとかlacetopとか見てみたら、本当に全部background-imageで生成されてるんだね。でも画像じゃなくて特定の色gradientsとかbox-shadowsとか使ってるみたいだ。

ryukoposting 2025/05/27 02:39:39

うわー、Dark Readerで見たられいちゃん(作品のこと?)が完全にぐちゃぐちゃになったよ。

lelandfe 2025/05/27 01:45:20

うわー、mobile Safariだとダメだねこれ。ズームしたりスクロールしたりするとページがしょっちゅうクラッシュするよ。

reaperducer 2025/05/27 01:57:19

俺のiPhone 14ではちゃんと動いたよ。

lelandfe 2025/05/27 02:22:39

実際、俺のMBPでも似たような問題があったなー。タブは落ちなかったけどね。ChromeとSafariでズームしたりスクロールしたりするとdivが再レンダリング(repaint?)されて、全部がそうなるわけじゃないんだ。例えばChromeだとこれ:
https://imgur.com/a/VWCAL9G
Firefoxだとスクロールは大丈夫だけどめちゃくちゃ遅いよ。

yonatan8070 2025/05/27 04:04:55

俺のPixel 8でFirefoxで見たら驚くほどスムーズだったよ。

asimovDev 2025/05/27 04:52:45

面白いね。俺のMBPのSafariではちゃんと動いたよ。開発者ツールで使われてるスタイルも見て回ったんだ。

owjofwjeofm 2025/05/27 08:02:12

これまで見た中で一番好きなのはこれかな:
https://lyra.horse/css-clicker/

koynoyno 2025/05/28 05:24:41

1852秒? かけて良かった! クリッカー系が嫌いじゃなきゃ,これやってみて.絶対愛を込めて作られてるよ.

i_am_a_peasant 2025/05/28 00:14:55

僕の長いダメ人生選択リストにまた一つ追加されました,午前2時になっても寝ないで,1000万ビュー達成するの待ってるんだからさ :)))))

i_am_a_peasant 2025/05/28 00:17:34

いやー,マジで最高だったね

Groxx 2025/05/27 22:00:20

あのエンドゲームはマジで完璧だよ

marky1991 2025/05/28 15:48:28

変だな,最後のブログ投稿見たらfirefoxが落ちたんだけど.

mikeponders 2025/05/27 21:11:51

ヤバいね,完全にハマった!

kataqatsi 2025/05/27 18:17:54

彼女の講演を聞く機会があってさ.他にも素晴らしいCSS projectsをたくさんやってるんだよ.https://lynnandtonic.com/work/
Also love seeing Phoenix devs mentioned!

hbn 2025/05/27 19:45:18

クッソ,あのサイト単体でもすごいのに,毎年新しいWeb technologies学ぶためにリデザイン/書き直してるんだってさ.https://lynnandtonic.com/archive/
これ,暇なときにインスピレーション得るためにブックマークしといたよ.

Waterluvian 2025/05/26 23:08:44

これ,めっちゃインタラクティブに見えるのにそうじゃないのが多いんだけど.これって僕がモバイルだから? それとも何も動かないの?

gs17 2025/05/27 00:38:10

最初のページのはどれもインタラクティブじゃないと思うな.次のページにいくつかあるかも(ホバーでペンの色が変わるの1個だけ見つけたよ).

shultays 2025/05/27 13:49:31

でも全部個別のdivなんでしょ

benjaminaster 2025/05/27 19:57:37

作者だよ!話題になってサイト落ちちゃったんで Github Pages を使ってね: https://benjaminaster.github.io/CSS-Minecraft/
3年前CSSの限界と :has() を試すために作ったんだ。
解説は Simon Willison が書いてくれたからもういいかな: https://simonwillison.net/2025/May/26/css-minecraft/
デスクトップの Chromium か Firefox 推奨。
ソースコードは Github: https://github.com/BenjaminAster/CSS-Minecraft
動画もどうぞ: https://www.youtube.com/watch?v=OH8-Y9frP5k

mudkipdev 2025/05/28 03:11:01

これはマジで過小評価されてたね、すごいじゃん

simonw 2025/05/26 23:48:56

これめっちゃ賢くて、かなりエレガントだね。どう動くか俺なりにまとめたノートをここに置いといたよ: https://simonwillison.net/2025/May/26/css-minecraft/

johnisgood 2025/05/27 10:30:48

こういう感じでCSS CAPTCHA(Torサイト向け)とか、サインアップ/ログインのモーダルとか、色んなものが作られてるんだね。

cmrx64 2025/05/27 02:49:20

いい記事だね、ありがとう。組み合わせ爆発について話してる!

assimpleaspossi 2025/05/27 07:20:00

でも全然実用的じゃないし、CSSの使い道としてはやりすぎでしょ。

sd9 2025/05/27 08:59:06

当たり前じゃん… だから作ったんだよ。楽しむためと、できるかどうか試すためにね。

assimpleaspossi 2025/05/27 17:41:17

CSSを意図しない使い方しちゃう人が多すぎになりそうで心配だわ。今だってSVG使うべきなのにCSSでやろうとする人多すぎるし。

hluska 2025/05/27 19:11:43

こういうCSS実験はCSSの歴史と同じくらい昔からあるんだよね。CSS Zen Gardenってサイトでは、みんなで基本的なHTMLをCSSだけで全然違う見た目にしてたコミュニティもあったし。(今ググったらCSS Zen Gardenだって。全然ダメな検索だったのにGoogleすげぇな。)
中には変なもの作る人もいたけど、CSSの限界を知ってその知識でCSSを進化させた人もいるわけ。だから、俺的にはやっちゃいけないことを見つけることから人は成長できるって信じてるんだ。

もっとコメントを表示(1)
assimpleaspossi 2025/05/28 13:19:38

CSS Zen Gardenって、この記事で言ってるみたいな実験とは違うよ。GardenはHTML要素を色々な方法でスタイルできるって見せるもので、この記事の主題にあるような画像を作ったり操作したりするためのものじゃないんだ。そうは言っても、俺もGardenを何年も見てないから、もしそういうのを見つけたなら、それは…一つだけ見つけたってことだね…んで、俺の最初のコメントに戻るんだけどさ:そういうのは実用的じゃないし、CSSの用途じゃないし、避けるべきだって。

hluska 2025/05/30 19:55:53

つまりさ、あんたは実験から学ばないし、あんたの学習スタイルだけが正しいってわけ?…まあ議論する価値ないけど、科学はそれが間違いだって証明してるんだよね。認知心理学でも読んだ方がいいんじゃない?

dymk 2025/05/28 16:28:47

これって要は”暴力的なビデオゲームは学校での銃乱射事件の原因だ”って考え方と一緒だよね。

johnisgood 2025/05/27 19:43:37

CSS Minecraftとか、CSS CAPTCHAs、サインアップ・ログインモーダルみたいなのはSVGじゃ無理なんだよ。こういうのはJSなしのウェブサイト(例えばTorとかね)に必要なんだ。CSSとHTMLはこういう使い方にピッタリだよ。

spookie 2025/05/27 20:03:16

むしろこういうテクニックはJSなしで何か作れるようにしてくれるんだ。俺は未だにW3Cの誰かがちゃんと仕事して、素のHTML + CSSでアクセス可能なハンバーガーメニューの仕様とか出してくれるのを待ってるんだけどね。
もしくは、JSなしで(操作なしでも)状態が変わるような、ちゃんとしたdetails要素とかさ。マジで頼むわ。

popcorncowboy 2025/05/27 10:23:56

マジでムカつきたいなら、HTMLのチェックボックスでレンダリングされたDoomなんてどう?https://healeycodes.com/doom-rendered-via-checkboxes

skulk 2025/05/26 21:02:24

どうやって状態を管理してるんだろう?って思った人いる?ソースコードをちょっと見たら、ラジオボタンを使ってて、HTMLには置ける全てのブロックが入ってるみたいだよ。

johnh-hn 2025/05/26 21:30:21

カメラの状態がどうなってるか気になる人いる?ボタンが:active状態の時にアニメーション動かして、そうじゃない時は一時停止させてるっぽいよ。

globie 2025/05/26 21:12:59

なるほど、確かにね。なんでワールドが9x9x9しかないんだろうって思ってたんだけど、4.6万行のコードで各ブロックが空気とか石とか草とか土とか木とか葉っぱとかガラスになりうることを表現してるのか。ちょっと好きかも。

donatj 2025/05/27 10:06:36

CSSだけで気の利いたことやるならradio buttonsとかcheckboxesってマジで魔法だよね。前はピュアなHTML/CSSだけでタブとかトグルとか色々面白いのがあったけど、アクセシビリティの監査通らなかったんだよね。

90s_dev 2025/05/26 21:14:12

いやー、CSSのデモで見た中で多分一番ハッキーなやり方だね。最高!

movedx01 2025/05/27 12:49:07

いつもそうだ、絶対radio buttonsだよ。

noman-land 2025/05/27 01:18:03

信じられないくらいすごいね。2年半前には全然気づかれなかったみたいだけど。
https://news.ycombinator.com/item?id=33579407

flippyhead 2025/05/27 14:46:49

ほら、これマジでヤバいね。運って本当に色んなことの要因になってるんだな!

avestura 2025/05/27 16:07:27

またHug of Deathか。ウェブサイトには”再度トラフィックを処理するにはFirebaseコンソール経由でアップグレードする必要があります”って書いてあるね。動いてた時のWayback Machineはこちら
https://web.archive.org/web/20250317122419/https://benjamina

faresahmed 2025/05/27 18:36:03

こういうサービスに依存してるウェブサイトってどれだけあるんだろうって考えさせられるね。ウェブっていつも脆かったけど、公開初日に5万人くらいのユーザーで落ちちゃうサイトを見るとちょっと悲しいな。問題起こしにくいGitHub Pagesですら前はリンク壊れたことあったしね。
[0]: https://github.blog/news-insights/product-news/new-github-pa

frozenlettuce 2025/05/27 14:18:32

これまで見た中で一番最高のAnti-Firebase投稿だわ。

craigseeman 2025/05/27 14:41:27

あー、これ作者にとってものすごい負担にならないといいけどな :( 昨日の夜は動いてたのにね。

ycombinatrix 2025/05/27 17:37:32

このプロジェクト、バックエンド使ってないじゃん、だからFirebaseいるの?GitHub Pagesなら帯域幅無制限なのに。

simonw 2025/05/27 07:06:19

もしサイトが混んでて見れなかったら、こっちの代替URL見てみてね。
https://benjaminaster.github.io/CSS-Minecraft/

bradly 2025/05/26 23:47:54

めっちゃ感動した!中年になって青春時代に戻ったみたいで(退行か進歩か)、HTMLとCSSだけでアプリとかサイトいっぱい作って、すごく楽しんでるんだ。
まだ解決されてないと思ってるのは、ピュアなCSSでランダムっぽい数字を作ること。数学関数とかブラウザ属性でほぼいけそうだけど、信頼できる方法が見つからないんだよね。

simonklitj 2025/05/27 10:07:24

これ、使えるかな?
https://medium.com/hypersphere-codes/randomness-in-css-b55a0

bradly 2025/05/27 16:36:42

残念だけど、その解決策はFirefoxとかSafariでは動かないんだよね。

rebane2001 2025/05/28 20:11:58

クリックできるものになら、複数のオブジェクトのz-indexをアニメーションさせることで、かなり簡単にランダム性を持たせられるよ。

bradly 2025/05/29 16:59:55

へぇ、面白いね!このアプローチは知らなかったから、試してみるのが楽しみだよ。ジェネラティブカラーに使えるCSS変数設定に使えると思う?

Cthulhu_ 2025/05/27 09:11:51

役に立つかって?自分で確認せずに質問(というか、質問の形で解決策を提案すること)するのは変だと思うな。君の質問に答えると、LLMはCSSでランダムな数字は生成できないって断言してるよ。

reverendsteveii 2025/05/27 15:27:40

ああ、どうやら問題を前にして”AI”って叫ぶのが、ソフト開発したことない人たちが開発分かってる風を装う最近のトレンドみたいだね。

nightpool 2025/05/27 03:44:30

HTML視点で見るとマジで信じられないレベルだけど、Minecraftのコンセプトがどれだけキャッチーでシンプルかってことの証明でもあると思うんだよね......ちょっといじってみただけで、さっそく可愛い木と丘を作っちゃったよ: https://i.imgur.com/PjlDWo5.png

patates 2025/05/27 06:28:58

Minecraftが最初から達成したことを要件として設定すると想像してみてよ:1)史上最も成功したゲームの一つになること。2)基本的なゲームメカニクスがHTMLとCSSだけで(JSなしで)実装可能であること。こういう”偶然”すごいことが起こった時、この思考実験するの結構好きなんだ。

ElCapitanMarkla 2025/05/27 10:51:44

10年以上前のKeith Clarkさんのプロジェクトを思い出したよ。これとか:https://keithclark.co.uk/labs/css-fps/desktop/
あとこれ:https://keithclark.co.uk/labs/css-3d-shadows/

もっとコメントを表示(2)
Kholin 2025/05/27 04:03:38

ボタン要素の:active擬似クラスを使ってanimation-play-stateの値を変更することで、回転や移動の制御を実現してるのがマジで素晴らしいね。ここら辺見てみて:https://github.com/BenjaminAster/CSS-Minecraft/blob/main/mai...

kapildev 2025/05/27 12:48:43

”Bandwidth Quota Exceeded”って表示が出たよ。

bart7782 2025/05/27 13:54:52

Web Archiveでも見られるよ。https://web.archive.org/web/20250317122419/https://benjamina...

pkstn 2025/05/27 12:50:56

俺も同じだよ。サーバーレスの流行に乗っかるべきじゃなかったかもね......結局スタティックなサイトなんだし :D

crocowhile 2025/05/27 12:59:20

GitHubからアーカイブをダウンロードしてローカルで動かすって手もあるよ。ここから取れる:https://github.com/BenjaminAster/CSS-Minecraft/archive/refs/... 等々

low_tech_punk 2025/05/27 03:12:41

Pugはこのデモの隠れた主役だね。このテンプレートエンジンのおかげで、4重のネストされたループでUIを力技で作れたんだ。すごい!

tantalor 2025/05/27 12:15:25

Pugってここで別のテンプレートエンジンとか、単なるカスタムスクリプトじゃできないような特別なことしてるの?文字列結合なんてそんなに複雑じゃないのにさ。

perilunar 2025/05/27 13:02:21

JSで全部要素作ってHTML保存すればいいんじゃね?HTML+CSSオンリーとか言いつつ結局HTML+CSS+JS使ってるし。

simonw 2025/05/26 23:20:23

CSSはたった480行だってさ!
https://github.com/BenjaminAster/CSS-Minecraft/blob/main/mai……
でもHTMLは46022行もあるんだよね (3.07MB)

akomtu 2025/05/27 04:45:28

最近WebGLのシェーダーだけでQuakeを実装してるの見たけど、これは別次元だわ。
https://www.shadertoy.com/view/lsKfWd
HTML/CSSもプログラミング言語になったね。

teddyh 2025/05/27 12:08:25

すごいのはマジでわかるけど、あれは”Quake”全体じゃなくて;単にQuakeの難易度選択の通路だけなんだ。敵とかいないし。

felineflock 2025/05/26 21:08:25

俺の理解合ってるか教えてくんない?
これってvoxelは<input type=”radio” />で実装されてるの?
各voxelの各面は<label>で設定されてて、それぞれCSSクラスが違う。
ブロックの種類ごとにvoxelがあって、一度に一つだけアクティブになる。
<input>は9x9マスで高さ10ブロック、ブロック種類の数だけ並んでて(合計約6500個)。
これ全部、カメラ操作(上下見たり、上下移動したり、前後移動したり、回転したり)に対応するCSSクラスが付いた<div>で囲まれてるんだ?
マジ天才じゃん!

assimpleaspossi 2025/05/27 07:23:09

ちなみに、<input>タグは閉じスラッシュ使わないし必要ないよ。どのHTML仕様でもずっとそう。
https://html.spec.whatwg.org/dev/input.html#the-input-elemen

immibis 2025/05/27 08:55:05

それ、HTMLでの解釈を邪魔しないままXHTMLとも互換性持たせるために、たまにやることなんだよね。

assimpleaspossi 2025/05/27 13:07:56

XHTML使ってるならともかく、そうじゃないなら互換性のための手間とかいらないでしょ。あの人がXHTMLで配信してるなんて思えないし。

pests 2025/05/27 17:34:04

他にも終了タグ省略できるけど、自己終了タグにしちゃダメなタグとかあるよ。例えば
<ol>
<li>one
<li>two
</ol>

文脈的におかしいタグが出てきた時に要素を自動で閉じるルールがあるから、最後の</ol>すら省略できるんじゃないかって思う時もある。

ThunderSizzle 2025/05/27 18:24:03

それ知ってるよ、でも多くの開発者は知らないんだ。<li>タグみたいに自動で閉じないのは、なぜだ?って混乱するのが楽しみだね。曖昧さって危ないこともあるから、HTMLタグを閉めないのは、僕の経験だとそういう原因になることがあるんだ。

assimpleaspossi 2025/05/27 17:39:12

そういう”他の開発者”ってのは”hobbyists”って言うんだよ。他にも言い方あるけど、ここでは挙げないでおくね。

ThunderSizzle 2025/05/27 18:21:57

時々”他の開発者”は”coworkers”でもあるんだ。僕は曖昧さが少ない方が、可能ならより良いことだって分かったんだ。何も含められないタグをセルフクローズするのは、”hobbyists”のためにも曖昧さをなくす一つの例だね。

assimpleaspossi 2025/05/27 22:52:54

そのタグがセルフクローズだって知ってないと、終わりのスラッシュは付けられないよね?だから、もしそれがセルフクローズだって既に知ってるなら、なんで余計な負担を加える必要があるの?
意味ないじゃん。
もしセルフクローズの要素にコンテンツを追加したいなら、ここで話してる問題よりもっと大変な問題を抱えてるってことだよ。

immibis 2025/05/29 15:40:10

それは例えば、出力がHTMLとXHTML両方で有効であってほしいライブラリによって行われることがあるんだ。HTMLではそれは構文エラーじゃないよ—HTMLには構文エラーがないからね。HTML5の仕様では、既存のHTML4パーサーのPostel’s lawの奇妙な癖を全て成文化しようとしたんだ。このケースでは、もしあなたがパーサーなら、余計な/をどう無視するかを教えてくれるよ。何も構文エラーじゃない。

assimpleaspossi 2025/05/31 18:26:21

構文エラーだなんて言ってないよ。標準で規定されてないって言ったんだ。スラッシュをそこに付けても意味ないし、何も効果ないし、ブラウザはそれを無視するだけだよ。むしろ、問題を引き起こす可能性すらあるんだ:https://github.com/validator/validator/wiki/Markup-%EF%BC%BB-Vo…
だから、全体としてやらないのが一番良いんだ。もしHTMLとXHTML両方に準拠する必要があるって思うなら、彼らはその努力を失敗させるであろう他のマークアップで、もっと大変な問題を抱えてる可能性が高いって賭けてもいいよ。

taosx 2025/05/26 21:17:28

マジでびっくり。タブを何百個も開いてるけど、LinuxのChromeでは問題ないよ。

echoangle 2025/05/26 21:30:13

ある時点でタブの数は関係なくなると思うな、だってタブはアンロードされて状態はおそらくディスクに保存されるから。開かない限り、開いてるだけでブラウザが遅くなることはないはずだよ。

DirkH 2025/05/28 18:12:09

他にも、それを見て、どれだけ大変だったかって分かって、思わず汚い言葉が複数出ちゃった人いる?これマジ信じられないくらいすごいよ。

記事一覧へ

海外テックの反応まとめ
著者
海外テックの反応まとめ
暇つぶしがてらに読むだけで海外のテックニュースに詳しくなれるまとめサイトです。