Node.jsで簡単なAPIサーバーを作る方法

Node.jsでは Express を使うことで簡単にAPIを構築できます。

Expressをインストール

npm install express

サーバーを作成


const express = require('express');

const app = express();

app.get('/', (req, res) => {
    res.send('Hello World');
});

app.listen(3000, () => {
    console.log('Server Start');
});

ブラウザで http://localhost:3000 にアクセスすると表示されます。


JSONを返す

APIではJSONレスポンスを返すことが多いです。

app.get('/api/user', (req, res) => {

    res.json({
        name: 'Taro',
        age: 20
    });

});

POSTリクエストを受け取る

app.use(express.json());

app.post('/api/post', (req, res) => {

    console.log(req.body);

    res.json({
        status: 'success'
    });

});

フロントエンドとの連携で頻繁に使います。

WordPressでお問い合わせフォームをAjax化する方法【初心者向け】

WordPressでお問い合わせフォームを作ると、送信時にページがリロードされることがあります。
しかし、Ajaxを使えばページ遷移なしでフォーム送信が可能になり、UXを改善できます。

今回は、WordPressでAjax通信を利用したフォーム送信を実装する基本的な方法を解説します。


完成イメージ

  • フォーム送信時にページ遷移しない
  • バリデーションエラーをその場で表示
  • 成功時にメッセージ表示
  • 管理画面に依存しない独自実装

フォームHTMLを作成

まずはフォームを作成します。


<form id="contact-form">
    <div>
        <label>名前</label>
        <input type="text" name="username">
    </div>

    <div>
        <label>メールアドレス</label>
        <input type="email" name="email">
    </div>

    <div>
        <label>お問い合わせ内容</label>
        <textarea name="message"></textarea>
    </div>

    <button type="submit">送信</button>
</form>

<p id="result-message"></p>

JavaScriptでAjax送信

次にJavaScriptを実装します。

const form = document.getElementById('contact-form');

form.addEventListener('submit', async (e) => {
    e.preventDefault();

    const formData = new FormData(form);

    try {
        const response = await fetch('/wp-admin/admin-ajax.php', {
            method: 'POST',
            body: formData
        });

        const data = await response.json();

        document.getElementById('result-message').textContent = data.message;

    } catch (error) {
        console.error(error);
    }
});

actionパラメータを追加する

WordPressのAjaxでは action が必須です。

formData.append('action', 'contact_form');

最終的には以下のようになります。

const form = document.getElementById('contact-form');

form.addEventListener('submit', async (e) => {
    e.preventDefault();

    const formData = new FormData(form);

    formData.append('action', 'contact_form');

    try {
        const response = await fetch('/wp-admin/admin-ajax.php', {
            method: 'POST',
            body: formData
        });

        const data = await response.json();

        document.getElementById('result-message').textContent = data.message;

    } catch (error) {
        console.error(error);
    }
});

functions.phpでAjax処理を書く

WordPress側でAjaxリクエストを受け取ります。

function contact_form_ajax() {

    $username = $_POST['username'] ?? '';
    $email = $_POST['email'] ?? '';
    $message = $_POST['message'] ?? '';

    if (empty($username)) {
        wp_send_json([
            'status' => 'error',
            'message' => '名前を入力してください'
        ]);
    }

    if (empty($email)) {
        wp_send_json([
            'status' => 'error',
            'message' => 'メールアドレスを入力してください'
        ]);
    }

    wp_send_json([
        'status' => 'success',
        'message' => '送信が完了しました'
    ]);
}

add_action('wp_ajax_contact_form', 'contact_form_ajax');
add_action('wp_ajax_nopriv_contact_form', 'contact_form_ajax');

セキュリティ対策も重要

Ajax実装時は以下も必須です。

sanitizeする

$username = sanitize_text_field($_POST['username']);
$email = sanitize_email($_POST['email']);

nonceチェック

check_ajax_referer('contact_nonce', 'nonce');

JavaScript側:

formData.append('nonce', contactData.nonce);

よくあるハマりポイント

admin-ajax.php が404になる

パーマリンク設定更新で解決する場合があります。


JSON.parse エラー

PHPのwarningやnoticeが混ざっている可能性があります。

ini_set('display_errors', 0);

ただし本番環境では適切なログ管理を行いましょう。


REST APIとの違い

最近は admin-ajax.php よりもREST APIを利用するケースも増えています。

比較admin-ajaxREST API
学習コスト低いやや高い
WordPressらしさ高いAPI寄り
パフォーマンスやや重い比較的軽い
将来性普通高い

小規模フォームなら admin-ajax.php でも十分実用的です。


まとめ

WordPressのAjax化を行うことで、フォームのUXを大きく改善できます。

今回のポイント:

  • admin-ajax.php を利用する
  • action を必ず送る
  • wp_ajax_ / wp_ajax_nopriv_ を設定
  • sanitize と nonce を忘れない
  • エラー処理を丁寧に行う

特に独自テーマ開発では、Ajax実装はかなり頻繁に使うので、早めに慣れておくと開発効率が上がります。

Reactを使って感じた「コンポーネント設計」の大切さ

フロントエンド開発をしていると、ReactやVueなどのライブラリを使う機会が増えています。
その中でも特に重要だと感じるのが、「コンポーネント設計」です。

最初のうちは動けばOKになりがちですが、アプリが大きくなるほど設計の差が効いてきます。


コンポーネントを分けるメリット

例えばECサイトを作る場合、

  • 商品カード
  • ヘッダー
  • ボタン
  • モーダル

などを部品化できます。

Reactではこんな感じです。

function ProductCard({ product }) {
  return (
    

{product.name}

{product.price}円

) }

こうしておくと、同じUIを何度も再利用できます。


「使い回せる設計」が重要

初心者の頃は、1画面ごとに全部書いてしまいがちです。

しかし実務では、

  • デザイン変更
  • 機能追加
  • バグ修正

が頻繁に発生します。

そのため、再利用しやすい構造にしておくことで開発効率が大きく変わります。


コンポーネントを細かく分けすぎる問題

ただし、細かく分割しすぎるのも問題です。

例えば:

  • ButtonText
  • ButtonIcon
  • ButtonWrapper

のように過剰分割すると、逆に読みにくくなることがあります。

重要なのは「責務」で区切ることです。


状態管理はシンプルが最強

Reactでは state 管理が重要ですが、複雑になりすぎるケースも多いです。

例えば:

const [isLoading, setIsLoading] = useState(false)
const [error, setError] = useState(null)
const [users, setUsers] = useState([])

これくらいなら分かりやすいですが、状態が増えすぎると管理が大変になります。

最近では、

  • Zustand
  • Jotai
  • Redux Toolkit

なども人気です。

ただ、小規模開発なら useStateuseContext だけで十分なケースも多いです。


フロントエンドは“見た目”だけではない

フロントエンドというとデザイン寄りの印象がありますが、実際はかなりロジック寄りです。

例えば:

  • API通信
  • キャッシュ
  • パフォーマンス最適化
  • 認証管理
  • SEO対策

など、考えることは多岐にわたります。


まとめ

Reactは便利なライブラリですが、重要なのは「どう設計するか」です。

特に、

  • 再利用性
  • 可読性
  • 状態管理
  • 責務分離

を意識すると、後から保守しやすいコードになります。

フロントエンド開発は変化が激しいですが、設計の基本は長く役立つスキルだと感じます。

2026年でも変わらない「読みやすいコード」の考え方

プログラミングの世界では、新しいフレームワークやライブラリが次々に登場します。
しかし、どれだけ技術が進化しても、「読みやすいコードを書く」という基本は変わりません。

実際、開発現場で問題になるコードの多くは、「高度すぎるアルゴリズム」ではなく、あとから読めないコードです。

なぜ“読みやすさ”が重要なのか

コードは「書く時間」より「読む時間」の方が圧倒的に長いと言われています。

例えば、以下のようなコード。

const a=(b,c)=>b.filter(d=>d.id===c)[0]

短くはありますが、意図が伝わりづらいです。

一方で、少し丁寧に書くとどうでしょう。

const findUserById = (users, targetId) => {
  return users.find(user => user.id === targetId)
}

こちらの方が、初めて見る人でも理解しやすくなります。

読みやすいコードを書く3つのポイント

1. 変数名を省略しすぎない

a, tmp, data2 のような名前は避け、役割が分かる名前を使いましょう。

悪い例:

x = get()

良い例:

user_list = get_users()

2. 関数を長くしすぎない

100行を超える関数は、責務が混ざっている可能性があります。

例えば:

  • データ取得
  • バリデーション
  • DB保存
  • ログ出力

これらを1つの関数でやると保守が大変になります。

処理ごとに分割すると、テストもしやすくなります。

3. コメントを書きすぎない

意外かもしれませんが、「コメントが多いコード = 良いコード」ではありません。

// ユーザーを取得する
const user = getUser()

これはコードを読めば分かります。

コメントを書くべきなのは、

  • なぜその実装にしたのか
  • 回避したいバグ
  • 特殊な仕様

など、“背景”です。

AI時代だからこそ設計力が重要

最近ではAIがコードを書く時代になりました。

ただ、AIが生成したコードをレビューし、保守し、改善するのは人間です。

そのため今後は、

  • コードを書く力
  • コードを読む力
  • システム全体を設計する力

がより重要になっていくでしょう。

まとめ

プログラミングでは、最新技術を追うことも大切ですが、それ以上に「他人が理解できるコードを書く」ことが重要です。

読みやすいコードは、

  • バグを減らし
  • チーム開発を円滑にし
  • 将来の自分を助けます

派手ではありませんが、長く使われるシステムほど、こうした基本がしっかりしています。

今日から少しだけ、「未来の自分が読みやすいか?」を意識してコードを書いてみてください。