【ITニュース解説】リアルな眼球を描く。HTMLとCSSだけで。 第2章 ~こいつ、動くぞッ!?~
2025年09月26日に「Qiita」が公開したITニュース「リアルな眼球を描く。HTMLとCSSだけで。 第2章 ~こいつ、動くぞッ!?~」について初心者にもわかりやすく解説しています。
ITニュース概要
HTMLとCSSのみでリアルな眼球を描く技術に関する記事の続編。前作から6年を経て、新たなCSSテクニックを駆使し、静止画の眼球表現から一歩進んで「動く」眼球の実現方法を解説する。
ITニュース解説
HTMLとCSSだけでリアルな眼球を描くという挑戦は、一見すると非常に高度なプログラミング技術が必要に思えるかもしれない。しかし、この記事はHTMLとCSSというWebページの基本的な構成要素と装飾言語のみを使って、静止画にとどまらず、まるで生きているかのように動く眼球を表現する技術について解説している。これは、Web開発の基礎を学ぶシステムエンジニアを目指す初心者にとって、HTMLとCSSが持つ無限の可能性と進化を肌で感じられる貴重な事例だ。
Webページは、HTMLによってその構造が定義され、CSSによって見た目が装飾される。HTMLは「ここに段落がある」「ここに画像がある」といった情報の骨格を作り、CSSは「段落の文字を赤くする」「画像の周りに影をつける」といった見た目のデザインを担当する。通常、アニメーションや複雑なインタラクションにはJavaScriptが用いられることが多いが、この記事ではCSSの持つ表現力を極限まで引き出し、JavaScriptの力を借りずに動的な表現を実現している。
記事は「第2章」と銘打たれており、これは約6年前にも同様のテーマで眼球を描く挑戦があったことを示している。当時の技術の粋を集めて作成された眼球は、その時点で非常にリアルな仕上がりだった。しかし、Web技術は常に進化しており、6年の歳月を経てCSSにも新たなプロパティや機能が追加され、表現の幅は格段に広がった。今回の「第2章」では、その進化を取り入れ、単にリアルな眼球を描くだけでなく、「動く」という新たな要素が加わっている。
「こいつ、動くぞッ!?」というタイトルが示すように、今回の眼球は瞬きをしたり、視線を変えたりといったアニメーションを実現している点が大きな特徴だ。CSSでアニメーションを実装するには、主に@keyframesルールとanimationプロパティが使われる。@keyframesでは、アニメーションの開始から終了までの各段階(例えば0%、50%、100%の時点)で、要素のスタイルがどう変化するかを定義する。例えば、要素の位置を右に動かす、色を変える、透明度を変化させるといった具体的な指示を書き込む。そしてanimationプロパティで、その@keyframesで定義したアニメーションをどの要素に、どのくらいの速さで、何回繰り返すかなどを指定する。これにより、JavaScriptを使わずに滑らかな動きを表現できる。
眼球のリアルさを追求するためには、平面的なWeb要素をいかに立体的に見せるかが重要になる。この記事では、border-radius: 50%を使って正方形の要素を円形にし、さらにbox-shadowプロパティで影をつけることで、奥行きや立体感を生み出している。box-shadowは、要素の外側に影を落とすことで、光の当たり具合を表現し、単なる平面ではない印象を与える。
また、虹彩(瞳の色がついた部分)や瞳孔(光を取り込む黒い部分)、そして眼球に映り込むハイライト(光の反射)などの細かいディテールもCSSだけで表現されている。これには、主にradial-gradientやconic-gradientといったグラデーション機能が活用されている。radial-gradientは中心から外側に向かって色が変化する円形のグラデーションを作り、瞳の複雑な色合いを表現するのに役立つ。conic-gradientは中心を起点に、円周に沿って色が変化するグラデーションで、特定のテクスチャや模様を描くのに使用できる。これらのグラデーションを巧みに組み合わせることで、色の深みや複雑なパターンが再現される。
さらに、一つのHTML要素から複数のパーツを生み出すCSSの「疑似要素」である::beforeと::afterも重要な役割を果たしている。これらは、本来のHTML要素の内容とは別に、その要素の前後に仮想的な要素を追加する機能だ。例えば、divタグが一つあったとしても、div::beforeとdiv::afterを使えば、実質的に三つの独立した要素として扱うことができ、それぞれに異なるスタイルを適用できる。これにより、眼球本体、虹彩、瞳孔、ハイライトといった複数のパーツを、少ないHTML記述で表現し、それぞれを細かくスタイリングして重ね合わせることが可能になる。
眼球の動きを実現する上では、transformプロパティも不可欠だ。transformには、要素を移動させるtranslate、回転させるrotate、拡大縮小するscaleなど、さまざまな機能がある。これらを使って、瞳孔や虹彩の位置を微調整したり、眼球全体をわずかに回転させたりすることで、視線の変化や瞬きの動きを細やかに制御している。
このように、HTMLとCSSだけで高度なビジュアル表現やアニメーションを実現することは、Web技術の奥深さを示している。JavaScriptを使わないことで、ページの読み込み速度が速くなったり、より幅広いブラウザやデバイスで安定して動作しやすくなったりといったメリットも生まれる。また、Webの標準技術であるHTMLとCSSの理解を深めることは、将来的にシステムエンジニアとしてWebアプリケーション開発に携わる上で非常に重要な基盤となる。
この記事が示すのは、単に「眼球が描ける」という技術的な驚きだけではない。それは、私たちが普段目にしているWebページが、いかに洗練された技術とクリエイティブな発想によって作られているか、そしてWeb技術が今もなお進化し続けているかという事実だ。システムエンジニアを目指す初心者がHTMLとCSSを学ぶ際、このような実践的な事例に触れることは、技術への理解を深めるだけでなく、創造性を刺激し、未来のWeb開発への道を拓く大きなモチベーションとなるだろう。