【生成AI】Web制作に使えるのはどれ?テキスト生成AIを比較

Web制作において「ちょっとしたテキストが欲しい」という場面は少なくありません。ワイヤーフレーム用のダミーテキストや、ランディングページのキャッチコピー、フォームのエラーメッセージなど、本番ではライターやクライアントに用意してもらう内容でも、とりあえずデザインを進めるために必要になることがあります。そんなとき便利なのが、無料で使えるテキスト生成AIです。今回は代表的な4つのAIに同じプロンプトを投げ、Web制作での使い勝手を比較してみました。

1. 今回紹介するテキスト生成AI

比較対象に選んだのは以下の4つです。いずれも無料アカウント登録だけで利用可能です。

サービス名 概要 URL
ChatGPT バランス型。日本語も自然で幅広い用途に対応。 https://auth.openai.com/log-in-or-create-account
Google Gemini 調べものや最新情報に強い。文章はやや堅め。 https://gemini.google.com/app?hl=ja
Claude やさしい文体や要約が得意。読みやすい表現が特徴。 https://claude.ai/login?returnTo=%2F%3F
Perplexity 検索エンジン型。出典つき回答が多く、実務的な説明文に向く。 https://www.perplexity.ai/

なお、各生成AIのアカウント登録方法については割愛させていただきます。

2. 実際にプロンプトを投げて比較してみる

2-1. ワイヤーフレーム用ダミーテキストの生成

Web制作のワイヤーフレームに使うダミーテキストを生成してください。
・病院サイトのトップページを想定
・キャッチコピー(20文字程度)
・サブコピー(40文字程度)
・サービス紹介文(100文字程度)
日本語でお願いします。

生成結果

文章の生成に関しては、いずれのAIも十分に使用できるクオリティのものが出力されました。
文体やトーンには、それぞれ微妙な違いがある印象です。
 
【ChatGPT】読みやすく、内容がすっと入ってくる印象

 
【Gemini】患者に寄り添うような表現が多め

 
【Claude】やや硬いが読みやすい文章

 
【Perplexity】クセのない汎用的に使えそうな文章

2-2. 文章の要約

クライアントとのMTGで聞きたいことのメモ書きを投げるので、要約してMTGの時に見やすい形にしてください。
・トップページのキャッチコピー、現状「未来をつなぐテクノロジー」だが抽象的すぎる印象。業種が伝わりにくいので、もっと具体的にするか相談したい。 
・商品ページの写真、クライアント側で用意できるか?もし難しければ撮影手配をこちらで提案する必要あり。 
・サービス紹介のページ構成、文章量が多くて読みづらい。アコーディオン形式でまとめるか、図解を入れる案を出す。 
・会社概要ページ、代表あいさつ文が長い。重要部分だけ残して要約した方が読み手に伝わりやすい。 
・お問い合わせフォーム、必須項目が「名前・メール・電話番号・問い合わせ内容」で良いか確認したい。入力ハードルを下げたい。 
・サイト公開後の運用フロー:更新を社内で行うのか、それとも保守契約を希望するのかを確認。特に採用情報ページは更新頻度が高そう。 
・SEO対策の件、競合調査をしたら「地域名+サービス名」で上位表示している企業が多い。メタ情報と見出しを見直したい。 
・SNS連携、現状はTwitterだけだがInstagramも埋め込みたいとの声が出ていた。優先順位を確認。

【ChatGPT】不要な要素が削ぎ落とされ、見やすい印象

※画像は画面の都合上一部のみを抜粋しています。

 
【Gemini】まとまりがなく、少し見づらい印象

※画像は画面の都合上一部のみを抜粋しています。

 
【Claude】前情報に「要約が得意」とあったが、PDF形式で見やすくまとまっている。


※画像は画面の都合上一部のみを抜粋しています。

 
【Perplexity】こちらは無難に要約されていて、見やすい印象


※画像は画面の都合上一部のみを抜粋しています。

2-3. コード生成

レスポンシブ対応の2カラムレイアウトをCSSで記述してください。
条件:
・左カラムは幅70%、右カラムは幅30%
・スマホでは縦並びになる

【ChatGPT】Flexboxを用いたコードを生成。特に指示しない場合、HTMLファイル内にスタイルを記述する形で返ってきた。表示確認を行ったところ、gapが横に効いている影響で、PCで横並びになっていなかったため、手直しが必要。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>2カラムレスポンシブ</title>
<style>
  .container {
    display: flex;
    flex-wrap: wrap; /* スマホサイズで縦並びになるように */
    gap: 20px; /* カラム間の余白 */
  }

  .left {
    flex: 0 0 70%; /* 幅70% */
    background-color: #f0f0f0;
    padding: 20px;
    box-sizing: border-box;
  }

  .right {
    flex: 0 0 30%; /* 幅30% */
    background-color: #d0d0d0;
    padding: 20px;
    box-sizing: border-box;
  }

  /* スマホ対応 */
  @media (max-width: 768px) {
    .left, .right {
      flex: 0 0 100%; /* 幅100%で縦並び */
    }
  }
</style>
</head>
<body>

<div class="container">
  <div class="left">
    <h2>左カラム</h2>
    <p>ここに左カラムの内容を入れます。</p>
  </div>
  <div class="right">
    <h2>右カラム</h2>
    <p>ここに右カラムの内容を入れます。</p>
  </div>
</div>

</body>
</html>

 
【Gemini】こちらも問題ない品質のコードを出力。表示も問題なし。色も付いているが、コメントがあるので編集して問題ないことがわかる。

<div class="container">
  <div class="left-column">
    <h2>左カラム</h2>
    <p>このカラムの幅は70%です。スマホでは上部に表示されます。</p>
  </div>
  <div class="right-column">
    <h2>右カラム</h2>
    <p>このカラムの幅は30%です。スマホでは下部に表示されます。</p>
  </div>
</div>
.container {
  display: flex;
  flex-wrap: wrap; /* カラムの折り返しを有効にする */
}

.left-column {
  width: 70%;
  background-color: #e6f7ff; /* 背景色はお好みで */
  padding: 20px;
  box-sizing: border-box; /* パディングを含めて幅を計算 */
}

.right-column {
  width: 30%;
  background-color: #fff0e6; /* 背景色はお好みで */
  padding: 20px;
  box-sizing: border-box;
}

/* 768px以下のビューポートで適用されるスタイル */
@media (max-width: 768px) {
  .left-column,
  .right-column {
    width: 100%; /* 幅を100%にして縦に並べる */
  }
}

 
【Claude】一部デバイスサイズで、右のアイテムが見切れてしまった。また、要素の角丸やリストなど、場合によっては不要な装飾も。

<div class="container">
  <div class="left-column">
    <h2>左カラム(70%)</h2>
    <p>メインコンテンツがここに入ります。デスクトップでは全体の70%の幅を占め、スマホでは上段に配置されます。</p>
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
  </div>
  
  <div class="right-column">
    <h3>右カラム(30%)</h3>
    <p>サイドバーコンテンツがここに入ります。デスクトップでは全体の30%の幅を占め、スマホでは下段に配置されます。</p>
    <ul>
      <li>メニュー項目1</li>
      <li>メニュー項目2</li>
      <li>メニュー項目3</li>
    </ul>
  </div>
</div>
.container {
  display: flex;
  gap: 20px;
  max-width: 1200px;
  margin: 0 auto;
  padding: 20px;
}

.left-column {
  flex: 0 0 70%;
  background-color: #f5f5f5;
  padding: 20px;
  border-radius: 8px;
}

.right-column {
  flex: 0 0 30%;
  background-color: #e8e8e8;
  padding: 20px;
  border-radius: 8px;
}

/* スマホ対応(768px以下で縦並びに変更) */
@media (max-width: 768px) {
  .container {
    flex-direction: column;
  }
  
  .left-column,
  .right-column {
    flex: 1 1 auto;
    width: 100%;
  }
}

 
【Perplexity】必要最低限のコードで、指示した要件は盛り込んでいる。ただ、背景色がないため、どこまでが要素なのかひと目でわかりづらい。

<div class="responsive-container">
  <div class="responsive-left">
    左カラム(幅70%)
  </div>
  <div class="responsive-right">
    右カラム(幅30%)
  </div>
</div>
.responsive-container {
  display: flex;
  flex-wrap: wrap;
}

.responsive-left {
  flex: 0 0 70%;
  max-width: 70%;
}

.responsive-right {
  flex: 0 0 30%;
  max-width: 30%;
}

@media (max-width: 768px) {
  .responsive-left,
  .responsive-right {
    flex: 0 0 100%;
    max-width: 100%;
  }
}

3. 検証結果

今回の比較で見えてきた特徴をまとめると以下の通りです。

ChatGPT文章生成の部分では、求めているニュアンスのものが出やすい印象。コード生成については、一部手直しが必要だったが、十分使える精度。
Gemini文章の要約では若干整理されていない印象を受けた。コード生成に関しては適宜コメントを入れて出力してくれる。
Claude文章の要約が得意。適宜PDF出力を併用してくれるので、ログが長くなりすぎない。コードについては余計なものも多く、求めているのを出すにはプロンプトの工夫が必要。
Perplexityテキスト生成も要約も問題ない性能。コードは入力内容に忠実で正確だが、柔軟さにはやや欠ける印象。

要約ならClaude、汎用的な用途ならChatGPT、根拠を明確に示したい場合Perplexity、といった具合に選ぶと効果的だと思いました。
ただ、今回はコラムという都合上、シンプルなプロンプトしか試していません。より複雑なプロンプトを投げた時に、初めてそれぞれの生成AIの性能差や特徴の差が出ると思いますので、是非色々なプロンプトを試してみてください。

おわりに

いかがでしたでしょうか?いずれの生成AIも十分に使えるクオリティの文章やコードを生成してくれますが、それぞれ得意分野に違いがあるという印象でした。テキスト生成AIは「最終的な原稿やコードを丸ごと任せる」よりも、Web制作の下準備や補助として活用するのに適しています。ダミーテキストを埋める、キャッチコピーの方向性を探る、簡単なコードを試すといった場面でAIをうまく使うと、作業スピードがぐっと上がります。ぜひ今回の比較を参考に、Web制作業務にAIを取り入れてみてください。

【WordPress】知っておきたいWordPress標準のエクスポート機能について

WordPressサイトの引っ越しやバックアップといえば、「All-in-One WP Migration」や「WPvivid」といったプラグインを思い浮かべる人が多いと思います。大規模な移行や完全なコピーを行う際には、これらのプラグインはとても便利です。しかし、実はWordPressには標準機能として「エクスポート機能」が備わっています。最初からプラグインを使用していると、意外と知らなかったり一度も使ったことがない方もいるのではないでしょうか?
今回は小規模な改修や一部データの移行におすすめの標準エクスポート機能について紹介します。

1. エクスポート機能について



標準のエクスポート機能はWordPress管理画面の「ツール」→「エクスポート」から利用することができます。ここから記事データをXMLファイルとして出力し、別のWordPress環境にインポートすることができます。エクスポートの対象は以下のように細かく選択できます。

投稿 … 特定のカテゴリー、投稿者、開始日時、ステータスでの絞り込みが可能
固定ページ … 特定の投稿者、開始日時、ステータスでの絞り込みが可能
メディア … 期間を指定しての絞り込みが可能

1-1. インポートについて



エクスポートしたデータは、移行先のWordPressで「インポート」機能を使って取り込むことができます。ただし、インポートの初回利用時は「WordPressインポートツール」をインストールする必要があるので、WordPressの欄の「今すぐインストール」をクリックしましょう。



インストールが完了すると「インポーターの実行」にテキストが切り替わるので、そちらをクリックするとインポート画面に遷移します。エクスポートしたXMLファイルをアップロードすると、投稿や固定ページが新しい環境に反映されます。また、インポート時にはいくつかのポイントがあります。

投稿者の割り当て … 記事に紐づく投稿者情報を、既存ユーザーに割り当てるか、新しくユーザーを作成するか選べます。
メディアの取り込み … オプションとして、エクスポート元サイトから画像を自動取得してインポート先にコピーすることも可能です。ただし、環境によっては正常に動作しない場合もあるので、必要に応じて手動でアップロードする方が確実です。

1-2. 標準エクスポートの注意点

・XMLファイルとして出力されるため、画像ファイルそのものは含まれません。メディアにアップロードしたファイルに関しては別途移行が必要です。
・サイト全体の移行やテーマ・プラグインの設定まではカバーすることはできません。
・投稿記事数が多いサイトでは、処理が重くなることもあります。

2. カスタム投稿のエクスポート

WordPressサイトでは「Custom Post Type UI」プラグインを利用して、カスタム投稿やカスタムタクソノミーをほぼ必須で使用しているケースも多いかと思います。これらについてもプラグイン標準のエクスポート、インポートが用意されているため、簡単にデータ移行することができます。



「CPT UI」のエクスポートは「ツール」から利用することができます。
カスタム投稿をエクスポートする場合は、「投稿タイプ」タブの「Export Post Types 設定」のコードをコピーするだけです。インポートする際は移行先のWordPressで「投稿タイプをインポート」欄にコードをペーストし、「インポート」ボタンをクリックして完了です。



カスタムタクソノミーのエクスポートも全く同じ手順となります。「タクソノミー」タブでコードをコピーして、移行先のWordPressにペーストし「インポート」ボタンをクリックして完了です。

3. おすすめの利用シーン

サイト移行や改修というと、どうしても「プラグインを使って丸ごとコピー」という発想になりがちです。しかし、ちょっとしたケースでは逆にプラグインの方が大掛かりになってしまうことがあります。以下のようなケースでは、標準のエクスポート機能を使う方が負担が軽くておすすめです。

・テスト環境で追加した固定ページだけを本番環境に反映したい。
・カスタム投稿タイプを新たに追加したので、本番環境に反映したい。
・特定カテゴリーの記事だけを別のサイトに移したい。

おわりに

今回はWordPress標準のエクスポート機能について紹介しました。標準エクスポート機能は普段はあまり使われていないものの、小回りが利く便利なツールです。小規模改修や部分移行には標準機能、大規模なサイト移行には専用プラグインと使い分けるのがおすすめです。これまでプラグインを使ったことがなかったという方は、ぜひ一度試してみてはいかがでしょうか?

【初心者向け】LP作成時のポイントと基本

LP(ランディングページ)を作成した経験がまだ少ない方にとって、「何から始めればいいのか」「どんなポイントに気をつければ効果的なページになるのか」が分かりにくいと感じることもあるかと思います。

そこで今回は、LP制作における基本的な考え方から、実際に制作する際の注意点まで、初心者の方にもわかりやすくまとめました。これからLPを作る方や、今よりもっと効果的なLPを目指したい方の参考になれば幸いです。

1. LPとはなんなのか

LP(ランディングページ)とは、ユーザーが広告や検索結果などをクリックした際に最初に訪れる“専用ページ”のことです。商品の購入や資料請求、予約など、ひとつの目的(コンバージョン)に特化して設計されているのが特徴です。
通常のWebページとは違い、余計なリンクや情報を省き、「この行動をしてもらう」ことに集中したページです。
つまり、LP制作では、ユーザーを誘導するための構成が重要になってきます。
初心者の方は、まずは事例集のサイトを見てイメージを掴むのもおすすめです。
[ SANKOU!Webデザイン制作の参考になる国内のステキなサイト集 ]

2. LPのゴールを明確にする

まず大切なのは、このLPで何を達成したいのかをはっきりさせることです。購入なのか、登録なのか、問い合わせなのか。目的が明確であればあるほど、伝える内容や導線もブレません。

3. ターゲットを具体的にイメージする

このページは誰に向けたものなのか?ターゲットが変われば、伝え方も変わります。だからこそ、ペルソナを設定して、その人の目線で考えることが大切です。

ターゲットに合わせて変更すべき主要な点

・配色


左の配色は、若者向けの飲料水やスポーツ用品などが連想され、左の配色では、大人の男性のスーツや時計などの商品が連想されます。

・フォント、文字サイズ(文字間)


フォントと、文字間、太さを変えてみました。左の文字はゆったりとした優しい印象を受け、右の文字では力強くスピード感がある印象です。

・写真、イラストのテイスト


左のイラストは、よりイラストチックなものになっており、朗らかな印象です。右のイラストは細部まで写実的に描かれており、より真面目な印象を受けます。

4. ファーストビューで離脱させない

ページを開いた瞬間、「自分に関係ある」と思ってもらえるかが勝負です。商品名やベネフィット、CTAなど、伝えるべき情報はファーストビューでしっかり伝えましょう。
キャッチコピーはなるべく端的でわかりやすいものを選びましょう。また、文字のサイズや太さ、色に着目して、情報に優劣を持たせることがコツとなります。

5. 「読みやすさ」より「伝わりやすさ」

説明を丁寧にするよりも、端的に伝えることを意識しましょう。長文よりも、短く・見出しや箇条書きで整理された情報の方が、読み手にスッと届きます。
before afterの画像では、文字サイズを変更しただけですが、この商品が何を訴求しているのかが一目で伝わってきます。

6. ユーザーの疑問・不安を先回りして解消する

「本当に効果ある?」「高くない?」というような不安は、レビューやQ&A、保証などを活用してあらかじめ解消しておきましょう。信頼感につながります。
下記のように、ピンタレストにはたくさんの事例が載っているので、ぜひ参考にしてみてください。
[ Pinterest – レビューデザイン例 ]
[ Pinterest – 保証デザイン例 ]

7. スマホでの見やすさは必須

今や多くのユーザーはスマホでLPを見ています。画面サイズや操作性、文字の読みやすさなど、スマホ前提での設計が必要不可欠です。

要素 最低サイズ 推奨サイズ(視認性重視)
本文(p) 14px 16px〜18px
見出し(h2〜h3) 18px 20px〜24px
ボタンテキスト(CTA) 14px 16px〜18px
ナビゲーション・リンク 14px 14px〜16px

おわりに

いかがでしょうか。LPでは、限られたスペースの中でいかに情報を精査し、「伝えるべきことを的確に伝えるか」が非常に重要になってきます。そのためには、まずページのゴールを明確に設定し、誰に向けて何を届けたいのか、ターゲット像をしっかり描くことが欠かせません。

伝えたいことが多すぎて整理できなかったり、構成に迷ってしまう時は、一度立ち止まって「このLPで本当に伝えたいことは何か?」を見つめ直すのがおすすめです。

LP制作で壁にぶつかったときには、ぜひこのコラムの内容を参考にしてみてください。

【WordPress】絞り込み検索を行う方法を解説【プラグインなし】

WordPressで求人情報や商品一覧などを掲載する際、ユーザーが希望条件に合った情報を素早く見つけられるよう「絞り込み検索」の機能が求められることがあります。
この記事では、プラグインを使わずに、複数条件での絞り込み検索を実装する方法を紹介します。対象読者は、WordPressでのカスタマイズにある程度慣れている方向けです。
それでは、早速基本的な実装ステップを見ていきましょう。

1. 完成イメージ

完成イメージは以下のとおりです。

必要最低限のスタイルのみ当てています。
求人一覧画面で、初期表示はすべての求人が表示されます。
任意の項目をチェックした後に、「検索」を押下すると条件に合致する求人のみが表示れます。

2. 実装手順

2-1. カスタム投稿タイプと分類項目(タクソノミー)を定義する

まずは、求人情報などを投稿するためのカスタム投稿タイプ「job」を登録します。あわせて、「勤務地」「職種」「雇用形態」といった検索条件となるカスタムタクソノミーを用意します。
以下をfunctions.phpに記述してください。


/* ==========================================================
// カスタム投稿タイプとタクソノミーの追加
========================================================== */
// カスタム投稿タイプ「job」
function register_job_post_type() {
    register_post_type('job', [
        'label' => '求人',
        'public' => true,
        'has_archive' => true,
        'supports' => ['title', 'editor'],
        'rewrite' => ['slug' => 'jobs'],
    ]);
}
add_action('init', 'register_job_post_type');
// タクソノミー「勤務地」
register_taxonomy('job_location', 'job', [
    'label' => '勤務地',
    'hierarchical' => true,
    'public' => true,
]);
// タクソノミー「職種」
register_taxonomy('job_category', 'job', [
    'label' => '職種',
    'hierarchical' => true,
    'public' => true,
]);
// タクソノミー「雇用形態」
register_taxonomy('employment_type', 'job', [
    'label' => '雇用形態',
    'hierarchical' => true,
    'public' => true,
]);

投稿タイプやタクソノミーは作成したい投稿内容に合わせて適宜調整してください。

2-2. 検索機能を追加する

続いて検索機能を追加します。
検索機能は、WordPressで投稿データを読み込む直前に実行することができる「pre_get_posts」というアクションフックを使用することで実現できます。
以下のコードをfunctions.phpに記述してください。


/* ==========================================================
// 検索機能
========================================================== */
function filter_job_search_query($query) {
  if (!is_admin() && $query->is_main_query() && is_post_type_archive('job')) {

    $tax_query = ['relation' => 'AND'];

    // 勤務地
    if (!empty($_GET['job_location'])) {
      $tax_query[] = [
        'taxonomy' => 'job_location',
        'field' => 'slug',
        'terms' => [sanitize_text_field($_GET['job_location'])], // 配列にする
      ];
    }

    // 職種(複数チェック対応)
    if (!empty($_GET['job_category'])) {
      $tax_query[] = [
        'taxonomy' => 'job_category',
        'field' => 'slug',
        'terms' => array_map('sanitize_text_field', $_GET['job_category']),
        'operator' => 'IN',
      ];
    }

    // 雇用形態(複数チェック対応)
    if (!empty($_GET['employment_type'])) {
      $tax_query[] = [
        'taxonomy' => 'employment_type',
        'field' => 'slug',
        'terms' => array_map('sanitize_text_field', $_GET['employment_type']),
        'operator' => 'IN',
      ];
    }

    // tax_queryがあればセット
    if (!empty($tax_query)) {
      $query->set('tax_query', $tax_query);
    }

    // フリーワード
    if (isset($_GET['s']) && $_GET['s'] !== '') {
    $query->set('s', sanitize_text_field($_GET['s']));
    }
  }
}
add_action('pre_get_posts', 'filter_job_search_query');

それぞれの処理は、「その値が設定されていれば」というif文で分岐しているので、何も値が設定されていなければ、投稿データが全件表示されます。

2-3. 絞り込み検索用のテンプレートを作成する

次に、検索フォームと検索結果を表示するテンプレートファイルを作成します。
 
■検索フォーム
今回は「template-parts」というフォルダの中に、job-search-form.phpというフォーム用のテンプレートパーツを作成します。


<form method="get" action="<?php echo get_post_type_archive_link('job'); ?>">
  <div class="form__inner">
    <input type="text" name="s" placeholder="フリーワード" value="<?php echo get_search_query(); ?>">
  
    <!-- 勤務地 -->
    <select name="job_location">
      <option value="">勤務地を選択</option>
      <?php
      $locations = get_terms('job_location');
      foreach ($locations as $loc) {
        echo '<option value="' . esc_attr($loc->slug) . '">' . esc_html($loc->name) . '</option>';
      }
      ?>
    </select>
  
    <!-- 職種 -->
    <div>
      <h2>職種</h2>
      <?php
      $categories = get_terms('job_category');
      foreach ($categories as $cat) {
        echo '<label><input type="checkbox" name="job_category[]" value="' . esc_attr($cat->slug) . '"> ' . esc_html($cat->name) . '</label>';
      }
      ?>
    </div>
  
    <!-- 雇用形態 -->
    <div>
      <h2>雇用形態</h2>
      <?php
      $types = get_terms('employment_type');
      foreach ($types as $type) {
        echo '<label><input type="checkbox" name="employment_type[]" value="' . esc_attr($type->slug) . '"> ' . esc_html($type->name) . '</label>';
      }
      ?>
    </div>
  
    <button type="submit">検索する</button>
    <a href="<?php echo get_post_type_archive_link('job'); ?>">クリアする</a>
  </div>
</form>

ここでのポイントは、formタグのmethodにgetを、actionに求人一覧画面のURLを設定している点です。
これにより、求人一覧画面のURLの末尾に、検索条件データを追加して送ることが可能になります。
 
■検索結果を表示するテンプレート
最後に、求人一覧を表示するテンプレートを作成します。
カスタム投稿タイプ「job」を追加したので、「archive-job.php」ファイルを作成します。


<main id="content" role="main">
  <h1 class="h1">求人一覧</h1>

  <?php get_template_part('template-parts/job-search-form'); ?>

  <?php if (have_posts()) : ?>
    <ul class="job-list">
      <?php while (have_posts()) : the_post(); ?>
        <li class="job-item">
          <a href="<?php the_permalink(); ?>">
            
            <div class="title-area">
              <h2><?php the_title(); ?></h2>
              <div class="job-meta">
                <!-- 勤務地 -->
                <p>
                  <strong>勤務地:</strong>
                  <?php
                  $terms = get_the_terms(get_the_ID(), 'job_location');
                  if ($terms && !is_wp_error($terms)) {
                    echo esc_html($terms[0]->name); // 1つだけ表示
                  }
                  ?>
                </p>
  
                <!-- 職種 -->
                <p>
                  <strong>職種:</strong>
                  <?php
                  $terms = get_the_terms(get_the_ID(), 'job_category');
                  if ($terms && !is_wp_error($terms)) {
                    echo esc_html(implode(', ', wp_list_pluck($terms, 'name')));
                  }
                  ?>
                </p>
  
                <!-- 雇用形態 -->
                <p>
                  <strong>雇用形態:</strong>
                  <?php
                  $terms = get_the_terms(get_the_ID(), 'employment_type');
                  if ($terms && !is_wp_error($terms)) {
                    echo esc_html(implode(', ', wp_list_pluck($terms, 'name')));
                  }
                  ?>
                </p>
              </div>
            </div>

            <!-- 抜粋 -->
            <div class="job-excerpt">
              <?php the_excerpt(); ?>
            </div>
          </a>
        </li>
      <?php endwhile; ?>
    </ul>

    <!-- ページネーション -->
    <div class="pagination">
      <?php the_posts_pagination(); ?>
    </div>

  <?php else : ?>
    <p>該当する求人が見つかりませんでした。</p>
  <?php endif; ?>
</main>

検索フォームの部分は、直前で作成した検索フォームをget_template_partで読み込みます。
また、「2-2. 検索機能を追加する」で、すでに記事読み込み直前に検索機能が実行されるようになっていますので、このテンプレートファイル側では条件分岐などを意識する必要はありません。

2-4. フロントで動作を確認する

最後にフロント側で動作を確認してみましょう。
任意のチェックボックスを選択し、検索ボタンを押下すると対象の求人のみが表示されるはずです。

おわりに

いかがでしたでしょうか?
少しコード量が多く感じられたかもしれませんが、カスタム投稿タイプやカスタムタクソノミーの追加にプラグインを使えば、もう少しスッキリさせることも可能です。
ただ、プラグインを使わずにphpのみで完結することで、裏側の処理が明確になり、後々タクソノミーの追加や検索条件のカスタマイズが柔軟にできるようになるというメリットもあります。
記事の検索機能はサイト制作で求められることも多いので、是非この機械にお試しください。

FigmaからHTMLコードを自動生成するAIツール3選

最近では、FigmaのデザインからHTMLやReact、Vueなどのコードを自動生成してくれるAIツールが続々と登場しています。しかし、各ツールの違いやメリット・デメリットがわからず、手が出せていないという方も多いのではないでしょうか。今回はAIツールの中でも、初心者にも使いやすく、Figmaとの連携がスムーズなツールをご紹介します。

1. Anima(アニマ)

[ Animaプラグイン紹介ページはこちら ]
[ Anima公式サイトはこちら ]

Animaは、FigmaやAdobe XD、Sketchと連携して、デザインからHTML・React・Vueなどのコードを生成してくれるプラグイン型ツールです。使用するにあたっては、Animaにログインする必要があるので、事前にアカウント登録をしておきましょう。

Figmaでの使い方は非常に簡単で、Animaプラグインをインストール・起動後、作成したデザインのフレームやコンポーネント(インスタンス)を選択するだけで、コードが自動生成されます。また、HTML・React・Vueの出力形式もコード生成後にワンクリックで変換することが可能です。

特徴

・デザインをそのままHTML/CSS、ReactやVueのコードに変換できます。
・ボタンやフォームなどのインタラクション設定も可能。
・レスポンシブ対応やアニメーションもサポートしています。
・無料プランあり。有料プランは月額$24〜。(2025年7月現在)

デメリット

・自動生成されたコードは読みやすいとは限らず、調整が必要なことがあります。
・高度なレスポンシブ対応や構造の最適化は自分で行う必要があります。

2. Locofy(ロコフィ)

[ Locofyプラグイン紹介ページはこちら ]
[ Locofy公式サイトはこちら ]

LocofyはFigmaやAdobe XDのデザインからHTML/CSS、React、Next.jsなどのフロントエンドコードを自動生成できるプラグインです。使用するにあたっては、Locofyにログインする必要があるので、事前にアカウント登録をしておきましょう。

Figmaでの使い方は、Locofyにログインした状態でプラグインを起動し、コードに変換したいデザイン要素を選択するだけです。ただ、β版の時は無料で使用可能でしたが、現在は20分間のワークショップ(動画)に参加してLDMトークン(Locofyのクレジットシステム)を取得する必要があるようなので注意が必要です。

特徴

・Figmaプラグインとして動作し、操作はGUIベースで初心者でも使いやすい。
・ReactやNext.jsなどの主要なフレームワークに対応。
・有料プランは月額$33〜。(2025年7月現在)

デメリット

・英語UIのため操作に少し慣れが必要。
– 設定が細かく手軽さには欠ける面がある。

3. ChatGPT

[ ChatGPT公式サイトはこちら ]

ChatGPTはOpenAIが提供するAIチャットツールで、自然言語での質問に対してプログラムコードやHTML、CSSなどの回答を返すことができます。コーディング以外で使用されている方も多いと思いますが、Figmaのデザイン情報をテキストや画像で共有すれば、HTMLコーディングを支援する使い方も可能です。

特徴

・Figmaのデザイン内容を説明文やスクリーンショットとして渡すと、HTMLやCSSのコードを自動生成してくれます。
・「FLOCSSで書いて」「PugとSCSSで」など、具体的な指示を出せばその通りに生成可能。
・無料プランあり。有料プランは月額 $20(2025年7月現在)
※HTMLやCSSの出力精度・柔軟性は有料プラン(GPT-4oモデル)の方が高い。

デメリット

・Figmaの構造をそのまま読み取ることはできないため、デザイン意図を言葉で正しく伝える必要がある。
・レイアウトの細かいズレやブラウザ対応などは、手動で修正する必要がある。

おわりに

今回はFigmaのデザインデータから自動でHTMLコードを生成するAIツールを紹介しました。
いずれのAIツールもWebデザイナーにとって大きな手助けとなりますが、現状ではあくまで「たたき台」として使うのが基本となります。ただし、効率よく作業を進める上では大きな手助けとなるので、この記事で興味を持った方は、まずFigma上でプラグインを試してみる、ChatGPTに構造を伝えてコードを生成させてみる、といったところから始めてみてはいかがでしょうか。

【表参道】インスタで話題のおしゃれなカフェ4選

表参道には雰囲気や味にこだわったカフェやレストランが数多く立ち並んでいます。
今回はその中でも、Instagramで話題になっている人気のお店を厳選してご紹介します。
美味しいのはもちろん、つい写真を撮りたくなるような空間ばかりです。カフェ巡りの参考に、ぜひチェックしてみてください。

1. 表参道バンブー

東京の真ん中とは思えない、緑に囲まれた一軒家のイタリアンレストランです。裏路地にあるため、普段歩いていると気づきにくいお店ですが、西洋風な建築物はとても可愛らしいです。平日のランチは3,080円から。コース・セット予約限定でアニバーサリーケーキの注文も可能となっています。一番のおすすめはドリンクです。アート作品のようにデザインされているドリンクは味も美味しく写真映えもします。

出典元:食べログ
店名 表参道バンブー
住所 東京都渋谷区神宮前5‑8‑8
営業時間 11:00〜21:30(料理L.O 19:30/ドリンクL.O 21:00)、無休(年末年始除く)
公式Instagram @bamboo_omotesando

2. EATALY

海外リゾートのような開放感があるイタリアンレストランです。店内も広々としていますが、明治神宮を囲む開放的なテラス席がおすすめです。平日限定のランチセットは前菜、パスタorピザそして食後のドリンクも付いて2,500円です。また、クリームがたっぷり入ったマリトッツォもおすすめです。デザートにいかがでしょうか。

出典元:EATALY公式サイト
店名 イータリー 原宿店(EATALY)
住所 東京都渋谷区神宮前1‑14‑30 ウィズ原宿 3F
営業時間 11:00〜22:00(L.O 21:00)、ウィズ原宿営業日に準ずる(定休日なし)
公式Instagram @eataly.tokyo

3. GENTLE Italian & Sushi Bar(表参道)

緑の中にひっそりと佇むレストラン。プライベートダイニングとなっており、地中海料理を味わうことができます。ダイニングとお寿司で提供が分かれており、Instagramで話題となっているのは、お手軽なお値段でランチコースを楽しめるダイニングです。ランチコースは3,850円。食器も一つ一つデザイン性が高く、目でも楽しめるレストランです。また、ランチコースが夏仕様に新しくなったので、ぜひ夏の間に行ってみてはいかがでしょうか。

出典元:食べログ
店名 GENTLE Italian & Sushi Bar(表参道)
住所 東京都渋谷区神宮前5‑47‑6
営業時間 【火~金】
ランチ :11:30〜15:00(LO14:00)
ディナー:17:00〜23:00(LO22:00)
【土日祝】
ランチ  :11:30〜15:00(LO14:30)
ティタイム:14:30~17:00
ディナー :17:00〜23:00(LO22:00)
※お鮨のランチは予約制にて承っております。
※日祝は 21:00ラストオーダー
定休日  :平日の月曜日(祝祭日の場合は翌火曜日)
公式Instagram @gentle_tokyo

4. THE_B

流行りのアサイーをお腹いっぱい食べれる、アサイーボウルとサラダのお店です。口コミでは、”今までのアサイーボウルの中で一番美味しかった!”というものが多くあります。実際に食べてみると、たっぷり入ったもちもちのアサイーがとても美味しく、体が元気になった気がしました。店内の席は数個しかなく少なめなので、よく行列ができており、朝の10:00ごろから整理券が発行されます。テイクアウトは12:00から利用できるので、並びたくない方はそちらを利用してみてください。

出典元:食べログ
店名 THE_B
住所 東京都港区南青山5‑10‑2 第2九曜ビル 1F
営業時間 10:00〜19:30(ラストオーダー19:00)、定休日なし
公式Instagram @the_b_vegan

おわりに

いかがでしたでしょうか。少し前までは”インスタ映え”と若干揶揄される表現でしたが、今ではSNSで人気になるお店は目でも楽しめて、味も美味しいものが多くなっています。マーケティングの面も含めて見てみると、「写真に撮りたくなる」「誰かにシェアしたくなる」という要素が、いかに飲食店の集客において重要かがよくわかります。表参道にお越しの際は、ぜひ今回ご紹介したお店を参考に、“お気に入りの一軒”を見つけてみてください。

【初心者向け】AIコードエディタ「Cursor」をWeb制作で使う方法を解説

皆さんはAIツール、使っていますか?筆者は主にChatGPTを利用していますが、AI技術の進化はとても早く、最近はテキスト生成だけでなく、医療分野での画像診断や契約書類のリーガルチェックなど、様々な業界に特化したAIも出てきています。それは、Web制作や開発の現場でも同様で、特に注目されているのが、AIと連携してコード補完やレビューを行えるエディタ「Cursor(カーソル)」です。今回は、初心者の方でも簡単に始められるように、Cursorの導入方法から実際の使い方まで、わかりやすく解説します。

1. Cursorとは

Cursorは、「GitHub Copilot」というAIコード補完ツールをベースにして作られたAIコードエディタです。UIはVisual Studio Code(VS Code)をベースにしており、VS Codeから拡張機能の移行も簡単に行えます。コードの生成はもちろん、レビューも行うことができるため、効率よくWeb制作や開発が進めることができます。

GitHub Copilotとの違いは?

GitHub Copilotでも、すでにコードの「予測」や「補完」といった機能は利用可能でした。
Cursorの大きな特長の一つは、コード全体のレビューを行えるという点です。GitHub Copilotでは精度が十分でなかったコード全体のリファクタリングやレビューといった用途にも、Cursorは対応しています。さらに、GitHub Copilotがあくまでエディタの拡張機能であるのに対し、Cursorはインストールして使用する独立したテキストエディタである点も大きな違いです。

2. Cursorの導入方法

それではここから、Cursorの導入方法について解説します。
Cursorの公式サイトにアクセスします。
右上のダウンロードをクリックします。キャプチャはMacOSのダウンロードリンクになっていますが、お使いのOSに合ったダウンロードリンクをクリックしてください。

Cursorをインストールすると、アカウント作成かログインを求められます。本記事では新しくアカウントを作成する方法で解説するので、「Sign Up」をクリックします。

メールアドレスを入力すると認証コードが送られてくるので、入力しましょう。以上でアカウントの作成は完了です。

「Cursorアプリからこの画面に来た場合はログインしてください」といった内容のポップアップが出るので、「Yes, Log In」をクリックします。

ここからアプリの初期設定に入ります。すでにVS Codeをお使いの場合は、「Import from VS Code」をクリックします。

すべての設定を引き継ぐ場合、「Import」をクリック。拡張機能は引き継ぎたくない場合、「Import without extentions」をクリックしてください。

テーマはお好みのものをクリック

Quick Startの画面は、特にこだわりが無ければ初期表示の状態で「Continue」をクリックで問題ありません。

AIの精度向上のためのデータの共有に同意できる場合チェックを入れます

「Language for AI」はAIからの返答言語なので、「Japanese」を選択します。ターミナルからCursorアプリを起動したい場合、Open from Terminalの項目の「Install」もクリックします。

以上で初期設定は完了です。

3. Cursorの使い方

Cursorの実際の使い方について解説します。
初期設定が完了すると以下のような画面になります。左側がファイル表示エリア、右側がAIとチャットを行うエリアです。

まずは空のディレクトリ「cursor_practice」を任意の場所に作成し、「Open project」から開きます。
それでは早速AIに指示してみましょう。今回は、以下のようなプロンプトを入力してみました。

出力結果が以下です。数秒でhtmlファイルとcssを作成してくれました。内容に問題なければ、チャットエリア右下の「Accept all」をクリックします。

VS Codeから引き継いだ、Live Previewプラグインで表示確認をしてみます。よく見るレイアウトのトップページになっています。レスポンシブ対応については、一部追加で指示が必要そうな箇所もありましたが、概ね問題ありませんでした。

これをそのまま使うということは少ないですが、普段忘れがちなtableタグやcssのグラデーションなど、web検索で一から調べると地味に時間がかかるものを、このAIで生成できたら、それだけで時間の節約になると感じました。

一部を修正したい場合

生成したコードの一部を修正したい場合、該当箇所をカーソルで選択し、「Add to Chat」をクリックします。

すると、チャットの上部にアットマーク(ファイル名の該当行)といった表示が追加されます。その状態で、プロンプトを入力してみましょう。

プロンプトに応じた修正をCursorが行ってくれます。問題なければ右下の「Accept」をクリックします。

ボタンが緑色になり、ホバー時の動きも少し派手になりました。

おわりに

いかがでしたでしょうか?
筆者自身、まだ使い始めたばかりで、十分に使いこなせているわけではありませんが、それでも非常に効率よくコーディングを進められると感じました。今後の案件でも少しずつ活用していきたいと思います。
また、今回は記事の都合上ご紹介できませんでしたが、Cursorではコード全体のリファクタリングも行うことができます。コーディングを始めたばかりの頃は、どうしても可読性や保守性の低いコードを書いてしまいがちですが、AIにリファクタリングしてもらうことで、「可読性・保守性の高いコードとはどういうものか」を学ぶ良い機会にもなると感じました。
ぜひ、サイト制作や開発業務にCursorを活用してみてください。

ChatGPTの会話ログをNotionで管理できる!Chrome拡張機能「Chat to Notion」の紹介

最近、業務の中でもChatGPTを利用する機会が増えています。しかし、日々のやり取りが増えるにつれて「あの質問の回答どこだっけ?」と過去ログを探すのが手間になってきた方も多いのではないでしょうか。

ChatGPTの画面内でも履歴は残りますが、検索性や整理のしやすさという点ではやや不便です。また、質問と回答を後から再活用しようと思っても、自分で整理するのは労力がかかります。

そこで今回は、ChatGPTのログをNotionに保存・整理できるツール「Chat to Notion」について紹介したいと思います。

1. Chat to Notionとは?

[ Chat to Notion – Chrome ウェブストア ]

「Chat to Notion」は、ChatGPTの会話ログをNotionのデータベースに自動で保存できるツールです。Chromeの拡張機能として提供されており、ブラウザ上のChatGPTでのやり取りをワンクリックでNotionに送信することができます。

2. Chat to Notionの導入方法

「Chat to Notion」の導入は比較的シンプルです。導入にあたってはChatGPTとNotionのアカウントが必要ですが、どちらも利用しているという前提で今回はアカウント設定の流れについては割愛します。

2-1. Notionにデータベースを作成

まずはNotion側の準備です。ChatGPTの会話ログを保存するため、新規ページに空のデータベースを作成します。



今回はページタイトルを「Chat to Notion」で作成しました。また、テーブルのプロパティは「タイトル」「タグ」「日付」「URL」を設定しておきます。保存先となるデータベースを用意しておかないと「Chat to Notion」は機能しないので、必ず用意してください。

2-2. Chrome拡張機能「Chat to Notion」をインストール

Chromeウェブストアで「Chat to Notion」を検索し、拡張機能をインストールします。



インストールが完了したら、使いやすいようにピン留めしておきましょう。


2-3. Notionデータベースとの連携

ピン留めした「Chat to Notion」のアイコンをクリックすると、以下の画面が表示されます。「ページを選択する」ボタンをクリックしてください。



以下の画面が表示されるので、手順2-1で作成したページ「Chat to Notion」を選択して「アクセスを許可する」ボタンをクリックします。



以上でデータベース連携は完了です。

2-4. ChatGPTの会話ログを保存する

ChatGPTで会話ログを開くと、回答部分にピンマークが表示されるようになっています。このピンマークをクリックするとポップアップが表示されるので、保存先が指定したページ(Chat to Notion)になっているのを確認して、「保存」ボタンをクリックしてください。



保存完了後にNotionデータベースに戻ると、先ほど保存した会話ログがデータベースに追加されています。この時、作成日やタグも一緒に登録しておくと、あとで検索する際に探しやすくなります。



また、回答の一部ではなく会話ログすべてを保存することもできます。すべて保存する場合はブラウザのアドレスバー横にあるアイコンをクリックして「全チャットを保存」ボタンをクリックしてください。


おわりに

今回はChatGPTの会話ログをNotionに保存・整理できるツール「Chat to Notion」について紹介しました。
ChatGPTを業務で活用する中で、「得られた知見をいかに蓄積・整理し、再活用できるか」は重要なポイントです。ChatGPTのログ管理に困っている方、ナレッジの整理を効率化したいと考えている方は、ぜひ一度「ChatGPT to Notion」を試してみてはいかがでしょうか。

気軽で便利!表参道のチェーン店ランチまとめ

表参道には洗練された雰囲気のカフェやレストランなど一流なお店ばかりかと思いきや、気軽に立ち寄れるチェーン店が点在しています。
今回は、駅から徒歩圏内にある表参道駅周辺にあるチェーン店を、まとめてみました。
少し時間を潰したい時や、選んでいる暇がない時にぜひご活用ください。

1. マクドナルド 南青山店

表参道駅から徒歩約4分の青山オーバルビル地下1階に位置するマクドナルドです。朝早くから営業しており、朝食やランチ、ちょっとした休憩に便利です。店内は広々としており、無料Wi-Fiも完備。ショッピングの合間に立ち寄るのにも最適です。

出典元:食べログ
店名 マクドナルド 南青山店
住所 東京都渋谷区神宮前5-52-2 青山オーバルビルB1F
営業時間 6:30~23:00(年中無休)
定休日 なし
座席 154席
Wi-Fi あり
電源 一部の席にコンセントあり
マップ https://maps.app.goo.gl/CbC51AxQETSrwGqK9

2. 丸亀製麺 青山オーバル店

マクドナルドと同じ「青山オーバルビル」内にあります。
ランチタイムはビジネスマンで賑わいます。平日は少し列ができるのでご注意ください。セルフサービスなので、さっと食事を済ませたいときにもぴったりです。

出典元:食べログ
店名 丸亀製麺 青山オーバル店
住所 東京都渋谷区神宮前5-52-2 青山オーバルビルB1F
営業時間 11:00~21:00(ラストオーダー20:30)
定休日 不定休
座席 63席
Wi-Fi なし
電源 なし
マップ https://maps.app.goo.gl/yDuGKfxzv13Qh2QW7

3. ケンタッキーフライドチキン 表参道・北青山店

表参道駅B2出口から徒歩約2分の場所にあるケンタッキーです。店内は落ち着いた雰囲気で、テイクアウトにも便利で、2階席でゆっくり食事を楽しむことも可能です。

出典元:食べログ
店名 ケンタッキーフライドチキン 表参道・北青山店
住所 東京都港区北青山3-10-7
営業時間 10:00~22:00
定休日 不定休
座席 40席(1階注文カウンター、2階に28席の飲食スペースあり)
Wi-Fi なし
電源 なし
マップ https://maps.app.goo.gl/VqHLZNxjWLwhjFtFA

4. クアアイナ 青山本店

表参道駅B1またはB3出口から徒歩約1分の場所にあるハワイ発のハンバーガーショップです。ボリューム満点のハンバーガーやサンドイッチが人気で、店内はハワイの雰囲気を感じられるインテリアが魅力です。ハンバーガーだけでなく、パンケーキやサラダもあります。友人とのランチや小腹が空いた時にもおすすめです。

出典元:食べログ
店名 クアアイナ 青山本店
住所 東京都港区南青山5-10-21
営業時間 月~金 11:00~21:00(L.O.20:30)、土日祝 10:00~21:00(L.O.20:30)
定休日 不定休
座席 65席(テーブル57席、カウンター8席)
Wi-Fi なし
電源 なし
マップ https://maps.app.goo.gl/ArVxpfJZDcgfsNRK6

5. スターバックスコーヒー 表参道 神宮前4丁目店

表参道駅から徒歩約5分の場所にあるスターバックスです。落ち着いた雰囲気の店内で、作業や読書に適しています。無料Wi-Fiと電源が利用できるため、長時間の滞在にも便利です。また、平日は7:00~22:30までと長く営業しているのでどんな時間にも活用できます。

出典元:食べログ
店名 スターバックスコーヒー 表参道 神宮前4丁目店
住所 東京都渋谷区神宮前4-3-4 Barbizon7 ANNEX
営業時間 月~金 7:00~22:30、土日祝 8:00~22:00
定休日 不定休
座席 90席
Wi-Fi あり
電源 一部の席に電源あり
マップ https://maps.app.goo.gl/GuvJo77bJMt6VH7n9

おわりに

表参道というと少し敷居が高いイメージがあるかもしれませんが、実は気軽に立ち寄れるチェーン店もたくさんあります。ショッピングや観光の合間に、ほっと一息つける場所としてとても便利です。ぜひ、自分のスタイルに合ったお店を見つけて、表参道をもっと楽しんでみてください。

DOLではWordPressを使用したサイト制作を多数手がけております。今回ご紹介した内容を実際のプロジェクトで活用したい場合や、さらに詳しいカスタマイズや開発のサポートが必要な場合は、ぜひ「DOLに制作を相談する」ボタンからお問い合わせください。