【ITニュース解説】Flores Amarillas para my best friend luhana
2025年09月16日に「Dev.to」が公開したITニュース「Flores Amarillas para my best friend luhana」について初心者にもわかりやすく解説しています。
ITニュース概要
開発者が親友ルハナへ贈る「黄色い花」をテーマに、自身が作成したデジタル作品「Pen」をdev.toで公開している。
ITニュース解説
ニュース記事が紹介する作品は、Webブラウザ上で黄色い花がアニメーションし、マウスの動きに反応して新たな花が咲くインタラクティブなコンテンツだ。これはCodePenという開発環境で作成されており、HTML、CSS、そしてJavaScriptというWeb開発の基本的な三つの技術が組み合わされて動いている。
まず、CodePenについて説明する。CodePenは、HTML、CSS、JavaScriptのコードをWebブラウザ上で直接書き、その場で実行結果を確認できる便利なツールだ。自分のアイデアを素早く形にしたり、他の人が作ったコードを試したりするのに使われる。今回の記事は、このCodePen上で「ペン」(作品)として公開されているアニメーションを紹介している。
作品の基盤となるHTMLは、Webページの構造を定義する言語だ。この作品では、<canvas>という特別なHTML要素が使われている。<canvas>は、Webページ上に用意された「描画領域」のようなもので、この領域に対してJavaScriptを使って自由に図形を描いたり、画像を配置したり、アニメーションさせたりできる。HTMLの役割は、この描画のための領域をWebページに配置することにある。
次に、CSSはWebページの見た目を整えるための言語だ。色や配置、フォントの種類など、Webサイトのデザインに関するあらゆる指定を行う。この作品では、背景色を設定したり、先ほどの<canvas>要素がブラウザの画面いっぱいに広がるようにしたりといった、全体的な見た目の調整にCSSが使われている。HTMLが骨格を作り、CSSはその骨格を美しく見せる役割を担っている。
そして、この作品の核となるのがJavaScriptだ。JavaScriptはWebページに動きやインタラクティブな機能を追加するプログラミング言語で、今回の作品のアニメーションやマウスへの反応はすべてJavaScriptによって制御されている。
JavaScriptは、まずHTMLで用意された<canvas>要素を取得し、その上で実際にグラフィックを描画するための「描画コンテキスト」と呼ばれるものを用意する。これは、描画の命令を出す窓口のようなもので、この描画コンテキストを通じてJavaScriptは様々な命令を出し、円を描いたり、線を引いたり、色を塗ったりして、花の形や花びらの一つ一つを画面上に描き出している。
花や花びらが静止しているだけでなく、まるで生きているかのようにゆらゆらと動いたり、新しい花が咲いたりするアニメーションもJavaScriptの仕事だ。これを実現するために、JavaScriptはrequestAnimationFrameという特別な機能を利用している。requestAnimationFrameは、Webブラウザが画面を最もスムーズに更新できる最適なタイミングを判断し、そのタイミングに合わせてJavaScriptの描画処理を何度も繰り返し実行するよう指示する。これにより、少しずつ絵を変化させながら連続して表示することで、なめらかな動きが生み出される。JavaScriptは、この繰り返し処理の中で、花の位置や形、色などを少しずつ計算し直し、毎フレーム新しい状態を描画することでアニメーションを実現しているのだ。
さらに、この作品はユーザーの操作に反応する「インタラクティブ性」も持っている。マウスカーソルを動かすと、その位置に新しい花が咲く。これは、JavaScriptがマウスの動き(マウスイベント)を常に監視しているためだ。ユーザーがマウスを動かすたびに、JavaScriptはマウスの現在の座標(X座標とY座標)を取得し、その情報をもとに、指定された場所に新しい花を描画する処理を実行している。このように、ユーザーの入力に応じてWebページの内容を動的に変化させることは、現代のWebアプリケーションでは非常に一般的な機能であり、JavaScriptがその中心的な役割を担っている。
この作品のJavaScriptコードは、オブジェクト指向プログラミングという考え方を用いて書かれている点も注目すべきだ。オブジェクト指向プログラミングとは、現実世界の物事をプログラムの中でも独立した「部品」(オブジェクト)として扱い、それぞれの部品が自分の情報(色、形、位置など)と、できること(動く、描くなど)を持っている、という考え方だ。この作品では、「花」や「花びら」といった要素をそれぞれ「クラス」(設計図のようなもの)として定義し、そのクラスから複数の「オブジェクト」(具体的な花や花びらの実体)を生成して画面に表示している。
例えば、「花」というクラスには、その花がどの位置にあり、どのような色で、どれくらいの大きさで、どのように動くかといった情報を持たせ、さらに「自分自身を描画する」という機能を持たせることができる。このように設計することで、たくさんの花を画面に表示する場合でも、一つ一つの花のコードを別々に書く必要がなくなり、コードの管理がしやすくなり、複雑なアニメーションでも整理して作りやすくなる。これは、大規模なシステム開発において、コードの再利用性や保守性を高める上で非常に重要なプログラミングの設計思想の一つだ。
システムエンジニアを目指す初心者にとって、このような作品から学べることは多い。Webフロントエンド開発の基本であるHTML、CSS、JavaScriptの連携動作を具体的に理解できる。特にJavaScriptによるグラフィック描画やアニメーション、ユーザーインタラクションの実装は、Webアプリケーションのユーザーインターフェース(UI)を魅力的にするために不可欠なスキルだ。また、オブジェクト指向プログラミングの概念を具体的なコードを通して体験することは、より複雑なシステムを設計・開発するための基礎力を養う上で役立つ。CodePenのようなツールを使って、自分でコードを試行錯誤しながら動かすことで、これらの技術に対する理解を深め、将来のシステムエンジニアとしてのキャリアに繋がる貴重な経験を得られるだろう。