※自分で書いていて何ですが、GPTに生成させたコードを何で掲載していないだろう、と今さら思っています。追記予定 → 追記というか加筆修正しました
こんにちは、コンテンツクリエイターのともすけです。
Chat-GPT(GPT-3.5)が世間をあっと言わせてからというもの、LLM(Large Language Model)を使ったAI(と言っていいかは別にして)を利用する様々なサービスの競争が目に見えていっぱい出てきましたね。
以下はITMediaから引用させてもらいました。
大規模言語モデル(LLM:Large Language Models)とは、大量のテキストデータを使ってトレーニングされた自然言語処理のモデルのことである。
https://atmarkit.itmedia.co.jp/ait/articles/2303/13/news013.html
あとGPTについてはChat-GPTに直接聞いてみました。
GPTは、Generative Pre-trained Transformerの略称で、深層学習の一種であるTransformerモデルを用いた自然言語処理のための機械学習モデルです。
https://chat.openai.com/chat
筆者はAndroidアプリの開発についてある程度知っているので、GPT-4ベースで動作する bing chat(以下bing)
課金中のChatGPT-3.5を利用して動作するサンプルコードが得られるか試してみました。以下はRoomライブラリに関しての実験です。

補足。ChatGPTに課金すると、3つの動作モードを都度選べます。(1)GPT-3.5(Default)、(2)GPT-3.5(Legacy)、(3)GPT-4
GPT-4でコードを出させると結構遅いので、サンプルコードくらいならGPT-3.5(Default)でいいかなっと思いGPT-3.5にしています。
それでもLegacyよりは改善しているようです。
ChatGPTとのやり取り

androidでroomライブラリを使ったサンプルコードを教えてください。
…と問い合わせました。するとコードが出てきましたがKotlin版でした。筆者はKotlinが苦手なので

java版で教えてください。
と伝えてJava版のコードをもらいました。ファイル名を考えるのがめんどいのと、MainActivityが記載されてなかったので、

ソースコードのファイル名と、これらを実装するMainActivity.javaについても具体例を出してください。
と伝えたところ、各コードのファイル名とMainActivityの実装例が出てきました。これをAndroid Studioに用意したEmpty Activityに実装し、buildして実行させたところ
Cannot access database on the main thread since it may potentially lock the UI for a long period of time.
Log
となりまして。なんかthread云々と出ており通常の開発であれば自分でコードを書いているのでエラーの原因がだいたい当たりを付けられるものの、コピペコードだとちょっと難しくなるんですね。そこで

ありがとう。ところで回答してくれたコードを貼り付けて動作させたところ、エラーを出して落ちました。エラー内容は error です。 error: ‘Cannot access database on the main thread since it may potentially lock the UI for a long period of time.’
と伝えたところ、「UIスレッドでデータベースアクセスするのが非推奨のためでした、バックグラウンドでアクセスする必要があります」との回答と共に、修正版のコードを出してくれました。
そして、そのコードで動作したんです。
何が言いたいかというと
もうネット上に多くの似た情報が出ており被るような気もしますが、改めて書いておくと
- プログラムを知らない人がChatGPTでちょっとしたアプリを作るのもわりとたいへんである
- Androidアプリを開発したことがある人でないと、ChatGPTの省略している回答に「足りない」とたぶん気づけない
- せめて何らかのアプリ開発経験がないと、いろいろとわからずに詰む
ということ。
ChatGPTはこちらの質問にいろいろ答えてくれるのですが、たとえばアプリ開発についてろくに知識を持たない場合には「つぎに何を聞けばいいかわからない」と思うんですよ。きっと「何がわからないかわからない」と質問ができない、ということ。
参考:ChatGPTが出してきた、MainActivity.javaのエラー版と修正版
エラー修正前:Userオブジェクトをメインスレッド上で触っています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
public class MainActivity extends AppCompatActivity { private UserDao userDao; private AppDatabase db; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); db = Room.databaseBuilder(getApplicationContext(), AppDatabase.class, "app_database").build(); userDao = db.userDao(); // Userを追加 User user = new User(); user.id = 1; user.name = "John"; user.age = 25; userDao.insert(user); // Userを取得 User retrievedUser = userDao.getById(1); Log.d("MainActivity", "Retrieved User: " + retrievedUser.name + ", " + retrievedUser.age); } } |
エラー修正後:スレッドを生成してその中でUserオブジェクトを生成し、触っています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
public class MainActivity extends AppCompatActivity { private UserDao userDao; private AppDatabase db; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); db = AppDatabase.getDatabase(getApplicationContext()); userDao = db.userDao(); new Thread(() -> { // Userを追加 User user = new User(); user.id = 1; user.name = "John"; user.age = 25; userDao.insert(user); // Userを取得 User retrievedUser = userDao.getById(1); runOnUiThread(() -> { Log.d("MainActivity", "Retrieved User: " + retrievedUser.name + ", " + retrievedUser.age); }); }).start(); } } |
まとめ
GPTに関するいろんなお試し情報が出ているかと思います。この記事もそれに含まれるかと思います。
伝えたいことは、
- プログラミングを知らなくてもちょっとしたアプリが書けるわけではない
と言うことでしょうか?

ボタンをクリックして「はろー」くらいはできるかもだけど、それってその先に繋がらないよね
なお、筆者がこのサイトを構築して間もない頃に出した記事に「pythonでオセロ」というのを上げてまして、それならbingも出せるかと思いきや「出来ません」と断られました。
→ ChatGPT(GPT-3.5)では出してくれました。
ただやはりというか、最初に出てきたコードはそのままでは動かなく、出てきたエラーをChatGPTに返していろいろ修正版をもらったのですが、3回くらいやり取りしてもエラーが取れないので諦めました。

ここからは自分でデバッグした方が早い
もちろん、もっと工夫したプロンプト(ChatGPTへの指示)で正常動作するコードが出てくるかも知れませんが、おそらく人間が具体的に「このへんの行番号のコード、駄目なんじゃない?」と伝えないと直らなそうです。
要するに「ある程度知っている人がChatGPTを利用すると良好な結果へ誘導しやすい」と思いました。
またGPTが対応できることと言うのはあくまでネット上に上がっている文字情報に限ることです。学習にはテキストデータのみが使用されるため、YouTubeなどの映像コンテンツをGPTは学習することが出来ません。

画像や映像を作れるというのがどういう仕組みかはわかりませんが、あくまでGPT系はLLMベース技術であるということが大切
またネット上に不確かな情報があれば、それが妥当か判断できるかはまだまだ技術の進歩を待つ必要があって、なんか知らんけどChatGPTがこう言っていたから、というのは本当かどうかがわからないので気をつけてください。
でもまあ、とりあえずLegacy版のChatGPTは無料でアカウント作成+利用できますので、世間が言っていることを鵜呑みにせず、ぜひ試してみてほしいです。そうすることで
- あー確かにウソを言うな、とか
- んーでも、この聞き方に対してはなかなかいい回答を出してくれるんだ
とか体感できるかと。
それではまた