musicLineアプリ開発日記

作曲を誰でも楽しく簡単に♪

そうだChatGPTに考えてもらおう

はじめに

最近流行りのChatGPTですが、何かを調べるくらいならわざわざ使うほどでもないかと思い、使う機会がないまま過ごしていました。
そんな時、musicLineの開発で複雑なSQL文を考える機会があり、あまり慣れていない私は頭を悩ませていました。。。

その時、閃きました。

そうだChatGPTに考えてもらおう!

そう思い立ってChatGPTを使ってみると、驚くほどスムーズにSQL文を生成してくれました。
私はChatGPTを使うことの便利さに気づき、感動しました。

ということで、今回はChatGPTに頼る方法と自分で学習してSQL文を考える方法と比較してChatGPTの活用法について話します。


SQLとは

SQLは、データベースに対して実行する操作を記述する言語のことです。データベースには、表形式でデータを記録する構造があり、SQL文を使ってデータを取得・更新・削除・挿入することができます。
例えば、以下のようなSQL文を実行することで、特定のデータを取得することができます。

SELECT * FROM users WHERE age > 18;

このSQL文は、usersという名前の表からageが18歳以上のユーザー情報を全て取得するものです。この時、usersが例えば以下の表だった場合、18歳以上のCarolのみが取得されます。

user_id username age
1 Alice 5
2 Bob 10
3 Carol 20


SQL文の実践例

musicLineでは「アカウント移行」機能を実装しています。 この機能はアカウントが持っているデータ(投稿曲やお気に入りの曲、フォローユーザー等)をもう一方のアカウントへ移行する機能です。

アカウントのデータ

今回はこの機能を実装するために、各々のアカウントのユーザーAからユーザーBへフォローユーザーを移行することを例に考えます。

user_id follow_user_id
UserA UserC
UserB UserC
移行前
user_id follow_user_id
UserB UserC
UserB UserC
移行後

基本的には、user_idをUserAからUserBに変更するだけです。ただし、移行時には重複が生じる可能性があるため、重複する場合は削除する必要があります。
さらにuser_idfollow_user_idペアキーの重複はデータベースで許容していないため、更新する前に重複を確認・削除する必要があります。

以下にSQL文の要件をまとめます。

  • user_idを新しいユーザーに更新する
  • user_idfollow_user_idのペアキーが重複する時は削除する
    ただし、更新前に重複を調べて事前に削除する


SQL文の作成方法

ChatGPTに質問する方法と自分で学習してSQL文を考える方法を比較してみます。

自分で学習する場合

学習してSQL作成する流れ

自分で学習する場合、SQL文を作成するために必要な知識を洗い出す工程があると思います。
もちろん検索欄に要件すべて入れて「他に同じようなSQL文を作成した記事」がヒットすればラッキーですが。。

大概はヒットせず、必要な知識を得られるように問題を分解して、1つずつ解決していきます。

今回の場合だと以下のような知識が必要です。

  • SQLでDBを更新するには
  • SQLで重複キーを削除する
  • SQLで更新する前に重複キーを確認する
  • SQLのHAVINGとは 等

そして、理解したSQL文の知識を元に作成し、要件に合うように微調整します。


ChatGPTに質問する場合

ChatGPTでSQL作成する流れ

ChatGPTに質問する場合、まず要件をすべて入れて質問します。
そうすると、解説と共にSQL文を作成してくれます。

要件を入れて質問

その後、解答されたSQL文を確認して適切な回答が得られない場合、適切な質問を考えます。

今回の場合、更新してから<新しい値>の重複を確認して削除するようになっていたので、その点を修正するように追加で要望しました。

更新前に重複削除するように追加で要望

ChatGPTは今までの会話を元に解答するため、質問を追加するのか訂正するのかを選択することも大切です。

  • 新たに質問して、情報を追加
  • 質問を修正して、情報を訂正

欲しい答えが得られない場合は違う方向から質問した方がいいか、もう少し具体的にしたほうがいいのかなどを考えて、何回か対話することで近づいていきます。

最後に適切な回答が得られても微妙に間違っていたりするので、要件に合うように微調整します。


比較

SQL作成する流れ

自分で学習する場合、「要件に必要な知識を整理する」工程で問題を分割してWebページを調査する必要があります。そのため、問題が複雑になるほど必要な知識が多くなり時間が掛かります。さらに、最後は分割した知識を合わせてSQL文を作成するため、深い理解が必要となります。

ChatGPTに質問する場合、「SQL文を確認」や「適切な質問を考える」工程で質問を思いつくために、基礎知識を身につけていることが重要です。さらに、要件をしっかり定義することで、より効果的な質問を行うことができます。
そのため、実際には基礎知識が不足している部分で自分での学習が必要になることもあります。


まとめ

今回は流行りのChatGPTを使って、SQL文を生成してみました。
簡単なことを調べる程度であればWeb記事を探せばいいと思いますが、SQL文の作成やプログラミング等の様々な知識から判断して解決する問題がある時にChatGPTを使うことには大活躍です。

しかし、難しい問題になるほど質問が複雑になり、ChatGPTの答えた内容が怪しくなるので、解決する問題に対してある程度は知識をもっている必要があります。
また、質問する際は的確に問題を伝えなければ、正しい答えが得られないので、AIと根気強く対話することが大切だと思いました。

人も同じですが、質問した答えに対してどこまで理解したかを把握し、理解できるように質問を修正・追加していくことが大切だと思いました。
今後は「AIに解決したい問題を的確に伝える能力」が問われる時代になるのではないでしょうか。


ちなみに、この記事の作成もChatGPTに助言を頂いて作ってみました。ChatGPTが出した文章を参考にし、修正してほしい箇所を指摘し、考えた文章を添削してもらって記事を作成すると、スムーズに進めていけて気持ちがいいです。

ChatGPTを活用した文章生成

SQL文の説明をしてもらう。

SQL文とは

専門用語が多かったので、わかりやすくしてもらう。

わかりやすく

説明が長くなったので、簡潔にしてもらう。

簡潔に

この文章を採用しました。 また、表の例とかも適当に考えてもらえます。

Users表の例

なんだかChatGPTのAIと相談しながらノウハウを教えてもらっている気分です。 記事書くのが苦手な私もChatGPTが相談役にいれば心強いです。