経緯
遅ればせながら、個人でバイブコーディングするとしたらどういう方法が良いか……ということで、プログラミング支援AIサービス関係について調べてみました。
- プログラマー必携!2025年バイブコーディング(vibe coding)ツール完全ガイド #生成AI – Qiita
- AIによるコーディングアシスタント、コーディングエージェント、アプリケーション自動生成サービスまとめ(2025年3月版) - Publickey
- プログラミング支援AIサービスまとめ。GitHub Copilot、AWS CodeWhispererなど11種類(2024年3月版) - Publickey
- AIツール活用の羅針盤:現在の選択と将来展望
- ContinueとCursor AI徹底比較と使い方ガイド
ざっと見た感じですと、 Amazon Q Developer (旧 AWS CodeWhisperer), Codeium (Codeium Windsurf), llama.vscode, Continue 辺りが手軽に試せそうな雰囲気に感じられました。
Continue は自前で環境を作らないといけないのでお手軽感が薄いですが、逆に他はクラウドなのでデータの流出等を気にしないといけないのでトレードオフといいますか……。
ベンダーの知名度なども鑑みて、とりあえずならば Amazon Q Developer が最も検証しやすそうと感じました。
準備・設定
まずは VSCode から拡張機能で Amazon Q を検索、インストールします。
インストールが完了するとサイドバーにロゴが出現するので、そのロゴをクリックします。

今回は検証なので「Personal account」を選択して「Continue」ボタンをクリックします。

外部サイトを開く許可を求められるので開きます。

しかし、サインアップ画面が分かりづらかったため https://builder.aws.com/start へ直接アクセスしました。
「Sign up with Builder ID」ボタンをクリックしてアカウント作成へ進みます。
ちなみに AWS Builder ID はクレジットカードなどの登録なしで AWSアカウント が作成できる個人向けのアカウント (無論、機能制限はある) とのことです。
ID、パスワードを決めてアカウント作成 (サインアップ) します。

VSCode 側で Amazon Q がずっとリクエスト完了待機していたからか、 VSCode へのアクセスを許可するかどうか求められたので許可します。

許可完了です。

サインインもできていることが確認できました。

VSCode 上でも Amazon Q のチャットができるようになりました。
検証
試しに以下の内容をチャットに聞いてみました。
以下の正規表現を用いて、変則的な Syslog のフォーマットを解析する PHP のコードを記述してください。
特に、 Priority から Facility と Severity を逆算する部分は、正規表現中の `<([\d]{1,3})>` の部分の値を使用してください。
```
"([\d]{4}\/[\d]{2}\/[\d]{2}\s[\d]{2}:[\d]{2}:[\d]{2}\s\+[\d]{4})","<([\d]{1,3})>((\[[\w\d\s\-:]+\])\s([\w\d\s\-_\.\(\)]+:\s[\w\d\s\-_\.\(\)]+:\s([\w\d\s\-_\.\(\):]+))|(\[[\w\d\s\-:]+\])\s([\w\d\s\-_\.\(\)]+:\s[\w\d\s\-_\.\(\)=,:\[\]]+))"
```
生成されたコードがこちら。
コード (syslog_parser.php)
<?php
function parseSyslog($logLine) {
$pattern = '/"([\d]{4}\/[\d]{2}\/[\d]{2}\s[\d]{2}:[\d]{2}:[\d]{2}\s\+[\d]{4})","<([\d]{1,3})>((\[[\w\d\s\-:]+\])\s([\w\d\s\-_\.\(\)]+:\s[\w\d\s\-_\.\(\)]+:\s([\w\d\s\-_\.\(\):]+))|(\[[\w\d\s\-:]+\])\s([\w\d\s\-_\.\(\)]+:\s[\w\d\s\-_\.\(\)=,:\[\]]+))"/';
if (preg_match($pattern, $logLine, $matches)) {
$timestamp = $matches[1];
$priority = (int)$matches[2];
// Priority から Facility と Severity を逆算
$facility = $priority >> 3;
$severity = $priority & 7;
$message = isset($matches[3]) ? $matches[3] : '';
return [
'timestamp' => $timestamp,
'priority' => $priority,
'facility' => $facility,
'severity' => $severity,
'message' => $message
];
}
return false;
}
// 使用例
$sampleLog = '"2024/01/15 10:30:45 +0900","<134>[kernel: network] eth0: link up: 1000Mbps full duplex"';
$result = parseSyslog($sampleLog);
if ($result) {
echo "Timestamp: " . $result['timestamp'] . "\n";
echo "Priority: " . $result['priority'] . "\n";
echo "Facility: " . $result['facility'] . "\n";
echo "Severity: " . $result['severity'] . "\n";
echo "Message: " . $result['message'] . "\n";
}
?>
実行した結果は以下の通りです。

> php .\syslog_parser.php
Timestamp: 2024/01/15 10:30:45 +0900
Priority: 134
Facility: 16
Severity: 6
Message: [kernel: network] eth0: link up: 1000Mbps full duplex
おお……ちゃんと <> で囲まれた数値を Syslog の Priority として、 Severity と Facility を計算 ( Priority = Facility * 8 + Severity )して出力していますね……賢い……。
コア部分(今回は解析処理、特に正規表現)はこちらで組んだものだったので、後は入出力・UI的な肉付けの部分だけだったのですが、ちゃんと使えますね。
使い捨てのスニペットレベルや、本来処理させたいメイン部分ではなく今回のようなサブの部分を任せる、と言うのであれば行けるかもしれません。
参考
コーディングアシスタント比較
- プログラマー必携!2025年バイブコーディング(vibe coding)ツール完全ガイド #生成AI – Qiita
- AIによるコーディングアシスタント、コーディングエージェント、アプリケーション自動生成サービスまとめ(2025年3月版) - Publickey
- プログラミング支援AIサービスまとめ。GitHub Copilot、AWS CodeWhispererなど11種類(2024年3月版) - Publickey
- AIツール活用の羅針盤:現在の選択と将来展望
- ContinueとCursor AI徹底比較と使い方ガイド