アプリ開発のフリーランスエンジニア さくしん氏

さくしん@flutter.salon氏(以下、さくしん@flutter.salon):「ChatGPT」についてのLT会ということで、今回は「Flutterで会話できるAIアプリを実装してみた。」ということでLTをやらせていただきます。

LTの概要です。まず自己紹介をしてから、Flutterがいったい何なのかがちょっとわからない方が多いと思うので、そちらをお話しして、その後ChatGPTとFlutterとの連携を話します。

最後に、これはFlutterに限らないことですが、APIについて全体的に知っておいたほうがいいかなということをお話しした上で、まとめをやらせていただきます。

ということで、自己紹介です。さくしんと申します。現在、Flutterでアプリ開発のフリーランスとして働いています。「Udemy」という動画の講座があるのですが、そちらでFlutterの講座を6講座作りました。

「ChatGPT」や「Firestore」をご存じの方がいるかもしれませんが、そちらの講座を作っています。現在、受講生は延べ1,742人となっていて、そのほかにもChatGPTのスマホアプリも個人開発で行っています。

Google発のiOS/Androidアプリ開発のフレームワーク「Flutter」

まず、「Flutterって何よ?」っていう感じなのですが、Flutterというのは、Googleが作り始めたiOSやAndroid用のアプリ開発のフレームワークです。つまり、このFlutterで開発すれば、iOS、Androidの両方とものOSでスマホアプリを作ることができます。

最近はスマホアプリに限らず、Web、Windows、Mac、Linuxといったデスクトップのアプリケーションも作成可能になっていて、2021年9月現在、世界中で開発者が200万人いるということです。こちらはChatGPTが情報源なので真に受けるなというところなんですけれども。

どういうところが特徴かというと、高速に開発できて、本当に作る側としてはすごく楽だったり、非常にわかりやすいです。

使う側も、ネイティブ並みのアプリ実行時間ということで、iOSやAndroidの両方とも走るやつは、「ちょっと遅いな」ということがあるのですが、Flutterであればネイティブ並みのアプリの速度ができるということで、使う側としてもメリットがあります。

あくまでAndroidのネイティブ並みということで、iOSのようなヌルヌルした動きというのはちょっと再現できないかなとは思っています。

FlutterでChatGPTを使う方法

ChatGPTでFlutterのパッケージということで、実際どうやってこのFlutterでChatGPTを使うのか?というところですが、Flutterにはパッケージというものがあり、そのパッケージをインストールすることによって、自分が作った以外のプログラムを動かせるようになります。

ChatGPTはものすごく人気で、chat_gpt_sdk、flutter_chatgpt_apiなど、みなさんこんなにたくさんのパッケージを作っています。私が調べた限りでは、「chat_gpt_sdk」が一番いいかなと思い、こちらを採用してアプリ開発に取り組みました。

chat_gpt_sdkは、やっていてちょっと使いにくいなというところがあったので、いろいろと修正を送ったところ、sakushin-udemyということで、私がコントリビュータとして開発にちょっと関わらせていただいています。

APIについて知っておいたほうがいいこと

ここからは、Flutterに限らずAPIについて知っておいたほうがいいことということで、Python、C#、Javaなどで使う場合、知っていたほうがいいかなということをお話しします。

まず、料金について。この中で聞いている方の中には、「ChatGPT Plus」という、月2,000円払っているという方がたぶんけっこういると思います。

私も払っているのですが、残念ながらプログラムからアクセスするためのAPIは別料金となっています。1000トークンにつき0.1円ということで、ちょっとこれが多いのか少ないのかはよくわかっていませんが、このような値段設定になっています。

残念ながら、ChatGPTをそのままシミュレーションするわけではないということで、いつも使っているチャットのところに入力して、それでChatGPTに入れるとまた返ってくるというのをチャットでやっているのですが、そういう感じではなく、このAPIを使うともうまったくAPIの履歴を覚えていません。

自分から「こんな会話したんだよ」というのを一時的に、会話の履歴を取っておいて、それを一緒に送ったら履歴も含めて返事がくるようになっているので、ものすごく忘れっぽいというか、ぜんぜん覚えていない感じになっています。

そんな会話履歴なんて送ったらその分トークンが発生します。トークンがたくさん発生した上で、API使用料金は従量課金制ですよとなると、金額が恐ろしいことになる可能性があるなと思っています。

対策として、履歴が多くなってきたら複数の履歴を要約させて保存することによって、トークンを減らすことができるかなと思っています。

あと、APIは金額の上限を設定できるので、それをきちんと設定することでだいぶ防げるかなとは思っています。

と私も書いたところで、「あぁ、やべぇ。俺は設定していたかな?」とちょっと気になって設定してみたら、クレジットカードはまだ登録していなかったので、それは大丈夫でした。

まとめ

まとめです。Flutterはすばらしいということを覚えておいてもらえばありがたいと思います。あと、Flutterのパッケージを使えばChatGPTにアクセスができます。

ChatGPTのAPIは、通常私たちが使っているChatGPTとはちょっと異なるという点を覚えておいて、実際使う時には気にしてください。

ということで、ちょっと広告になりますが、Udemyで「FlutterでChatGPT搭載アプリ開発」ということで、講座を作りました。

Flutter以外もこれから情報を追加していこうと思っているので、Udemyをやっていて、かつChatGPTに興味がある方はご確認いただければ非常にうれしいです。

ということで、実際フリーランスをやっている中で、技術的にはChatGPTを使ったスマホアプリが作れると思っているので、そういう関連でお仕事、「こんな感じのものは作れない?」などのご相談をしていただけると非常にうれしいです。

ということで、さくしんでした。ご清聴ありがとうございます。

ライブラリを使う上で考慮することは?

司会者:ありがとうございました。

先ほど、ほりゆうさんの発表にもありましたが、実際に使う上で、ある程度履歴も要約して送ったほうがいいよというお話でしたが、実際に要約する上での要約の仕方というか、そこで工夫された点などはありますか?

さくしん@flutter.salon:いえ、まだそういうところまでは行っておらず……。

司会者:あぁ、本当ですか(笑)。

さくしん@flutter.salon:ようやく履歴を取ってまとめて送るところまで行って、とりあえずアプリリリースの準備をしてから、要約などいろいろな機能を付けた上で、最終的にそこらへんの知見が溜まったらFlutterのパッケージとして出せればいいなと思っています。

司会者:なるほど。いや、先ほどのほりゆうさんの発表を聞いていて思いますが、やはり要約ってけっこう難しいですよね。試行錯誤がめちゃくちゃ要りそう。

さくしん@flutter.salon:どうなんですかね。履歴をまとめて「これを要約してください」ってChatGPTに投げるところでトークンが発生するのは気になるところなんですけれども……。

司会者:そうですよね。要約をChatGPTでやってほしいぐらいですよね(笑)。

さくしん@flutter.salon:あぁ、もうそんな感じですよ(笑)。自分で要約していたらどうにもならないじゃないですか。

司会者:そうですよね。

さくしん@flutter.salon:とやると、忘れるというのも多少防げるかなと思っています。

司会者:なるほど。ありがとうございます。

ほりゆうさんと亀山さんのお二人も、なにか気になった点などはありますか?

ほりゆう氏(以下、ほりゆう):Flutterはさわりしかやったことがないんですけれども。

ライブラリを使う上で考慮することや難しいことはありましたか? そんなにすぐ使えますか?

さくしん@flutter.salon:すぐ使えるには使えるんですが、今回ChatGPTの更新が早いせいなのかわからないのですが、パッケージも更新がけっこう早くて(笑)。

気がついたら仕様が変わっているじゃん、エラーが出ました、みたいなのがけっこうありますね(笑)。

ほりゆう:そうか、そうですよね。ChatGPTが進化しているので、そのライブラリもどんどん変わりますよね。ありがとうございます。

さくしん@flutter.salon:できればそこらへんもパッケージでうまいことやってほしいなとは思うんですが、あんまり後方互換を考えていないみたいで(笑)。

ほりゆう:なるほど、ありがとうございます。

司会者:ありがとうございます。それではあらためて、さくしんさんの発表でした。ありがとうございました。