本稿は「Introducing Generative AI in Qt」の抄訳です。
生成AI は、Qtアプリケーションの開発手法を変えるでしょうか?私たちはこの問いを自問自答し、そして突き詰めて考え抜くことも重要ですが、同時にまず何か始めてみることも重要だと考えました。私たちは今回テクニカル・プレビューとして Qt Creator 11 に Github Copilot との統合機能を実装しました。
生成 AI はどのように Qt Creator の中で動作するか
私たちは、開発者が似たようなコードを繰り返し書いたり、延々とテストケースを作成したり、オンラインから適切なコードを探し出したりすることに、多くの時間を費やす必要があり、苦労しているというような場面をよく目の当たりにしてきました。
GitHub Copilot 統合機能により、開発者のコーディング作業はより効率的になります。車輪の再発明のようなありふれたコードに多くの時間を費やすことなく、重要なビジネスロジックに作業を集中させることができるようになります。
GitHub Copilot は、Qt Creator のエディタの中でコードを提案し、完全な関数を完成させ、テストケースを提案します。GitHub Copilot は、プロジェクトのコンテキストとスタイル規約に基づいて、新しいコードを提案します。開発者は、提案を全体として適用することも、その一部だけを採用することもできます。
Qt Creator のエディタウィンドウ内で GitHub Copilot がテストケースの提案している様子を示した画面キャプチャ
GitHub Copilotは、商用の AI コードアシスタントツールです。30日間無料で試すことができ、その後はこの記事を書いている時点で個人向けで月10ドルから、エンタープライズライセンスで月19ドルからとなっています。
拡張知能がもたらす生産性の向上
GitHub Copilot の統合は、Qt Company が Qt の開発者ツールに統合した最初のそして、シンプルな AI 機能の実装です。私たちのミッションは製品開発プロセス全体の生産性を最適化するというところであり、今後、人工知能の分野で何をするにしても、それらはこの私たちのミッションに沿った形のものになります。私たちはイノベーションを加速させたいと考えています。アイデアをソフトウェアに変えたいと考えています。重要なのは、私たちが皆様の創造のためのパートナーであり続けるということです。AI は、私たちにとって、単に人工知能を意味するものではなく、拡張知能(Augumented Intelligence)を意味するかもしれません。
Qtは、人の作業を完全に置き換えるのではなく、仮想の相棒として人の作業をサポートする「Augmented Intelligence(拡張知能)」に注力していきます。
GitHub Copilot は、この意図を示す優れた具体的な例です。Github Copilot は、引き継いだり、修正したり、あるいは単に無視できる提案をあなたにします(これらの提案を受け入れない場合も相手に気を遣うような必要はありません。そういった意味では人間の同僚より優れているのかもしれません)。
GitHub Copilot を Qt と統合するということは、技術的観点においても商用利用の観点においても挑戦です。GitHub Copilot はサードパーティーのサービスであり、確かに素晴らしいサービスですが、それはつまり、Qt Company の管理下ではない追加の利用規約が付属してくることを意味します。生成 AIに関する規約は厄介です。まず、生成コードにまつわる法律や倫理は、まだ整理が進んでいるその途中の段階にあります。現時点においては共通認識として広く一般的に受け入れられているルールは存在しません。第二に、生成 AI プロバイダーの利用規約が受け入れられるかどうかは、アルゴリズムのトレーニングに使用されるソースの権利をどう判断するかによります。
生成 AI は、パーミッシブ・ライセンスではないオープンソースコードをロンダリングする自動化された手段なのでしょうか? どの程度の調整、根拠があればパーミッシブ・ライセンスではいオープンソースコードや、GPL のようなコピーレフトを要求するソースコードを「コピー」したようなコードに対して新たな知的財産権が適用可能になるのでしょうか? 変数名の変更や変数の宣言の変更だけで十分なのでしょうか?人間が手作業で変更した場合、これらは十分な変更とはみなされないでしょう。では、なぜ生成 AI が行えば問題ないのでしょうか?GitHub Copilot の製品固有の利用規約では、提案されたコードの使用責任はユーザーにあります。GitHub Copilot はブラックボックス形式で情報を提供するため、Qt Companyではそれら提案に対して責任を負うことは難しく、また責任を負うことを意図していません。また興味深いことに、GitHub は、ユーザーが "利用可能なすべてのフィルタリング機能 " を有効にしていない場合に引き起こされる可能性のある、知的財産権侵害に関して責任を負わないとしています。この記事を書いている時点では、パーミッシブ・ライセンスではない、公開されているオープンソースソフトウェアを使用しないというフィルターは、デフォルトでは無効になっています。
Qtでは、オープンソース、商用を問わず、生成 AI の使用に関する規約を慎重に評価することを推奨しています。
サービスを利用する前に、フィルタをオンにして、パーミッシブ・ライセンスではないオープンソース・コードからの提案をスクリーニングすることをお勧めします。GitHub Copilot で色々試す分にはフィルターが一時的に有効になっていなくても問題ないでしょう。しかし、製品コードを作成する場面においては、GitHub が利用規約で間接的に述べているように、すべてのフィルターが適用された状態での利用をお勧めします。誤解しないでください: 私たち Qt は、新しいプログラミング言語の採用がより簡単になり、スマートな提案によって生産性が向上することに関心を持っています。しかし、知的財産を犠牲にするようなことはしてほしくはありません。疑わしい場合は、生成 AIからの特定の提案を使用しないことを推奨します。
また、あなたが加えたコードの断片や、提案が GitHub Copilot の AI アルゴリズムの学習に使用されないように設定をしておくことをお勧めします。これは、ちょっとした修正を加えたあなたのコードが他の誰かに提案されるのを防ぐための、完璧ではありませんが最も強力な方法かもしれません。
Qt Creator 11 の正式リリースの前に、開発途中の Qt Creator で自己責任のもと、Qt Creator の最新機能を試したい場合は、最新の Qt Creator スナップショットをダウンロードして試すことができます。ここで紹介した機能を利用するには GitHub Copilot のサブスクリプションが必要です。いくつかのファイルをダウンロードし、README テキストに従って必要なフォルダに配置する必要があります。Qt Creator 全体で GitHub Copilot を有効化することも、プロジェクトごとに有効化することもできます。GitHub Copilot の設定ですべてのフィルターを有効にすることを忘れないでください。Qt Creator 11 のリリースは 7 月末を予定しています。
前述の通り、GitHub Copilot の統合はテクニカル・プレビューとして提供し、Qt Creator のユーザーからのフィードバックを集めていきます。今後 Qt にどのような生成 AI のユースケースを期待しますか? テクニカル・プレビューではなく、標準の機能として GitHub Copilot 統合をリリースしてほしいですか? Codeium を統合して、アルゴリズムを訓練するために許可されたコードのみを使用するようにしたいですか? それとも、Qt コミュニティが OpenAI で直接利用できる独自の言語学習モデル(LLM)を開発することを望んでいますか? 私たちに教えてください。例えば、以下のコメント欄にあなたの提案を書き込んでみてください。