COLUMN
2023年03月27日
開発が激変するかも知れないAIテクノロジーについて
カテゴリー:テクノロジー
タグ:AI
GitHub Copilotが登場したのが2021年ですが、そこから一気にAIによる開発補助サービスが進化しています。時にChatGPTを活用したサービスは様々で、新しい試みが多数行われています。
今回はAIテクノロジーによってどういった変化が起こっているのか、それによるメリット・デメリットを紹介します。
AIによる開発サポートの種類
現在のAIテクノロジーは汎用的なものではなく、特化した形で提供されるものがほとんどです。そのため開発というキーワード一つとっても、分野によってプロダクトが分かれています。
GitHub Copilot
GitHub CopilotはVS Codeと連携するプログラミング補助ツールです。コメントを書くと、その内容に合わせたコーディングが行われたり、メソッドを書くとその内部のコードをサジェストしてくれます。これは自動補完に似ていますが、前後の文脈を読み取った上でのサジェストなので、はるかにレベルが高いです。
同様のプロダクトにTabnineがあります。
こうした先進的技術はVS Codeに取り込まれることが多いですが、Visual StudioであればVisual Studio IntelliCodeが存在します。こちらは現在ベータ版で、利用申請した上で試用できます。
テストコード生成
現在は非公開になってしまいましたが、VS Code向けの機能拡張としてvscode-chatgptがありました。こちらはコードを選択してユニットテストコードを生成したり、関数の説明を行う機能拡張でした。
定義ジャンプ
IDEを使っていて、関数の定義されている場所にジャンプするといったことは良く行いますが、よりインテリジェンスに行えるのがqqbotです。対話型であり、AIとIDEの中で会話しながらコードを探索したり、実装を行えます。大規模なソフトウェアの中でテストコードや定義されている箇所を探すのは難しいですが、qqbotはAIによって対話しながら探索を行えます。
現在テスターを募集中とのことです。
ベースコードの生成
FlutterPromptsはFlutterアプリのコードを生成するChatGPTプロンプトを集めたサイトです。ここで掲載されているプロンプトを真似ることで、自分が期待しているFlutterアプリのコードを手に入れられます。うまく使えばFlutterアプリのコーディング量を大幅に減らせるでしょう。
さらにMicrosoftはPowerAppsにCopilotを実装しています。つまりユーザーはテキストベースで欲しいアプリの内容を書けば、ChatGPTによって自動的にアプリが作成されるのです。ノーコードツールなので、ベースアプリがそのまま利用できるレベルで出力されることでしょう。
SQL生成
プログラミングにおいて、適切なSQLを書くのはとても困難です。プログラミングコードの中に突如として文字列が紛れ込むために全体の見通しが悪くなりますし、メンテナンスも大変です。そのためにO/Rマッパーが登場しましたが、より最適なチューニングされたSQLを実行したいというニーズは強くあります。
Chat2QueryはChatGPTを使ってSQLを生成する機能です。もちろん、正しいSQLであるかどうかの精査は必要ですが、おおむね適切なSQLが生成されるようです。
今後について
GitHubのCEOは、将来的に80%コードがAIによって生成されるだろうと述べています(現在は40%)。現状でもコーディングする際に書き方が分からないとGoogle検索してブログやStack overflowにいき、そのサンプルコードをコピペして修正といったことをしているはずです。GitHub Copilotはこの作業を簡略化、最適化しているに過ぎません。さらに性能が上がれば、ほぼ修正なしでコーディングが完了してしまうようになるのも頷けます。
さらにノーコード界隈では、アプリを手作業で作る手間もなくなるでしょう。PowerAppsがそうであるように、内部的にAIが動作することで、自由にアプリを生成できるようになります。ベンダー側もテンプレートを用意することなく、ユーザー自身が好みのアプリを自動生成できる世界が実現するでしょう。
メリット
開発者にとってのメリットは、とにかくコーディングが速く、品質良くなることです。実際、GitHub Copilotは一度使うと手放せなくなります。自分が知らなかったライブラリの使い方やコーディングテクニックが出てくることもあり、学習ツールとしても活用できます。
また、AIベースのツールを使うことで、繰り返し書くコードを自動化できます。似たような作業を低減できるだけでも、AIベースのコーディングサポートツールを導入する価値があります。
デメリット
AIベースのコード生成で最もリスクが高いのは、そのコードの著作権が不透明であるという点です。GitHub Copilotはオープンソース・ソフトウェアをベースに学習していますが、そのライセンスは玉石混交です。もちろんGitHub側でも対策しているはずですが、GPLやLGPLのコードが混ざっていると、自社ソフトウェアのコードを公開しなければならない事態にもなりかねません。
また、GitHub Copilotなどを利用することで、自分の書いているコード(クライアント向けなど)がクラウドにアップロードされるのではないかという声もあります。秘密鍵などのキーが補完されるという話もありますが、あちらはCopilotが勝手に生成したそれっぽい文字列と言われています。
最後のデメリットは、生成されるコードやSQLの利用について、最終的にはプログラマーの自己責任であるということです。そこに不具合が含まれていたとしても、それをAIのせいにはできません。コードを精査して正しいかどうか判別するのは、やはり人の目に依ります。
まとめ
GPT-3が注目を集める中、すでにGPT-4が登場するなど進化が日進月歩で進んでいます。この手のツールを使わない選択肢もありますが、一頃のオープンソース・ソフトウェアに近いものを感じます。当時もオープンソース・ソフトウェアは使わないといった企業はありましたが、今ではほとんど見られないでしょう。
AIによってプログラマーの仕事が奪われるといった懸念の声も聞かれますが、時代の流れはすでに変えられません。拒否できるものではない以上、まずは試用したり体験するところからはじめてみてはいかがでしょうか。