Qwen3.5による6ページの歯科サイト生成
Qwen3.5にHTML、Tailwind CSS、Alpine.jsだけで6ページの歯科サイト生成を依頼しました。Webサイト開発へのローカルLLM利用として、18分2秒の実行記録、モデルの報告、確認できた範囲をまとめます。
今回の課題
Qwen3.5に、6ページの歯科クリニックサイトを作る課題を渡しました。HTML、Tailwind CSS、Alpine.jsだけを使い、ビルドステップとSPA化は禁止しました。複数ページの構成を保ち、共通UIと各ページの操作を実装できるかを見るためです。
全体の所要時間は約18分2秒でした。モデルは必要なファイルを生成したと報告しています。
多言語対応はUIを中心とし、保守性とSEOも要件に含めました。
評価したかったこと
- 静的な複数ページサイトの設計
- ARIA属性、フォーカス管理、コントラストへの対応
- Alpine.jsによる軽量な操作の実装
- ツールのエラー復旧と環境への対応
課題の条件
使用できる技術
- Plain HTML files only(ビルドステップなし)
- Tailwind CSS via CDN
- Alpine.js via CDN(軽量インタラクションのみ)
- 外部UIコンポーネントライブラリ禁止
- 参照サイトからの画像・テキスト流用禁止
必要な6ページ
| ファイル | 内容 | 主要インタラクション |
|---|---|---|
| index.html | Hero、サービスカード、医師プレビュー、ニュース、CTA | なし(静的) |
| services.html | 12+治療カード、カテゴリフィルタ | Alpine.jsフィルタ、FAQアコーディオン |
| doctors.html | 6+プロフィール | 詳細展開UI |
| info.html | 料金表、保険、支払い方法 | Estimateモーダル |
| visit.html | 来院フロー、予約導線 | バリデーション状態 |
| access.html | 住所、交通、マップ | 経路切替タブ(車/電車/徒歩) |
共通レイアウト
- ヘッダー: クリニック名、主要ナビ、言語切替UI
- モバイルナビ: Alpine.jsハンバーガーメニュー、フォーカス管理、ESC-to-close
- Book Appointment: デスクトップはヘッダー、モバイルは画面下部固定
- フッター: クリニック情報、プライバシー/利用規約リンク、著作権
ページ数と必要な操作を固定し、同じ課題でモデルを比較できるようにしました。
実行の記録
ディレクトリ作成の失敗と復旧
最初のCreate directory siteは、Path to create was outside the projectで失敗しました。その後、モデルは次の手順で再試行しました。
list_allowed_directoriesを呼び出す- 許可ディレクトリに
/があることを確認する /Users/ksh3/Development/sandbox7/siteとsite/assetsを絶対パスで作り直す
失敗後に許可範囲を確認し、パスを変えて処理を続けています。
ファイルの生成順序
HTMLを1ページずつ書き、README.mdを追加しました。ディレクトリ一覧を確認した後、assets/placeholder.svgも追加しています。
- ディレクトリ構造の作成
- 各ページの生成(index -> services -> doctors -> info -> visit -> access)
- README作成
- 一覧でファイル存在確認
- 補助アセット追加
モデルが報告した内容
| ページ | 報告内容 |
|---|---|
| index.html | Hero、8件サービスカード、6件Why Choose Us、4人医師プレビュー、3件ニュース、診療時間/保険要約、CTAバンド |
| services.html | 16件治療カード、カテゴリフィルタ、6件FAQアコーディオン |
| doctors.html | 6人プロフィール、展開可能な詳細 |
| info.html | 8項目料金表、コスト内訳モーダル、保険・支払い方法 |
| visit.html | 6段階来院フロー、予約方法、バリデーション状態 |
| access.html | 連絡先、診療時間、経路切替タブ |
ページ別の記録
元の記録には、ページごとの機能をまとめた次の表もあります。
| ページ名 | 実装された主な要素・機能 | Alpine.js によるインタラクション |
|---|---|---|
Home (index.html) | ヒーロー、8つのサービスカード、4つの強み、医師プレビュー、ニュース、診療時間 | モバイルナビゲーション、言語切替UI |
Services (services.html) | 14種類の治療カード、4つのカテゴリ、FAQセクション | クライアントサイドのカテゴリフィルタリング、FAQアコーディオン |
Doctors (doctors.html) | 6名の医師プロフィール、専門分野、言語、資格情報 | プロフィールの「詳細を見る」展開・収納機能 |
Info (info.html) | 8項目の料金表、保険対応リスト、支払い方法 | 費用内訳を表示する動的な見積もりモーダル |
Visit (visit.html) | 6ステップの初診フロー、予約方法の案内 | バリデーション機能付きの予約リクエストフォーム |
Access (access.html) | 連絡先、地図プレビュー、近隣駅、駐車場情報 | 移動手段(車/電車/徒歩)別のルート案内切り替え |
上の自己報告では治療カードが16件、こちらの表では14種類です。Homeの強みも6件と4つで異なります。HTMLが残っていないため、どちらの数が実装に対応するかは確認できません。
レイアウトとアクセシビリティの報告
予約ボタンは、モバイルでは画面下部に固定し、デスクトップではヘッダーに置く構成です。ハンバーガーメニューはAlpine.jsを使い、フォーカス管理とESCキーで閉じる操作に対応したと記録されています。
HTMLについては、header、nav、main、footerを使い、見出しをh1からh3まで整理したとの報告があります。外部UIライブラリを使わず、読み込みを軽くし、レイアウトシフトを抑える方針でした。
所要時間と診断の報告
全プロセスは約18分2秒でした。
- 6ページ分のHTML、CSSクラス、JSロジックを生成
- すべてのHTMLファイルでDiagnostics上のエラー・警告なし
- ローカルSVGとインラインアイコンを使用
次の比較で確かめたいこと
生成されたHTMLが残っていないため、今回の自己報告だけでは品質を判断できません。実ファイルでは、次を確認する必要があります。
- ARIA属性の有無
- フォーカス管理の実装
- Tailwindのクラス構成
- Alpine.jsの状態管理
次回は同じプロンプトを別モデルにも渡し、生成ファイル、スクリーンショット、レビュー結果を残して比較したいと思います。アクセシビリティ、操作、クラス構成を定量評価します。
複数ページの構成崩れ、アクセシビリティの欠落、Alpine.jsの実装不足、共通レイアウトの不整合、READMEの不足も整理します。コンテンツ翻訳まで広げる場合は、UIの多言語対応とは別に、翻訳する範囲と更新方法を決める必要があります。
