Dyno

WordPress サイトのデバッグを Google Gemini がどこまで手伝えるのか検証しました

Google Gemini での WordPress サイトのデバッグ

今回は Google の生成 AI である Gemini に WordPress サイトのデバッグを手伝ってもらうことはできるのか、どこまで実用的なのかを検証しました。 その結果をご紹介します。

結論から言うと、定番的な問題であればかなりの精度で手伝ってくれました。 実用的なレベルと言えると思います。

使用モデル

今月( 2024 年 4 月)リリースされた最新の Gemini 1.5 Pro を使用しました。

システムプロンプト

今回はシステムプロンプトとして次のようなメッセージを使いました。

You are an excellent Wordpress developer. Help the user to resolve problems in a Wordpress site.

Requirements:

  • Reply in Japanese.
  • The user is an experienced software engineer but has little experience to use WordPress. You can use technical terms to explain things.

技術的な正確な回答をしてもらうために、プロンプトを投げかけるユーザーは「 WordPress には詳しくないがソフトウェアエンジニアである」という設定にしました。

レスポンスの長さの指定は行わず、トークンリミットは使用モデルの最大値( 8192 )に設定しました。

試したこと 1) エラーメッセージを渡す

まずはエラーメッセージをテキストで渡してみました。

A B 2 つのサンプルを試しました。 どちらもゼロショットプロンプトですが、的を射たわかりやすいレスポンスが返されました。

サンプル A

Fatal error: Uncaught Error: Call to undefined function defin()

プロンプト

次のプロンプトを入力しました。

ページを開くと次のようなエラーが表示されます。

Fatal error : Uncaught Error: Call to undefined function defin() in /var/www/html/wp-config.php:22 Stack trace: #0 /var/www/html/wp-load.php(50): require_once() #1 /var/www/html/wp-login.php(12): require('/var/www/html/w...') #2 {main} thrown in /var/www/html/wp-config.php on line 22

今回は「次のようなエラーメッセージが表示されます」という説明を付けましたが、システムプロンプトで役割・コンテキストを適切に設定していればぶしつけにエラーメッセージをそのまま渡すだけでも意図を汲んでくれます。

レスポンス

返ってきたレスポンスは次のとおりです。 ユーザーがソフトウェアエンジニアであるという設定を踏まえればとてもよい回答だと思います。

wp-config.php のエラー解析

エラーメッセージから、 wp-config.php の 22 行目で define() 関数が呼び出されていますが、その関数が定義されていないことが原因でエラーが発生していることがわかります。

原因と対策

考えられる原因と対策は以下の通りです。

  • define() 関数のスペルミス: defin() と誤って記述されている可能性があります。22行目を確認し、 define() と正しく記述されているか確認してください。
  • wp-config.php ファイルの破損: ファイルの一部が破損している可能性があります。バックアップから復元するか、WordPress の公式配布物から新しい wp-config.php をダウンロードして、必要な情報を再度設定してください。
  • ファイルの読み込み順序の問題: define() 関数は、WordPress のコアファイルによって定義されています。 wp-config.php が読み込まれる前に、必要なファイルが読み込まれていない可能性があります。 wp-config.php の冒頭部分に、必要なファイルを読み込む処理が記述されているか確認してください。

追加の確認事項

  • エラー発生時の状況: このエラーは特定の操作を行った時に発生するのでしょうか? 例えば、プラグインのインストールや設定変更など。
  • wp-config.php のカスタマイズ: wp-config.php に独自の設定を追加している場合、その部分がエラーの原因になっている可能性があります。カスタマイズした部分をコメントアウトして、エラーが解消されるか確認してください。

解決方法

上記の情報を元に、エラーの原因を特定し、適切な対策を行ってください。エラーが解消しない場合は、エラーメッセージや wp-config.php の内容を添えて、WordPress のサポートフォーラムなどで質問することをおすすめします。

少し冗長な気もしますがそこは今回トークンリミットを最長で設定したからだと考えられます。 ここはプロンプトやトークンリミットでの指定でいくらでも調整が可能なので今回は評価の対象外とします。

サンプル B

もう一つのパターンを試しました。

Fatal error: Uncaught Error: Call to undefined function create_function()

プロンプト

ページを開くと次のようなエラーメッセージが表示されます。どうすればよいですか?

Fatal error: Uncaught Error: Call to undefined function create_function() in /var/www/html/wp-config.php:22 Stack trace: #0 /var/www/html/wp-load.php(50): require_once() #1 /var/www/html/wp-login.php(12): require('/var/www/html/w...') #2 {main} thrown in /var/www/html/wp-config.php on line 22

また、参考となるページがあれば示してください。

サンプル A に加えて「参考となるページを示して」と依頼してみました。 どうなるでしょうか。

レスポンス

返ってきたレスポンスは次のとおりです。 こちらも丁寧でわかりやすい回答だと思います。

create_function() エラーの解決方法

エラーメッセージにある create_function() は、PHP 7.2 で非推奨となり、PHP 8.0 で削除された関数です。WordPress の古いバージョンやプラグインで使用されている場合、エラーが発生します。

解決策

  1. WordPress のバージョン確認:
    • WordPress が最新バージョンであることを確認してください。古いバージョンを使用している場合は、アップデートすることで解決する場合があります。
  2. プラグインの確認:
    • エラーメッセージの wp-config.php の 22 行目を確認し、どのプラグインが create_function() を使用しているか特定します。
    • 特定したプラグインを最新バージョンにアップデートするか、代替プラグインを探します。
  3. コードの修正:
    • 問題のプラグインがアップデートできない場合、コードを修正する必要があります。
    • create_function() を使用している部分を、匿名関数やクロージャに書き換える必要があります。これは、PHP の知識が必要です。

参考情報

  • PHP: create_function - Manual: https://www.php.net/manual/en/function.create-function.php
  • WordPress Codex: https://codex.wordpress.org/

補足

  • コードの修正が必要な場合は、バックアップを取ってから作業することをお勧めします。
  • PHP や WordPress の知識に自信がない場合は、WordPress のフォーラムや専門家に相談することを検討してください。

その他の注意点

  • wp-config.php は WordPress の重要な設定ファイルです。編集する際には十分注意してください。
  • プラグインを無効化することで、問題の切り分けができる場合があります。

エラー解決のお役に立てれば幸いです。

ユーザーが WordPress には詳しくないことを考慮して、「 wp-config.php の取り扱いには注意してください」といった補足もしてくれています。

「参考となるページを示して」というリクエストにも「参考情報」という記述で応えてくれました。

試したこと 2) 画面のスクリーンショットを渡す

続いてエラーメッセージのテキストではなくスクリーンショットを渡してみました。

サンプル

プロンプト 1

スクリーンショットの画像をつけて次のプロンプトを渡しました。

こちらは問題がある画面のスクリーンショットです。どうすればよいですか?

Fatal error: Uncaught Error: Call to undefined function create_function()

レスポンス 1

返ってきたレスポンスは次のとおりです。

WordPress サイトの問題解決のお手伝い

スクリーンショットだけでは具体的な問題を特定するのは難しいですが、経験豊富なソフトウェアエンジニアの方であれば、いくつかの可能性を一緒に探っていきましょう。

まず、以下の情報を確認させてください:

  • 発生している問題の具体的な内容: 例えば、「画像が表示されない」、「ページが真っ白になる」、「特定の機能が動作しない」など。
    • WordPress のバージョン: ダッシュボードの左メニュー「ダッシュボード」→「更新」で確認できます。
    • 使用しているテーマとプラグイン: ダッシュボードの左メニュー「外観」→「テーマ」と「プラグイン」で確認できます。
  • 直近に行った変更: テーマやプラグインの更新、コードの編集など。 エラーメッセージの有無: ブラウザのコンソールや、WordPress のデバッグモードで確認できます。

考えられる原因と対処法:

  • 画像が表示されない:
    • 画像のパスが間違っている: メディアライブラリで画像の URL を確認し、正しいパスを使用しているか確認してください。
    • パーミッションの問題: 画像ファイルのパーミッションが正しく設定されていない可能性があります。サーバーのファイルマネージャーやFTPクライアントでパーミッションを確認し、必要に応じて変更してください。
    • プラグインの競合: 画像関連のプラグインを一時的に無効化して、問題が解決するか確認してください。
  • ページが真っ白になる:
    • PHP のエラー: WordPress のデバッグモードを有効にして、エラーメッセージを確認してください。
    • メモリ不足: WordPress のメモリ制限を増やす必要があるかもしれません。 wp-config.php ファイルに define('WP_MEMORY_LIMIT', '256M'); のような記述を追加してみてください。
    • テーマやプラグインの競合: テーマやプラグインを一時的に無効化して、問題が解決するか確認してください。
  • 特定の機能が動作しない:
    • プラグインの問題: 該当するプラグインを最新バージョンに更新するか、一時的に無効化して問題が解決するか確認してください。
    • テーマとの互換性: テーマとの互換性の問題が発生している可能性があります。テーマの開発者やサポートフォーラムに問い合わせてください。

その他、WordPress の問題解決に役立つ情報:

  • WordPress Codex: WordPress の公式ドキュメントです。
  • WordPress サポートフォーラム: WordPress ユーザー同士で質問や回答を共有できるフォーラムです。
  • WordPress デバッグモード: エラーメッセージを表示するためのモードです。 wp-config.php ファイルに define('WP_DEBUG', true); のような記述を追加して有効化できます。

上記の情報を元に、より具体的なアドバイスを提供できますので、詳細をお知らせください。

プロンプト 2

「詳細をお知らせください」とのことなので返答を返しました。

ありがとうございます。以下追加の情報です。

発生している問題の具体的な内容:

ログインページを開こうとすると画像が表示されず、代わりにスクリーンショットの通りのエラーメッセージが表示される。

WordPress のバージョン:

6.5.2

使用しているテーマとプラグイン:

Twenty Twenty-Four (twentytwentyfour)

直近に行った変更:

wp-config.php の編集。

エラーメッセージの有無:

スクリーンショットに記載のメッセージです。

レスポンス 2

返ってきたレスポンスは次のとおりです。 スクリーンショットの画像が読めないようで、少しずれた一般論で回答してくれます。

ログインページの画像表示エラーのトラブルシューティング

wp-config.php の編集後にログインページの画像が表示されなくなったとのことですね。 wp-config.php の編集内容によっては、WordPress の動作に影響を与える可能性があります。

考えられる原因と対処法:

  1. 画像ファイルのパス変更:
    • wp-config.php WP_CONTENT_DIR または WP_CONTENT_URL を変更した場合、画像ファイルのパスが変更され、正しく読み込まれなくなる可能性があります。
    • 対処法: wp-config.php の変更内容を元に戻すか、画像ファイルのパスを新しい設定に合わせて修正してください。
  2. パーミッションの問題:
    • wp-config.php の編集時に、誤って画像ファイルのパーミッションを変更してしまった可能性があります。
    • 対処法: サーバーのファイルマネージャーや FTP クライアントで画像ファイルのパーミッションを確認し、必要に応じて 644 に設定してください。
  3. キャッシュの問題:
    • ブラウザやキャッシュプラグインによって、古い画像ファイルがキャッシュされている可能性があります。
    • 対処法: ブラウザのキャッシュをクリアするか、キャッシュプラグインを一時的に無効化して、再度ログインページにアクセスしてみてください。
  4. WordPress のコアファイルの破損:
    • 稀に、WordPress のコアファイルが破損している可能性があります。
    • 対処法: WordPress を再インストールするか、破損したファイルを新しいファイルで置き換えてください。

トラブルシューティングのヒント:

  • エラーメッセージの確認: スクリーンショットに記載のエラーメッセージを詳しく確認し、問題のヒントを探してみてください。
  • WordPress のデバッグモード: wp-config.php define('WP_DEBUG', true); を追加してデバッグモードを有効にし、より詳細なエラーメッセージを表示させます。
  • バックアップからの復元: 問題が発生する前にバックアップを作成している場合は、バックアップから復元することで問題を解決できる可能性があります。

上記の方法を試しても問題が解決しない場合は、より詳細な情報( wp-config.php の編集内容など)を提供いただければ、さらに調査を進めることができます。

プロンプト 3

スクリーンショットが読めているかを確認する質問を投げかけました。

スクリーンショットに記載のエラーメッセージの文章は読めますか?何と書かれていますか?

レスポンス 3

返ってきたレスポンスは次のとおりです。 画像内のテキストが読めなかったことを端的に教えてくれました。

スクリーンショットの画像だけでは、エラーメッセージの文章を正確に読み取ることはできません。エラーメッセージの内容をテキストで提供いただければ、より詳細な分析と対処法の提案が可能です。

エラーメッセージには、問題の原因や解決策に関するヒントが含まれていることが多いため、正確な内容を把握することが重要です。

「エラーメッセージをテキストでください」と言われましたが、今回は Gemini がスクリーンショットからエラーメッセージを読み取れるかを検証したいので、画像の読み取りを強要することにします。

プロンプト 4

こちらはいかがですか?

Fatal error: Uncaught Error: Call to undefined function create_function()

先ほどよりもエラーメッセージが読みやすそうな画像を渡してみました。

レスポンス 4

返ってきたレスポンスは次のとおりです。 画像からエラーメッセージが正確に読み取れて具体的な分析と解決策の提案をしてくれました。 英語だと特に強いようです。

エラーメッセージの分析

提供いただいた画像からエラーメッセージを読み取ることができました。

エラーメッセージ:

Fatal error: Uncaught Error: Call to undefined function create_function() in /var/www/html/wp-config.php:22 Stack trace: #0 /var/www/html/wp-load.php(50): require_once() #1 /var/www/html/wp-login.php(12): require('/var/www/html...') #2 {main} thrown in /var/www/html/wp-config.php on line 22

エラー内容:

  • wp-config.php ファイルの 22 行目で、未定義の関数 create_function() を呼び出そうとしているため、致命的なエラーが発生しています。

考えられる原因:

  • PHP バージョンの変更: create_function() 関数は、PHP 7.2 で非推奨となり、PHP 8.0 で削除されました。そのため、PHP のバージョンを 7.2 以上にアップグレードした場合にこのエラーが発生する可能性があります。
  • wp-config.php の編集ミス: 22 行目付近で create_function() 関数の記述に誤りがある可能性があります。

対処法:

  1. PHP バージョンの確認:
    • 使用している PHP のバージョンを確認し、7.2 以上である場合は、 create_function() 関数を使用しないようにコードを修正するか、PHP のバージョンを 7.1 以下にダウングレードする必要があります。
  2. wp-config.php の 22 行目付近を確認:
    • create_function() 関数の記述に誤りがないか確認してください。
    • create_function() 関数を使用する必要がある場合は、代替手段として無名関数を使用することを検討してください。

代替手段 (無名関数):

``` // create_function() を使用した場合 $myFunction = create_function('$arg', 'return $arg * 2;');

// 無名関数を使用した場合 $myFunction = function($arg) { return $arg * 2; }; ```

問題が解決しない場合は、 wp-config.php の 22 行目付近のコードを共有いただければ、さらに具体的なアドバイスを提供できます。

これはユーザーがある程度プログラミングの経験のある人であれば十分な回答だと思います。 素晴らしいですね。

おまけで、非プログラマに対する説明もお願いしてみました。

プロンプト 5

ありがとう。プログラミングがわからない方にもわかりやすく、簡潔に説明してください。

レスポンス 5

返ってきたレスポンスは次のとおりです。 個人的には少し抽象度が高すぎるような気もしますが、技術的な用語を使わずリクエストには忠実に回答してくれました。

プログラミング初心者向けの簡単な説明

WordPress の設定ファイルに問題があり、ウェブサイトが表示できなくなっています。これは、家の設計図に間違いがあって、家が建てられないような状況に似ています。

問題の原因:

  • 設定ファイルの更新時に、一部の記述に間違いができてしまった可能性があります。

解決策:

  • 設定ファイルの確認: 専門家に依頼して、設定ファイルの間違いを修正してもらう必要があります。
  • 設定ファイルの復元: 設定ファイルのバックアップがあれば、元に戻すことで問題を解決できるかもしれません。
  • WordPress の再インストール: 他の方法で解決しない場合は、WordPress をもう一度インストールし直す必要があるかもしれません。ただし、この方法はデータが消えてしまう可能性があるので、専門家に相談することをお勧めします。

専門家への相談:

WordPress の設定ファイルは複雑なので、プログラミングの知識がない場合は、専門家に相談することをお勧めします。専門家は問題の原因を特定し、適切な解決策を提案してくれます。

と言うことで、今回の検証は以上です。

結論としては、インプットがエラーメッセージのテキストでもスクリーンショットでも適切な回答をしてくれました。 スクリーンショットの場合は画像のサイズに対してエラーメッセージの領域が小さいとうまく読み取れないことはありましたが、適切なサイズにトリムして読み取りやすいようにしてあげれば正確にテキストを読み取り問題を把握してくれました。 インプット(プロンプト)さえ適切に与えれば、かなり高いレベルで問題解決を手助けできるようです。

以下感想です。

  • WordPress のデバッグに関する Gemini の性能は平均的な WordPress エンジニアと同等かそれ以上だと考えられる
  • Gemini (などの生成 AI の大規模モデル)は WordPress のデバッグが得意だと考えられる( WordPress の情報はウェブ上にたくさんある上、 WordPress は後方互換性が重視されている結果数年前の情報もそのまま役立つことが多いため)
  • Gemini は適切なスクリーンショットを渡せばその中のエラーメッセージも正確に読み取れるので、スクリーンショットをそのまま渡す形で使うのもあり
  • ただし、ユーザーが Gemini からの回答を正しく理解できるだけのプログラミングやウェブサーバーの基礎知識を持っていないと、問題解決に利用するのは難しそう
  • Gemini が現時点でここまでできるなら、近い将来(数年以内に) WordPress サイトの URL と SSH 情報を渡せば半自動的・自律的に問題を解決してくれるレベルまで行きそう

ハルシネーションの問題はゼロではないですし、珍しいケースや新しいケースには対応できないと思いますが、長大なコンテキストの付与やファインチューニングなどをしなくても十分実用的なレベルにあると思います。すごいですね。