フラミナル

考え方や調べたことを書き殴ります。IT技術系記事多め

ソフトウェアエンジニアとしてのAIツールとの付き合い方を藤井聡太さんから勝手に学ぶ

このツイートを見て「ハッ」としたので、自分なりの ChatGPT との付き合い方を書いておく。

Copilot しかり ChatGPT しかり AI によるプログラミングの波が来ていて、自分はその恩恵に既に預かっている。同じように多くの人(現役のエンジニア、未来のエンジニア)も使っているだろう。

将棋界隈ではAIの導入がITより早く進んでおり、今話題の藤井聡太5冠や、当時竜王・名人を持っていた豊島九段もAIを取り入れて学習していた。

将棋とITのAIの出すアウトプットの違い

将棋の場合は最終的に勝ちに帰結するので評価値という形で手を評価できるので、特定の処理におけるコードを出してくれるAIとイコールではない点は注意。

GitHub Copilot では、public コードを読み取って 可能な限り最適なコードを生成する と書かれているが、あらゆるシチュエーションにおいて共通のゴールがあるわけではないので 出てきたコードが正解かはわからない。

しかし、GitHub Copilotは完璧なコードを書くわけではありません。GitHub Copilot は、アクセスできるコンテキストから可能な限り最適なコードを生成するように設計されていますが、提案するコードをテストするわけではないので、コードが常に動作するとは限りませんし、意味をなすとも限りません。

GitHub Copilot · Your AI pair programmer

コードはAIによって生成されるとのことだが、どのようなコンテキストで何を目的に、どの程度の品質なのか?はマチマチなので必ずしも正しくない可能性も高い。

GitHub Copilotの提案は、すべてAIによって生成されています。GitHub Copilotは確率的に新しいコードを生成しており、トレーニングで発生したスニペットと同じコードを生成する確率は低い。モデルにはコードのデータベースはなく、スニペットを「探す」こともない。最新の社内研究によると、約1%の確率で、提案に学習セットと一致する〜150文字より長いコードスニペットが含まれる可能性があることがわかりました。以前の調査では、このようなケースの多くは、GitHub Copilot があなたが書いているコードから十分な文脈を読み取ることができない場合、または問題に対する一般的な、おそらく普遍的な解決策がある場合に起こることが分かっています。

藤井聡太5冠とAIの付き合い方

分野は違うが、AIが出す回答を使って成長をしてきた藤井聡太さんの学習方法は 「ITにおいても使えるのではないか?」 という仮説のもと考えてみる。

この記事の内容を引用する

「自分のイメージでは、研究者7、勝負師2、芸術家1ぐらいかな」藤井聡太三冠が語った自身の“棋士像”…その真意は? | 文春オンライン

振り返りをAIに付き合ってもらう

丹羽 それは対局して帰ってきて、自分のその日の将棋を全部入れてみて、その時々の評価値を、「この局面は自分が思っていたより厳しかったんだな」などと知るという、そういう使い方ですか?

藤井 そうですね。対局中の自分の形勢判断と照らし合わせてどうだったかとか。あるいは自分の気付いてない筋があったかとか、そんな感じです。基本的にはそれを毎局やっています。

この話は、「自分が書いたコードを一部切り出してレビューしてもらう」 or 「要件や機能の説明を書いてコードを生成してもらう」 などのやり方で実現できる。

AI の信用度を確かめる

藤井 「問い」といえるかはわかりませんが……、AIの評価値を見るうえでまず気を付けることは、それがどういうAIを使って、どれぐらい読んでいるのかというところです。いくら評価値がこうだといっても、そういう基本情報がないと、本当にそれを信じていいのかは、全然わからないものなので、まずはそこを見るようにしています。そのうえで、強いAIを使って、例えば十億手読んでいるものであれば、当然それなりにかなり信頼できるなどと考えます。複数のAIを使って、セカンドオピニオンのような形で見る場合もあります。

ChatGPT や Copilot がどのような学習結果を使い、どれぐらい信用できるのか?を確かめる必要がある。ただ、将棋と違いプログラムの場合は(慣れている人であれば)コードを読めば意図がわかるし、動きもわかるので AI の信用度を確かめるのは実際のコードで十分な感じがする。

※新しく学ぶやつについては適用できないが

AI の活用方法を考える

藤井 将棋界においては、AIが誰でもオープンに使えるようになっているので、以前よりも情報格差がどんどんなくなってきています。やはりAIのような新しいツールをどう活用していくか、そういうところが問われるようになるんじゃないかなとは思っています

藤井 今はAIがすごく強くなったことで、より多くの人にとって効果のある上達法が、これからもしかしたら確立されてくるかもしれないとは思います。

ただそれで皆が同じように強くなれるかというと、やはりそういうわけではなく、最終的には個人の、ちょっとした工夫であったり、自分なりの考えだったり、そういうところが最終的には問われる部分なのかなと思います。

AI 使えばみんなが強くなれるわけではなく、いい付き合い方、勝ちに近づく方法を自分なりに考えてそれに近づくためにAIを使う感じじゃないとダメよねと。

ITの場合、個々人でやりたいこと・目指すところが違うので目的に合った能力を身につけるべくうまくAIを活用することが求められる。

  • 早く動かしたい
  • 堅牢に作りたい
  • xx に詳しくなりたい
  • 可能な限り手を動かさない など

まとめ

  • AI ツールを積極的に使っていく
  • 利活用方法は使いながら探っていく
  • 日々のタスクの振り返り時間をきちんと設けて、AIと振り返る
  • 自分のPR だけでなく、自分がレビューした他の人のコードを問題の無い範囲でAIに渡してみる
  • Twitter で見かけたいい質問の仕方でもメモっておくか

↑このコードはダメだけど、観点だしはありがたい。