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

【ITニュース解説】My Gume

2025年10月02日に「Dev.to」が公開したITニュース「My Gume」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

「My Gume」は、投稿者が自ら作成したWeb上で動くプログラム「Pen」を紹介する記事だ。自分の書いたコードを公開し、他の開発者と共有することの意義や楽しさを示している。

出典: My Gume | Dev.to公開日:

ITニュース解説

このニュース記事で紹介されている「My Gume」というプロジェクトは、Webブラウザ上で動作するシンプルなシューティングゲームを開発したものだ。これは、現代のシステム開発において非常に重要な役割を果たすHTML、CSS、JavaScriptという三つの基本的な技術がどのように組み合わされて一つのアプリケーションを作り上げているかを示す、分かりやすい事例と言えるだろう。

まず、ゲームの「舞台」となるのはHTMLという言語が作り出すWebページだ。このゲームでは、特に<canvas>(キャンバス)というHTML要素が重要な役割を担っている。これは、Webページ上に自由に図形や画像を描画できる特別な領域を提供するもので、ゲーム画面のすべてはこのキャンバスの中に描かれている。JavaScriptを使ってこのキャンバスを操作することで、キャラクターの描画や背景の表現が行われているのだ。

次に、CSSという言語は、そのキャンバスやWebページ全体の見た目を整える役割を持つ。このゲームでは、ブラウザのデフォルト設定による余白をなくしたり、キャンバスが画面全体に広がるようにしたりといった基本的なスタイルがCSSによって設定されている。これにより、ゲーム画面が意図した通りに表示され、プレイヤーはゲームの世界に集中できる。

そして、このゲームのほとんどすべての「動き」や「ロジック」を司っているのがJavaScriptというプログラミング言語だ。JavaScriptは、Webブラウザ上で動作する最も主要なプログラミング言語であり、このゲームの「脳」とも言える部分を構築している。

ゲームの動きを実現するJavaScriptの核心は「ゲームループ」と呼ばれる仕組みだ。これは、まるでパラパラ漫画のように、一瞬ごとに画面をクリアして新しい絵を描き直す作業を高速で繰り返すことで、あたかもキャラクターが滑らかに動いているように見せている。このゲームでは、requestAnimationFrameというブラウザの機能を使って、ディスプレイのリフレッシュレートに合わせて最適なタイミングでゲーム画面の更新を行っている。これにより、スムーズなアニメーションが実現されているのだ。

JavaScriptはまた、ゲーム内のさまざまな要素を管理するために「オブジェクト指向プログラミング」の考え方を取り入れている。例えば、プレイヤーキャラクター、敵キャラクター、そしてプレイヤーが発射する弾は、それぞれPlayerEnemyProjectileという「クラス」として定義されている。クラスとは、特定の種類のオブジェクト(モノ)が持つべき共通の性質(例:位置、色、大きさ、体力)や、そのオブジェクトが行える動作(例:描画する、移動する)をまとめた「設計図」のようなものだ。この設計図から具体的なキャラクターや弾の「インスタンス」(実体)を作り出すことで、ゲーム内の多様な要素を一貫性を持って管理している。

プレイヤーがキーボードを操作したり、マウスをクリックしたりすると、ゲーム内のキャラクターが動いたり、弾が発射されたりする。このようなユーザーの操作をゲームに反映させるために、JavaScriptは「イベント処理」という仕組みを利用している。addEventListenerという機能を使うことで、特定のキーが押されたり、マウスがクリックされたりといった「イベント」が発生したときに、あらかじめ定義しておいた処理(例えば、プレイヤーキャラクターの移動や弾の発射)を実行するようになっている。これにより、プレイヤーはゲームとインタラクティブにやり取りができる。

ゲームの面白さを大きく左右する要素の一つに「衝突判定」がある。このゲームでは、プレイヤーが発射した弾が敵に当たったか、あるいは敵がプレイヤーに当たったか、といったことをリアルタイムで判断している。具体的には、それぞれのキャラクターや弾の見た目を円形と見なし、それらの中心間の距離とそれぞれの半径を比較することで、衝突が起きたかどうかを計算する。衝突が検出された場合、弾が消えたり、敵の体力が減ったり、プレイヤーがダメージを受けたりといった「ゲームロジック」が実行され、ゲームの状況が変化する。

さらに、このゲームでは敵キャラクターが画面の上部からランダムな位置に、一定時間ごとに生成される仕組みも実装されている。これはsetIntervalのようなタイマー機能と、Math.random()のような乱数を生成する機能とを組み合わせて実現されている。乱数を使うことで、ゲームに予測不可能な要素が加わり、プレイヤーは毎回異なる状況に対応する必要があるため、より飽きずに楽しめるようになる。

プレイヤーが敵を倒すとスコアが加算され、プレイヤーの体力がゼロになるとゲームオーバーとなる。これらのスコア表示やゲームオーバーの判定、そしてゲームのリスタート機能なども、すべてJavaScriptによって管理されている。

このように、「My Gume」はシンプルなゲームでありながら、Web開発や一般的なシステム開発で用いられる基本的な概念や技術要素が凝縮されている。HTMLで構造を定義し、CSSで見た目を整え、JavaScriptで動的な振る舞いや複雑なロジックを実装するという流れは、Webアプリケーション開発の基本中の基本だ。システムエンジニアを目指す初心者にとって、このような身近なゲームを通じて、プログラミングやシステム設計の基礎的な考え方を実践的に学ぶ良い機会となるだろう。

関連コンテンツ

関連IT用語