2025-11-23T09:49:16.774551

Readability and Understandability of Snippets Recommended by General-purpose Web Search Engines: a Comparative Study

Dantas, Maia
Developers often search for reusable code snippets on general-purpose web search engines like Google, Yahoo! or Microsoft Bing. But some of these code snippets may have poor quality in terms of readability or understandability. In this paper, we propose an empirical analysis to analyze the readability and understandability score from snippets extracted from the web using three independent variables: ranking, general-purpose web search engine, and recommended site. We collected the top-5 recommended sites and their respective code snippet recommendations using Google, Yahoo!, and Bing for 9,480 queries, and evaluate their readability and understandability scores. We found that some recommended sites have significantly better readability and understandability scores than others. The better-ranked code snippet is not necessarily more readable or understandable than a lower-ranked code snippet for all general-purpose web search engines. Moreover, considering the readability score, Google has better-ranked code snippets compared to Yahoo! or Microsoft Bing
academic

一般的なWebサーチエンジンが推奨するスニペットの可読性と理解可能性:比較研究

基本情報

  • 論文ID: 2110.07087
  • タイトル: Readability and Understandability of Snippets Recommended by General-purpose Web Search Engines: a Comparative Study
  • 著者: Carlos Eduardo C. Dantas, Marcelo A. Maia
  • 分類: cs.SE(ソフトウェアエンジニアリング)
  • 発表時期/会議: AeSIR '21, 2021年11月15–11日
  • 論文リンク: https://arxiv.org/abs/2110.07087

要約

開発者はGoogle、Yahoo!、Microsoft Bingなどの一般的なサーチエンジンで再利用可能なコードスニペットを頻繁に検索しています。しかし、これらのコードスニペットは可読性または理解可能性の面で品質が低い可能性があります。本論文は、3つの独立変数(ランキング、一般的なサーチエンジン、推奨ウェブサイト)を使用して、ウェブから抽出されたコードスニペットの可読性と理解可能性スコアを分析する実証的分析を提案しています。研究では、Google、Yahoo!、Bingが9,480個のクエリに対して推奨した上位5つのウェブサイトとそれに対応するコードスニペット推奨を収集し、それらの可読性と理解可能性スコアを評価しました。研究の結果、特定の推奨ウェブサイトが可読性と理解可能性スコアの面で他のウェブサイトを大幅に上回ることが判明しました。ランキングが高いコードスニペットが、すべての一般的なサーチエンジンでランキングが低いコードスニペットよりも必ずしも可読性または理解可能性が高いわけではありません。さらに、可読性スコアの面では、GoogleはYahoo!またはMicrosoft Bingよりもコードスニペットのランキングが優れています。

研究背景と動機

問題定義

  1. 中核的な問題: 一般的なサーチエンジンが推奨するコードスニペットは可読性と理解可能性の面で品質にばらつきがあり、ランキングが高いコードスニペットが必ずしも品質が高いわけではない
  2. 実際のニーズ: 開発者は広くコード例を見つけるために一般的なサーチエンジンを使用していますが、これらのコードスニペットの品質の体系的な評価が不足している
  3. サーチエンジンの制限: Googleは200以上のランキング要因を持っていますが、ランキングが高いページには品質の低いコード例が含まれている可能性があります

研究の重要性

  • コードスニペットの再利用はプログラミングタスクの時間を短縮し、開発プロセスを加速できます
  • Googleはサーチエンジン市場シェアの90%以上を占めていますが、他のサーチエンジンのコード品質ランキング状況は不明です
  • 可読性と理解可能性の相互関係を理解する必要があります:可読性は構文理解に関連し、理解可能性はセマンティック側面に関連しています

動機の例

論文はHoraの研究事例を引用しています:Googleで「File.mkdirs examples」を検索する場合、Tutorialspointのコードスニペットは可読性と再利用性の指標が低いにもかかわらず、クエリと同様の自然言語説明を含むため、ランキングが高くなります。

中核的な貢献

  1. 初の体系的比較研究: Google、Yahoo!、Microsoft Bingの3つの主要なサーチエンジンが推奨するコードスニペットの可読性と理解可能性の大規模比較分析
  2. 大規模データセット構築: 9,480個のクエリの47,400個のウェブページリンクを収集し、5,355の異なるウェブサイトをカバー
  3. 多次元分析フレームワーク: ランキング、サーチエンジン、推奨ウェブサイトの3つの独立変数に基づく分析方法を提案
  4. 実証的発見: 2つの重要な仮説を確認:ランキングが高いコードスニペットが必ずしも高い可読性/理解可能性を持つわけではない;異なる推奨ウェブサイト間でコード品質に大きな差がある
  5. 理解可能性メトリクスの標準化: 認知複雑度を0,1区間に変換する標準化方法を提案

方法の詳細説明

タスク定義

入力: プログラミング関連のクエリステートメント 出力: コードスニペットの可読性と理解可能性スコア 制約: Javaプログラミング言語のコードスニペットのみを分析し、上位5つの検索結果を考慮

研究設計アーキテクチャ

研究は5段階の方法を採用しています:

  1. 入力クエリの選択: CROKAGEツールから10,000個のユーザークエリを収集
  2. 上位nウェブページの収集: Google、Yahoo!、Bingの上位5つの推奨ウェブページを取得
  3. コードスニペットの抽出: 選定されたウェブサイトからJavaコードスニペットを抽出
  4. 指標の計算: 可読性と理解可能性スコアを計算
  5. 分析方法: ANOVAとTukey検定を使用して統計分析を実施

主要な技術実装

データ収集戦略

コード抽出方法

  • StackOverflow: 受け入れられた回答からJavaコードスニペットを抽出
  • その他のウェブサイト: HTMLタグ内で「example」と「Java」を含むソースコードを検索するために正規表現を使用

評価指標

可読性メトリクス:

  • Scalabrino等が提案した予測モデルを使用
  • コメント、識別子の一貫性、テキストの一貫性、意味の数、概念などの指標を含む
  • 出力範囲:0,1、0は低可読性、1は高可読性を表す

理解可能性メトリクス:

  • Campbellが提案した認知複雑度に基づく
  • 標準化公式:
understandability(cs_i) = {
    1 - #cc/#mcc  if #cc < 15
    0.0           otherwise
}

ここで#ccは認知複雑度値、#mcc=15は推奨最大値

実験設定

データセットの詳細

  • クエリソース: 80以上の国からのユーザークエリ、CROKAGEツール由来
  • データ規模: 9,480個の有効なクエリ、47,400個のウェブページリンク
  • ウェブサイトカバレッジ: 5,355の異なるウェブサイト
  • 言語制限: Javaプログラミング言語のみ

評価方法

  • 統計分析: 分散分析(ANOVA)、信頼水準5%(p値<0.05)
  • 多重比較: Tukey検定を使用してグループ間の有意な差を特定
  • グループ設計:
    • サーチエンジン:3グループ(Google、Bing、Yahoo!)
    • ランキング:5グループ(top-1からtop-5)
    • ウェブサイト:5グループ(選定された5つのウェブサイト)

データ前処理

  • 重複クエリと手動でマークされた不適切なクエリを削除
  • 5未満のウェブページ推奨を持つクエリをフィルタリング
  • HTMLタグからリンクを抽出するために正規表現を使用

実験結果

主要な発見

RQ1: サーチエンジンランキングとコード品質の関係

  • ANOVA結果: 可読性p値=0.0034、理解可能性p値=0.0003
  • 主要な発見: Top-2コードスニペットは可読性と理解可能性の面でTop-1、Top-4、Top-5全体を上回る
  • 効果サイズ: 小さい(可読性-0.02~0.01、理解可能性-0.01~0.02)
  • 結論: 仮説H1を確認、ランキングが高いコードスニペットが必ずしも可読性または理解可能性が高いわけではない

RQ2: サーチエンジン間の比較

  • ANOVA結果: 可読性p値=1.207e-12、理解可能性p値=0.0364
  • 可読性ランキング: Google > Microsoft Bing > Yahoo!
  • 理解可能性: GoogleはMicrosoft Bingをわずかに上回る
  • 効果サイズ: 小さい効果(可読性-0.02~0.02、理解可能性-0.01~0.005)

RQ3: 推奨ウェブサイト間の比較

  • ANOVA結果: 可読性と理解可能性のp値は両方とも<2.2e-16
  • 可読性最高: geeksforgeeks
  • 理解可能性最高: tutorialspoint
  • 効果サイズ: 可読性中程度の効果(-0.15~0.10)、理解可能性小さい効果(-0.04~0.08)

詳細な分析結果

可読性分析

GeeksforGeeksが最高のパフォーマンスを示す理由:

  • 各行のコードに1つのコメントが付属
  • 高い凝集性、各概念が独立している
  • 例:「How to append to a string?」クエリ
    • GeeksforGeeks: 可読性スコア0.94
    • Tutorialspoint: 可読性スコア0.44

理解可能性分析の制限

  • 58.3%のコードスニペットが最大理解可能性スコアに達する
  • ほとんどのコードスニペットは単純なAPI呼び出しで、複雑な制御構造がない
  • このメトリクスはGitリポジトリのようなファイルに対してより適切であることを提案

関連研究

コード可読性研究

  • Hora(2021): Googleが可読性と再利用性の特性に基づいてコードスニペットをランキングする方法を研究
  • Scalabrino等: コード可読性予測モデルを提案
  • BuseとWeimer: コード可読性メトリクスの学習

コード検索と推奨

  • API Sonarツール: 可読性特性を使用してコードスニペットをランキング
  • Museメソッド: 可読性特性を使用してコード例をランキング
  • CROKAGE: StackOverflowからコードスニペットと説明を抽出するコード検索エンジン

コード品質評価

  • TreudeとRobillard: StackOverflowのコードスニペットの49%のみが完全に自己説明的であることを発見
  • 認知複雑度: Campbellが提案した理解可能性メトリクス方法

結論と議論

主要な結論

  1. ランキングのパラドックス: サーチエンジンランキングはコード品質と完全に相関しておらず、Top-2およびTop-3のコードスニペットの品質がより高い可能性があります
  2. サーチエンジンの差異: Googleは可読性の面で最高のパフォーマンスを示していますが、利点は限定的です
  3. ウェブサイト品質の分化: 推奨ウェブサイト間に大きな品質差があり、チュートリアルウェブサイト(GeeksforGeeks)の可読性がより優れています
  4. 理解可能性の制限: 現在の理解可能性メトリクスは単純なコードスニペットの区別度が限定的です

実践的意義

  • 開発者ガイダンス: GeeksforGeeksなどのチュートリアルウェブサイトのコードスニペットを優先的に検討することを推奨
  • 検索戦略: ランキングのみに基づいてコードスニペットを選択すべきではなく、品質メトリクスを総合的に考慮する必要があります
  • ツール改善: コード検索エンジンに品質評価の参考基準を提供

制限事項

  1. ウェブサイトカバレッジの限定: 5つのウェブサイトのみを分析し、推奨ウェブサイトの34~38.1%を占める
  2. 抽出戦略: 各ウェブページから最初のコードスニペットのみを抽出
  3. クエリ修正の影響: 「example in java」を追加することが検索結果に影響を与える可能性があります
  4. メトリクスの精度: 可読性と理解可能性ツールにエラーが存在する可能性があります

今後の方向性

  1. 定性的研究: 可読性と理解可能性スコアの差異の原因をより深く理解する
  2. 研究の拡張: より多くのウェブサイトを含めるか、汎用的なコード抽出方法を開発
  3. 多言語対応: 他のプログラミング言語に拡張
  4. 複数コードスニペット処理: 単一ページ内の複数コードスニペットを処理するヒューリスティック方法を開発

深層的評価

利点

  1. 研究の新規性: 主流のサーチエンジンのコードスニペット品質を初めて体系的に比較
  2. データ規模: 大規模な実証研究、データ量が十分で結論の信頼性が高い
  3. 方法の厳密性: 成熟した統計分析方法を使用し、結果は統計的に有意
  4. 実用的価値: 開発者がコードスニペットを選択する際に実証的なガイダンスを提供
  5. 再現性: 完全な再現パッケージと詳細な方法説明を提供

不足点

  1. メトリクスの制限: 理解可能性メトリクスは単純なコードスニペットの区別度が不足
  2. ウェブサイト選択バイアス: 5つの主流ウェブサイトのみを分析し、選択バイアスが存在する可能性
  3. 言語制限: Javaプログラミング言語のみを考慮し、汎化性が限定的
  4. 時間的有効性: 検索結果には時間的有効性があり、結論は時間とともに変わる可能性があります

影響力

  1. 学術的貢献: コード検索とソフトウェアエンジニアリング研究に新しい視点を提供
  2. 実践的ガイダンス: 開発者のコード検索行動に直接影響を与える
  3. ツール改善: サーチエンジンとコード推奨システムの最適化に根拠を提供
  4. 後続研究: 関連分野の研究の基礎を確立

適用シナリオ

  • ソフトウェア開発者がコード検索を行う際の品質評価
  • コード検索エンジンのランキングアルゴリズムの最適化
  • プログラミング教育におけるコード例の品質管理
  • ソフトウェアエンジニアリング研究におけるコード品質分析

参考文献

論文は23の関連文献を引用しており、主に以下を含みます:

  • コード可読性と理解可能性メトリクス方法
  • コード検索と推奨システム研究
  • StackOverflowコード品質分析
  • サーチエンジンランキングメカニズム研究

総合評価: これは高品質な実証的ソフトウェアエンジニアリング研究論文であり、コード検索品質評価研究の空白を埋め、重要な理論的価値と実践的意義を持っています。研究方法は科学的で厳密であり、データ規模は十分で、結論の信頼度は高く、開発者と研究者に価値のある洞察を提供しています。