開発者を取り巻く環境は“AIネイティブな開発”へ

岡嵜禎氏:続いて、開発者体験の話をしていければなと思います。開発者の領域もAIを活用することによって大きく変わっていこうとしています。実際に、開発者が取り組む課題は普遍的であると思います。

生産性を向上したい、当然コード品質の向上をしていきたい。そして、できればロジックに集中して、もっとプロダクティビティを上げたい。本当に好きなことをやっていきたい。そういったことがあると思います。

AIを活用することによってその世界観を変えていこうという動きがもうすでに起こっています。実際に、開発者を取り巻く環境の変化はどんどん変わっていっていると思います。開発に関しては、よりクラウドネイティブな開発にシフトしていて、本当に作るものに集中して作るというケースが増えてきていると思います。これからそれがさらに発展をして、AIネイティブな開発で進んでいくと我々は考えています。

実際に、それを体現するためのソリューションとして「GitHub Copilot」というものがすでに発表されています。デベロッパーの方が大好きなソリューションなので、ご認識の方も多いと思いますが、「GitHub Copilot」は実はマイクロソフトのプロダクトの中でジェネレーティブAIの機能を最初に実装したものになっています。

それによって、どういったことができるようになるかというと、プログラムのコンテキストに応じてコードの自動生成を可能にして、開発エンジニアの生産性を劇的に向上できるようになります。

AIの活用で開発スピードは約半分にできる

こういったものを活用するとどういったメリットがあるのか。さまざまなお客さまに活用してもらった結果のデータが出ています。96パーセントの方が、同じタスクをより早くこなすことができると証言しています。88パーセントの方が、より生産性を上げることができる。あと、74パーセントの方が、より満足する仕事に集中できると証言しています。

実際に聞くと、開発スピードを約半分にできるというのが、だいたい統計として見えてきています。その分だけでもかなり大きな効果があると思います。

私も2ヶ月前ぐらいにサンフランシスコにあるGitHubの本社に行った時に「実際どうなの?」と聞いてみたところ「サンフランシスコ界隈のインターネットサービス系や、スタートアップは、もうこぞってこういったものを使って生産性を上げる開発スタイルが標準になっているよ」と言われたのが印象的でした。

この間あるイベントでCTO系の方と話をした時も、やはりこういったものにシフトしていって、新しい開発スタイル・プロセスを作っていかないと、自分たちが時代遅れになるとコメントをされていたのも印象的でした。

テストコードを自動生成・音声入力でコーディングが可能…「GitHub Copilot X」の機能

こういった部分だけに留まらず、このGitHubの世界観もさらに発展を遂げています。

「GitHub Copilot X」というものが、その後に提供されています。冒頭でお話しした、言語モデルであるGPT-4をさらにネイティブに実装して、より高度なことができるようになったというのが大きなポイントです。印象的だった機能をいくつかお話いたします。

例えば、テストコードを自動生成してくれるんですよね。実際のプログラムコードだけではなく、テストコードを自動生成してくれます。開発者の中にはテストコードを書くのが嫌いな方が多かったりすると思うので、そういったものが自動で生成されることで、生産性を上げながら品質を上げることができるというのも大きなポイントかなと思います。

あと、チャット系の機能が提供されるようになっています。例えば「こういったゲームを作りたい」と問いかけると、「じゃあこういったコードはどうですか?」と提案をしてくれて、そのチャットで会話をすることによってコーディングがされていく。もしくはコードを改善していくことがシームレスでできるので、優秀なバディと開発ができるというところがすごくウケているポイントかなと思います。

チャットじゃなくても音声で会話をするだけで、ITの知識がない方も簡単なプログラムであれば作れるという世界になっていくので、適材適所で見極めながら使えるものはうまく開発プロセスに組み込んでいく。逆に優秀なエンジニアがより大事な仕事にフォーカスしていくというシフトがすごく求められると思います。

設計書を解析しつつコードが自動生成される世界がやってくる

この先、AIがもたらすさらなるイノベーションというところで、今後どんどん変化をしていくと思います。今はコード生成/理解の話だけを中心に、開発者体験がどう変わるかという話をしましたが、画像生成をしたり、画像を理解したり、音楽を生成したり、音声を生成したり、理解する。動画を生成したり、理解をする。また、さまざまな分析など、そういったことを組み込むことで、開発プロセスのエンドツーエンドが大きく進化していくことが予測されます。

我々のソリューションでも、例えばデザインの時に画像を自動生成したり、画像からプログラムを自動生成したりということが実際に組み込まれています。

あと、先ほど言ったGPT-3とGPT-4の違いはテキスト文章だけではなく、GPT-4はマルチモーダルで画像や動画などを理解できるようになるという方向性もあるので、そういった意味では、より高度なことが開発の中でも起こっていくのかなと思います。

例えばどういうところかということで、イメージを持ってもらうために、こちらの「express design」を紹介します。弊社のローコード・ノーコードのツールの中で、画像からプログラムを生成できるので、それをちょっとお見せできればなと思います。

例えば、メモ書きの写真をベースにこういったUIが自動生成されるというかたちになっています。必要なUIやプログラムの雛形ができるので、あとは簡単な会話を繰り返すだけで必要なアプリケーションが自動生成されます。

本格的なアプリケーションであれば、「これではなかなか難しいよ」という世界観はまだまだあるとは思うんです。けれども、社内用の簡易なアプリケーションや、スピーディに作りたい時は、こういったものをうまく組み合わせることによってスピーディに楽に作れる。

もっと本質的で重要なところに時間を投資していくという使い分けが、より重要になってくると思いますし、おそらく設計書を解析しながらコードが自動生成される世界観が、今後は出てくるんじゃないかなと個人的には思っているところです。

開発者が「Copilot」を作る時代に

ここまで、Copilotを中心に、AIが、例えば働き方や開発者の体験をどう変えるかというお話をしたのですが、おそらくデベロッパーの方々が本質的に考えないといけないのは、自分たちがCopilotをどんどん作っていく世界観をどう作っていくのかで、それがより重要になってくるかなと思います。

フレームワーク「Copilot stack」の概要

マイクロソフトでは数週間前にBuild(「Microsoft Build 2023」)という開発者イベントを開催したのですが、その中で「Copilot stack」という概念を発表しました。これはまさしく開発者の方々が「××Copilot」みたいな、自分たちのアプリケーションや業務に組み込むためのフレームワークの考え方です。

今日は、詳細はお話ししませんが、「拡張のやり方は3つあります」というところをキーワードとして覚えていただければなと思います。一番上の、アプリケーションレイヤーのプラグインで拡張するやり方。真ん中のレイヤーでアプリケーションコードで、プロンプトエンジニアリングを組み合わせながら拡張するやり方。

一番下はFoundation modelsということで、先ほど言ったAIの大規模言語モデルを、自分たちのデータと組み合わせてファインチューニングをしながらAIのモデルを賢くして、より自分たちの業務に合ったかたちに適合していくやり方。その3つのやり方があるという話をさせていただければなと思います。

拡張方法その1 プラグイン

まず、一番上のアプリケーションレイヤーで組み込むというやり方が、こちらのプラグインという考え方です。(スライドの)左側に「Copilot」と書いていますが、Copilotの部分はAIの機能が組み込まれたアプリケーションと考えると、例えばChatGPTみたいなものに相当すると思います。

ただ、基本的にそこの言語モデルはインターネット上で公開されたデータをベースに作られているので、例えば自分たちの特定のアプリケーションや、自分たちが社内で持っているデータが連携されないなど、自分たちの望む答えにより近づけたいという時に課題があるよねというケースがあります。

その時にはもちろん、言語モデルを自分たちで作るという手もあるのですが、それは大変ですよね。その時に使えるのがプラグインという考え方で、さまざまな会社がプラグインを作っていれば、データを組み合わせて使うことができるという考え方です。

例えばChatGPTの中で、飲食店系の情報をもっと詳しく組み込んで調べたい。でも飲食店系の情報がない。どこかの会社が作っている飲食店系のデータベースをプラグインで取り込む機能があれば、そのプラグインをアプリケーションにオンにするだけで、そういったデータが使えるという考え方です。

マイクロソフトでは、このプラグインを基本的にOpenAI社と一緒の仕様で拡張できるようにしています。例えばM365という、WordやExcelなどにも、このプラグインの機能を組み込むことができます。

実際に、Wordの中に組み込むってどういうことなの? という話だと思います。例えば先ほどのWordの文書の中で、こういうユースケースを想定してください。文書があります。文書があるんだけれども、普通の文書チェックではなく、例えば特定の法律にこの文書が準拠しているかをチェックしてほしい。

例えば「アメリカのカリフォルニアに行くので、カリフォルニアの法律に合った文章の契約書かチェックしてください」「カリフォルニアの法律に合った契約書に文言を修正してください」。もしかしたらできるのかもしれませんが、ノーマルのOpenAIの言語モデルはできない可能性があります。

その時に、カリフォルニアの法律のノウハウを持っている会社がその情報を加味するとか、そこに特化した機能のプラグインを作ってくれれば、そのWordのプラグインをオンにすることで、例えば「この文書がカリフォルニアの文書に準拠しているかをチェックしてください」。そういったことの作り込みができる。アプリケーション動作をすることができます。

利用する観点では、そういったプラグインを活用することによって膨大なエコシステムからやりたいことを瞬時に実現できますし、逆にデベロッパーのみなさまであれば、アプリケーション層の方に簡易に使ってもらうためにプラグインをどんどん作っていただく。そういった方向性を考えることも可能かなと思います。

拡張方法その2 AI Orchestration

それ以外の部分では、AI Orchestrationというところで、プロンプトエンジニアリングの領域で実際にプログラムを組み合わせることによって、AIに正しい情報をインプットしながら自分たちに必要なデータを組み合わせる。そういったことも可能になってきます。

拡張方法その3 Foundation models

もちろんプログラムで簡単に作れますが、それをよりサポートするために、マイクロソフトでは「Azure AI Studio」というものを出しています。プログラムで自分たちのデータを組み合わせたり、AIの大規模言語モデルをファインチューニングしたりなど、この「Azure AI Studio」を使うと、さまざまな言語モデルを自分たちのデータと組み合わせて拡張することが可能です。

実際に、プロンプトの部分に関しては、Prompt-Flowというものがあって、右側にGUIが出ていますが、こういったGUIベースでプロンプトエンジニアリングのプログラムを楽に作っていくことができるソリューションです。

あとは、大規模な言語モデルを作るという部分に関しては、こういったOpenAIのモデルの拡張もそうですが、例えばオープンソースである「Hugging Face」などは、さまざまな言語モデルに自分たちのデータを組み合わせて拡張することを可能にしているので、そういった意味では、いろいろな言語モデルを作って最適なものを選びたいというケースでも対応可能です。

AIを安全に利用するために大切なこと

最後ですね。もう1個、新しく考えないといけない重要な部分としてあるのが、冒頭にあった「AIを安全に利用していくために」というところ。アプリケーションなどをデザインするために考えないといけないポイントになってきているというのが最後のメッセージになります。

実際に、AIを活用する上での留意点をいくつか挙げています。例えば「回答できないケース、曖昧な回答しか得られないことがある」ですね。回答として間違っているケースもありますし、フェイクニュースという話題もあります。どんどん自動で情報が作られてしまうので、そういった意味でフェイクニュースに対する取り扱いをどうするかという話。

あとは、「論理的な判断ができない」や「国民性による解釈の違いがある」など、情報の偏り、その回答の公平性、データの公平性、そういったことがけっこう大事なポイントになってきます。

マイクロソフトでも、そういった考え方が大事だと考えていて、社会の影響を考慮した上でAIの取り組みをしっかり推進していこうとしています。

そのポイントになるのが、「責任あるAIの原則」です。我々は「レスポンシブルAI」と呼んでいて、この考え方をすごく大事にしています。具体的にはプライバシーとセキュリティ、信頼性と安全性、包括性、公平性、アカウンタビリティ、透明性。この6つの要素を挙げていて、こういったことを考慮しながらAIのアプリケーションを作っていったりサービスを提供していくということをやっています。

ただ、この考え方は我々がやるだけではなく、実際にこれから開発されるデベロッパーの方々、CTOの方々のみなさんが取り組まないといけない要素になってくると思いますので、そういった意味ではぜひ参考にしていただきたい部分かなと思います。

ただ、原則を定めただけではうまくいきませんよね。それを仕組みに落としていくところで、実際に原理・原則を実行に移すためのアプローチとして、ツールとプロセスを整理したり、トレーニングと実践、ルール、ガバナンスをどうやって整備をしていくかも大事だと考えています。そういった意味で、きちんとツールや仕組みを組み込んで、それがきちんと実行されることを考慮していくことが重要になってくると思います。

それをサポートするためにマイクロソフトが提供させてもらっているのが、こちらの「Azure AI Content Safety」です。機能も数週間前(※登壇当時)に発表しました。こちらは、例えばコンテンツの許容するスコアレベルみたいなものを定義して、不適切なコンテンツが表示されていそうであれば、それをポイントとして加算していって、レビューをしたり、もしくは表示しないという考え方。

(スライドを示して)例えば真ん中は、人やAIが生成したコンテンツも活用可能というところで、逆にAIが生成したかどうかがわかる仕組みを提供することによって、フェイクニュースなどをきちんと防止しようとしています。こういった考え方を使ってもらう。もしくはこういった考え方を自分たちのアプリケーションに実装してもらうというところで、ヒントになればなと思っています。

またこのあたりは情報があると思うので、確認いただければなと思います。

AIの進化と共に開発者の未来は変化していく

ということで、私からは、AIの進化とともに開発する未来は大きく変化するというお話をいたしました。特に、クラウド、デジタルトランスフォーメーション、AIトランスフォーメーション。こちらを今後、本格化していきたいと思っています。

私がメッセージとしてお話ししたいと思うことは2つあって、1個は、デベロッパーの方々に対してすごく今大きなチャンスがある。これは間違いないと思います。インターネットに変わった時も、スマートフォンが出てきた時も、ユーザーの体験を変えるような時に大きく新しいものが出てきて、いろいろなビジネスチャンスが生まれてきた。今その時代であることは間違いないと思うので、そこにいかにスピーディに取り組むかどうか。ここにはすごく大きな意味があると思うので、ぜひ加速度的にいろいろ取り組みを進めていただければなと思います。

もう1個、私が個人的にCTO協会の方々と付き合っていてすごく感銘を受けているのが、日本のソフトウェアを世界で戦えるようにしたいというメッセージを幹部の方々も真剣に考えて取り組んでおられるところです。

このジェネレーティブAIの変化というのは、それを可能にする。例えば言葉の壁を越えたりなど、エンジニア不足の壁を解消する大きなチャンスがあると思います。これは我々にとって大きなチャンスだと思っているので、今日ご参加のみなさんと新しい世界を一緒に作っていければなと思っています。以上となります。ご清聴ありがとうございました。