手順4:プログラムコードを記述する

手順4:プログラムコードを記述する

総仕上げとして、現在時刻を表示するプログラムを作成します。下記のscriptタグを、headタグの中に記述してください。

記述が終わったら、早速動かしてみましょう。横長の時計ですので、端末を横画面にして確認すると良いでしょう。プレビュー画面上でも、デバッガー上でも、問題なく動いたでしょうか?

もしエラーが出る場合は、その内容から原因を調査します。慣れないうちは難しいかもしれませんが、JavaScriptのエラーはMonaca IDE下側「Console」という箇所に出力されます。エラーメッセージを手がかりに、スペルミスや半角・全角の間違い、クォテーションのつけ忘れなどを確認してください。

【画面6:実行結果(Android)】

プログラムコードの解説

今回のプログラムの重要なポイントは、setIntervalという関数を用いて1秒毎に同じ関数を呼び出す仕組みにあります。具体的には、プログラム最後の①と記述された箇所となります。実は、この箇所を除く部分はすべて関数定義となっており、プログラムの実行時はsetInterval関数だけが呼び出されます。setInterval関数では引数を2つ取り、それぞれ定期的に呼び出す関数と、その間隔をミリ秒で指定します。そのため、本例ではclock関数が、1秒間隔で呼び出されることになります。

次にclock関数(②と記述された部分)を見ていきます。まず③で、先ほどHTML内に指定したfigureというクラス名を持つ、すべてのDOM要素を取得します。DOM要素とは、DOM Elementオブジェクトとも呼ばれているもので、簡単に説明するとHTML内の各タグ(要素と言います)をJavaScriptで扱うための仕組みです。

今回の例では、document.getElementsByClassNameという組み込みのJavaScript関数を実行することで、引数とマッチしたクラス名を持つすべての要素をHTML内から検索してくれます。先ほどのHTMLと見比べてみると分かりますが、figureというクラス名を持つのは、数字を表示するために用意された8つのimgタグです。これらが配列形式として取得され、figuresという名前の変数にセットされます。

同様に④ではdocument.getElementById関数を用いて、指定したIDを持つHTML要素(今回の例ではdate)を取得します。HTMLでは同じIDを持つ要素を複数持つことは許されませんので、こちらは配列ではなく1つのDOM要素がdate変数にセットされることになります。

⑤では現在時刻を得るためにDateオブジェクトを作成し、now変数にセットしています。Dateオブジェクトには日付に関する様々な組み込みの関数が用意されています。⑥から⑧では、それらを駆使して時刻を取得し、画像や文字列に変換しています。Date関数の詳細についてはMDNのDateオブジェクトの解説を参考にすると良いでしょう。

最後に

今回のサンプルは、HTMLとJavaScriptそしてCSSを組み合わせて時計アプリを構成しています。どれも難しいテクニックは使っていませんが、その書き方は人により癖があるものです。自分が読みやすいようにソースコードを書き換えたり、コメントを追加したりしながら、テクニックを学んでいただけると幸いです。

次回もMonacaを用いた簡単なアプリの作成と解説を行います。お楽しみに!

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30