2022年後半くらいから一気に盛り上がりを見せているChatGPT。すでにChatGPTを利用したサービスも数多く登場しており、その動向に注目している方も多いのではないでしょうか。
本記事では、ChatGPTがモバイルアプリ開発に与える影響と、変化について記述します。予想も大いに含まれるので、外れる可能性も高いです。その点、ご注意ください。
ChatGPTの使いどころ
ChatGPTをプログラマー(アプリ開発者)の視点で見た場合、以下のような使い方が考えられます。
コードを提案してくれる
これはすでにGitHub Copilotで実現しています(GitHub CopilotはChatGPT開発元のOpenAIが提供するOpenAI Codexをベースにしています)。何かコードを書いた時に、サジェストしてくれる機能です。このサジェストというのは入力補完とは異なります。入力補完はコードを静的に解析し、クラスなどのメソッドや変数名を補完してくれるものです。
対してサジェストはコードを解析し、予測されるコードを提案します。複数のプロパティがある中で、1つ目のプロパティに対して処理を書くと、他のプロパティに対して補完するようなコードを提案します。プログラマーは内容を確認し、後はタブキーを押していくだけでプログラミングが完了していきます。
また、関数名を書くだけで補完してくれる機能も便利です。コメントでも良いですが、GitHub Copilotの場合は関数名からも処理を予想して記述します。
GitHub CEOはいずれコードの8割がAIベースになると言っています。GitHub CopilotやChatGPTを体験すると、あながち間違っていないように感じるでしょう。
コードをレビューしてくれる
書き終わったコードをChatGPTに送信して、レビューを依頼するというのも良く行われています。より可読性の高いコードに成形したり、コメントを追加したりできます。
レビューして終わりではなく、より良いコードを生成してくれます。このコードと元のコードを差分で確認すると、より良いコードはどういったものか理解できるようになるでしょう。
レビューを数時間〜数日待つのであれば、ChatGPTにレビューしてもらう方がすぐに終わって便利です。
テストコードを生成する
できあがったコードを元に、ユニットテストやブラウザによるテストコードを生成してもらうこともできます。テストコードを書くのは面倒ですが、自動生成してくれるならとても楽になります。正常系のテストコードだけであっても、ベースがあるだけで工数がまったく違うでしょう。
こうしたテストコードの生成も、元になるコードを解析した上で生成されます。いわば、自分の書いたコードに最適化されたテストコードです。ネットでテストコードのベースを探してきて、自分で書くのとは大きく異なる体験でしょう。
ライブラリやAPIの使い方を教えてくれる
普段あまり使わないAPIやライブラリの使い方を知るのにChatGPTが便利です。もちろんドキュメントを読めば使い方は分かりますが、自分の目的に合った内容とは限りません。ドキュメントを理解して、自分のニーズに合わせて例示されているコードをカスタマイズする必要があるでしょう。
ChatGPTの場合は、質問した内容(要件)に合わせて最適化されたコードを生成してくれます。地図ライブラリやCanvasの使い方などを学ぶ際に使ってみると、その凄さが体験できるでしょう。
ベースを生成してくれる
すでにリリースされているサービスでGPTAppがあります。これはChatGPTに質問した内容をそのままWebアプリとして表示するものです。要件(プロンプト)が正しければ、望んだ通りのアプリが生成されるでしょう。
この使い方の面白い点としては、チュートリアル的なアプリを自動で生成できる点です。Monacaにも様々なデモアプリやチュートリアルを用意していますが、それをユーザーが期待したものをオリジナルで生成できるようになります。「こういうアプリはどう作るんだろ」と思った内容が、そのままアプリとして展開されます。
もちろん、大雑把な要件では期待した通りにはできあがりません。これがプロンプトエンジニアリングと呼ばれるものですが、ChatGPTなどに正しく依頼する能力が求められます。
今後の変化
ここからは大いに予想が含まれますので注意してください。
ベースは自由に選択して生成
アプリを開発する際に、これまではテンプレートを選んでいたでしょう。たとえばVue.jsとTailwindといった内容です。こうしたベースアプリの生成が、自在に行えるようになりそうです。
たとえばフレームワークはVue.js、CSSフレームワークはTailwind、画面はタブビュー…といった具合に選択していくだけで自由にアプリが生成できるかも知れません。ここで選択式にしているのは、テキストで自由入力よりも精度を高めやすいからです。
要件からバックエンドアーキテクチャを作成
プロジェクトの要件を入力することで、アプリのバックエンドアーキテクチャを提案したり、必要なコードを生成してくれるかも知れません。mBaaSとしてニフクラ mobile backendやFirebaseをどう使うのが良いか教えてくれたり、AWS CloudFormation向けのコードを出力してくれる可能性もあります。
同様にデータベースの構造を提案してくれたり、SQLも出力してくれるでしょう。
コードは生成が基本に
GitHub Copilotや次世代のGitHub Copilot Xが使われるようになれば、コードは基本的に書くものではなく生成されたものを使うのが当たり前になるでしょう。
この時に問題なのは、生成されたコードに対する責任を負うのはプログラマー本人だということです。不具合があった場合、GitHub Copilotの責任にはできません。正しく動くかどうかは、プログラマーがチェックして容認する必要があります。
つまりプログラマーとしてコードリーディングの知見と、間違っている場合に修正できるスキルが求められるでしょう。もちろん、修正できるスキルは実際にコードを書くことでしか得られません。自動生成が当たり前になったからプログラマーとしてのスキルが低くても良い、とはならないでしょう。むしろ、問題ないように見えるコードが本当に問題ないのか、その見極めるスキルが必要です。これはレビューワーとしての目になるので、スキルはもっと高くなければならないでしょう。
プロンプトスキルのニーズ
AIに期待したコードを生成してもらうためには、プロンプトエンジニアリングのスキルが求められます。アプリの要件を正しく判断し、それを文章にしなければなりません。とはいえ、プログラミングのような文章を書くわけではありません。AIの認識に齟齬が発生しないレベルの文章力が求められるでしょう。
プロンプトエンジニアリングのスキルを高めるためには、まず現状のAIに触れた上でどういった文章を投げるとどういった結果が得られるのかを学ばなければなりません。
生成されたコードのつなぎ合わせ
将来的には変わってくると思いますが、現状のAIでは1回のプロンプトで1画面分のコードを生成するのが基本です。複数画面にまたがるアプリを生成するのは、プロンプトやレスポンスが長くなってしまいます。
そのため、画面ごとにコードを出力して、それを連結させてアプリにしていく技術が求められるでしょう。その際に画面ごとに齟齬が発生しないように注意が必要です。たとえばメイン画面はVue.js、一覧画面はReactなどとフレームワークが異なってしまうと開発しづらいアプリになるでしょう。こうした問題が発生しないためにもプロンプトスキルは大事です。
まとめ
ChatGPTは開発面だけでなく、Webサイトのドキュメントやヘルプ、マーケティングなどでも大いに役立つ可能性を秘めています。つまりプログラマー以外の方にとっても見逃せない存在になるでしょう。
すでに多くのサービスにChatGPTが組み込まれていたり、社内で実験的に利用されています。これはスマートフォンが登場した時の衝撃に近いかも知れません。2008年くらいにも多くのスマートフォン関連サービスが立ち上がったり、どうビジネスにつなげるかを社内検討していたはずです。その再来と言えるでしょう。
まずは試し、その可能性を探ってみてください。