【EC-CUBE4.2】ChatGPTと在庫切れ通知プラグインを作る
この記事は、EC-CUBE Advent Calendar 2023 の7日目の記事です。
今年は、OpenAIから公開されたChatGPTが業界を賑わせた1年になりました。この革新的なAI技術は、多くの人々にとって新たな可能性を開き、日常生活やビジネスの様々な面でその影響を感じさせています。ChatGPTは、自然言語処理の分野において大きな一歩を踏み出し、私たちのコミュニケーションや情報の取り扱いに新しい風を吹き込んでいます。
今回のブログでは、そんなChatGPTとペアプログラミングをして、EC-CUBEのプラグインを開発してみたいと思います。
ChatGPTとのやり取りの全文は、EC-CUBEプラグイン開発サポート – ChatGPT からご確認いただけます。
目次
1. 開発するプラグインの案出し
EC-CUBEのプラグインをChatGPTとペアプロするとしても、ChatGPTの記憶力の問題で長期間の開発ではロジックが破綻するリスクや、チャットベースのやり取りの限界があるため、シンプルな機能に留めたいと思い、シンプルで有用なプラグインの案を考えてもらいました。
今回は、この中で「在庫警告システム」を開発する事にしましたが、「簡易アンケートフォーム」も需要がありそうな機能ですね。
2. 開発ステップの洗い出し
「在庫警告システム」を開発したい旨を伝えたら、ChatGPTの方から開発のステップや注意点を洗い出してくれました。
_
3. 開発着手
ChatGPTにすべて考えてもらうことも出来そうなのですが、EC-CUBEのプラグインに最低限必要な「1. 開発環境の準備」や、「3-1. プラグインの基本構造の作成」としてディレクトリの作成やcomposer.jsonの作成までは、こちらで行って報告しました。すると、EC-CUBEのプラグインの構造について教えてくれた上で、今回の機能には「Serviceクラスの作成」「Eventリスナーの設定」「メール送信の実装」の3つが必要なことを教えてくれました。
以下スクショでは切れていますが、ServiceクラスとEventリスナーのコード例も作成してくれています。
3. 開発中のつまづきポイント<1>
開発の順番として、まず「Eventリスナーの設定」から行うことにしました。ChatGPTから提案してもらったEventリスナーのコードのメソッド名だけ、より適した命名に変更を行って、「作成済みのEventリスナーでは、このように記述しています」と情報を渡してあげました。
そうすると、ChatGPTの方から `EccubeEvents::ADMIN_PRODUCT_PRODUCT_EDIT_COMPLETE` のイベントを使うと良いと提案をしてくれました。この提案は素晴らしいですね。ですが、今回の在庫警告の仕組みは、お客様の注文完了時に在庫がしきい値を下回っていた場合に動作させたいので、イベントのタイミングは誤っています。
日本国内向けのオープンソースのコードに対して、このあたりまでの精度をChatGPTに求めるのは難しそうな印象です。
他にも、ProductクラスからgetStockを取得しようとしたり(EC-CUBEでは、ProductClass単位で在庫数を保持している)、`ProductStock <= 0` という条件で在庫切れを判断していた(在庫無制限時は”-1″がセットされる)ので、コードを確認する側にも最低限のEC-CUBEへの理解が求められます。
3. 開発中のつまづきポイント<2>
開発終盤、メールの送信関係で、EC-CUBEのsrc内にあるMailService.php を参考にして記述してほしいポイントがあり、添付ファイルとしてデータを渡してみたのですが、その後に出力してくれたコードを見る限り、添付ファイル内のプログラムをしっかり認識できていないように思えました。
ここも、面倒ですが`use`の指定やコメントアウトなどで、指向性をもたせる指示出しが必要になります。
4. 完成したプラグイン
すべてChatGPT任せ、とはいきませんでしたが、それなりにスムーズに必要な機能をもったプラグインを開発することができました。
完成した「在庫0通知プラグイン」は、EC-CUBEの在庫数が0になった際に、自動的に管理者宛にメール通知を送る機能を備えています。これにより、売り切れリスクを事前に把握し、迅速な対応が可能になります。
完成したプラグインは以下からどなたでも無料でダウンロード可能です。
https://github.com/cajiya/ec-cube4_lsa
5. まとめ
ChatGPTとのペアプログラミングを通じて、AIとの共同作業がいかに有益かを実感しました。特に、簡易な機能の開発ではAIの提案が非常に役立ちました。一方で、特定のプラットフォームに特化した知識や、複雑なビジネスロジックの実装には人間の介入が必要であり、AIの活用はあくまで補助的なものであることが分かりました。今後も、AIの進化とともに、その活用法を模索していくのが楽しみです。
(この記事の冒頭の8割、まとめ文の全文は、ChatGPTによって執筆されました)