見出し画像

非エンジニアも必見!PM、エンジニアが初めてのChatGPT連携機能の開発で経験した苦悩とやりがいとは?

こんにちは!learningBOX広報PRの佐藤です。
私たちは「世界の誰もが、いつでも、どこでも、自由に学べる未来を創る」というパーパスを掲げ、学習管理システム「learningBOX」を開発している兵庫県たつの市のIT企業です。
そして、2023年9月20日にはChatGPT連携の新機能「AIアシスト」をリリースしました🎉
このnoteでは、その開発の裏側をインタビュー形式で少しご紹介していきます!

実は、開発プロジェクトの裏側をlearningBOXがご紹介するのは、今回が初の試みです。なぜ公開しようと思ったのか?それは、「地方IT企業のlearningBOXのことをもっとたくさんの人に知ってほしい!!!」その熱い想い一つだけです🔥
さらに、弊社エンジニアが複数人揃っての顔出しは初めて?!とのことで、私も気合いを入れて執筆しました。
今回も7,000文字を超えてしまいとてもスキマ時間で見れるnoteではないですが、ぜひ最後まで読んでいただけると嬉しいです!


ChatGPT連携の新機能「AIアシスト」について

今回のインタビューでは、「AIアシスト」「クイズ作成」「暗記カード」「レポート分析」など弊社サービス特有の固有名詞が飛び交います。そのため、まずは今回開発した新機能「AIアシスト」について簡単にご紹介させてください。

学習管理システム「learningBOX」にAIアシストが搭載されたことにより、動画やPDF、WebサイトURLからのクイズ自動生成や、レポート課題の自動分析などが可能になりました!

新機能「AIアシスト」開発の背景

なぜlearningBOXがChatGPT連携機能開発をスタートしたのか?それは、昨今社会問題になっている社員研修や学校教育等の現場においての人材不足、人手不足の課題が背景にあります。
私たちは、世界の誰もが、いつでも、どこでも、自由に学べる未来を創りたい一心でオンライン教育に必要な学習管理システムを開発してきました。
しかし、ユーザーからも「もっと簡単に問題を作れるようにしたい」「レポート課題の採点をもっとラクにしたい」という声をいただいていました。確かに今までは、教材やテスト問題、レポート分析・採点においてどうしても人の手が必要で、それなりに時間もかかっていました。「これでは教育現場の課題解決にはすぐに結びつきにくい」と考え、今回のChatGPT連携の新機能「AIアシスト」を開発するに至りました!

learningBOX初のAI開発プロジェクト!メンバーの反応は

今回のインタビューは、私は東京支社、プロジェクトマネージャー(以下、PM)とエンジニアは本社勤務のため、オンラインで行いました。インタビューに協力してくれたメンバーをご紹介します!

谷元(プロジェクトマネージャー)
プロダクトオーナーやビジネスサイドの人たちとの期待値調整、関係者間の調整、スケジュール管理、仕様管理、などを担当

末廣(バックエンドエンジニア)
序盤のみ全般の設計業務(SE的役割も!)、それ以降は「レポート分析」の設計・開発を担当

N(バックエンドエンジニア)
AIによる「クイズ・暗記カード作成」の開発を担当。具体的には、詳細設計、プロンプト作成、実装全般

金井(フロントエンドエンジニア)
AIによるクイズ作成フォームの見た目(フロント側)の実装を担当

バックエンド:アプリケーションの裏側のこと。バックエンドエンジニアは表からは見えない場所で、データを取り出したり保存したりする部分を担当します。

フロントエンド:アプリケーションの見た目の部分などのこと。フロントエンドエンジニアは見た目を整えたり、動かしたりする部分を担当します。

プロンプト:ChatGPTへの命令のこと。

左から時計回りに金井、末廣、N、谷元(谷元の後ろにNがいます!)

ーはじめに、「ChatGPT連携機能を開発する」と言われた時どう思いましたか?

谷元:僕はPMなので立場上開発者より先に聞くんですが、「これが本当に実現できるのか…?」という不安と「でも何とかできるんじゃないか?」という期待と五分五分な気持ちでしたね。

N:僕はAIに多少興味があったのでおもしろそうだなと思いました!ただ、プロンプトを作成したことがなかったので不安要素も結構多かったですね。

末廣:僕も「おもしろそう!」と思ったけれど、当時の自分はChatGPTなどのAIを使った機能開発のノウハウがなかったので「怖い…」という感情もありましたね。

金井:私はこれまでChatGPTはあまり触ってきていなくて、どういうものか分かっていなかったので不安でした。

ーなるほど!皆さんの共通の感情は「不安」だったんですね!そこからどうやって完成まで持っていけたのか気になるところなので、どんどん聞いていきますね。

エンジニアのこだわりポイント

ー今回のChatGPT連携機能開発は、learningBOXでは初めてのチャレンジだったかと思いますが、皆さんはどんなことにこだわって開発をしてきたのか、ぜひ聞かせてください。

写真奥左:金井、写真奥右:末廣、写真手前(後姿):N

末廣:僕は「レポート分析」の開発を担当していたのですが、ユーザーがChatGPTを意識せずに使えることにこだわりました。ユーザーにとっては、この機能を使うことでレポートの分析がイメージ通りにできることが重要であって、「ChatGPTかどうか」はあまり関係ないと考えました。そのため、なるべくシンプルな動作設計にこだわりましたね。

金井:私はプロンプトを直接触ることはしないのですが、バックエンドから設計してもらったデータを整えて見せることをしていました。その中でこだわったこととしては、「暗記カード」と「クイズ作成」のUIが共通している部分が多かったので、Reactでできるだけどちらでも使える形に共通化することでした。今まで別の画面で共通の見せ方にする実装をしたことがなかったので、「どこまで共通化するか?」の判断が難しかったです。

N:僕は「クイズ作成」の開発を担当していましたが、一定以上のクオリティと応答速度のバランスをとることを重視していました。ChatGPT公式のUIでは、会話を始めるとすぐに返答が表示されます。しかし、AIアシスト機能の当初の設計では、全ての返答が完了してから一斉に画面表示されるスタイルでした。learningBOXのAIアシスト機能でも、ChatGPT公式のUIのように迅速な応答スタイルを採用し、素早くクイズが生成されることを目指しました。
具体的には、ChatGPTのAPIの少しずつ文字を返せる機能を利用し、少しずつ文字を組み立てながらクイズを作成するようにしました。全ての返答を待つ方が処理は簡単ですが、クイズが次々と生成される様子は視覚的にも楽しく、待ち時間も退屈しないため、あえて難しい方法を選択しました。

ーそうだったんですね!展示会でAIアシストのデモを来場者の方にお見せすると、毎回この部分が一番反応良いんですよ!AIっぽさがよく表れてますよね。ということは…これはNさんのアイデアであり、演出なのですね!?

(Nさん、谷元さん、激しくうなずく)

PMが非エンジニアの人に知ってほしいコトとは?

真剣なまなざしで自身の役割を語るPM谷元

ー谷元さんは、PMとしてこだわっていたこと、意識していたことはありますか?

谷元:僕はビジネスサイドとエンジニアサイド間での期待値調整とスケジュール管理ですね。
PMの仕事は、期待値を下回らないように、そのプロジェクトを期日通りに完成させることだと思っているので。(キリッ✨)

ーなるほど!PMとしてのツラみが凝縮したお話になりそうですね…!具体的に、どんなところが大変でしたか?

谷元:開発当時はChatGPT自体の使い方やノウハウがまだ世の中にない段階での開発だったので「ChatGPTでは何ができて、何ができないのか?」とか「どう使えばどういうゴールになるのか?それが本当に実現可能なのか?」の判断がすごく難しかったです。実は今もよく分かってないんですけどね(笑)。

エンジニアは実際にコードを触り続けてるから「これはできる・できない」の判断は把握できるけれど、触っていない非エンジニアの人からしたら「AIならもっとこういうこともできるのでは?」という期待感があるだろうなと思いつつ、そのすり合わせも難しかったです。
ステークホルダーからの期待感とのすり合わせと、予定通りAIアシストのリリースができるようにすること、とにかくこの2つを意識していましたね。

ーなるほど!私なんて非エンジニアの人間なので、AIと聞くと何でもできるイメージだし、「もっとこうならないの?」とか平気で思ってしまってたかもしれません…!(ごめんなさい)

もはやエンジニアにしか分からない?!開発で苦労したこととは?

ーいざ開発スタート!となった時に苦労したことは何ですか?

非エンジニアな私に対して分かりやすい言葉で補足をしてくれる
心優しき バックエンドエンジニア末廣

末廣:今回初めてプロンプトの勉強をしたのですが、どういったお願いをしたらどういう形で返してくれるのか、というところから手探りで進めていきました。それと、プロンプトの最大トークン数制限によって、システム側に色々制約を設ける必要があったことに苦労しました。具体的には、入力できる文字数に制限を設けたり、無理やり分割して指示を送るようにしたりするなどの対策を行いました。

トークン:文字を分割した単位のこと。○○トークン = ○○文字といったイメージ。

あと、learningBOXとしてのコスト面での制約とChatGPT側のレートリミット(1分間にリクエスト可能な回数)を意識した設計にも苦労しました。ChatGPTがたくさん使われると一定期間応答を返してこないというエラーなどもあるんです。外部に依存してサービスが使えないこともあり、設計を考えないといけないことが多かったですね。

N:僕はやはりプロンプトの作成に多くの時間を費やしました。クイズが作成できるようになるまでには多くの時間はかかりませんでしたが、微調整が大変でしたね。

ChatGPTの使い方について分かりやすく解説してくれる
バックエンドエンジニアN(写真手前の後姿)

ー微調整とはどういうことですか?

N:今回のAIアシストの「クイズ作成」では、動画とPDFから自動生成できる仕様になっているんです。クイズの元となる教材のジャンルが決まっていれば、プロンプトでコントロールできる範囲も広いのですが、教材作成者が用意した多種多様な素材から一定のクオリティのクイズを作成する必要があったため、素材を用意し、プロンプトをテストするサイクルを回すのに多くの時間を消費しましたね。外部サービスであるChatGPTは自分たちで制御できず、応答がランダムだったり、エラーで応答が返ってこない場合もあったりするので、その場合にアプリケーションとしておかしな動きをしないように制御することが大変でした。

それと、プロジェクトの途中で既存のモデルよりも値段・応答速度がよい新しいモデルが発表されたんです。その新しいモデルを使うことになったのですが、応答結果の傾向が今まで利用していたモデルと異なり、プロンプトを組み直すことになりました。日進月歩なAI技術ですが、利用者側も最新動向を注視しておかないといけない大変さを感じました。

末廣:ChatGPT側の仕様変更で新しいモデルがリリースされると、今までのプロンプトが使えなくなるというのも、外部サービスの連携機能開発ならではの難しいところですね(苦笑)。

ーわーーー。それは大変そうです…。金井さんはフロントエンドエンジニアとして苦労したところはありますか?

素直な言葉でインタビューに応じてくれた、癒し系フロントエンドエンジニア金井

金井:ストリーム出力風に画面上で一文字ずつ出力するところが大変でしたね。バックエンドからは質問文と回答の文字を1問分まとめて共有されてくるのですが、それをフロント側で1文字ずつ表示されるようにしました。
そんな中、先程の話のように、開発の後半にChatGPTの応答速度が上がったんですよね。それでフロント側の出力処理が追いつかず見た目が崩れてしまったことがあり、組み直すのが大変でしたね…。

末廣:ChatGPTを調査していく過程で「これはできる/これはできない」というのが後から分かった部分があって、フロント側の途中変更がとても多かったので大変だったんじゃないかと思います。

ーなるほど!非エンジニアの私からは想像もできないほどの大変なプロセスがたくさんあったんだな…と驚きました!私は今まで何も知らずにサクサクとAIアシストを利用させてもらっていたので、非エンジニアとしては頭が下がる思いです。

初めての開発だからこそ得た成果とやりがい

ーたくさんの苦難を乗り越えての成果ややりがいをぜひ教えてください!

谷元:PMとしては、無事にリリースされたことですかね…?

ーこれは大きな達成感ですし、PMとして最重要ポイントですね!他の方はいかがでしょうか?

末廣:今回実際にChatGPT連携機能開発してみて思ったことは、ChatGPTを深く理解する前は何でもできると思っていたけれど、いざ何か生成させようとするとかなり限定的だということが分かりました(笑)。
実現したいイメージとその限定的な制約がある中で、どのあたりを落とし所とするかを、チームで話し合えたことは良かったと思っています。

N:今回のChatGPT連携機能開発では新しい技術・サービスを利用することが多かったので、サービス選定の経験ができたことが良かったです。

金井:新機能ということもあり、実装方針を周りの人に聞いたり相談する機会がいつもより多かったので、その過程で自分の知らなかった技術を知ることができました。

ー初めてのChatGPT連携機能開発だからこそ各メンバーが調査に時間をかけ、メンバー同士でのコミュニケーションも活発に行い、補い合うチームワークが作れたのですね!それが結果的に1人1人のスキルやノウハウ蓄積にも繋がっていくんですね。

エンジニアの飽くなき挑戦…これからやってみたいこととは?

ー無事AIアシストがリリースされ一安心…というところかと思いますが、この経験を活かして次にチャレンジしてみたいことはありますか?

末廣:先日リリースされたGPT-3.5 Turboへのファインチューニング機能が気になります。チューニングすることで、より用途を絞った使い方がしやすくなる予感がしています。

GPT-3.5 Turbo:ChatGPTのモデルの一種。ChatGPTのサイトから無料で使える(2023/10/02現在)モデルと同じバージョン。

あとは、今回の機能の開発中にGoogle Bardがリリースされましたが、残念ながらAPIでの利用ができなかったため、今回の用途には使えませんでした。将来的にGoogle BardのAPIがリリースされれば、どのようなことができそうか調べてみたいです。
ちなみに、今後も継続的にAI機能を追加していくのであれば、プロンプトエンジニアがいたほうが良いなと思いました!

N:他のAI関連のサービスや技術を用いた機能を作成してみたいですね。

金井:今回に限った話ではないかもしれないですが、これまでやったことがない機能の開発の時は調べる機会が多く勉強になるため、いろいろと知識を取り入れていきたいと思いました。

ーエンジニアとして、本当にインプットとアウトプットの速度がすごいなと感じました!本当におつかれさまでした!!


プロジェクトメンバー4人が携わったChatGPT連携の新機能「AIアシスト」、体験してみませんか?

谷元、末廣、N、金井が携わったChatGPT連携の新機能「AIアシスト」に興味をお持ちいただけましたら、ぜひ詳細な機能についてもご覧ください!

なんと「AIアシスト」は無料でお試しいただけます(回数制限あり)🤖✨

【回数制限】
クイズ・暗記カードの作成
└動画教材:3回、
└動画教材以外:10回
レポート分析:100回(分析のプレビュー回数も含む)

▼無料登録後、すぐにAI体験できます!


さいごに

ここまでChatGPT連携機能開発の裏側をインタビュー形式でご紹介させていただきましたが、いかがでしたか?
非エンジニアの私にとっては脳みそフル回転しながらのインタビューとなりましたが、ChatGPT連携機能開発の難しさを知ることができたし、ビジネスサイドと開発サイドとのジレンマのリアルについても知ることができました。
そして、ものづくりの裏側にはメンバー1人1人のストーリーがあることも実感しました。開発当初の不安な気持ちから、開発後の次なる挑戦へのポジティブな言葉となっていたのが、それを物語っているように思います。
挑戦を続ける人はカッコいい!私も刺激をもらいました。

私たちと一緒に働きませんか?

ちなみに、今回は登場していませんが、実は弊社代表取締役も第一線で活躍しているエンジニアなのです。競技プログラミングコンテストを開催している国内サイト「AtCoder」の界隈ではカリスマ的存在であり、PHP分野においては世界トップクラスの実力を持ちます!しかし、本人曰く「ACが多いだけで実力はそんなにないです」とも(笑)

AC: Acceptedの略で、正答のことです。運営が用意したテストを全てパスし、正しいプログラムであると判定されます。

AtCoder 用語集より
西村代表取締役のドヤ顔お納めください
いや、実際にはこんなキャラクターです(笑)

弊社は兵庫県たつの市にあるIT企業ですが、西村のもとで働きたい!と遠方から転居し入社されるエンジニアも多数います!現在、バックエンドエンジニア募集中ですので、少しでも興味がある方はお気軽にご連絡ください✉️
オンラインでのカジュアル面談も絶賛実施中です😊

お問い合わせはこちら


この記事が気に入ったらサポートをしてみませんか?