Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Flores amarillas para amig@

2025年09月21日に「Dev.to」が公開したITニュース「Flores amarillas para amig@」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

Web開発プラットフォームCodePenにて、「Flores amarillas para amig@(友人のための黄色い花)」というタイトルの作品が公開された。Web技術を使った表現の参考になるだろう。

出典: Flores amarillas para amig@ | Dev.to公開日:

ITニュース解説

今回の記事は「Flores amarillas para amig@」というタイトルで、Webブラウザ上で黄色い花が美しく舞うアニメーションを制作した事例を紹介している。これは、私たちが普段目にしているWebサイトやアプリケーションの見た目や動きが、どのような技術の組み合わせで作られているのかを具体的に示しているため、システムエンジニアを目指す人にとって、Web開発の基本的な仕組みを理解する良い機会となるだろう。

Webページは主にHTML、CSS、JavaScriptという三つの技術が組み合わさって作られている。HTMLはWebページの骨組みやコンテンツの内容を定義するもので、CSSはその骨組みを装飾し、色や形、配置といった見た目を整える役割を果たす。そしてJavaScriptは、Webページに動きやユーザーからの操作に応じた反応、つまりインタラクティブな要素を追加するためのプログラミング言語である。この作品も、これら三つの技術が密接に連携することで実現されている。

まず、Webページの骨組みとなるHTMLについて見てみよう。この作品では、PugというHTMLのプリプロセッサが使われている。プリプロセッサとは、より簡潔な記法でコードを記述でき、それが最終的に標準的なHTMLに変換されるツールを指す。このHTMLコードでは、画面全体を覆うコンテナとなる要素や、個々の花を表すための要素、そして花びらや花の中心部分といった、花の構造を構成する要素が定義されている。これらの要素自体にはまだ具体的な見た目はないが、これからCSSによって装飾されるための土台が用意されている状態だ。

次に、この作品の視覚的な表現と動きの大部分を担っているCSSについて掘り下げる。ここでもSCSSというCSSのプリプロセッサが利用されている。SCSSは、変数を使ったり、スタイルを階層的に記述したり、同じ処理を繰り返したりできる機能を提供し、複雑なCSSを効率的に書くことを可能にする。この作品のCSSコードは非常に長く、その中で黄色い花の具体的な形、色、サイズ、そして画面上の配置が詳細に定義されている。特に、花びらは::before::afterといった特別な要素(疑似要素)と、border-radiusという角を丸くするプロパティを組み合わせることで、滑らかな曲線を持つ複雑な形状が作られている。花の中心部分も同様に、適切なスタイルを適用することで円形に描かれている。

さらに、この作品の最も印象的な要素である「動き」は、CSSのアニメーション機能によって実現されている。CSSでは、@keyframesという特別なルールを使って、要素が時間経過と共にどのように変化するかを細かく定義できる。例えば、要素の色が徐々に変わったり、画面上を移動したり、回転したり、拡大縮小したりする一連の動きを段階的に記述できるのだ。この作品では、「花がふわりと上下左右に動く」、「花がくるくると回転する」、「花が呼吸するように拡大縮小する」、「花の茎が揺れる」、「要素が徐々に現れる(フェードイン)」といった様々なアニメーションが@keyframesで定義されている。

これらの定義されたアニメーションは、animationプロパティを使ってHTMLの各要素に適用される。animation-nameでどのアニメーションを実行するかを指定し、animation-durationでアニメーションが完了するまでの時間、animation-iteration-countでアニメーションを何回繰り返すか(無限に繰り返すことも可能)、animation-delayでアニメーションが始まるまでの待機時間などを設定できる。これにより、画面上の複数の花がそれぞれ異なるタイミングで、異なる種類の動きを無限に繰り返すことが可能になっている。また、transformプロパティも重要な役割を果たしており、これは要素の位置を移動させたり、角度を変えて回転させたり、大きさを変えて拡大縮小させたりするために使われる。この作品では、花びらを適切に配置したり、花全体を動かしたりする際にtransformが多用されている。加えて、SCSSの強力な機能である@forループを活用することで、多数の花や花びらを効率的に生成し、それぞれに少しずつ異なるスタイルやアニメーションを適用している点も注目すべきだろう。これにより、手作業では非常に手間がかかるような、多数の要素の見た目や動きを自動的に作り出している。

最後に、JavaScriptの役割について説明する。JavaScriptは、この作品において、画面上に複数の花を生成し、それぞれをランダムな位置に配置する役割を担っている。具体的には、まずHTMLの中から、花を配置する基盤となるコンテナ要素を取得する。次に、forループという繰り返し処理を使って、例えば25個の花を生成する処理を行っている。ループの各回で、新しくdiv要素という汎用的なHTML要素を作成し、それに花のスタイルを適用するためのCSSクラスを追加する。さらに、Math.random()というランダムな数値を生成する関数を使って、それぞれの花の画面上の表示位置(横方向と縦方向)をランダムに決定している。また、アニメーションが始まるまでの遅延時間もランダムに設定することで、すべての花が同時に同じ場所から動き出すのではなく、バラバラの位置から自然に、かつ非同期に動き出すような効果を生み出している。最後に、生成した花をコンテナ要素の中に追加することで、それらを画面に表示させている。

このように、今回の作品は、HTMLでWebページの構造を定義し、CSSでその構造に具体的な見た目と動きを装飾し、そしてJavaScriptで複数の要素を動的に生成・配置することで、黄色い花が舞う美しいアニメーションを実現している。システムエンジニアを目指す上で、このようなWebのフロントエンド技術の組み合わせと、それぞれの技術がどのような役割を担っているのかを理解することは、将来的にWebアプリケーションやサービスの開発に携わる上で非常に重要な基礎知識となるだろう。特に、ユーザーが直接触れるインターフェース(UI)や、その使い心地(UX)を向上させるためには、単に見た目をデザインするだけでなく、動きやインタラクションを効果的に活用することが重要になるため、今回のようなアニメーションの作り方を学ぶことは、その第一歩として非常に価値がある。これらの技術は互いに連携し合い、最終的にユーザーに豊かな体験を提供する動的なWebページを作り上げているのである。

関連コンテンツ