【ITニュース解説】Flores amarillas
2025年09月21日に「Dev.to」が公開したITニュース「Flores amarillas」について初心者にもわかりやすく解説しています。
ITニュース概要
「Flores amarillas」と題された記事で、ある開発者が自身のWeb制作物(Pen)を公開した。Web上で自分の作品を共有する実践例として、システムエンジニアを目指す初心者に役立つだろう。
ITニュース解説
この記事は、HTMLとCSSというWebサイトを構築するための基本的な技術を使って、画面上に美しい黄色い花のアニメーションを描画する具体的な方法を示している。システムエンジニアを目指す上で、Webサイトがどのように作られ、動くのかを理解することは非常に重要であり、このような視覚的な例は学習の大きな助けとなるだろう。
まず、Webサイトの骨格を作るHTMLについて見てみよう。HTMLは、テキストや画像、動画といったコンテンツを配置し、それらの構造を定義する役割を担う言語だ。この記事のコードでは、「div」というHTMLタグが多用されている。divタグは、特定のコンテンツをグループ化したり、レイアウトの基準となる箱を作成したりするために使われる汎用的な要素だ。例えば、太陽を表す「sun」、花全体を表す「flower」、そしてそれぞれの花びらを表す「petal-1」から「petal-6」、地面を表す「ground」といった具合に、画面上のさまざまな部品がdivタグによって定義されている。それぞれのdivタグには「class」属性が付けられており、これによってCSSで特定の部品にスタイルを適用する際の目印となる。これにより、コードを読む人がどの部分がどのような役割を持っているのかを理解しやすくなる。
次に、Webサイトの見た目を装飾し、動きを加えるCSSの役割について解説する。CSSは、HTMLで定義された要素に対して、色や形、大きさ、配置といったデザインを指定するための言語だ。このコードでは、非常に多くのCSSプロパティが使われている。例えば、「width」や「height」で要素の幅や高さを指定し、「background-color」で背景色を設定している。要素を丸い形にするためには「border-radius: 50%」が使われ、Webページ上の特定の位置に要素を配置するためには「position: absolute」と「top」「left」といったプロパティが組み合わせて使用される。また、要素を回転させたり、拡大縮小させたりといった変形を行う際には、「transform」プロパティが非常に強力なツールとなる。今回の花びらの表現では、複数のdiv要素をtransformプロパティの「rotate」機能でそれぞれ異なる角度に回転させることで、中心から放射状に広がる花びらの形を作り出している。
このアニメーションの鍵となるのが、CSSの「@keyframes」ルールと「animation」プロパティだ。@keyframesは、要素のスタイルが時間の経過とともにどのように変化するかを定義する「動きの設計図」のようなものだ。例えば、「0%」の状態ではどのようなスタイルで、「50%」ではどう変化し、「100%」ではどのような状態になるか、といった具体的なスタイルの変化を指定できる。この設計図が完成したら、HTML要素に対して「animation」プロパティを使って、どのアニメーション(@keyframesで定義した名前)を、どのくらいの時間(duration)、どのような速さで(timing-function)、何回(iteration-count)実行するかなどを指定する。この記事のコードでは、「float」「light」「wave」という3つの@keyframesが定義されている。
具体的に、各要素がどのように描画され、アニメーションしているかを見てみよう。 太陽は、「sun」というクラスを持つdiv要素で構成されている。このdivは、border-radiusプロパティによって円形にされ、背景には「radial-gradient」という放射状のグラデーションが適用されている。これにより、単一の色ではなく、中心から外側に向かって色が変化する光の表現が可能になっている。さらに、「animation: light」が適用されており、太陽がゆっくりと明るさを増減するような光の脈動が表現されている。これは、@keyframes lightの中で、box-shadowプロパティの値が時間とともに変化するように定義されていることで実現している。box-shadowは通常、要素に影をつけるためのプロパティだが、拡散半径を調整することで光が広がるような効果を出すことも可能だ。
花は、「flower」というクラスを持つ親のdivの中に、「center」クラスを持つ中心部分と、「petal-1」から「petal-6」クラスを持つ6枚の花びらで構成されている。中心部分は単純な円形として描画され、花びらはそれぞれが小さなdiv要素として作成されている。これらの花びらは、position: absoluteプロパティによって花の親要素であるflower要素に対して相対的に配置され、transform: rotate()プロパティを使ってそれぞれが異なる角度に回転している。これにより、複数の小さな長方形が組み合わされて花びらの形状を形成しているように見える。花全体には「animation: float」が適用されており、@keyframes floatで定義されたとおり、y軸方向の移動と回転が組み合わされることで、花が風に揺られているような、ゆったりとした浮遊感が表現されている。
地面は、「ground」というクラスを持つdiv要素で描画されている。このdivは、特定の背景色を持ち、border-radiusプロパティの特殊な使い方によって、上辺が波打つような形状になっている。これは、border-top-left-radiusとborder-top-right-radiusの値を大きく設定し、左右で異なる値を指定することで実現されている。地面には「animation: wave」が適用されており、@keyframes waveの中でbox-shadowプロパティの値が時間とともに変化するように定義されている。これにより、地面がまるで呼吸しているかのように、かすかに波打つ視覚効果が加えられている。
このように、HTMLで要素を構造化し、CSSでそれぞれの要素の見た目を詳細に設定し、さらに@keyframesとanimationプロパティを使って時間軸での変化を与えることで、静的なWebページに動きと生命感を吹き込むことができる。システムエンジニアにとって、Webアプリケーションのフロントエンド開発は避けて通れない道であり、このような基礎的な知識と技術を具体的な作例を通じて学ぶことは、Web開発の面白さと可能性を実感する第一歩となるだろう。これらの技術は、単なるアニメーションだけでなく、ユーザーインターフェースの改善や、より魅力的なWeb体験の提供に直結する重要なスキルとなる。