腎臓ソーセージ
「JavaScriptってよく聞くけど、Javaと何が違うの?」って思ってる人、多いよね。結論から言うと全くの別物だよ!JavaScriptはWebページに動きをつける言語で、ブログやサイト運営には欠かせないスキル。今回はブログで実際に使えるサンプルコードを大量に紹介するよ!

この記事の目次

  1. JavaScriptとは(Javaとは違う!)
  2. 基本構文を覚えよう
  3. ブログで使える汎用サンプルコード集
  4. DOM操作の基本
  5. JavaScriptを書くのに使えるアプリ
  6. 初心者がやりがちなミス

JavaScriptとは(Javaとは違う!)

JavaScriptは、Webページに「動き」を加えるためのプログラミング言語だよ。ボタンをクリックしたときの動作、スクロールに合わせたアニメーション、フォームの入力チェックなど、Webサイトで「動いている」部分のほとんどはJavaScriptで作られているんだ。

HTML・CSS・JavaScriptの役割分担

Webページは3つの言語で構成されていて、それぞれ役割が違うよ。

家に例えるなら、HTMLが柱や壁の構造、CSSが壁紙やインテリア、JavaScriptが電気や水道のスイッチ。スイッチを押したら照明がつく、蛇口をひねったら水が出る、そういう「操作に対する反応」を作るのがJavaScriptの仕事なんだ。

Java と JavaScript は全くの別物!

名前がめちゃくちゃ似ているけど、JavaとJavaScriptは完全に別の言語だよ。例えるなら「ハム」と「ハムスター」くらい違う。Javaはサーバーサイドやスマホアプリ開発に使われる言語で、JavaScriptはWebブラウザで動く言語。歴史的な経緯で名前が似ちゃっただけなので、混同しないように注意しよう!

JavaScriptで何ができるの?

具体的にJavaScriptでできることを挙げると、こんなにたくさんあるよ。

ブログ運営で言えば、読者の利便性を上げるUI(トップへ戻るボタン、目次のスムーズスクロール、モバイルメニューなど)のほとんどはJavaScriptで実装されているんだ。つまり、JavaScriptが書ければブログのカスタマイズが自在にできるようになるよ。

基本構文を覚えよう

まずはJavaScriptの基本的な書き方を覚えよう。ここでは最低限知っておくべき構文を紹介するよ。

変数の宣言(let と const)

変数はデータを入れておく箱のようなもの。JavaScriptではletconstを使って宣言するよ。

// let は後から値を変更できる let userName = "腎臓ソーセージ"; userName = "じんぞう"; // OK:再代入できる // const は後から値を変更できない(定数) const siteName = "腎臓ソーセージがまとめる!"; // siteName = "別の名前"; // エラーになる // ※ var は古い書き方。今はlet/constを使おう

関数(function)

関数は「処理をまとめたもの」。何度も同じ処理を書かなくて済むようになるよ。

// 関数の定義(従来の書き方) function greet(name) { return "こんにちは、" + name + "さん!"; } // アロー関数(ES6以降の書き方。こっちが今の主流) const greet2 = (name) => { return `こんにちは、${name}さん!`; }; console.log(greet("ヘタリーマン")); // "こんにちは、ヘタリーマンさん!"

条件分岐(if文)

「もし〜なら〜する」という処理を書くときに使うよ。

const age = 25; if (age >= 20) { console.log("成人です"); } else if (age >= 18) { console.log("18歳以上です"); } else { console.log("未成年です"); }

繰り返し(for文)

同じ処理を何度も繰り返したいときに使うよ。

// 基本のfor文 for (let i = 0; i < 5; i++) { console.log(`${i + 1}回目のループ`); } // 配列をループする(for...of) const fruits = ["りんご", "みかん", "バナナ"]; for (const fruit of fruits) { console.log(fruit); }

配列とオブジェクト

複数のデータをまとめて管理する方法だよ。

// 配列(複数の値を順番に格納) const skills = ["HTML", "CSS", "JavaScript"]; console.log(skills[0]); // "HTML" console.log(skills.length); // 3 // オブジェクト(キーと値のペアで格納) const user = { name: "腎臓ソーセージ", age: 30, job: "ブロガー", skills: ["HTML", "CSS", "JavaScript"] }; console.log(user.name); // "腎臓ソーセージ" console.log(user.skills[2]); // "JavaScript"
腎臓ソーセージ
基本構文はこれだけ覚えればOK!最初は全部覚えようとしなくていいよ。実際にコードを書きながら「あれ、これどう書くんだっけ?」って調べるのが一番効率的。次はいよいよ実践的なサンプルコードだ!

ブログで使える汎用サンプルコード集

ここからは、ブログやWebサイトにそのままコピペで使えるサンプルコードを紹介するよ。全部解説付きだから、カスタマイズもしやすいはず!

1. スクロールでトップに戻るボタン

ページを下にスクロールすると右下に「上に戻る」ボタンが表示されるやつ。ほぼすべてのブログに実装されている定番機能だよ。

// トップへ戻るボタン const scrollTopBtn = document.getElementById("scrollTop"); // スクロール量が300pxを超えたらボタンを表示 window.addEventListener("scroll", () => { if (window.scrollY > 300) { scrollTopBtn.classList.add("visible"); } else { scrollTopBtn.classList.remove("visible"); } }); // クリックしたらページトップへスムーズに移動 scrollTopBtn.addEventListener("click", () => { window.scrollTo({ top: 0, behavior: "smooth" }); });

2. ハンバーガーメニュー(モバイル対応)

スマホ表示でよく見る三本線のメニュー。タップするとナビゲーションが開閉するやつだよ。

// ハンバーガーメニューの開閉 const menuToggle = document.querySelector(".menu-toggle"); const globalNav = document.querySelector(".global-nav"); menuToggle.addEventListener("click", () => { menuToggle.classList.toggle("active"); globalNav.classList.toggle("open"); }); // メニュー内のリンクをクリックしたら閉じる document.querySelectorAll(".global-nav a").forEach(link => { link.addEventListener("click", () => { menuToggle.classList.remove("active"); globalNav.classList.remove("open"); }); });

3. スムーズスクロール

ページ内リンク(目次など)をクリックしたとき、瞬間移動ではなくスーッと移動するようにする機能だよ。

// ページ内リンクのスムーズスクロール document.querySelectorAll('a[href^="#"]').forEach(anchor => { anchor.addEventListener("click", function(e) { e.preventDefault(); const target = document.querySelector(this.getAttribute("href")); if (target) { target.scrollIntoView({ behavior: "smooth", block: "start" }); } }); });

4. 画像のLazy Loading

画面に表示されるタイミングで画像を読み込む機能。ページの表示速度が爆速になるよ。SEO的にも超重要。

// Intersection Observerを使ったLazy Loading const lazyImages = document.querySelectorAll("img[data-src]"); const imageObserver = new IntersectionObserver((entries) => { entries.forEach(entry => { if (entry.isIntersecting) { const img = entry.target; img.src = img.dataset.src; img.removeAttribute("data-src"); imageObserver.unobserve(img); } }); }); lazyImages.forEach(img => imageObserver.observe(img)); // HTML側: <img data-src="actual-image.jpg" alt="説明">

5. アコーディオン(FAQ開閉)

よくある質問(FAQ)でよく使われる、クリックすると回答が開閉する機能だよ。

// アコーディオンの開閉 document.querySelectorAll(".accordion-header").forEach(header => { header.addEventListener("click", () => { const content = header.nextElementSibling; const isOpen = content.style.maxHeight; // 他のアコーディオンを閉じる(1つだけ開く場合) document.querySelectorAll(".accordion-content").forEach(c => { c.style.maxHeight = null; }); // クリックしたものを開閉 if (!isOpen) { content.style.maxHeight = content.scrollHeight + "px"; } }); });

6. モーダルウィンドウ(ポップアップ)

画面の上にオーバーレイで表示されるポップアップ。お知らせやメルマガ登録フォームなどに使えるよ。

// モーダルの表示・非表示 const modal = document.getElementById("modal"); const openBtn = document.getElementById("openModal"); const closeBtn = document.getElementById("closeModal"); openBtn.addEventListener("click", () => { modal.style.display = "flex"; document.body.style.overflow = "hidden"; // 背景スクロール防止 }); closeBtn.addEventListener("click", () => { modal.style.display = "none"; document.body.style.overflow = ""; // スクロール復帰 }); // 背景クリックでも閉じる modal.addEventListener("click", (e) => { if (e.target === modal) { modal.style.display = "none"; document.body.style.overflow = ""; } });

7. 文字数カウンター

テキストエリアに入力した文字数をリアルタイムで表示する機能。お問い合わせフォームなどに便利だよ。

// リアルタイム文字数カウント const textarea = document.getElementById("message"); const counter = document.getElementById("charCount"); const maxLength = 500; textarea.addEventListener("input", () => { const current = textarea.value.length; counter.textContent = `${current} / ${maxLength}文字`; // 上限を超えたら赤くする if (current > maxLength) { counter.style.color = "red"; } else { counter.style.color = "#666"; } });

8. コピーボタン(URLやコードをクリップボードにコピー)

ボタンをクリックすると、指定したテキストをクリップボードにコピーできる機能。コードブロックやURLの共有に便利!

// クリップボードにコピーする関数 function copyToClipboard(text) { navigator.clipboard.writeText(text).then(() => { // コピー成功の通知 const toast = document.getElementById("toast"); toast.textContent = "コピーしました!"; toast.classList.add("show"); setTimeout(() => toast.classList.remove("show"), 2000); }).catch(err => { console.error("コピーに失敗しました:", err); }); } // ボタンにイベントを設定 document.querySelectorAll(".copy-btn").forEach(btn => { btn.addEventListener("click", () => { const textToCopy = btn.getAttribute("data-copy"); copyToClipboard(textToCopy); }); });
腎臓ソーセージ
このサンプルコード集、ぶっちゃけ全部このブログサイトでも使ってるやつだよ。トップへ戻るボタンもハンバーガーメニューもスムーズスクロールも全部JavaScript。コピペして自分のサイトに貼り付けるだけで動くから、ぜひ試してみて!

DOM操作の基本

DOM(Document Object Model)操作とは、JavaScriptでHTMLの要素を取得したり変更したりすること。上のサンプルコードでもたくさん使ったけど、ここで改めて整理しておこう。

要素の取得

// IDで取得(1つだけ) const header = document.getElementById("header"); // CSSセレクタで取得(最初の1つ) const firstButton = document.querySelector(".btn-primary"); // CSSセレクタで取得(該当する全部) const allButtons = document.querySelectorAll(".btn-primary");

イベントの追加

// クリックイベント button.addEventListener("click", () => { console.log("ボタンがクリックされました!"); }); // スクロールイベント window.addEventListener("scroll", () => { console.log("スクロールされました!"); }); // ページ読み込み完了イベント document.addEventListener("DOMContentLoaded", () => { console.log("ページの読み込みが完了しました!"); });

クラスの操作

const element = document.querySelector(".target"); // クラスの追加 element.classList.add("active"); // クラスの削除 element.classList.remove("active"); // クラスの切り替え(あれば消す、なければ追加) element.classList.toggle("active"); // クラスの存在チェック if (element.classList.contains("active")) { console.log("activeクラスがあります"); }

テキスト・HTMLの書き換え

const box = document.getElementById("output"); // テキストだけを書き換える(安全) box.textContent = "こんにちは!"; // HTMLごと書き換える(XSS注意) box.innerHTML = "<strong>太字のテキスト</strong>"; // ※ innerHTML はユーザー入力を直接入れると危険! // ユーザー入力にはtextContentを使おう

DOM操作のコツ

DOM操作で一番大事なのは「まず要素を取得して、それに対して何かする」という2ステップの考え方。要素を取得する方法(getElementById, querySelector)と、取得した要素に対する操作(addEventListener, classList, textContent)を組み合わせることで、大抵のことはできるようになるよ。

JavaScriptを書くのに使えるアプリ

JavaScriptを書くためのツールを紹介するよ。無料で使えるものがほとんどだから、まずは試してみよう。

ツール名 料金 特徴 おすすめ度
Visual Studio Code 無料 Microsoft製の最強エディタ。拡張機能が豊富で、コード補完・デバッグ・Git連携なんでもできる。プロのエンジニアもほぼ全員使ってる ★★★★★
Chrome DevTools Console 無料 Chrome標準搭載。F12キーで開いてConsoleタブに直接コードを入力して即実行できる。ちょっとした動作確認に最適 ★★★★☆
CodePen 無料(Pro版あり) ブラウザ上でHTML・CSS・JSを書いて即実行。インストール不要で初心者に最適。作ったものをURLで共有もできる ★★★★☆
Node.js 無料 ブラウザの外でもJavaScriptを動かせる実行環境。サーバーサイド開発やツール開発にも対応。npmで豊富なパッケージが使える ★★★★☆
Cursor 無料(Pro版あり) AI搭載エディタ。VS Codeベースで、AIがコードを自動生成・修正してくれる。「こんな機能を追加して」と自然言語で指示できる ★★★★★

初心者にまずおすすめなのはVisual Studio Codeだよ。無料で使えて、日本語の拡張機能もあるし、世界中のエンジニアが使ってるから情報も豊富。「VS Code JavaScript」で検索すれば設定方法もすぐ見つかるよ。

もしインストールが面倒なら、まずはCodePenをブラウザで開いて遊んでみるのがおすすめ。何もインストールしなくても、すぐにJavaScriptのコードを書いて動かせるから、学習のハードルが一気に下がるよ。

腎臓ソーセージ
ちなみにこのブログを作ってるときは、Claude Code(ターミナルAI)にコードを書いてもらってるよ。AIにJavaScriptを書かせるっていう選択肢もあるから、プログラミングが苦手な人はAIツールを活用するのも全然アリ!

初心者がやりがちなミス

JavaScript初心者がハマりがちなポイントをまとめたよ。事前に知っておくだけで、無駄な時間を大幅に減らせるはず。

=== と == の違いを知らない

これは初心者がほぼ確実にハマるやつ。JavaScriptには比較演算子が2種類あるんだ。

// == は型変換してから比較(ゆるい比較) console.log(1 == "1"); // true(数値の1と文字列の"1"を同じと判定) console.log(0 == false); // true(0とfalseを同じと判定) // === は型も含めて厳密に比較(厳密比較) console.log(1 === "1"); // false(型が違うのでfalse) console.log(0 === false); // false(型が違うのでfalse) // 結論:基本的に === を使おう!

非同期処理(async/await)が理解できない

JavaScriptは「非同期」が多い言語。APIからデータを取得する場合、処理が完了するのを待たずに次の行が実行されちゃうんだ。

// ダメな例:データ取得を待たずに表示しようとする let data; fetch("https://api.example.com/data") .then(response => response.json()) .then(json => { data = json; }); console.log(data); // undefined(まだデータ取得が終わってない!) // 正しい例:async/awaitで待つ async function getData() { const response = await fetch("https://api.example.com/data"); const data = await response.json(); console.log(data); // ちゃんとデータが表示される } getData();

console.logデバッグに頼りすぎる

console.logでデバッグするのは手軽だけど、複雑なバグにはブラウザのデバッガ(Chrome DevToolsのSourcesタブ)を使おう。ブレークポイントを設定すれば、コードの実行を途中で止めて変数の中身を確認できるよ。

デバッグのコツ

Chrome DevToolsのConsoleタブではconsole.logの代わりにconsole.table(配列やオブジェクトを表形式で表示)やconsole.group(ログをグループ化)も使えるよ。知っておくとデバッグ効率が格段に上がる!

jQueryに逃げる(まずは素のJSを学べ)

jQueryはJavaScriptのライブラリで、少ないコードでDOM操作ができる便利なツール。でも今のJavaScript(ES6以降)は十分便利になっているから、まずは素のJavaScript(Vanilla JS)を学ぶべきだよ。

既存サイトの保守でjQueryが使われていることはあるけど、新しく学ぶなら素のJavaScriptから始めよう。基礎ができていれば、jQueryもフレームワークもすぐ覚えられるからね。

腎臓ソーセージ
JavaScriptは最初は難しく感じるけど、「要素を取得して」「イベントを設定して」「何かを変化させる」っていう3ステップさえ覚えれば、ブログのカスタマイズは自由自在だよ。まずはトップへ戻るボタンから作ってみよう!副業でWeb制作をやるなら、JavaScriptは避けて通れないスキル。でもAIツールをうまく使えば、ゼロから全部覚えなくても大丈夫。一緒に頑張ろう!

プログラミングを本格的に学ぶなら

独学に限界を感じたら、プログラミングスクールも検討してみよう。教育訓練給付金で受講料の最大70%が補助されるスクールもあるよ

プログラミングスクールガイドを見る
腎臓ソーセージ
AIで副業をするならやっぱり相棒はこいつかなと。私も使ってます。AIガンガン動くガンガン動く気持ちぃいいいMacBook Air。M5チップのおかげでChatGPTもClaudeもサクサク、ファンレスだから深夜の作業も無音。副業の相棒にマジでおすすめ。
MacBook Air M5をAmazonで見る(PR)
関連記事 プログラミングスクールのすすめ おすすめ記事 小学生でもわかるHPの始め方