アーティサン株式会社
  • AI関連
  • セキュリティ・保守

数か月の見積もりが約10日間に。生成AIで進めたWordPress・PHP移行の実録

第1回:期間短縮の成果と、その進め方

この記事の4行要約

  • 生成AIを使わない進め方で数か月と見積もったWordPress・PHP移行を、約10日間で当時の最新版への実質的な移行完了まで進めました
  • GitHubを情報共有の中心に、ChatGPTで方針整理、Claude Codeで実作業、Codexでレビューを行い、人が最終判断する体制をとりました
  • 期間短縮につながったのは、調査・改修・検証・記録をつなぐサイクルの速さでした
  • 移行の約2か月後に発覚したPHPの重大な脆弱性にも、更新済みの環境で修正版の適用状況と正常性を確認する対応ができました
この記事を書いた人
小山才喜

小山 才喜こやま さいき

Microsoft Azure Microsoft 365 AI開発

元マイクロソフトの技術営業、ジョルダン社での事業立ち上げを経て独立、起業13年目の生涯現役社長

元MVP(Microsoft Valuable Professional)
「VSTOとSharePoint Server 2007による開発技術」

など著書多数

Microsoft 認定資格(MCP)を30以上保持したタイトルホルダー


GitHubを情報共有の中心に、ChatGPTで方針を整理し、Claude Codeで実作業を進め、Codexでレビューする。今回は、この役割分担でWordPress・PHPの移行に取り組みました。

生成AIを利用しない進め方を前提とした事前見積もりでは、数か月を想定していた移行です。それを、約10日間で当時の最新版への実質的な移行完了まで進めることができました。

本記事では、顧客情報を伏せたうえで、どのような体制を作り、生成AIに何を任せ、人が何を判断したのかを紹介します。

  • 事前見積もり:生成AIを利用しない進め方で数か月
  • 実績:約10日間で当時の最新版への実質的な移行を完了
  • 対象:長年運用してきたWordPressと、旧来のPHPを前提とした環境
  • 移行内容:WordPressの更新、PHP 8.3環境への移行、テーマ・プラグインなどの互換性対応
  • 体制:一人の担当者を、役割を分けた複数の生成AIが支援
  • 現在:生成AIを利用した日々の脆弱性チェックと各種更新を継続

数か月という比較対象は事前見積もりであり、同じ移行を二つの方法で実施して測定したものではありません。また、約10日間は最新版への実質的な移行完了までの期間で、その後のすべての保守や運用改善を含めてはいません。

移行の約2か月後、PHPの重大な脆弱性が発覚した

2026年10月、PHPで重大な脆弱性に対するセキュリティ更新が公開されました。

今回の移行を終えたのは、その約2か月前です。タイミングは偶然で、この脆弱性を知って移行を始めたわけではありません。

しかし、先に環境を更新していたことで、その後の対応では、移行先に修正版が配信されているか、サイトが正常に動いているかを確認する工程へ進めました。

古い環境からの移行には、時間も手間もかかります。それでも、更新を続けられる状態を先に整えておくことには意味があります。今回の経験では、その移行にかかる期間を短縮するうえで、生成AIと人の役割分担が役立ちました。

移行完了から約2か月後の脆弱性対応と継続運用

最初に整えたのは、生成AIと一緒に作業する体制

今回の移行は、一人の担当者を複数の生成AIが支援する形で進めました。それぞれに役割を与え、作業の結果をGitHubへ残します。人は、その記録と実際の検証結果を確認しながら、次の工程へ進むかを判断しました。

  • GitHub:課題・計画・変更・検証結果・承認の記録。担当するAIや会話が変わっても、作業状況と判断根拠を引き継ぐ場所。
  • ChatGPT:方針の壁打ち、課題整理、作業依頼の具体化。何を、どの順序で、どこまで進めるかを整理する役割。
  • Claude Code:コード・設定の調査、改修、検証、結果の記録。決めた範囲の実作業を進める役割。
  • Codex:計画・変更差分・検証結果のレビュー、追加調査や修正。別の観点から見落としや確認不足を探す役割。
  • 人:対象範囲、仕様、実施可否、本番切替を、業務への影響を踏まえて最終判断する役割。
GitHubを基盤にChatGPT、Claude Code、Codexと人が役割を分ける体制

この分担は、各製品の能力を固定的に評価したものではありません。今回の移行を進めるために与えた、基本的な役割です。

ChatGPTで、曖昧な課題を作業に落とし込む

移行の初期段階では、何を確認すべきか、どこから手を付けるべきかが曖昧です。

「PHPを更新したい」という目的があっても、既存のWordPressやプラグインが動くか、テーマの修正が必要か、データをどう守るかを整理しなければ、具体的な作業に進めません。

ChatGPTは、この方針整理と壁打ちに使いました。課題を分け、作業順序を考え、Claude Codeへ渡す依頼を具体化します。結果が返ってきたら、残った問題を整理し、次の作業を検討します。

ここで意識したのは、依頼ごとに対象範囲と確認事項を明確にすることです。調査の段階、変更する段階、本番へ適用する段階を区切り、人が判断できる形にしました。

Claude Codeで、調査・改修・検証を進める

具体的な実作業は、主にClaude Codeで進めました。コードや設定を調べ、互換性の問題を整理し、修正して、結果を確認します。必要な検証処理の作成や、作業結果の記録にも活用しました。

ただし、一度の作業範囲は小さく区切りました。たとえば、プラグインの調査であれば、実際の有効状態とバージョン、互換性上の問題を整理するところまでにします。その結果を確認してから、更新や置き換えへ進みます。

この区切りによって、問題が起きたときに原因を追いやすくなり、人も変更内容を確認しやすくなりました。

Codexで、変更と確認結果を別の視点から見る

Codexは、計画や変更差分、検証結果のレビューに活用しました。必要に応じて追加調査や修正も行いました。

確認したいのは、コードの見た目だけではありません。

  • 依頼した範囲を超えて変更していないか
  • 既存の仕様やデータを維持できているか
  • 完了条件に対して、確認が足りているか
  • 未確認の項目を、確認済みとして扱っていないか
  • 問題が起きた場合の復旧手段があるか

実作業とレビューに別の視点を入れることで、見落としを探しやすくなります。もちろん、複数の生成AIが同意しただけで、正しさが保証されるわけではありません。最終的には、変更差分、ログ、データ比較、動作確認など、実際に得られた結果と照合する必要があります。

GitHubを、会話をまたいで情報を引き継ぐ場所にする

複数の生成AIを利用すると、それぞれの会話で前提がずれることがあります。

どこまで完了したのか。何が未確認なのか。どの変更が認められているのか。これを毎回説明し直すと、時間がかかり、説明漏れも起こり得ます。

そこで、GitHubに情報を集約しました。Issueには課題・承認・経過・結果を残す。Pull Requestにはコードや設定の変更をまとめる。確定した手順や結果は文書として残す。次の作業では、これらの記録を参照してから進めます。

GitHubは、コードの保存場所であると同時に、人と生成AIの間で作業を引き継ぐ場所になりました。個別の会話だけに依存せず、判断の根拠をたどれることが、継続して作業を進めるうえで役立ちました。

また、リポジトリには、生成AIが作業する際の共通ルールも置きました。変更を意味のある単位にまとめること、本番への操作を無断で広げないことなどを、毎回参照できる形にしています。

なぜ、WordPressの移行には時間がかかるのか

長年運用されてきたWordPressには、その間に積み重なった仕組みがあります。独自テーマ、カスタムフィールド、問い合わせフォーム、編集用テンプレート、外部サービスとの連携。それぞれが日々の業務の一部になっています。

PHPを更新してトップページが表示されても、移行完了とは判断できません。記事を編集できるか、画像を扱えるか、フォームの入力・確認・送信が動くかまで見る必要があります。

今回も、調査の段階で、構成資料に記載されたプラグイン数と、実際に有効なプラグイン数が違っていました。ほかにも、古いWordPressのFatal Error、カスタムフィールドのデータ保全、記事ページの404、フォームの表示と送信確認などに対応しました。

こうした問題を、一つずつ調べ、修正し、確認する必要があります。

期間短縮につながったのは、工程をつなぐ速さ

生成AIを使わない場合でも、スクリプトによる自動化や並行作業はできます。今回の特徴は、生成AIを複数の工程へ取り入れ、調査結果を改修・検証・記録へつなぐサイクルを短くしたことです。

人が方針を決め、生成AIが具体的な作業を進め、結果をレビューし、GitHubへ残して次へ進む。このサイクルが、約10日間での実質的な移行完了を支えました。

ただし、期間と工数は別の指標です。人がレビューや試験、判断に投入した時間を集計せずに、期間の短縮率をそのまま工数削減率として扱うことはできません。今回は、期間短縮の実績と、それを支えた具体的な進め方を紹介しています。

移行後も、生成AIを使った運用を続けている

現在は、生成AIを利用して、脆弱性のチェックと各種更新を日々行っています。

移行時に整理した構成情報、確認項目、過去の問題、作業記録は、その後の更新にも役立っています。何が動いていて、どこを確認すべきかが分かることで、更新時の判断を進めやすくなるためです。

大きな移行を短期間で終えることに加え、その後も環境を把握し、更新を続けること。この両方に生成AIを活用しています。

次回は、作業依頼の具体例、GitHubでの引き継ぎ、停止条件とレビューの進め方を紹介します。

脆弱性への対応やシステムの復旧、古い環境からの移行に苦慮されている方々にとって、今回の経験が、対応を一歩でも前に進める助けになれば幸いです。

参照:PHP 8.3.36公式リリース告知

Artisan(アーティサン)とは

Artisan(アーティサン)とは、腕の良い職人を意味する言葉です。

アーティサン株式会社では、技術をつくること自体を目的とせず、使われ続ける価値として社会に届けることを使命としています。

モビリティ事業は公共交通事業者や自治体向けに、バスロケーションシステム「バス予報」、予約配車システム「オンデマンドバス予報」、GTFS作成支援「まかせてGTFS」、お知らせ配信「かんたんAlert」などを提供しています。

MSクラウド事業はMicrosoft 365、SharePoint、Power Apps、Power Automate、Copilot Studioなどを中心に、コンサルティング、設計、構築、開発、研修、内製化、運用支援を提供しています。

2つの事業を通じて、企業と社会が自らの力で最適解を導き出すための支援を行っています。

気になることがあれば、お気軽にご相談ください。

また、技術を追い求めながら会社と一緒に成長していける仲間も、積極的に募集しています。

バス予報・オンデマンド交通など、モビリティ事業のサービス一覧はこちら

モビリティ事業ページへ

SharePoint・Power Platformなど、Microsoftクラウド事業のサービス一覧はこちら

Microsoftクラウド事業ページへ

アーティサンの採用情報はこちら

採用情報ページへ