海外コメンタリー

「ChatGPT」の活用でコード修正が高速化--でもその代償は?

David Gewirtz (Special to ZDNET.com) 翻訳校正: 石橋啓一郎

2023-02-17 06:30

 筆者は、「ChatGPT」が技術的な手がかりを得るためのツールとして役に立つかどうかを知るために、テストを続けている。

ChatGPTを表示したノートPCに入力する手
提供:Frank Rumpenhorst/picture alliance via Getty Images

 以下では、ChatGPTとのやりとりを引用文として示す。筆者が入力した文章は太字で、続いてChatGPTの返答を示している。この記事では、まず実際に尋ねた質問とChatGPTからの回答を見ていったあと、その意味について議論したい(編集部注:この記事で引用しているChatGPTの回答は、英語で出力されたものを人力で日本語に翻訳したものだ)。

プログラミング言語の変更点について調べる

 筆者が使っているホスティングプロバイダーは、すべてのサイトを時代遅れの「PHP 7.4」から「PHP 8」に移行した。PHPは、「WordPress」をはじめとする多くのウェブ管理ツールに使用されているウェブプログラミング言語だ。筆者が使っているプラグインの中には、PHP 8に対応していないものがいくつかあり、そのコードのどの部分を修正する必要があるかを特定する必要があった。

 通常であれば、PHP.netのサイトを漁ったり、Googleで大量の検索を行ったり、StackExchangeのコメントを調べ回ったりして、どんなプログラミング作業が必要になるかを調べることになる。しかしそれは、それなりに面倒で時間がかかる作業だ。そこで今回は、ChatGPTに直接、細かい質問をしてみた。その結果、非常に有益な回答を入手できた上に、コードのサンプルまで得ることができた。

今、PHPのextract関数で、配列を渡さないと致命的なエラーが出るという問題を抱えています。PHP 7.4ではエラーが出なかったのですが、PHP 8ではエラーになるようです。PHP 8でextract関数が変更されたのですか。

 PHP 8ではextract()関数の挙動が変更され、より厳密になりました。以前のバージョンのPHPでは、extract()関数に配列が渡されなかった場合は単にfalseを返していましたが、PHP 8では、配列が渡されなかった場合は致命的なエラーをスローします。この変更の目的は、関数の堅牢性を高め、予期せぬ入力による潜在的なバグを防止することです。

 関数に渡される変数が配列かどうかは、extract()を呼び出す前にis_array()関数を使用することで確認できます。

ChatGPTが示したコードサンプル1
提供:ChatGPT

 また、array_key_exists()関数を使っても、渡される変数が配列かどうかを確認できます。

ChaGPTが示したコードサンプル2
提供:ChatGPT

 ほかにも、「...」演算子を使って配列を変数に分解できます。

ChatGPTが示したコードサンプル3
提供:ChatGPT

 尋ねてみた結果、ChatGPTの回答は非常に有用で、このバグを数分で修正できた。このバグを修正できたのは、どこを見ればいいかを知ることができたことが大きい。ChatGPTは、PHPのバージョンによって、問題の関数の挙動がどう変わったかを明快に説明してくれた。

ZDNET Japan 記事を毎朝メールでまとめ読み(登録無料)

ホワイトペーパー

新着

ランキング

  1. セキュリティ

    「デジタル・フォレンジック」から始まるセキュリティ災禍論--活用したいIT業界の防災マニュアル

  2. 運用管理

    「無線LANがつながらない」という問い合わせにAIで対応、トラブル解決の切り札とは

  3. 運用管理

    Oracle DatabaseのAzure移行時におけるポイント、移行前に確認しておきたい障害対策

  4. 運用管理

    Google Chrome ブラウザ がセキュリティを強化、ゼロトラスト移行で高まるブラウザの重要性

  5. ビジネスアプリケーション

    技術進化でさらに発展するデータサイエンス/アナリティクス、最新の6大トレンドを解説

ZDNET Japan クイックポール

注目している大規模言語モデル(LLM)を教えてください

NEWSLETTERS

エンタープライズ・コンピューティングの最前線を配信

ZDNET Japanは、CIOとITマネージャーを対象に、ビジネス課題の解決とITを活用した新たな価値創造を支援します。
ITビジネス全般については、CNET Japanをご覧ください。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]