見出し画像

プログラミング時のこんな実装どうすればいい?そうだ!AI先生に聞いてみよう!生成AI「Copilot」に聞いてみた

皆さん、こんにちは。JBCC SI事業部 超高速開発センターでローコード開発ツール「GeneXus」でお客様のWebシステム開発を担当しつつ、AIエンジニアを目指してイノベースで修行中の蔡(サイ)と申します。私は、八重洲オフィスに所属していますが、東日本を中心に全国のお客様を担当しており、お客様ビジネスの価値創造に資するシステム実現に向けて、プログラム実装の試行錯誤を日々重ねています。

「イノベース」についてはこちらの記事をご覧ください。


開発中の設計者と実装者の会話より

システム開発中は、毎日以下のような会話が設計者と実装者の間から聞こえてきます。

設計者「ボタンを押したら、こうやって画面を動かしたい。」
設計者「キーボードのこのボタンを押したら、こんな風に画面を反応させたい。」
設計者「こことここの行を縮めさせて、ここは改行せずに全表示したい、とお客様からの要望です。」
実装者「(・・・やり方わからん。これ、標準機能では実装できないのでは?)承知いたしました。取り急ぎ実装の可能性を検証します。」

開発の局面を深く進めると、実装が複雑だったり、ローコード開発ツール「 GeneXus 」単体では対応できない依頼が来ることもあります。JavaScriptで対応すればサクッと解決するケースもありますが、その後のメンテナンスに響いてくる部分なので、重要な箇所であれば対応することもあります。

生成AI「Copilot」に聞いてみた

さて、わからないので誰に相談しましょうか・・・生成AI「Copilot」に聞いてみることにしました。

「Copilot」はプログラミングできますか?

生成AI「Copilot」の回答

できるそうです!
そして特に世の中に広く使われている主要なプログラミング言語、Python、JavaScript、JavamC#、Go、Ruby、PHP、Rust には詳しいそうです。

「GeneXus」のコードは生成できますか?

生成AI「Copilot」の回答

それっぽいコードが生成されていますが、よく検証すると肝心な「背景色を設定」の部分は GeneXus 以外の文法が入っており、このままでは利用できません。しかし、よくできているところとして、コードを組むためのロジックは成立しています。現時点でコードを生成させる場合、コードのコピーではなく、ロジックの模倣で思考の手順を減らし、コードの部分を手作りのままにするほうがよさそうです。

「Copilot」はどのようなコードなら綺麗に作成できる?

「Copilot」によると、以下の特徴を持つコードとなります。

  • パターンの抽出可能性あり

  • 高度な抽象化とモジュール化

  • 標準ライブラリやフレームワークの利用

  • 簡潔な構文と命令

  • コミュニティやドキュメントの充実

ずばり言うと、ルールが明確で標準化され、かつネット上のソースが多いプログラミングコードです。生成AIも決まっている言語の文法に従ってコード作成を行っているのではなく、自動的にネットや自分の学習情報から統計的な手法で正しそうな答えを作成するソフトウェアです。その特徴に従って、ソースが豊富なプログラミング言語なら高い確率で正解をヒットしてくれそうです。

生成AI「Copilot」が得意そうな分野で、お手並み拝見

では、「Copilot」が得意そうな分野で、お手並み拝見してみます。
今回のミッションは、長い画面(スマホにスクロールなどで移動するような画面)に対し、ボタン押下後にエラー時に画面の一番上のエラーメッセージ欄にゆっくりスクロールアップする仕様を実装することです。

GeneXus には SetFocus という一瞬に画面を動かせる機能が存在しますが、すべての画面を適用させると作業量が多く、画面上部に入力個所がないと実行されない、かつ「ゆっくり」という要件を満たせないため、今回はGeneXus 内部での実装を断念し、JavaScript の実装を試みます。

生成AI「Copilot」の回答

生成AI「Copilot」の回答で、実装内容のベースとフレームワークができました。

実装内容のベースとフレームワークができました

このコードをGeneXusのエディターにコピーし、必要な変数名や条件を変更したら、すぐにテスト可能な状態になりました。

完成したサンプルイメージ

まとめ

今回は、生成AI「Copilot」を用いたプログラミングをして、実装に利用できるコードの生成を試しました。現状ではAIですべてのプログラミング作業を置き換えることは到底できませんが、実装者へのロジックの導きや、フレームワークかテンプレート用のコード作成などの面には有効と思われます。
参考資料からの数字として、GitHubとマサチューセッツ工科大学(MIT)の共同研究では、Copilotの使用を許可された開発者は、そうでない開発者に比べて、比較的単純なタスクでは平均して55%速く作業を完了できたことを示しています。

効率的な開発を行うため、また、新しい技術の中に自分のスキルを磨くためにも、皆さんも是非AI先生の教えを参考にしてみてください。

[ 参考 ]
生成AIの導入で変わるプログラミング、その実力と“副作用”とは

最後までお読みいただきありがとうございました。

JBCC 蔡 万騰(さい ばんとう)
SI事業部 超高速開発第一開発本部 兼 イノベース
全国のお客様に向けて、GeneXusベースの超高速開発の実装を担当。
イノベースに参画し、AI開発スキル向上に注力。