遅ればせながら、Copilotを使い始めました…

Generative AIの話題が、毎日のようにニュースで流れてきます。
ChatGPTのベースとなったGPTを使ったシステムの一つに、Git-HUB Copilotがあります。
みなさんは、既に使っていますか?

GitーHUB Copilotとは…

Git-HUBの有償サービスの一つで、AIコーディングアシスタントです。
1年契約なら、$100.00(\13,500.-/年くらい)で利用できます。
AIコーディングアシスタントとは、プログラミングのコードを、自動で生成したり、足りないところを補完してくれる便利な機能です。
もちろん自動生成するためには、適切はコメントを必要としますが、より具体的な情報を与えると、その情報を使い実際に動くコードを生成してくれます。

Copilot契約のきっかけ

TanaKafeWorksを開業し、プログラムの開発を一人で行う場合に、効率は重要な課題でした。
開発を外注化するにしても、コストとリスクを抱える事になります。個人事業では、リスクが大きくなります。
以前、Git-HUB Copilotのデモは見たことがあり、一度、使ってみたいと思っていましたが、具体的に作りたいことを明確に持つことと、Colipotのコスト負担の課題をクリアすることも重要なポイントでした。
そのようなときに、幸運にも開発案件の話があり、コストとプログラムターゲットの2つの課題をクリアできる見込みとなりました。
「AIを利用した開発スタイルへ踏み出すべき時が、今、訪れた!」と実感し、Git-HUB Copilotの契約を行いました。

Copilotを使ってみて

Copilotをつかいはじめました。
ターゲットは、Raspberry PiのUbuntu上で稼働するC言語で開発するアプリケーションの機能追加としました。
このプログラムは、GStreamerを使った映像Mediaを使ったアプリケーションです。
Copilotでよく見かける使い方としては、Pythonとか、JavaScript/TypeScriptなどの今時のアプリケーションって感じが多かったので、C言語ってどうなのよ?と思っていました。
しかし、実際には、C言語でも全然大丈夫でした。

既にあるプログラムに、ログローテーション機能を追加するという簡単な機能実装として、Copilotを使ってみました。
ログの設定ファイルを読み込んで、その設定に従い、ログローテーション機能のための処理を実装するというものです。

  • Step1:設定ファイルの設定項目の変数を定義
  • Step2:処理に先立ち、コメントとして、動作を明記
  • Step3:Copilotからの候補提示をAcceptしていく

基本はこんな感じで、「Step3:Copilotからの候補提示をAcceptしていく」で、どういう流れでプログラム全体の流れを作るのかも、最初にコメントとして記載に従い、それなりの候補のコードが提示されるには驚きました!
実際にできたコードをコンパイルし、動かしてみましたが、多少修正は必要でしたが、概ね動きました。

こんなに簡単に、動作するコードが作られると、とても効率的で個人事業には力強い相棒として使えそうな予感がします。
ただ、期待通りのコードを提示してもらうには、データの条件についての説明なども具体的に示し、処理の流れを細かく説明することが重要です。
当たり前といえばそれまでですが、これからのプログラミングは、設計力とプログラムの説明能力が重要になってくるということなのでしょう?
コーディング能力は重要ではなくなり、Copilotが出力したコードを理解する能力が重要ということです。

これからのソフトウェア技術者には必須ですね(個人的意見ですが)

いままでは、人が設計し、人がプログラムを考え、人がコーディングするということが、人が設計とプログラムの流れを考え、AIがコーディングするという、分業でソフトウェアを開発しないと、品質の安定と効率が保てなくなる、そんな予感がします。
そのうち、設計だけが人の仕事になり、最終は要件を示すことだけが人の仕事になるときが来るように思います。
そうなると、ソフトウェア開発をなりわいとする事業が成立しなくなるのではないかとも思います。
現在は、お客様が求める要件をヒアリングし、ソフトウェアを開発する部分を請負っていると考えると、お客様自身が、AIでプログラムを生成してしまうと、ソフトウェア開発会社は、成り立たなくなるのではと思います。
ソフトウェア開発自体がなくなるのではなく、ソフトウェア開発会社がなくなり、製品やサービスを提供する会社自体でソフトウェアを内製する時代がおとずれるように思います。

さて、ソフトウェア開発は、Generative AIでどのように変わっていくのか、見とどけたいです。