見出し画像

Gitbub copilotやChatGPTがStack Overflowを滅ぼす?データ解析で可視化

Stack Overflowとは何か

Stack Overflowは日本のプログラマにも非常によく知られているサービスです。多くのプログラマがコーディングの問題解決や知識の共有のためにStack Overflowを利用しています。日本語の質問と回答も存在するため、英語が不得意な日本人プログラマにとってもアクセスしやすい情報源となっています。

2023年4月19日のブログですが、「Stack Overflow is ChatGPT Casualty: Traffic Down 14% in March(スタック オーバーフローは ChatGPT の被害: 3 月のトラフィックは 14% 減少)」と言うものがあり面白いので調べてみました。

ブログの内容は、Gitbub copilotのユーザー数が爆上げしている事がStack Overflowアクセス数減少の原因ではないかと解析していますが、実はGitbub copilotの中のAIはChatGPTとは違います。Gitbub copilotの中のAIはOpenAI製ではありますが、OpenAI Codexというものです。

データで見るStack Overflowの落ち込み

多くのデータサイエンティストや研究者が使用しているデータ可視化と探索のためのプラットフォームObservableにStack Overflowの数値の落ち込みを可視化したThe Fall of Stack Overflowがありましたので共有します。データは2023年の上半期までです。
データ可視化と探索のためのプラットフォームであり、多くのデータサイエンティストや研究者が使用しています。

Stack Overflowのトラフィック
Stack Overflowの質問数
Stack OverflowのVotes数(評価ボタンの数)

ChatGPTがStack Overflowに与える影響を検証した論文

この論文では、過去10年間でQ&Aプラットフォームがプログラマーにとってどれほど重要であったか、そしてChatGPTの出現がそのパターンにどのような影響を与えているかを探求しています。

サンプル数が12と至って少ないのですが、下記の論文ではStack Overflow (SO) からの 517 の質問に対する ChatGPT の回答の包括的な分析を実施し、ChatGPT の回答の 52% に不正確な部分があり、77% が冗長であることが判明しました。それにもかかわらず、ユーザーは、その包括性と明確な言語スタイルにより、依然として 39.34% の確率で ChatGPT の応答を好むと分析しています。

主な調査結果:

  1. 調査の対象と手法: ChatGPTのStack Overflow(SO)からの517の質問に対する回答を包括的に分析しました。

  2. 評価基準: 正確性(correctness)、一貫性(consistency)、包括性(comprehensiveness)、および簡潔性(conciseness)を評価。

  3. 言語的分析とユーザースタディ: 言語と人間の側面に洞察を得るために、広範な言語的分析とユーザースタディを実施。

詳細な結果:

  • ChatGPTの回答の52%が不正確である。

  • 77%が冗長である。

  • それでも、ユーザーはその包括性と流暢な言語スタイルのために、ChatGPTの回答を39.34%の時間で好む

ChatGPTとStack Overflowの言語的特性の違い

下記のような違いがあるため、返答が52%の割合で間違っていても、CHatGPTの返答を信用してしまうそうです。

言語スタイル

  • ChatGPTの回答は、言語スタイルがより抽象的、認知的、影響力がある。

  • SO(Stack Overflow)の回答は、より本物らしさがあり、自発性と規制が少ないことを示している。

感情の属性

  • ChatGPTの回答は、一般的にポジティブな感情に傾いていますが、統計的に有意ではありません。

  • SOの回答は、ChatGPTよりもはるかに強いネガティブな感情を含んでいます。

ドライブの属性

  • ChatGPTの回答は、ドライブ、所属、達成、パワーに関連する言葉がSOの回答よりもはるかに多い。

  • 「もちろん、お手伝いできます」や「これで確実に修正できます」などのフレーズが、ChatGPTの回答によく見られます。

  • 一方、SOの回答は、読者に対する解決策の影響についてより多く警告しています。

非公式な属性

  • ChatGPTの回答は公式で、不正確な言葉、ネット語、非流暢さ、またはフィラーを使用していません。

  • 一方、SOの回答はよりカジュアルで、「ところで」、「私は推測する」などの言葉がよく含まれています。

認知と知覚の属性

  • SOの回答は、問題に対するより深い洞察と理解を示すため、ChatGPTの回答よりも高い認知と知覚のキーワードを含んでいます。

ChatGPTやCoPilotがStack Overflowに置き換わっている原因の分析

Stack Overflowの使用方法

Stack Overflowは、開発者がプログラミングに関する質問を投稿し、他の開発者がその質問に答える形式のQ&Aサイトです。質問にはタグがつけられ、それによって特定の技術や言語に関する質問を簡単に検索できます。また、質問と答えにはアップボートとダウンボートがあり、質の高い内容が評価されます。

効率性と柔軟性の違い

  1. 即時性: ChatGPTやCoPilotは、質問に対して即座に答えを提供できます。一方で、Stack Overflowでは質問後に他のユーザーが答えを提供するまで待つ必要があります。

  2. 個別対応: ChatGPTやCoPilotは、ユーザーが具体的なニーズに合わせて質問できるため、より個別化された解決策が得られます。Stack Overflowでは、一般的な質問に対する答えが多く、個別のニーズに合わせて修正が必要な場合があります。

  3. コード生成: CoPilotはコード生成が可能であり、ChatGPTも簡単なコードスニペットを生成できます。これにより、開発者はコードの一部を自動生成して効率を上げることができます。

コミュニティの力とAIの進化

Stack Overflowの強みは、多くの開発者が参加する活発なコミュニティにあります。多角的な視点や議論が行われ、質の高い解決策が生まれます。しかし、ChatGPTやCoPilotのようなAI技術が進化することで、多くの基本的な質問に対してはAIが十分な解決策を提供できるようになっています。

CoPilotとGithub ChatGPTの精度の違い

  1. データの質: CoPilotが学習するGitHubのコードは、多くの場合、コミュニティによってレビューされ、テストされています。これにより、CoPilotが生成するコードの精度は一般的に高いとされています。

  2. フィードバックループ: GitHubでは、コードが公開された後も継続的に改善されます。これは、CoPilotがより正確なコードを生成する一因となっています。

  3. 専門性: CoPilotはプログラミングに特化しているため、その領域での精度は高いです。一方で、ChatGPTは多目的であり、プログラミングだけでなく多くのテーマに対応しているため、専門性に欠ける場合があります。

  4. コミュニティの力: GitHubのコミュニティは非常に活発で、多くの専門家が参加しています。これが、CoPilotが高い精度でコードを生成する背景にもなっています。

ChatGPTとGithub CoPilotの使い分けワークフロー

上記の特徴からどのフェーズごとにツールの使い分けをして効率よく間違いの少ないワークフローを実現させる事ができるか考えてみました。

ChatGPTはその思いやり深い対話と流暢な表現力で、アイデアのブレインストーミングや壁打ちに非常に有用です。しかし、プロジェクトが具体的な方向性を持ち、コーディングフェーズに突入すると、ここでGitHub Copilotが主役になります。

構想・ブレストフェーズ

  • ChatGPT(GPT-4): このフェーズでは、アイデアを練るために多角的な視点や提案が求められます。ChatGPTは多様な質問に対応できるため、構想を広げるのに役立ちます。

  • サンプルコード: 簡単なプロトタイピングやサンプルコードの生成にもChatGPTを使用することができます。

実装フェーズ

  • GitHub Copilot: プロジェクトが確定し、具体的なコードを書く段階になったら、Copilotが非常に有用です。VSCodeとの統合がスムーズで、リアルタイムでコードを生成・修正できます。

  • IDE & ターミナル: CopilotはVSCode内で動作するため、ターミナルやその他の開発ツールと並行して使用することが一般的です。

  • Jupyter Notebook: データ解析や機械学習のタスクでは、Jupyter Notebookがよく使用されます。Copilotは現状VSCodeに特化していますが、将来的には他のIDEやノートブック環境とも連携する可能性があります。

このように、プロジェクトの各フェーズで最適なツールが異なるため、その都度選択するのが良いでしょう。特に、実装フェーズではCopilotのような高度なコード生成ツールが非常に有用になってきます。

Stack Overflowで嫌がられない質問の仕方

下記は、4年前のNoteの記事ですが、Stack Overflowに限らずプログラマの質問サイトでは中々質問のハードルが高い。動かない原因がどこなのかある程度まで特定していなければ答えようがないし、あまりに訳のかからない素人臭い質問をしていると応えようとしていた人からのロジハラめいた書き込みが発動する事になります。ある程度質問しても答えてもらえるようになるくらいの知識は持っていないと質問が無意味になります。2ちゃん用語で言うと「半年ロムれ(半年スレッドをロムって知識をある程度身につけてから質問しよう)」と言うところです。

このような精神的負担が0、どんなバカな質問をしても優しくかまってくれるChatGPTの登場で、例え半分が間違った回答であろうとも、tack Overflowに質問する時のような精神的負担、また、ロジハラにあった時の精神的ダメージを考えたら、疑問の解消はChatGPTとGithub CoPilotで済まし、極力Stack Overflowに近づきたくないと言うのが心情でしょう。


この記事が気に入ったらサポートをしてみませんか?