NEWS & EVENT
お知らせ・イベント情報
AIによる開発補助分野とその代表的サービスまとめ
2024年01月31日
ここ数年、AIによって開発のあり方ががらっと変わってきています。実際に生成系AIを開発に取り入れている方は、以前と比べてコーディング量が大幅に減っているのではないでしょうか。
GitHubのCEOは、いずれAIによるコーディング量が8割になると予想しています。実際、そうなりそうな実感がある方も多いでしょう。そこで、この記事では開発分野において、AIがどう使われているのかを分野別に紹介します。
コーディング補助
コーディング補助は、最もAIが多用されている領域ではないでしょうか。GitHub Copilotをはじめ、各社がこぞってこの分野に投資・サービス開発しています。
入力補完
従来の入力補完と言うと、クラスやライブラリを静的解析し、メソッド名やプロパティを入力補完してくれるものでした。AI時代になり、そのレベルはとうに昔のものになっています。
前後の文脈を理解したコード提示であったり、コメントで支持した内容に沿ってコードをまるごと生成してくれます。こうした補完が便利なのは、開発者が補完して欲しいと指示することなく、自動的に出力してくれる点です。そのため、開発している中でAIとコラボレーションしながら開発している気分になってきます。
チャット
GitHub Copilotでは、一段進んだサービスとしてチャット機能を提供し始めました。当初、個人的にはそれほど魅力的に感じていませんでした。先ほどの自動で補完してくれるのに比べて、チャットは専用のUIを開いて聞く必要があるからです。
しかし、コードの一部分を選んで、そのままチャットUIに飛ばせるのが分かると、利便性がまったく変わってきます。また、チャットも現在開いているファイルやタブを対象として含めてくれるので、自分の行っている作業に最適な答えを出してくれます。
これは初学者にとってみれば、信頼できる先達が常にいる状態と似ています。分からない部分があればAIに聞いて、最適なコードを提示してもらったり、その意義を聞けるのはとても便利です。
テスト
システムのテストは幾つかの分野に分かれます。プログラマーレベルのユニットテストや結合テストもあれば、ブラウザやアプリを自動操作するようなテストもあります。
前者のユニットテストであれば、GitHub Copilotなどが活躍します。既存のコードを選択し、それに合わせてテストコードを生成してくれます。ブラウザテストなどはmablやMagicPod、Playable!といったクラウドサービスがAIテストとして提供されています。
開発時において、リソースが不足した際に最も最初に削られるのがテスト工数(品質)と言われています。限られたリソースの中でも品質を高く保つためにも、AIによるテスト省力化は注目すべき分野と言えるでしょう。
デザイン
UI生成
プロトタイプ開発に使えるレベルのUIを生成してくれるサービスが登場しています。v0 by Vercelは、プロンプトで指定した内容に沿ってNext.js/React用のUIを生成してくれます。面白いのは、一度生成した内容に対して、さらに指示して修正を加えられることです。もちろん修正するごとにバージョン管理しており、戻すこともできます。
UIなどは一度作った後で、追加修正したいことがよくあります。実際にできてみないと、どう違うのか指示できないことも多いでしょう。v0はそうしたワークフローを把握したサービスと言えます。
ロゴや画像
ロゴや画像系の生成AIは、著作権の問題があるためにあまり好んで使われません。しかし、中国などのゲームアプリでは生成系AIによってアイテムの画像を大量に作り、デザイナーはそれを修正するだけというレベルになっているそうです。
そこまででなくとも、PhotoshopなどではすでにAIベースのフォトレタッチ機能が含まれていたり、Adobe Fireflyのように著作権上の問題を解決した画像生成AIもあります。数年すれば、これらを利用するのも当たり前になるかも知れません。
レビュー
コードレビューは技術的にレベルの高い人でないと難しい内容です。コードから意図を読み取ったり、逆に質問できる力はある程度のスキルが必要です。そうしたコードレビューをAIによって自動化するサービスがあります。
CodeRabbitはその一つです。GitHubなどのPRをベースに、コードレビューを自動化します。人は、他人による指摘に対してストレスを感じる場合がありますが、コンピュータからの指摘は受け入れやすいという傾向があります。AIによるレビューであれば、受け入れた上で修正も行いやすいのではないでしょうか。
AIによる自動化レビューをした上で、人によるレビューでも良いでしょう。最初にAIベースの作業を終えていることで、コードの可読性や質問されるポイントを回避した内容に仕上がっているはずです。
メッセージ
システム開発におけるメッセージとして、主に2つあります。1つはコミットメッセージで、もう一つはチェンジログです。コミットメッセージではどういった修正を行ったのか説明が必要ですが、ついつい簡略化した書き方になりがちです。AIを使うことで、修正した内容の意図を読み取って、他の人が分かりやすいコミットメッセージを生成してくれます。
そうしたコミットメッセージが積み重なって作られるのがチェンジログ(CHANGELOG)です。ただコミットの連続で示されても理解するのが難しいですが、変更点の軽重をつけた内容になっていると、とても分かりやすくなるでしょう。
一般的にこうした文章を書くのは面倒な作業であり、コードに修正内容はすべて詰まっています。それらを読み込んでメッセージを作るのは、まさにAIが得意とする分野の作業と言えそうです。
まとめ
開発者は生成系AIを使うのにあまり躊躇がないように感じます。むしろ積極的に取り入れていくことで、個人やチームの生産性を大きく向上させています。もはや毛嫌いして使わない方が損とも言えます。
今後、ますます開発領域でのAI利用は広がっていくことでしょう。ただし生成されたものを確認し、承認するのは開発者の役割です。そうした意味では、開発者にはコードを読み込んだり、それが正しいものであると判断できる能力が必要になるでしょう。