「WordPressのコーディングって、やることが多い割に似た作業も多い…」
そんなときに刺さるのが Google Antigravity(アンチグラビティ)。これは“ただの補完AI”じゃなく、計画→実装→検証まで自律的に進めるエージェント型の開発プラットフォームです。Google公式のCodelabでも「エージェント・ファースト」な開発環境として紹介されています。
Antigravityって何が違うの?
よくあるAIエディタは「人間が主役で、AIが補助(サジェストやチャット)」になりがち。
一方Antigravityは、“Mission Control(司令塔)”でエージェントを動かし、タスクを自走させる発想が中心です。画面も大きく Editor(IDE) と Manager / Agent Manager(複数エージェント管理) の2つに分かれる、という説明が複数の解説・ハンズオンで共通しています。(Google Codelabs)
この記事のゴール(WordPressで“最強”を体感する)
例として、よくある実務タスクを Antigravity前提の進め方で作ります。
- カスタム投稿タイプ
eventを追加 - ACFが無くても動くようにフォールバック(
get_post_meta) [event_card]ショートコードで一覧表示- CSSを同梱して“貼るだけ”にする
“最強”の使い方:まずAIに「仕様→設計→実装手順」まで作らせる
Antigravityの良さは、いきなりコードを書かせるより タスク分解が得意なところ。
最初に投げる指示(コピペ用)
目的:WordPressにイベント表示機能を追加したい。
要件:
- CPT event を追加(タイトル、本文)
- メタ項目:day(開催日), place(場所)
- ACFがあれば get_field、なければ get_post_meta で取得
- [event_card posts=6] ショートコードで最新6件をカード表示
- 可能ならCSSも同梱(ショートコード出力内にstyleタグでOK)
- functions.php に追記できる形で、コードは“全文”で出して
成果物:
1) 実装方針(ファイル/フック)
2) コード全文
3) 確認手順(WP管理画面で何を確認するか)
ポイントは「成果物」を明示して、実装方針→コード→確認手順の順番に固定すること。これだけで、後戻りが激減します。
(Codelabでも“エージェントが計画・実装・検証まで進める”思想が強調されています)(Google Codelabs)
WordPress実装例:CPT + ショートコード(貼るだけ版)
以下は、上の要件を満たすサンプルです(テーマの functions.php に入れる想定)。
<?php
if ( ! defined('ABSPATH') ) exit;
/**
* Event CPT + Shortcode card list
* - CPT: event
* - Meta: day, place (ACF優先 / なければ post_meta)
* - Shortcode: [event_card posts=6]
*/
add_action('init', function () {
// -----------------------------
// CPT: event
// -----------------------------
register_post_type('event', [
'label' => 'イベント',
'public' => true,
'has_archive' => true,
'menu_position' => 20,
'supports' => ['title', 'editor', 'thumbnail', 'excerpt'],
'rewrite' => ['slug' => 'event'],
'show_in_rest' => true,
]);
});
/**
* meta getter (ACF fallback)
*/
if ( ! function_exists('my_event_get_meta') ) {
function my_event_get_meta($post_id, $key) {
$post_id = (int)$post_id;
$key = (string)$key;
if ( $post_id <= 0 || $key === '' ) return '';
if ( function_exists('get_field') ) {
$v = get_field($key, $post_id);
if ( $v !== null && $v !== false && $v !== '' ) return $v;
}
return get_post_meta($post_id, $key, true);
}
}
/**
* date format helper
* Accepts: "2026-02-27" or "2026/02/27" etc.
*/
if ( ! function_exists('my_event_format_day') ) {
function my_event_format_day($raw) {
$raw = trim((string)$raw);
if ( $raw === '' ) return '';
$raw2 = str_replace(['.', '/', '年', '月', '日'], ['-', '-', '-', '-', ''], $raw);
$raw2 = preg_replace('/\s+/', '', $raw2);
try {
$dt = new DateTime($raw2);
return $dt->format('Y年n月j日');
} catch (Exception $e) {
return $raw; // 変換できなければそのまま
}
}
}
add_shortcode('event_card', function($atts){
$atts = shortcode_atts([
'posts' => 6,
], $atts, 'event_card');
$posts = max(1, (int)$atts['posts']);
$q = new WP_Query([
'post_type' => 'event',
'post_status' => 'publish',
'posts_per_page' => $posts,
'orderby' => 'date',
'order' => 'DESC',
]);
ob_start();
?>
<style>
.event-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
@media (max-width: 900px){.event-cards{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media (max-width: 520px){.event-cards{grid-template-columns:1fr;}}
.event-card{border:1px solid rgba(0,0,0,.08);border-radius:14px;padding:14px;background:#fff}
.event-card__title{font-weight:700;font-size:16px;line-height:1.4;margin:0 0 8px}
.event-card__meta{font-size:13px;line-height:1.6;opacity:.85}
.event-card__meta span{display:block}
.event-card__btn{display:inline-block;margin-top:12px;font-size:13px;text-decoration:none;padding:10px 12px;border-radius:999px;border:1px solid rgba(0,0,0,.15)}
</style>
<div class="event-cards">
<?php if ( $q->have_posts() ): ?>
<?php while ( $q->have_posts() ): $q->the_post();
$pid = get_the_ID();
$day = my_event_get_meta($pid, 'day');
$place = my_event_get_meta($pid, 'place');
$day = my_event_format_day($day);
$place = trim(wp_strip_all_tags((string)$place));
?>
<article class="event-card">
<h3 class="event-card__title"><?php echo esc_html(get_the_title($pid)); ?></h3>
<div class="event-card__meta">
<?php if ( $day !== '' ): ?>
<span>開催日:<?php echo esc_html($day); ?></span>
<?php endif; ?>
<?php if ( $place !== '' ): ?>
<span>場所:<?php echo esc_html($place); ?></span>
<?php endif; ?>
</div>
<a class="event-card__btn" href="<?php echo esc_url(get_permalink($pid)); ?>">
詳しく見る
</a>
</article>
<?php endwhile; wp_reset_postdata(); ?>
<?php else: ?>
<p>現在、イベントはありません。</p>
<?php endif; ?>
</div>
<?php
return ob_get_clean();
});
Antigravityで“強い”進め方のコツ(WordPress向け)
1) まず「確認手順」もセットで作らせる
WPは「表示できたけど404」「管理画面の項目が出ない」みたいな事故が多いので、最初からチェックリスト化が効きます。
2) 変更範囲を固定する
- 「functions.phpに追記だけ」
- 「プラグイン化して安全に」
みたいに“触る場所”を縛ると、AIの暴走が止まります。
3) セキュリティは“自動実行”を疑う
エージェントがターミナル等を扱えるタイプのIDEは便利な一方で、設定次第で危険も増えます。Antigravity系のエージェントIDEはセキュリティ懸念が話題になることもあるので、権限・機密ファイル・コマンド実行の扱いは慎重にした方が良いでしょう。
公式で触るなら(導入)
GoogleのCodelabに「Getting Started with Google Antigravity」があり、日本語ページもあります。まずここで全体像を掴むのが早いです。
プロダクトの入り口は公式サイト(antigravity.google)側から辿れます。