HTML、CSS、JavaScriptを勉強していて、「ちょっとしたコードを試したいけど、わざわざファイルを作るのは面倒…」「作ったコードを友達に見せたい」「他の人のコードを見て勉強したい」と思ったことはありませんか?
「開発環境の構築が難しそう」「エディタのインストールや設定が面倒」「すぐに試せる場所が欲しい」と感じている方も多いはずです。
実は、CodePenは、ブラウザだけでHTML、CSS、JavaScriptを書いて即座に実行できる、オンラインコードエディタ兼SNSなんです。まるで、お絵かきソフトで絵を描くように、コードを書いてすぐに結果を見られる、フロントエンド開発者の遊び場なんですよ。
この記事では、CodePenの基本から実践的な使い方まで、プログラミング初心者の方にも分かりやすく丁寧に解説していきます。
具体的な例をたくさん見ながら、CodePenを使ったコーディングをマスターしていきましょう!
CodePenとは?その基本を知ろう
基本的な説明
CodePen(コードペン)は、ブラウザ上でHTML、CSS、JavaScriptを書いて、リアルタイムに実行結果を確認できるオンラインコードエディタです。
2012年にAlex Vazquez、Tim Sabat、Chris Coyierによって設立され、現在では世界中で数百万人が利用しています。
名前の由来:
「Code」(コード)+ 「Pen」(ペン)= コードを書くペンのような存在、という意味が込められています。
何ができるの?
主な機能:
即座にコードを試せる:
HTML、CSS、JavaScriptを書くと、リアルタイムで結果が表示されます。
コードの共有:
作ったコードをURLで簡単に共有できます。
他の人の作品を見る:
世界中のクリエイターの作品を閲覧・学習できます。
フォーク(複製):
他の人のコードを複製して、自分なりに改造できます。
ライブラリの使用:
React、Vue、jQueryなど、人気ライブラリがすぐに使えます。
プリプロセッサ対応:
Sass、Less、Pug、TypeScriptなども使えます。
日常の例で理解しよう
お絵かきアプリ:
従来の開発: キャンバス(ファイル)を用意して、絵の具(コード)を準備して、筆(エディタ)を設定して…
CodePen: ブラウザを開いて、すぐに描き始められる
料理の試作:
従来: キッチン(開発環境)を整えて、材料を買って、調理器具を揃えて…
CodePen: 試食コーナーで、すぐに味見できる
CodePenは、「とりあえず試してみる」が簡単にできる場所なんですね。
無料で使える?
無料プランでも十分使えます!
無料でできること:
- 無制限のペンの作成
- 公開ペンの作成と共有
- 他の人のペンの閲覧とフォーク
- 基本的なライブラリの使用
- コミュニティへの参加
有料(Pro)でできること:
- 非公開ペンの作成
- 画像やファイルのアップロード
- コラボレーション機能
- カスタムドメイン
学習や趣味なら、無料で十分ですね。
アカウント登録と基本操作
アカウントの作成
公式サイトにアクセス:
https://codepen.io/
右上の「Sign Up」をクリック:
登録方法を選択:
- メールアドレス
- GitHub
プロフィール設定:
- ユーザー名
- 自己紹介
- プロフィール画像
これで準備完了です。
ダッシュボードの見方
ログイン後の画面:
上部メニュー:
- Create:新しいペンを作成
- Pens:自分のペン一覧
- Projects:プロジェクト(複数ファイル)
- Collections:コレクション(お気に入り)
- Following:フォロー中のユーザー
サイドバー:
- Dashboard(ダッシュボード)
- Your Work(作品)
- Following(フォロー)
- Trending(トレンド)
- Challenges(チャレンジ)
新しいペンを作成
「Create」→「Pen」をクリック:
エディタ画面が開きます。
画面構成:
┌─────────────────────────────────────┐
│ HTML │ CSS │ JS │ ← エディタ部分
├─────────────────────────────────────┤
│ │
│ プレビュー │ ← 実行結果
│ │
└─────────────────────────────────────┘
レイアウトは変更可能:
- 左右分割
- 上下分割
- エディタのみ
- プレビューのみ
右上の「Change View」から選べます。
基本的な使い方
HTMLを書いてみよう
HTMLエディタに入力:
<h1>こんにちは、CodePen!</h1>
<p>これは私の最初のペンです。</p>
<button id="myButton">クリックしてね</button>
保存不要!
入力すると、自動的にプレビューに反映されます。
CSSでスタイルを追加
CSSエディタに入力:
body {
font-family: 'Arial', sans-serif;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
padding: 50px;
text-align: center;
}
h1 {
font-size: 3em;
margin-bottom: 20px;
text-shadow: 2px 2px 4px rgba(0,0,0,0.3);
}
button {
padding: 15px 30px;
font-size: 18px;
background: white;
color: #667eea;
border: none;
border-radius: 25px;
cursor: pointer;
box-shadow: 0 4px 6px rgba(0,0,0,0.1);
transition: transform 0.2s;
}
button:hover {
transform: scale(1.05);
}
リアルタイムで見た目が変わります。
JavaScriptで動きをつける
JSエディタに入力:
const button = document.getElementById('myButton');
let count = 0;
button.addEventListener('click', () => {
count++;
button.textContent = `クリックされた回数: ${count}`;
// ちょっとしたアニメーション
button.style.transform = 'scale(0.95)';
setTimeout(() => {
button.style.transform = 'scale(1)';
}, 100);
});
ボタンをクリックすると、カウントが増えます。
完成!
たった数分で、動くWebページができました。
ペンの保存と共有
ペンの保存
「Save」ボタンをクリック:
タイトルをつける:
画面上部の「Untitled」をクリックして、タイトルを入力します。
例:「カウンターボタン」
説明を追加(任意):
「Settings」→「Pen Details」から説明を追加できます。
共有する
URLをコピー:
ブラウザのアドレスバーからURLをコピーします。
https://codepen.io/ユーザー名/pen/ペンID
このURLを友達に送るだけで、作品を共有できます。
埋め込みコード:
「Embed」ボタンをクリックすると、ブログなどに埋め込むコードが取得できます。
<p class="codepen" data-height="300" data-default-tab="html,result">
<span>See the Pen by ユーザー名</span>
</p>
<script async src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script>
プライバシー設定
無料版:
すべてのペンは公開されます。
Pro版:
「Private」に設定できます。
実践例:様々なコードを書いてみよう
例1:アニメーション付きカード
HTML:
<div class="card">
<div class="card-image">
<img src="https://picsum.photos/300/200" alt="サンプル画像">
</div>
<div class="card-content">
<h2>美しい風景</h2>
<p>この画像は Lorem Picsum からのランダムな風景写真です。</p>
<button class="btn">もっと見る</button>
</div>
</div>
CSS:
body {
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
background: #f0f0f0;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}
.card {
width: 300px;
background: white;
border-radius: 10px;
overflow: hidden;
box-shadow: 0 10px 30px rgba(0,0,0,0.1);
transition: transform 0.3s, box-shadow 0.3s;
}
.card:hover {
transform: translateY(-10px);
box-shadow: 0 20px 40px rgba(0,0,0,0.2);
}
.card-image img {
width: 100%;
height: 200px;
object-fit: cover;
}
.card-content {
padding: 20px;
}
.card-content h2 {
margin: 0 0 10px 0;
color: #333;
}
.card-content p {
color: #666;
line-height: 1.6;
}
.btn {
margin-top: 15px;
padding: 10px 20px;
background: #667eea;
color: white;
border: none;
border-radius: 5px;
cursor: pointer;
transition: background 0.3s;
}
.btn:hover {
background: #5568d3;
}
ホバーするとカードが浮き上がります。
例2:モーダルウィンドウ
HTML:
<button id="openModal" class="open-btn">モーダルを開く</button>
<div id="modal" class="modal">
<div class="modal-content">
<span class="close">×</span>
<h2>こんにちは!</h2>
<p>これはモーダルウィンドウです。</p>
<p>外側をクリックするか、×ボタンで閉じられます。</p>
</div>
</div>
CSS:
body {
font-family: Arial, sans-serif;
padding: 50px;
}
.open-btn {
padding: 15px 30px;
font-size: 16px;
background: #4CAF50;
color: white;
border: none;
border-radius: 5px;
cursor: pointer;
}
.modal {
display: none;
position: fixed;
z-index: 1;
left: 0;
top: 0;
width: 100%;
height: 100%;
background-color: rgba(0,0,0,0.5);
animation: fadeIn 0.3s;
}
@keyframes fadeIn {
from { opacity: 0; }
to { opacity: 1; }
}
.modal-content {
background-color: white;
margin: 15% auto;
padding: 30px;
border-radius: 10px;
width: 80%;
max-width: 500px;
animation: slideDown 0.3s;
}
@keyframes slideDown {
from {
transform: translateY(-50px);
opacity: 0;
}
to {
transform: translateY(0);
opacity: 1;
}
}
.close {
color: #aaa;
float: right;
font-size: 28px;
font-weight: bold;
cursor: pointer;
}
.close:hover {
color: #000;
}
JavaScript:
const modal = document.getElementById('modal');
const openBtn = document.getElementById('openModal');
const closeBtn = document.querySelector('.close');
openBtn.onclick = () => {
modal.style.display = 'block';
}
closeBtn.onclick = () => {
modal.style.display = 'none';
}
window.onclick = (event) => {
if (event.target == modal) {
modal.style.display = 'none';
}
}
実用的なモーダルウィンドウが完成です。
例3:時計を作る
HTML:
<div class="clock-container">
<h1>デジタル時計</h1>
<div class="clock" id="clock">
<span id="hours">00</span>:<span id="minutes">00</span>:<span id="seconds">00</span>
</div>
<div class="date" id="date"></div>
</div>
CSS:
body {
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
background: linear-gradient(135deg, #1e3c72 0%, #2a5298 100%);
font-family: 'Arial', sans-serif;
color: white;
}
.clock-container {
text-align: center;
}
h1 {
font-size: 2em;
margin-bottom: 20px;
letter-spacing: 3px;
}
.clock {
font-size: 5em;
font-weight: bold;
background: rgba(255,255,255,0.1);
padding: 30px 50px;
border-radius: 20px;
box-shadow: 0 10px 30px rgba(0,0,0,0.3);
margin-bottom: 20px;
}
.date {
font-size: 1.5em;
opacity: 0.8;
}
JavaScript:
function updateClock() {
const now = new Date();
const hours = String(now.getHours()).padStart(2, '0');
const minutes = String(now.getMinutes()).padStart(2, '0');
const seconds = String(now.getSeconds()).padStart(2, '0');
document.getElementById('hours').textContent = hours;
document.getElementById('minutes').textContent = minutes;
document.getElementById('seconds').textContent = seconds;
const year = now.getFullYear();
const month = String(now.getMonth() + 1).padStart(2, '0');
const day = String(now.getDate()).padStart(2, '0');
document.getElementById('date').textContent = `${year}年${month}月${day}日`;
}
updateClock();
setInterval(updateClock, 1000);
リアルタイムで更新される時計ができました。
外部ライブラリの使用
ライブラリの追加方法
「Settings」をクリック:
「JS」タブを開く:
「Add External Scripts/Pens」セクション:
ライブラリのCDN URLを入力します。
よく使うライブラリ
jQuery:
https://code.jquery.com/jquery-3.7.1.min.js
例:
$('button').click(function() {
$(this).fadeOut().fadeIn();
});
GSAP(アニメーションライブラリ):
https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.2/gsap.min.js
例:
gsap.to(".box", {
rotation: 360,
duration: 2,
repeat: -1
});
Three.js(3Dグラフィックス):
https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js
Chart.js(グラフ):
https://cdn.jsdelivr.net/npm/chart.js
便利な検索機能:
ライブラリ名を入力すると、候補が表示されます。
例: 「lodash」と入力すると、Lodashの最新版が自動で追加されます。
プリプロセッサの使用
CSSプリプロセッサ
「Settings」→「CSS」→「CSS Preprocessor」:
選択肢:
- Sass/SCSS:変数、ネスト、ミックスインが使える
- Less:Sassに似たプリプロセッサ
- Stylus:簡潔な記法
SCSS例:
$primary-color: #667eea;
$spacing: 20px;
.card {
padding: $spacing;
background: $primary-color;
&:hover {
background: darken($primary-color, 10%);
}
.title {
font-size: 2em;
margin-bottom: $spacing / 2;
}
}
自動的にCSSにコンパイルされます。
JavaScriptプリプロセッサ
「Settings」→「JS」→「JS Preprocessor」:
選択肢:
- Babel:最新のJavaScript構文を使える
- TypeScript:型安全なJavaScript
- CoffeeScript:簡潔な記法
TypeScript例:
interface User {
name: string;
age: number;
}
const greet = (user: User): string => {
return `こんにちは、${user.name}さん(${user.age}歳)`;
}
const user: User = { name: '太郎', age: 25 };
console.log(greet(user));
HTMLプリプロセッサ
「Settings」→「HTML」→「HTML Preprocessor」:
選択肢:
- Pug(旧Jade):簡潔なHTML記法
- Haml:Ruby風の記法
- Markdown:マークダウン
Pug例:
.container
h1 タイトル
p これは段落です。
ul.list
li アイテム1
li アイテム2
li アイテム3
自動的にHTMLに変換されます。
他の人の作品を見る・学ぶ
トレンドをチェック
トップページの「Trending」:
人気のペンが並んでいます。
カテゴリ:
- Picks:スタッフが選んだ作品
- Most Hearted:お気に入りが多い作品
- Most Viewed:閲覧数が多い作品
検索機能
検索バーで探す:
例:「animation」「button」「menu」
キーワードで関連する作品が見つかります。
フォーク(複製)して学ぶ
気に入った作品を開いて:
「Fork」ボタンをクリック:
自分のアカウントに複製されます。
コードを変更してみる:
- 色を変える
- テキストを変える
- 動きを変える
自分なりにアレンジして学習できます。
これが、CodePenの最も効果的な学習方法なんです。
コレクションの作成
コレクションとは
お気に入りのペンをまとめる機能です。
使い方:
- テーマ別にペンを整理
- 参考資料として保存
- 学習のポートフォリオ
コレクションの作成
「Collections」→「Create Collection」:
名前をつける:
例:「ボタンデザイン集」
「アニメーション参考」
「学習用サンプル」
ペンを追加:
気に入ったペンの「Add to Collection」から追加します。
CodePen Challenges
チャレンジとは
毎週出題されるお題に沿って作品を作るイベントです。
テーマ例:
- 「雨を表現する」
- 「レトロゲーム風UI」
- 「春をテーマにしたアニメーション」
参加方法
「Challenges」ページを開く:
今週のお題を確認:
作品を作成:
通常のペンと同じように作成します。
「Submit to Challenge」をクリック:
作品が公開され、他の参加者の作品も見られます。
メリット:
- 創造力の刺激
- 他の人の作品から学べる
- コミュニティとの交流
Pro機能
無料版との違い
CodePen Pro(有料)の主な機能:
プライベートペン:
非公開のペンを作成できます。
アセットホスティング:
画像やフォントファイルをアップロードできます。
コラボレーション:
複数人で同時編集できます。
カスタムドメイン:
独自ドメインでペンを公開できます。
プレゼンテーションモード:
ペンをスライドショー形式で表示できます。
教授モード(Professor Mode):
学生とコードを共有する教育機能。
料金プラン
個人プラン:
- Starter:月$9(年払い$96)
- Developer:月$12(年払い$120)
- Super:月$26(年払い$260)
チームプラン:
月$99〜(3人以上)
学習目的なら無料版で十分です。
他のオンラインエディタとの比較
JSFiddle
特徴:
- シンプルなUI
- 軽量
CodePenとの違い:
- コミュニティ機能が少ない
- デザインがシンプル
- 埋め込み機能が弱い
JSBin
特徴:
- シンプル
- コンソール表示が便利
CodePenとの違い:
- SNS機能がほぼない
- 見た目が地味
CodeSandbox
特徴:
- フルスタック開発に対応
- Reactプロジェクトに強い
- VS Codeライク
CodePenとの違い:
- 複雑なプロジェクト向け
- ファイル構造がある
- より本格的な開発環境
StackBlitz
特徴:
- ブラウザ内でNode.js実行
- フルスタック開発
CodePenとの違い:
- より本格的
- 起動が少し遅い
CodePenの強み:
- 手軽さ
- コミュニティ
- デザイン性
- フロントエンド特化
活用シーン
学習・練習
チュートリアルを試す:
本やオンライン講座で学んだコードをすぐに試せます。
アイデアを試す:
「こんな動きができるかな?」と思ったら、すぐに実験できます。
ポートフォリオ
作品をまとめて公開:
就職活動やフリーランスの営業に使えます。
プロフィールページ:
https://codepen.io/あなたのユーザー名
これが、あなたのポートフォリオサイトになります。
デモ・プレゼンテーション
クライアントへの提案:
「こんなデザインはどうですか?」と、すぐに見せられます。
チームでの共有:
「このボタンの動き、どう思う?」とURLを送るだけ。
バグの再現
質問するとき:
「コードが動きません」と言うだけでなく、CodePenでバグを再現して共有できます。
Stack Overflowなどでの質問に最適です。
インスピレーション
デザインのアイデア探し:
他の人の作品を見て、デザインの引き出しを増やせます。
Tips & Tricks
キーボードショートカッ
便利なショートカット:
Ctrl + S(Mac: Cmd + S): 保存
Ctrl + /(Mac: Cmd + /): コメントアウト
Ctrl + Enter(Mac: Cmd + Enter): 強制的に再実行
Ctrl + Shift + 7: フォーマット(整形)
Console Panelの表示
画面下部の「Console」ボタン:
JavaScriptのconsole.log()出力が見られます。
デバッグに便利です。
Auto-Updatingの設定
デフォルトでは、入力と同時に更新されます。
手動更新に変更:
「Settings」→「Behavior」→「Auto Updating Preview」をOFFに。
重い処理のときに便利です。
Penのテンプレート化
よく使う設定をテンプレートに:
「Settings」→「Template」で保存できます(Pro機能)。
Zenモード
集中したいとき:
画面右上のメニュー→「Enter Zen Mode」
余計なUIが消えて、コーディングに集中できます。
よくある質問
Q1: 商用利用はできる?
A: できます。
CodePenで作成したコードは、あなたの著作物です。自由に商用利用できます。
ただし、他の人の作品をフォークして使う場合は、ライセンスを確認しましょう。
Q2: 画像はどうやって使う?
A: 外部URLを使います。
<img src="https://picsum.photos/300/200" alt="画像">
無料で使える画像サービス:
- Lorem Picsum:https://picsum.photos/
- Unsplash Source:https://source.unsplash.com/
Pro版なら、画像をアップロードできます。
Q3: Reactは使える?
A: 使えます。
「Settings」→「JS」→「Add External Scripts/Pens」
React CDNを追加:
https://unpkg.com/react@18/umd/react.development.js
![]()
https://unpkg.com/react-dom@18/umd/react-dom.development.js
JSX Preprocessorを「Babel」に設定:
これで、Reactコンポーネントが書けます。
Q4: 作品が消えることはある?
A: 通常は消えません。
無料版でも、作品は永続的に保存されます。
ただし、規約違反(著作権侵害、不適切なコンテンツ)があると削除される可能性があります。
ローカルにバックアップ:
大切な作品は、エクスポート機能でダウンロードしておくと安心です。
Q5: オフラインで使える?
A: いいえ、インターネット接続が必要です。
CodePenは、オンラインサービスです。
オフラインで開発したい場合は、VS CodeなどのローカルエディタをINSTALLしましょう。
トラブルシューティング
問題1: コードが実行されない
原因と解決策:
JavaScriptのエラー:
Console Panelを開いて、エラーメッセージを確認します。
外部ライブラリの読み込み失敗:
「Settings」でCDN URLを確認します。
Auto-Updatingが無効:
「Settings」→「Behavior」で確認します。
問題2: ライブラリが使えない
原因:
読み込み順序が間違っている。
解決策:
「Settings」で、依存ライブラリを先に配置します。
例:
jQueryプラグインを使う場合、jQuery本体を先に読み込む必要があります。
問題3: レイアウトが崩れる
原因:
CodePenは、bodyタグから始まる前提。
解決策:
HTMLエディタには、<body>タグを書かないでください。
<!-- 誤り -->
<html>
<body>
<h1>Hello</h1>
</body>
</html>
<!-- 正しい -->
<h1>Hello</h1>
問題4: パフォーマンスが遅い
原因:
重いアニメーションや大量のDOM操作。
解決策:
requestAnimationFrameを使う- 不要な処理を削減
- Auto-Updatingを無効にする
まとめ
CodePenは、ブラウザだけでHTML、CSS、JavaScriptを書いて即座に実行でき、世界中のクリエイターと作品を共有できる、最高のオンラインコードエディタです。
この記事のポイント:
- CodePenはブラウザだけで完結するオンラインエディタ
- リアルタイムでコードの実行結果が見られる
- 環境構築不要で、すぐにコーディングを始められる
- 作品をURLで簡単に共有できる
- 他の人の作品をフォークして学習できる
- 無料版でも十分に使える機能が揃っている
- React、Vue、jQueryなど人気ライブラリに対応
- Sass、TypeScript、Pugなどのプリプロセッサも使える
- コミュニティが活発で、インスピレーションが得られる
- ポートフォリオとしても活用できる
CodePenは、プログラミング学習者にとって最高の遊び場です。「とりあえず試してみる」が簡単にできるので、失敗を恐れずに実験できるんですよ。
初心者の方は、まず他の人の作品を見て、気に入ったものをフォークして、少しずつ変更してみてください。色を変えたり、テキストを変えたり、小さな変更から始めることで、コードの仕組みが理解できるようになります。
慣れてきたら、自分のアイデアを形にしてみましょう。「こんなボタンを作りたい」「このアニメーションを実現したい」と思ったら、CodePenを開いて試してみてください。
CodePenをマスターして、楽しくフロントエンド開発のスキルを磨いていきましょう!

コメント