![image5.jpg](https://static-lib.s3.amazonaws.com/cms/image5_2327274adc.jpg)
今週初め、私はあなたにお見せした ChatGPTが具体的な(もしくはやや初歩的な)機能仕様に合致する、WordPressプラグインを全て作成できることを。そして、今回は、ChatGPTのテストを続け、それが私に技術的なガイダンスを提供するのに役立つかどうかを感じ取りたいと思います。
また、次のこともあります:ChatGPTにWordPressプラグインを作成してもらいました。たった5分で完了しました。
以前のChatGPTの探索で行ったように、私の文章は通常のテキストまたは太字ですが、AIの応答は斜体です。まず、質問と回答を示します。その後、意義について議論します。
プログラミング言語の変更の理解
私のホスティングプロバイダは、非常に古い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では、配列が渡されなかった場合に致命的なエラーが発生します。この変更は、関数の堅牢性を向上させ、予期しない入力によるバグの発生を防ぐために行われました。
is_array()関数を呼び出す前に、関数に渡された変数が配列かどうかを確認することができます。extract()関数を呼び出す前にis_array()関数を使用してください。
![画像3.jpg](https://static-lib.s3.amazonaws.com/cms/image3_f5c2e13d8e.jpg)
また、array_key_exists() 関数を使用して、渡された変数が配列であるかどうかをチェックすることもできます。
![画像6.jpg](https://static-lib.s3.amazonaws.com/cms/image6_05e6c3821a.jpg)
代わりに、...演算子を使用して配列を変数に分割することもできます。
![image7.jpg](https://static-lib.s3.amazonaws.com/cms/image7_c0776ccb68.jpg)
結果的に、ChatGPTの回答は非常に役に立ち、数分でそのバグを修正できました。そのバグを修正するための大部分は、どこを探すべきかを知ることでした。ChatGPTは、PHPのバージョン間で関数の動作がどのように変わったかを明確にしてくれました。
すべてのプラグインを将来対応可能な状態にするために、新しいバージョンに移行している最中に、私は以下のような質問もしました:
PHP 7.4からPHP 8に移行する際に、どのPHP関数が壊れる可能性がありますか?
PHP 7.4 から PHP 8 へ移行する際に、いくつかの関数と機能が壊れたり異なる動作をする可能性があります。以下は問題を引き起こす可能性のある最も顕著な変更点です:
- 以前の回答で言及されたように、extract() 関数は、配列が渡されない場合に致命的なエラーをスローするようになりました。
- each() 関数は PHP 8.0 で削除されました。代わりに foreach、array_keys()、current() を使用できます。
- create_function() 関数は PHP 8.0 で削除されました。代わりに無名関数を使用することを推奨します。
- list() 構文は、foreach と組み合わせて使用される場合、単一の配列ではなく、キーと値を別々の変数として返すようになりました。
- __autoload() 関数は PHP 8.0 で削除されました。代わりに spl_autoload_register() を使用する必要があります。
- $php_errormsg 変数は PHP 8.0 で削除されました。代わりに error_get_last() 関数を使用する必要があります。
- 以前の PHP バージョンで廃止されたいくつかの機能は、PHP 8.0 で削除されました。具体的には、create_function()、each()、__autoload()、および $php_errormsg です。
これは、PHP 7.4からPHP 8に移行する際に問題を引き起こす可能性のある変更のいくつかの例です。すべてが予想通りに動作するようにするために、アップグレード前にコードやアプリケーションを徹底的にテストすることをお勧めします。
以前の回答で言及されているように、ChatGPTはフレーズ「以前の回答で言及されたように」を使用しています。会話の中で回答を追跡することができます。それは「すごい」と同時に怖いです。
コードを修正していたところ、以前の開発者(現在は関与していない)がcreate_functionを頻繁に使用していたことが分かりました。その関数が廃止されたことに気づきませんでした。しかし、上記の便利なリストを使ってコードを検索し、更新と書き直しが必要な箇所を見つけることができました。それから、ChatGPTに対してその関数を置き換える方法を示してもらうようにお願いしました。
create_functionを使用してPHPでコードを書き直す良い方法は何ですか? create_functionを使用した例と、現在の正しいメカニズムを使用した例を教えていただけますか?
create_functionは、PHPで匿名関数を作成するために使用されていた非推奨の関数です。PHP 8.0で削除されたため、この関数の使用は推奨されません。代わりに、匿名関数またはクロージャを作成するには、functionキーワードを使用します。
ここにcreate_functionを使用した例があります:
![画像2.jpg](https://static-lib.s3.amazonaws.com/cms/image2_4e8c9da378.jpg)
そして、匿名関数を使用した同等のコードです:
![画像8.jpg](https://static-lib.s3.amazonaws.com/cms/image8_6885b7cd38.jpg)
さらに、useキーワードを使用して変数をクロージャに渡すことができます。
![画像1.jpg](https://static-lib.s3.amazonaws.com/cms/image1_968687d6be.jpg)
一般的には、create_function の代わりに匿名関数を使用することが推奨されており、パフォーマンスが向上し、可読性も高くなります。
結果として、それは非常に明確な説明だったので、私はすぐにコードを適切に書き直すことができました。そのプラグインは、私のホスティングプロバイダの新しいPHP 8環境で問題なく動作しています。
MacOSのテクニカルサポート
記事「Optimize Mac Storageの危険性についての調査」を行っている際に、いくつかの疑問も生じました。私の記事では、いくつかの懸念点を検証するためにテストを行いました。しかし、研究を絞り込むための簡単な方法として、ChatGPTに次の質問をしました:
MacOSの「Macのストレージを最適化」機能を使用した場合、Time Machineは、一部のファイルがローカルマシン上でスタブとして表示されるため、不完全なバックアップを作成することがありますか?
macOSの「Macストレージの最適化」機能は、iCloudを使用してMac上であまり使われないファイルをクラウドにオフロードし、元のファイルを表す「スタブ」ファイルをローカルマシンに残します。これにより、Macのハードドライブの容量を節約することができます。
タイムマシンがバックアップの設定になっている場合、"Optimize Mac Storage"を使用してオフロードされたすべてのファイルをバックアップします。ただし、オリジナルのファイルの代わりにオフロードされたファイルを表すスタブファイルがバックアップされます。
これは、"Macのストレージの最適化"が有効な状態で作成されたTime MachineのバックアップからMacを復元する場合、オフロードされたファイルは復元に含まれず、再度iCloudからダウンロードする必要があることを意味します。
重要なことは、オフロードされた多くのファイルを持っている場合、Optimize Mac Storageを使用しない場合よりも、Time Machineのバックアップがより多くのスペースを占有する可能性があるということです。なぜなら、Time Machineはファイルのスタブとしてバックアップを取るため、スペースをより少なく占有しますが、Time Machineはそれらを元のファイルとして扱うからです。
私はそれについて心配しています。少なくともGoogleを使えば、情報を共有することで検索エンジンが記事にトラフィックを送る可能性があるでしょう。しかし、ChatGPTのようなチャットボットでは、元のスレッドが失われてしまいます。確かに、私は素早い回答という生産性の利益を得ました。しかし、誰かが自分の仕事の帰属権を失ったのではないでしょうか。
お楽しみに。この生成AIの急激な進化は大いなる波を起こしています。私とZDNETと共に、それが私たち全員にとって何を意味するのかを理解しようと努力していきます。
ChatGPT、質問に答える場合、他の人が寄与した知識を利用していて、元の人間の情報源から仕事やクレジットを奪っていると言えますか?
オープンAIによって作成されたAI言語モデルとして、私には個人の意見や思考はありません。ただし、私の応答の生成に使用する情報は、インターネットから収集した大量のテキストデータに基づいています。このテキストは、さまざまな人々や情報源によって書かれたものですが、私はその情報の提供者に具体的な個人を特定する能力を持っていません。私の目標は、ユーザーが求めている答えを見つけるための役立つ正確な情報を提供することです。ただし、私の応答は、私がトレーニングされたデータのパターンに基づいて生成されるため、常に完全に正確または最新であるとは限りませんので、それを心に留めておいてください。
だから、そうですね。インターネットからの「膨大なテキスト量」です。皆さん、どうぞ進んでください。ここには何もありません。
つまり、要するに、「Macストレージの最適化」機能を使っている場合、Time Machineは完全なバックアップを作成しないでしょう。オリジナルのファイルはクラウドにオフロードされたままで、スタブファイルだけがバックアップされます。
それは正解でした。
意味
まあ、それは確かに時間を節約しました。通常、インターネット上でのプログラミングは、コーディングとデバッグ環境の間でのダンスと、手探りで情報を探し出し、議論やコメントを読んでいくという作業が多く含まれています。
誤解しないでください。このプロセスは非常に情報量があり、チャットボットからは得られない言い伝えがコメントに埋もれています。しかし、急いでいる時や緊急の締め切りに迫っている時には、時間の効率的な活用ではありません。ChatGPTにコーディングの質問をすることは非常に効率的でした。
AIと同様に、AIの知識には間違いがあることを理解しておかなければなりません。そして、完全に間違った回答が得られる可能性もあることを覚えておいてください。しかし、ChatGPTを他のツールと同じくらいストレートなツールとして使うことは、非常に生産的であることがわかりました。
しかし、情報はどこから得ているのか気になります。もしかして、私のようなライターが「抽出」や「create_function」について詳細な記事を書き、その言葉がChatGPTによって「スピンされ」て、クレジットや収益化なしで応答として使用されているのでしょうか?誰かの困難な知識が、クレジットなしのソースマテリアルとして使われているのでしょうか?