【JavaScript入門】即時実行関数 (async () => {})() はいつ実行されるのか?

即時実行関数イメージ

1. はじめに

JavaScript を学習していると、以下のようなコードを見かけることがあります。

(async () => {
    console.log("実行された");
})();

この (async () => {})() は「即時実行関数(IIFE: Immediately Invoked Function Expression)」の一種です。
しかし「非同期関数(async function)」と組み合わせた場合、いつ実行されるのか? という疑問を持つ方が多いでしょう。

本記事では、(async () => {})()どのタイミングで実行されるのか を解説


2. 即時実行関数(IIFE)とは?

通常の関数は定義しただけでは実行されません。

function test() {
    console.log("Hello");
}
test(); // ← 呼び出しが必要

一方、即時実行関数は「定義と同時に実行される」特殊な書き方です。

(() => {
    console.log("Hello");
})(); // ← 定義と同時に呼び出し

これにより グローバル変数の汚染を避けつつ、すぐに処理を開始 できます。


3. 非同期版即時実行関数 (async () => {})()

非同期処理を使いたい場合、以下のように async を付けて書きます。

(async () => {
    const data = await fetch("https://example.com/data.json");
    console.log(await data.json());
})();

ポイントは以下の通りです:

  • async をつけることで await が使える
  • 戻り値は Promiseオブジェクト になる
  • 定義した瞬間に即実行される

4. 実行タイミングはいつ?

結論から言うと、スクリプトが実行された瞬間に即時実行される という点は通常の IIFE と変わりません。

ただし、HTML 内のどこにスクリプトを書いたかで挙動が変わります。

(1) <head> 内に記述した場合

<head>
<script>
(async () => {
    console.log("head内で実行される");
})();
</script>
</head>

➡ ページの DOM 構築前に実行されます。


(2) <body> の末尾に記述した場合

<body>
    <p>本文</p>
<script>
(async () => {
    console.log("DOM構築後に実行される");
})();
</script>
</body>

➡ DOM が構築された後に実行されるため、要素操作に便利です。


(3) <script defer> を使った場合

<script defer>
(async () => {
    console.log("defer後に実行される");
})();
</script>

➡ DOM の構築完了後に実行されます。


5. await の処理タイミング

関数自体は スクリプト読み込み時に即実行 されますが、await を使った部分は 非同期処理の完了を待って再開 します。

つまり:

(async () => {
    console.log("開始");
    await new Promise(r => setTimeout(r, 1000));
    console.log("1秒後に実行");
})();

実行結果は次のようになります。

開始
(1秒待機)
1秒後に実行

6. まとめ

  • (async () => {})()非同期即時実行関数
  • 実行タイミングは スクリプトが読み込まれた瞬間
  • HTML のどこに書くか、defer / async を使うかでタイミングが変わる
  • await 部分は 非同期処理の完了後に続きが実行される

HTML・CSS・JavaScriptでスマホ&PC対応のダークモードを自動手動切替 実装

スマホ&PC対応のダークモード

HTML・CSS・JavaScriptのみを使って、スマホとPCの両方に対応したダークモードの自動&手動切り替え機能を実装する方法を詳しく解説します。


ダークモードに対応するメリット

  • 夜間の閲覧がしやすく、目の負担を軽減?
  • デバイスのバッテリー消費を抑制?(OLEDディスプレイの場合)
  • ユーザーのOS設定に合わせたUIで満足度向上

方法1:CSSだけで実現する自動ダークモード

ユーザーのOSやブラウザの設定に応じて自動的に切り替えるには、以下のように prefers-color-scheme メディアクエリを使います。

/* 通常(ライトモード) */
body {
  background-color: white;
  color: black;
}

/* ダークモード */
@media (prefers-color-scheme: dark) {
  body {
    background-color: #121212;
    color: white;
}

方法2:JavaScriptとlocalStorageを使った手動切り替え

ユーザーがボタンを使って自分でライト/ダークを切り替えたい場合は、以下の3つのファイルを用意します。

1. HTMLコード

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>ダークモード切替</title>
  <link rel="stylesheet" href="style.css" />
</head>
<body>
  <button id="toggle-theme">テーマ切り替え</button>
  <h1>こんにちは、世界!</h1>
  <p>ライト/ダークテーマを自動&手動で切り替えできます。</p>
  <script src="script.js"></script>
</body>
</html>

2. CSSコード

:root {
  --bg-color: white;
  --text-color: black;
}

[data-theme="dark"] {
  --bg-color: #121212;
  --text-color: white;
}

body {
  background-color: var(--bg-color);
  color: var(--text-color);
  font-family: sans-serif;
  transition: background-color 0.3s, color 0.3s;
}

button {
  margin: 1rem;
  padding: 0.5rem 1rem;
  cursor: pointer;
}

3. JavaScriptコード

const toggleButton = document.getElementById('toggle-theme');
const userPrefKey = 'theme';

function applyTheme(theme) {
  document.documentElement.setAttribute('data-theme', theme);
}

function initTheme() {
  const savedTheme = localStorage.getItem(userPrefKey);
  if (savedTheme) {
    applyTheme(savedTheme);
  } else {
    const systemPrefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
    applyTheme(systemPrefersDark ? 'dark' : 'light');
  }
}

toggleButton.addEventListener('click', () => {
  const current = document.documentElement.getAttribute('data-theme');
  const newTheme = current === 'dark' ? 'light' : 'dark';
  applyTheme(newTheme);
  localStorage.setItem(userPrefKey, newTheme);
});

initTheme();

スマホ&PC対応状況(2025年最新)

デバイス/ブラウザ対応状況
iOS Safari✅ 完全対応
Android Chrome✅ 完全対応
Windows Edge / Chrome✅ 完全対応
macOS Safari / Chrome✅ 完全対応

ユーザーフレンドリー&SEOにも有利なダークモード対応

今回紹介したように、HTML・CSS・JavaScriptだけで、OS設定連動+手動切替が可能なダークモード対応を簡単に実装できます。
ダークモードは単なる見た目だけでなく、ユーザー体験やサイト評価向上に貢献します。ぜひあなたのWebサイトにも導入してみてください。


MBTI診断 | あなたの性格タイプを分析

PNGをファビコン(favicon.ico)に変換

Googleサーチコンソールに反映されるための最低限のSEO構造とは

Googleサイト確認のTXTレコードをnslookupで確認する方法

PHPで複数ファイルを順番に削除する方法

ロリポップSSH php composer インストール

ロリポップSSH php composer インストール

ロリポップの「ハイスピードプラン」の場合SSH接続できる。

今利用しているphpのバージョンは7.4なので、バージョンに合わせてcomposerをインストールする

Composerインストール

curl -sS https://getcomposer.org/installer | /usr/local/php/7.4/bin/php

composerのインストール状態を確認

/usr/local/php/7.4/bin/php composer.phar -v

Composerを使って 何かインストールする場合

/usr/local/php/7.4/bin/php composer.phar require ○○

~/webが公開ディレクトリなので ~/vendorを作った方がいい

php側で呼び出す

// Composerのオートローダーを読み込む
require_once __DIR__ . '/../vendor/autoload.php';