🍄

生成AIとの付き合い方を考えてこの先生きのこる

に公開

前回がとてもよかったので今回もZenncafeに参加することにしたので、何かしら自分が生成AIについてどう思ってるかをまとめてから参加して、より有意義にしたいという話
Zenncafeでの主要な話題になっている、自分の現在の使い方、テックブログとの絡み、エンジニアがどう変わるかの三点でお送りします。

現在の自分流生成AIの活用方法

使っているツールは以下の通りです。

  • Cursor
  • Claude Desktop
  • Devin(会社のアカウント)

Cursorはコーディング及び、コードをコンテクストとして読み込ませた上で調査や実装の壁打ちをするのに使っています。普通です。
Claude DesktopはCursorのPremium Model節約のためにコーディング以外の調べものと、Devinに投げるプロンプトを生成させるのに使っています。
Devinは現在使ってみているのはVueのoptions->composition APIへの書き換えと、コードの調査とその結果を表など、他人が見ても分かりやすい形にして出力させる作業をやらせています。

出力方法を指定すると便利な資料がすぐ作れる

Claude3.7 sonnetが出てきた辺りからMarkdownで出力してくれるようになった上、表の書き方なんかはBacklogと互換性があってそのままコピペ出来るので、以下のような業務ですごい効果がありました。

  • 業務内容:Laravelアプリで、DBに追加実装したカラムでwhereを使うため、そのカラムを追加したテーブルがどこで呼び出されているかの調査
  • かかった時間:プロンプト出し含めて~10分
  • 費用:0.5ACU なんで 300円くらい?
  • 結果:該当する全てのEloquentモデルとSQL文を、Backlogにそのままコピペで崩れず表示できる表に列挙した上で、それぞれのパターンに対する修正案まで提案してくれた

他にもMermaidで図を出してくれるので、自分のイメージを素早く図式化して他人と共有できるのがとても良いです。

モダンなフロントエンドのコードは自分で何とかする必要がある

Vue.jsメインで開発しているのですが、Nuxt3の最近の更新分だったり先日のVue Fes Japan 2024で公開したNuxt Scriptsだったりvueuseのコンポーネント版のコードなんかは、追加で指示してもうまく生成させることが出来ませんでした。ネット上に情報が転がっておらず、リポジトリのコードを直接見て仕様を確認しなければならないくらいのモダンな技術については自分でコーディングする必要がありそうです。
生成AIは所詮膨大な過去のデータに基づいているだけで、あたかも新しいものを提案している、人間と同じように考えているように人間が感じるだけであることを痛感します。

生成AIとテックブログ

多分Zenncafeでも色々な論が出てきそうなセンシティブな部分ですが、これについては東北大学のChatGPT等の生成系AI利用に関する留意事項を全面的に支持しています。

AIの出力をレポート等の解答にそのまま利用することは自身の勉強にならない

これが全てといっていいくらい、生成AIがテックブログに与えている悪影響を説明していると思っています。私たちはなぜテックブログを書くのでしょうか。正確な情報だけが欲しいなら、基本的な部分は公式Docs、応用編はプロの出した本や教材を読めば済む話で、わざわざ僕のようなフツーの開発者が記事を書く必要もないし、フツーの開発者が書いた記事を読む道理もないわけです。
テックブログとして自分の考えや学んだことを世に出す理由は、他人と共有するだけでなく、その取り組みを通じて自分の脳内にあるイメージを具現化し、知っている概念が誤っていれば気づいて直し、知っているつもりだが知らなかった概念を発見し、最終的に他人に伝えられるレベルにまとめあげる活動をすることで、自分が経験したものから得られる経験値を増幅させるためです。サクサクチケット、アフィニティブースター。
テックブログを書くことで得られる経験値は、書かなかった時のそれを基礎値とすると、

  • 自分:基礎 * 増幅
  • 他人:基礎 * 見てくれた人数

これくらい自他共に有益な活動だと思っています。

ところが、生成AIにテックブログをまかせっきりにしてしまうと、他人にとっては品質はさておき助かる内容でも、自分には何の利益もありません。増幅しないからです。

自分にとって何の利益も生まない作業は継続性がありません。自らの手で執筆する活動をすることで、活動そのものが自分にとっての利益に、いいねがもらえなくてもバッジがもらえなくてもなります(もらえればなおうれしい)。このような執筆者自身の利益を考えることはZennの目的と一致していると言えます。

一方で、以下のような部分では生成AIを活用することで、テックブログの品質を高めたり、内容がより充実したり、更なる学習に繋がるのではないかと思います。その際も以下の点に気を付ける必要がありますが。

調べ学習等で使用する場合も、AIの出力には誤りが混ざっていることも少なくなく、AIの出力が正しい内容か、誤った内容なのか、自身でしっかり確認する必要がある

  • 誤字脱字チェック
  • サンプルコードの生成
  • 応用/実践的な趣旨の記事の場合に、「コンポーネント」「fetch」といった基礎的な部分、用語についての説明
  • 専門用語の調査

まとめ

テックブログは正しい情報を書くというより、個人が持っている情報をより正確なものにする研磨作業が行われ、結果として正しい記事が多く出てきているというもので、生成AIに頼り切りだと肝心の「研磨作業」をしなくなってしまうのでやめるべき。大学の生成AIに対するポリシーとほぼ同じ。

エンジニアがどう変わるか

結論から書くと、社会をモデル化し単純な構造に落とし込んで、設計することが出来る思考力と、全領域の知識を持っていたり、先端のモダンな技術について自走して学習できる学習力の重要度が高くなっていくのかなあと思っています。

複雑な社会をモデルに落としこむ思考力

経済経営学含む社会科学の研究の多くは、十人十色の人々の相互作用によって存在している社会を、モデルというツールを使うことで単純な形として捉えることができ、認識や意思決定を助けてくれるという形で実践的貢献をしています。専攻してた経営学の例だと破壊的イノベーションとか知識経営とかプロダクトポートフォリオマネジメント(PPM)とか。
私たち開発者が作っているサービスのほとんどは、toCでもtoBでも人に使われることで、価値が生まれるものだと思うので、当然より良いサービス、売れるサービスを作るために何かしらの人々の動きや困っていること、つまり社会を分析する必要があります。アナログな社会で使えるデジタルなサービスを開発するには、その分析を行い社会を単純なモデルに落としこむことが不可欠です(そうしないとDB設計とかできない)。
AIが実際の分析の計算、簡単な情報の収集、図式化する作業なんかを代わりにやってくれるので、開発者は何をどう分析するのかという、サービスを考える上での根幹となる部分の思考に時間をたくさん割けるようになります。そうすると必要なのは、抽象度の高い物事を扱うことが出来、具体的なプロダクトに落とし込めるくらい応用力のある理解ができる、高度な思考力になるかと思います。

深い知識、広い知識と学習する能力

生成AIに聞けば簡単な情報(IPアドレスって何ですか?)から基本的なコードくらいまではサッと出してくれるようになりました。一方で生成AIがそれ単体では解決できず、人間のヘルプがいるような時があります。

  • モダンな技術を使っている時
  • 事業領域特有のコンテクストを絡めて考える必要がある時
  • 自社コンポーネントを使っていて、それを使わせたいとき(MCPサーバーで解決できるようになってきた)
  • 生成されたコードの書き方が古い時、よくない時

このようなケースで人間が生成AIを助けるには、実はすごい知識と思考力が必要です。

  1. モダンな技術を使っている時

使っている技術、ライブラリなどについて、公式Docs、GithubのIssues、直接ソースコードを読んで仕様を理解出来る能力が必要:Docsの整備がまだだったり、QiitaやZennでの共有もこれから増えるというレベルなのでソースを読むことに結局なる

  1. 事業領域特有のコンテクストを絡めて考える必要がある時

事業領域の知識と、それを文字に書き起こして説明することが出来るくらいの理解力、語彙力、文章力、ソースコードとの接点を説明できる能力(プロンプト化はClaudeがやってくれる)
⚪︎⚪︎したい くらいじゃ分かってくれないのよ。

  1. 生成されたコードの書き方が古い時、よくない時

古い/新しい、よくない/良い コードをそれぞれ両方とも知っているレベルの理解力。

整理されていない、本来必要なものに対し過剰な量がある情報源を調査し、必要な情報を集める力と、技術/事業のコンテクストに対する深い理解が求められるようになると思います。もはややってることは社会科学の研究[1]ですね。

まとめると

面倒な部分はAIがやってくれ、頭を使って考える活動をたくさんすることが出来るので、深い知識、より専門的な技術、そもそもそれらをどうやって学習するのか?といった哲学を考えることで、より良い人材になっていきそうな気がする!
テックブログは自分のためになるから自分で書こう!人が書くことでAIには出来ないこんなユーモアあふれる記事が書けて、ためになるし面白い!

脚注
  1. 大量の論文を読んで概要みたいなところに流れをまとめて書く+研究対象のコンテクストを絡めた調査/分析 ↩︎

Discussion