🐍

一切コーディングせずにAI連携だけでWebサイトを作った話

に公開

はじめに

「Zenn と note の自分の記事を一箇所で見られるサイトが欲しい」という思いから、Material Design 3 を使った Web サイトを作成しました。

重要なのは、私は一行もコードを書いていません。

複数の AI ツールに作業を分担させ、私はただ「AI たちの橋渡し役」に徹しました。今回は 完全ノーコード でプロ品質の Web サイトを構築した過程と、その可能性について詳しく記録します。

完成サイト


完成したWebサイトのトップページ


完全ノーコード開発の全体像

私の作業内容(やったこと/やらなかったこと)

やったこと やらなかったこと
日本語で要件を AI に伝える コードを書く
仕様書をコピー&ペースト 技術調査に時間をかける
エラーログをコピー&ペースト 手動でデバッグ

AI 分業システム(誰が何をしたか)

担当 AI 役割
o3 model 要件から詳細仕様書を自動生成
Codex 仕様書どおりに実装コードをフル生成
Cursor UI の余白や配色を対話で微調整
Claude Code デプロイ時のエラーを診断し自動修正

最終的な技術スタック(AI が選定・実装)

レイヤー 採用技術 補足
静的サイト生成 Astro Island Architecture で高速表示
UI コンポーネント Material Design 3 (@material/web) 軽量 Web Components 実装
ビルド / デプロイ GitHub Actions OIDC 認証 + キャッシュ最適化
ホスティング GitHub Pages .nojekyll で Jekyll 無効化
RSS パース xml2js Promise ベースで非同期処理
自動更新 cron (7:00 JST) Workflow schedule イベント

STEP 1 – 日本語で要望を投げるだけ


AIに要望を伝えたときの実際のプロンプト例

Zenn と note の記事をまとめたい
デザインは Material Design 3
GitHub Pages で公開
毎朝決まった時間に更新

o3 model が返してきた主なアウトプット

カテゴリ 内容
技術スタック選定 Astro + MD3 + GitHub Actions が最適と提案
アーキテクチャ RSS 取得 → JSON 変換 → 静的ビルドの 3 段構成
パフォーマンス ビルド時に RSS を取得し、ランタイム外部通信ゼロ
SEO / UX 静的 HTML でクローラビリティ確保、MD3 でレスポンシブ
運用 JST 7:00 = UTC 22:00 の時差計算も自動
制約事項 note 無料 RSS は抜粋のみ等をドキュメント化

STEP 2 – 仕様書をコピペするだけ


AIが自動生成した詳細仕様書とリポジトリ構成例

Codex が生成した実装のハイライト:

  • RSS パイプライン — xml2js でエラー耐性付きパース。
  • MD3 コンポーネント — ES Module で読み込み、CSS カスタムプロパティでテーマカスタム。
  • Container Queries — メディアクエリ不要の宣言的レスポンシブ。
  • 高速 GitHub Actions — pnpm キャッシュ、最小権限 OIDC、artifact 名の一意化。

STEP 3 – UI 微調整も AI に丸投げ

Cursor とのやり取り例:

私の指示 Cursor の修正結果
「カード間を 16px 空けたい」 .articles-grid { gap: 1rem; }gap: 1.5rem
「色をもう少し濃く」 --md-sys-color-primary を #1565C0 に変更
「2 列で良い」 Container Queries のブレークポイントを 960px に再設定

私はブラウザで F5 を押して確認するだけでした。


STEP 4 – デプロイエラーも AI が解決

Claude Code が対処したエラーとパッチ:

エラー 原因 パッチ
Jekyll が走って失敗 GitHub Pages はデフォルト Jekyll public/.nojekyll 追加
Pages Source 未設定 Settings → Pages が空 「GitHub Actions」を選択
Artifact 名重複 (409) 同名 artifact を二重生成 name: github-pages-${{ github.run_id }} で一意化
Workflow 競合 役割重複 YAML が残存 不要 YAML を削除

修正コミットも PR も Claude Code が自動生成、私は Approve & Merge をクリックしただけ。


STEP 5 – 毎朝 7 時の自動更新を確認して完了

翌朝、GitHub Actions が定刻で走り、最新記事が自動追加されたことを確認してプロジェクト終了。以降は"放置運用"です。


デベロッパー視点での気づき

AI が選んだ技術の妙

  • Astro は Island Architecture で LCP が爆速。
  • @material/web は純 Web Components、JS バンドルが激減。
  • Container Queries はメディアクエリより宣言的 & 保守性◎。
  • OIDC + GitHub Pages で PAT 不要、セキュリティも向上。

従来開発 vs AI 連携開発

フェーズ 従来 AI 連携
技術選定 数日悩む 1 行要件で即決
実装 人手でコーディング Codex がフル生成
デバッグ Stack Overflow で調査 Claude Code が根本原因を即提示
UI 調整 CSS 試行錯誤 Cursor に要望を伝えるだけ

それでも人間に残る仕事

  • アイデアと要件を具体化する力
  • ビジネス価値・UX の最終判断
  • AI ツール同士をつなぐ設計力

まとめ — コードを書かない開発者の誕生

  • 完全ノーコードでプロ品質のサイトが作れる
  • 複数 AI の連携で単体 AI の限界を超える
  • デプロイエラーも AI に丸投げできる時代
  • 開発者は「実装者」より AI プロダクトマネージャー に近づく

プログラマー不要時代の入り口を体験しました。強化すべきはキーボードスキルではなく、AI を動かす コミュニケーションスキル かもしれません。


付録 — コード断片

コード断片
// RSS パース (src/scripts/fetchFeeds.mjs)
import { Parser } from 'xml2js';
const parser = new Parser({ explicitArray:false, trim:true });

const zennXml = await fetch(`https://zenn.dev/${process.env.ZENN_USER}/feed`).then(r=>r.text());
const noteXml = await fetch(`https://note.com/${process.env.NOTE_USER}/rss`).then(r=>r.text());
const [zenn, note] = await Promise.all([
  parser.parseStringPromise(zennXml),
  parser.parseStringPromise(noteXml)
]);
/* Container Queries によるレスポンシブ */
.articles-grid { display:grid; gap:1.5rem; container-type:inline-size; }
@container (min-width:48rem) { .articles-grid { grid-template-columns:repeat(2,1fr); } }
@container (min-width:75rem) { .articles-grid { grid-template-columns:repeat(3,1fr); } }
# GitHub Actions (build.yml 抜粋)
on:
  schedule:
    - cron: '0 22 * * *'      # 07:00 JST
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: pnpm/action-setup@v3
        with: { version: 9 }
      - run: pnpm install --frozen-lockfile
      - run: pnpm astro build
      - uses: actions/upload-pages-artifact@v3
        with:
          path: dist
          name: github-pages-${{ github.run_id }}
      - uses: actions/deploy-pages@v4
リバナレテックブログ

Discussion