社団法人 電子情報通信学会
THE INSTITUTE OF ELECTRONICS,
INFORMATION AND COMMUNICATION ENGINEERS

信学技報
TECHNICAL REPORT OF IEICE.

Stack Overﬂow と言語ドキュメントの紐づけ手法の検討
鬼塚

仙太郎†

神田

哲也†

眞鍋

雄貴††

肥後 芳樹†† 大阪大学大学院情報科学研究科 〒565–0871 大阪府吹田市山田丘 1–5†† 福知山公立大学情報学部情報学科 〒620–0886 京都府福知山市字堀 3370
E-mail: †{s-onizuk,t-kanda,higo}@ist.osaka-u.ac.jp, ††manabe-yuki@fukuchiyama.ac.jp
あらましプログラミング学習のリソースとして Stack Overﬂow があり，プログラミング学習中に直面した課題の解決において有益なリソースである．一方で，プログラミング学習者が投稿内容を十分に理解できない可能性がある．
特に，プログラミング言語の基本機能が投稿の理解を阻む場合は，プログラミング学習者がその事象が原因であると気づけない場合がある．そこで，このような事項の理解を助けるために，Stack Overﬂow の投稿とプログラミング言語のドキュメント（以降言語ドキュメント）を紐づけることを考える．Stack Overﬂow の投稿には質問のトピックを説明するタグが存在する．もしタグが本文に出現する要素を特徴づけたものになっていれば，タグを用いて言語ドキュメ
ントとの紐づけを行える可能性がある．本研究では，それを実現する手法の検討として，Stack Overﬂow におけるタグと記載内容間の関係について言語ドキュメントに登場する語を対象として調査した．その結果，本文を中心に解析して投稿に関連するプログラミング言語の基本機能を抽出することと，言語ドキュメントから紐づけに使用する単語を適切に選択することが課題となることがわかった．
キーワード Stack Overﬂow，プログラミング言語，言語ドキュメント，プログラミング学習

An exploratory study of linking between Stack Overﬂow and Language
Documentation
Sentaro ONIZUKA† , Tetsuya KANDA† , Yuki MANABE†† , and Yoshiki HIGO†† Graduate School of Information Science and Technology, Osaka University
1–5 Yamadaoka, Suita, Osaka, 565–0871 Japan†† Faculty of Informatics, The University of Fukuchiyama Hori, Fukuchiyama, Kyoto, 620–0886 Japan
E-mail: †{s-onizuk,t-kanda,higo}@ist.osaka-u.ac.jp, ††manabe-yuki@fukuchiyama.ac.jp
Abstract Stack Overﬂow(SO) is a programming learning resource that is useful in solving issues faced while learning programming. On the other hand, there is a possibility that programming learners may not fully understand the posts on SO.
In particular, if a basic feature of the programming language prevents the understanding of a post, the programming learner
may not be able to recognize the cause of the event. Therefore, we consider linking posts on SO to programming language
documentation (language documentation) to aid understanding of such matters. SO posts contain tags that describe the topic
of the question. If the tags are characterized by elements that appear in the body of the text, it may be possible to use the tags
to link them to the language documentation. In this study, we investigated the relationship between tags and content in SO,
focusing on words that appear in language documentation. As a result, it was found that the main issues are analyzing the text
and extracting the basic functions of the programming language related to the post, and appropriately selecting words from thelanguage documentation for linking.
Key words Stack Overﬂow, Programming language, Language documentation, Programming learning

1. ま え が きプログラミング学習者は多くのウェブリソースに触れており，その例として Stack Overﬂow [1] がある．Stack Overﬂow はプロ

グラミングに特化した Q&A サイトであり，そこにはプログラ
マからの質問に対して他のプログラマが投稿した解決策や例が回答として掲載されている．

Stack Overﬂow はプログラミング学習者にとって有益なリ—1—

ソースとなっており，課題に直面した際に Stack Overﬂow を利能に関する頻出単語がタグとして選ばれているのか，タグが本用してその課題に対処することも多い．過去に行われた調査で文に出現する要素を特徴づけたものになっているのかを明らか

も，学生が課題に役に立ちそうなリソースをウェブ上で探すにする．

際に Stack Overﬂow を利用する可能性が高いことがわかっている [2]〜[4]．

RQ1 と RQ2 の結果から，言語ドキュメントに登場する単語において，Stack Overﬂow と言語ドキュメントの紐づけ手法に

しかし，Stack Overﬂow に掲載されている投稿内容を，投稿適用できるほどタグと本文では用語が一致していないことがわに含まれる説明が不十分であるためにプログラミング学習者がかった．RQ1 ではタグが本文の頻出単語である割合は，タグ持っている知識では十分に理解できない可能性がある．そのと関連性の低い単語が頻出単語である割合と比較して高いことような問題を解決するために Stack Overﬂow を関連する外部リがわかったが，そもそも頻出単語でなかった投稿もタグによりソースと紐づける研究が存在する．具体的には，Stack Overﬂow

4–8 割程度存在した．RQ2 では，本文の頻出単語がタグとしての投稿から API ドキュメントへのリンクを作成する研究があ付与される割合は，本文の頻出単語と関連性の低い単語がタグる [5]．一方で，API 呼び出しそのものでなく，それに付随してとして付与される割合と比較して高いことがわかったが，その使用されている制御構造やプログラミング言語標準のデータ構割合は最大でも 10.32% であり低かった．

造などのプログラミング言語の基本機能が投稿を理解するために必要な知識であることも考えられる．
このような事項の理解を助けるために，Stack Overﬂow の投稿とプログラミング言語のドキュメント（以降言語ドキュメント）を紐づけることを考える．Stack Overﬂow の投稿にはコード片も含まれるが，質問に含まれるコード片は問題を抱えてい以降，2 章では研究背景や関連研究について述べる．3 章では本研究の調査方法について述べ，4 章では得られた結果，5 章
では考察を述べる．最後に 6 章では本研究のまとめと今後の課題を述べる．

2. 背景るものであったり，回答に含まれるコード片は修正内容のみをプログラミングに特化した Q&A サイトとして Stack Overﬂow

抽出した部分的なものであるなど，構文解析が容易ではない．

があり，プログラミング学習において課題に直面した際に Stack

また，Stack Overﬂow の投稿と言語ドキュメントを紐づけるとOverﬂow を利用する人は多い [2]〜[4]．ただし，プログラミン

いう観点から，大量の投稿を処理するためには構文解析の成否

グ学習者は Stack Overﬂow の投稿内容を十分に理解できない可に関係なく分析を行う仕組みを導入したい．そのため，Stack

能性があり，その場合は投稿内容に関連する別のリソースをさOverﬂow と言語ドキュメントに含まれる自然言語の文章を解析らに参照する必要がある．特に，プログラミング言語の基本機

して紐づけする手法を検討する．

能はプログラミング学習の初期段階で学ぶ事項であるため，そStack Overﬂow 側に含まれる自然言語で書かれた文章として
は，タイトル，質問，回答，質問のコメント，回答のコメントののような事項に関する記述が多い場合に，投稿を理解するための追加情報を自ら検索することも難しいと考えられる．

コードを除くテキスト（以上をまとめて本稿では「本文」とす

本章では，まず Stack Overﬂow について説明し，さらに Stackる）のほかに，質問のトピックを説明するタグが存在する．もOverﬂow 利用時における問題とそれに対処することを目的とししタグが本文に出現する要素を特徴づけたものになっていれば，た既存研究について紹介する．そして，それらをもとに本研究タグを用いて言語ドキュメントとの紐づけを行える可能性があで調査する Stack Overﬂow と言語ドキュメントの紐づけについる．そこで，本研究では Stack Overﬂow の投稿につけられていて既存研究とともに説明する．

るタグのうち，プログラミング言語の基本機能に関するタグは

2. 1 Stack Overﬂow

本文に出現する特徴的な要素であるか，およびプログラミング

Stack Overﬂow は 2008 年に設立されたプログラミングに関す言語の基本機能に関するタグが本文を特徴づけるものになってる質問とそれに対する回答を投稿・検索できる Q&A コミュニ

いるか，言語ドキュメントに登場する単語を対象として調査しティサイトである．Q&A コミュニティサイトとは，ある質問者

た．調査のために，以下の 2 つのリサーチクエスチョンを設定が行った質問に対して不特定多数の回答者が回答を行うサイト

した．

である．Stack Overﬂow における質問の例を図 1 に示す．Stack

RQ1：プログラミング言語の基本機能に関するタグは本文の頻Overﬂow における投稿は，タイトル，質問，複数個のタグ，そ出単語であるのか

して質問に対する複数の回答で構成される．また，各質問及びプログラミング言語の基本機能に関するタグが本文の頻出単回答にはコメントを付与することができる．質問及び回答で語である割合と，タグと関連性の低い単語が頻出単語である割は，自然言語による記述だけでなくコードを組み合わせた記述

合に関して調査する．これにより，タグは本文に出現する特徴が可能である．タグとは，質問のトピックを説明する単語また的な要素であるかを明らかにする．

はフレーズであり興味のある質問を特定するためにも使用されRQ2：本文のプログラミング言語の基本機能に関する頻出単語

る．タグとして “Python” 等の言語名や，“If-statement” のようなはタグとして付与されるのか

文法事項，“pandas” のようなライブラリ名などが登録されてい本文の頻出単語がタグとして付与される割合と，本文の頻出る．Stack Overﬂow は 2023 年 6 月現在，ユーザ数は約 2,100 万単語と関連性の低い単語がタグとして付与される割合に関して

人，投稿は質問と回答を合わせて約 5,900 万件，そして 1 日に調査する．これにより，本文中のプログラミング言語の基本機

約 590 万人が閲覧しており広く普及していることがわかる [6]．

—2—

処理するためには構文解析の成否に関係なく分析を行う仕組みを導入したい．そのため，Stack Overﬂow の投稿と言語ドキュ
メントの紐づけでは，それぞれに含まれる自然言語の文章を解析して紐づけする手法を検討する．

2. 3 プログラミング言語の基本機能に関する紐づけ
2. 2 節で説明したように，Stack Overﬂow 上の投稿と言語ド
キュメントを紐づけるには投稿に含まれる自然言語で書かれた文章を考慮する必要がある．

Stack Overﬂow 上の自然言語に基づいて関連するリソースとの紐づけを実現している研究として，タグとその説明文に基づいて Stack Overﬂow 上のタグを Wikipedia の記事にマッピングする手法を提案したものがある [8]．言語ドキュメントへの紐づけと Wikipedia の記事への紐づけは両者ともに外部リソースへの紐づけである点で似ているが，プログラミング言語の基本機能における紐づけは Wikipedia では不十分である．なぜなら，

Wikipedia ではプログラミング言語の基本機能の概要を知ることはできても，各プログラミング言語特有の情報を知ることはできない．例えば，基本機能の一つである “Stack” に該当する
図 1 Stack Overﬂow における質問の例（ID：419163）1

Stack Overﬂow はプログラミング学習にも多く利用されている．Stack Overﬂow Developer Survey 2022 [2] によると，コー
ディング方法を学ぶためのオンラインリソースとして Stack

Overﬂow を使用すると答えた人の割合は 86.14% であり，技術文書と並んで最も利用されているリソースの一つである．

Parnin ら [3] は，プログラミングに関するクエリにおいて，Stack
Overﬂow 上の投稿が Google の検索結果リストの上位に高い確率で表示されることを示している．Robinson [4] は，大学生がStack Overﬂow に投稿した質問の割合が授業期間に大幅に増加
し休暇期間に低下することを示している．

2. 2 Stack Overﬂow 利用時における問題点
Stack Overﬂow はプログラミング学習者にとって有益なリソー
スである一方で，投稿に含まれる説明が不十分であるためにプ
ログラミング学習者の知識ではその投稿内容を十分に理解できない可能性がある．そのため，Stack Overﬂow に加えて関連するリソースを活用する研究もいくつか行われている．例えば，Stack Overﬂow 上のコードスニペットから API 要素を特定し，Wikipedia の記事 2 には，プログラミング言語 LISP 及び Java のコードの例や PHP の Stack に該当するライブラリのリンクが含まれているが，Python の Stack に関する情報はない．また，

Python のチュートリアルには “range 関数” という項目が存在す
るが，Wikipedia にはその関数に対応する記事が存在しない．

Stack Overﬂow 上の本文と言語ドキュメントの内容に注目した研究として，Python における For 文と If 文を対象に Stack Over-ﬂow と言語ドキュメントそれぞれに登場する名詞集合間の類
似度を調査したものがある [9]．この研究では，Stack Overﬂow
上の “If-statement” 及び “Python” タグが付いた質問と Python
チュートリアルの “4.1. if Statements” 項目，Stack Overﬂow 上の “For-loop” 及び “Python” タグが付いた質問の本文と Python
チュートリアルの “4.2. for Statements” 項目を対象として，Stack

Overﬂow と言語ドキュメントそれぞれの類似したトピック間で同じ名詞が登場しているかを調査している．そして，For 文の場合はどちらにも対応しうる名詞が現れたものの，If 文の場合は現れなかった結果となっている．この調査結果から，Stack

Overﬂow と言語ドキュメントの紐づけにおいては単純なキー
ワードマッチングでは達成できない可能性が高いことが予想される．

API ドキュメントへのリンクを作成する研究がある [5]．また，
Stack Overﬂow 上のコードスニペットから，非推奨となっている API を検出するフレームワークが提案されている [7]．これらは API に関する手法であるため自然言語の解析をせずコード部分のみの解析で実現できている．

Stack Overﬂow の投稿にはコード片も含まれるが，質問に含まれるコード片は問題を抱えているものであったり，回答に含まれるコード片は修正内容のみを抽出した部分的なものであるなど，構文解析が容易ではない．また，Stack Overﬂow の投稿と言語ドキュメントを紐づけるという観点から，大量の投稿を

3. 調
3. 1 概査要

本研究では Stack Overﬂow と言語ドキュメントの紐づけ手法
について調査する．プログラミング言語 Python を対象とし，言語ドキュメントとして “The Python Tutorial” [10] を対象とする．
具体的には，紐づけ手法の検討として，Stack Overﬂow の投稿につけられているタグのうち，プログラミング言語の基本機能に関するタグは本文に出現する特徴的な要素であるか，および
プログラミング言語の基本機能に関するタグが本文を特徴づけ（注 1）：https://stackoverflow.com/questions/419163/what-does-if-name-main-do（注 2）：https://en.wikipedia.org/wiki/Stack_(abstract_data_type)—3—

表 1 調査対象の項目と単語

表 2 事前学習済みモデルの比較

Python チュートリアルの項目 調査対象の単語

モデル名“iteration” と “loop” の類似度

iteration

fasttext-wiki-news-subwords-300

0.54

5.4. Sets

set

word2vec-google-news-300

0.31

8.2. Exceptions

exception

word2vec-google-news-300

0.19

glove-twitter-200

0.15

conceptnet-numberbatch-17-06-300

×word2vec-ruscorpora-300

×4.2. for Statements

るものになっているか，言語ドキュメントに登場する単語を対象として調査した．調査では，関連性の高い単語間での調査だ
けでなく関連性の低い単語間でもタグと本文の関係を調査する
ことで，その関係が単語間の関連性によって異なる結果となるかを確かめる．本調査では以下の 2 つの RQ を設定した．

•

RQ1：プログラミング言語の基本機能に関するタグは本文の頻出単語であるのか
調査対象のタグが A であり，本文における調査対象の単語が Bであるとする．Stack Overﬂow 上の “Python” タグと A タグが付いた投稿を対象として，B（または B 及び B の類義語）が本文に頻繁に登場するかを調べる．

•

RQ2：本文のプログラミング言語の基本機能に関する頻出単語はタグとして付与されるのか
本文における調査対象の単語が A であり，調査対象のタグが Bであるとする．Stack Overﬂow 上の “Python” タグが付いた質問を対象として，A が本文中の頻出単語である質問に B（またはB 及び B の類義語）がタグとして付与されているかを調べる．
調査対象の言語ドキュメント中にある単語として，Python
チュートリアルにおける 3 つの項目からそれぞれ 1 つ単語を選択した．選択した項目と単語を表 1 に示す．Stack Overﬂow と言語ドキュメントそれぞれに登場する名詞集合間の類似度を調査した既存研究 [9] に従い，調査対象の Python チュートリアル
における項目として “4.2. for Statements” を選択した．そして，対象とする単語の種類を多様化するために，その他の項目としては別のカテゴリーに属しているものから 2 つ選択した．調査
対象の単語は，各項目で使用されていた名詞からその項目に関連していて，かつ Stack Overﬂow のタグとして存在する単語を選択した．
調査において，以下の手順により StackOverﬂow 上の質問を分析する．Stack Overﬂow のタグや本文などのデータへのアクセスには SOTorrent [11] を利用した．SOTorrent は，Stack Overﬂowの公式データダンプをもとに構築されたオープンデータセット
であり，変更履歴にテキストブロックやコードブロックの単位
でアクセスすることができる．また，単語の登場回数を調べるには自然言語処理のツールキットである Python ライブラリのNLTK [12] を用いた．RQ1 と RQ2 に対する調査における具体的な操作に関しては，各 RQ について細部が異なるため，それぞれ 3. 2 節，3. 3 節に示す．

•

STEP1：タグのついた投稿の抽出•

STEP2：各要素（質問，回答，質問のコメント，回答のコ

メント，タイトル）での調査対象の単語の登場回数をカウント•

STEP3：調査目的に該当する投稿を抽出

STEP2 において，語句の完全一致だけでなく，類義語を用いて回数をカウントすることも行う．類義語の判定には，大規模コーパスを用いた類似検索が可能な Python ライブラリである

Gensim [13] と，事前学習済みモデルである “fasttext-wiki-newssubwords-300” を用いた．本モデルの選択理由は，このモデル
がその他のモデルと比較して，プログラミングにおいて関連性の高い単語である “iteration” と “loop” の類似度が一番高かったためである．“iteration” と “loop” の類似度に関してその他のモデルと比較した表を表 2 に示す．本ライブラリとモデルによって算出された類似度が 0.5 以上の単語を類義語として選択する．
これは，“iteration” と “loop” の類似度が 0.54 だったためである．
また，類義語における登場回数は「類似度×出現回数」を加算
した結果を用いる．例えば，“iteration and loop are important forloop.” という文において，“iteration” の登場回数は 1 であるが，類義語を含めて登場回数を計算する場合，類似度が 0.5 を超える “loop” も出現回数に加算され「1.0 ＋ 0.54 × 2 = 2.08」と計算される．
本調査で選択した 3 つの単語から２つを選ぶ組み合わせ（タグとして１つと本文における調査対象の単語として１つ）は計

6 通りあり，類義語を含む場合と含まない場合でさらに 2 通り
ある．つまり，RQ1 に対応する調査と RQ2 に対応する調査ではそれぞれ計 12 通りの調査を行った．また，登場回数の閾値𝑛（𝑛 回以上登場していれば頻出単語であると判定する）は 1 から 30 まで変更した．ただし，登場回数の閾値の変更による調査結果の傾向は大きく変わらなかったため，4. 章の調査結果では 𝑛 = 2 の場合の結果のみを示す．

3. 2 RQ1 に対応する調査
調査対象のタグが A であり，本文における調査対象の単語がB である場合を例に各 STEP での操作について説明する．
STEP1：タグのついた投稿の抽出
SOTorrent から “Python” タグと A タグが付いた投稿のみを抽出する．

STEP2：各要素での調査対象の単語の登場回数をカウント
STEP1 で抽出された各投稿に対して，その各要素（質問，回答，質問のコメント，回答のコメント，タイトル）での B（または B 及び B の類義語）の登場回数をカウントする．

STEP3：調査目的に該当する投稿を抽出
STEP2 で得られた投稿ごとの各要素（質問，回答，質問のコメント，回答のコメント，タイトル）での調査対象の単語の登場回数のカウント結果から，登場回数が閾値 𝑛 以上の投稿数をカウントする．結果として，各閾値 𝑛 に対する，質問のみを対象とした場合の投稿数，回答のみを対象とした場合の投稿数，—4—

質問のコメントのみを対象とした場合の投稿数，回答のコメン
トのみを対象とした場合の投稿数，タイトルのみを対象とした

表 3 タグ A が付いた投稿で単語 B が本文の頻出単語である割合（%）（類義語含まない，𝑛 = 2）

場合の投稿数，すべての要素を対象とした場合の投稿数が得ら

本文
タグ

れる．

exception

16.35

set

本文における調査対象の単語が A であり，調査対象のタグがexception

B である場合を例に各 STEP での操作について説明する．
SOTorrent から “Python” タグが付いた投稿のみを抽出する．

set

iteration

3. 3 RQ2 に対応する調査

STEP1：タグのついた投稿の抽出

iteration

4.14

0.04

2.39 69.05

0.49

0.81

65.95

0.62

表 4 タグ A が付いた投稿で単語 B が本文の頻出単語である割合（%）（類義語含む，𝑛 = 2）

STEP2：各要素での調査対象の単語の登場回数をカウント

本文

STEP1 で抽出された各投稿に対して，その各要素（質問，回

タグ

答，質問のコメント，回答のコメント，タイトル）での A の登

iteration

場回数をカウントする．

STEP3：調査目的に該当する投稿を抽出

iteration

set

exception

79.76

83.5

82.89

set

53.59 87.67

82.72

exception

36.84 77.83

88.16

STEP2 で得られた投稿ごとの各要素（質問，回答，質問のコメント，回答のコメント，タイトル）での調査対象の単語の登場回数のカウント結果から，登場回数が閾値 𝑛 以上の投稿を抽

表 5 単語 A が本文の頻出単語である場合に単語 B がタグとして付与される割合（%）（類義語含まない，𝑛 = 2）
本文

出し，その投稿に付与されているタグに B（または B 及び B の類義語）が含まれるかを調べる．結果として，各閾値 𝑛 に対する，質問のみを対象とした場合の投稿数，回答のみを対象とした場合の投稿数，質問のコメントのみを対象とした場合の投稿数，回答のコメントのみを対象とした場合の投稿数，タイトルのみを対象とした場合の投稿数，すべての要素を対象とした場
合の投稿数が得られる．

set

exception

iteration

3.95 0.52

0.23

set

0.42 6.27

0.07

exception

0.13 0.06

10.32

タグ

iteration

表 6 単語 A が本文の頻出単語である場合に単語 B がタグとして付与される割合（%）（類義語含む，𝑛 = 2）
本文

4. 調 査 結 果

setexception

iteration

21.25 1.76

0.47

set

10.37 7.21

0.65

exception

05.58 0.75

14.09

タグ

4. 1 RQ1：プログラミング言語の基本機能に関するタグは本文の頻出単語であるのか

RQ1 に対応する調査について，類義語を含めず調査した結果

iteration

を表 3 に，類義語を含めて調査した結果を表 4 に示す．
類義語を含まない場合の結果を見ると，タグが本文の頻出単較してタグとして付与される割合が高いことがわかる．ただし，語である割合が高く，タグと関連性の低い単語が頻出単語で本文の頻出単語である単語がタグとして付与される割合は最大ある割合が低いことがわかる．ただし，“iteration” においてはで 10.32% である．類義語を含んだ場合の結果を見ると，本文

16.35% であり，“set” と “exception” と比較してその差は小さいの頻出単語である単語がタグとして付与される割合が高くなる

ことがわかる．類義語を含んだ場合の結果を見ると，タグが本

一方で，本文の頻出単語と関連性の低い単語がタグとして付与

文の頻出単語である割合が高くなる一方，タグと関連性の低い

される割合も高くなることがわかる．さらに，本文の頻出単語

単語が頻出単語である割合も同程度に高くなることがわかる．

と関連性の低い単語のほうが割合が高くなることもある．

場合によってはタグと関連性の低い単語のほうが割合が高いことがわかる．

つまり，本文の頻出単語がタグとして付与される割合は，本文の頻出単語と関連性の低い単語がタグとして付与される割合

つまり，タグが本文の頻出単語である割合は，タグと関連性と比較して高いが，その割合は最大で 10.32% である．類義語の低い単語が頻出単語である割合と比較して高いことがわかる．

も含めた場合には，本文の頻出単語である単語がタグとして付一方，類義語も含めた場合には，タグと関連性の低い単語が頻与される割合が高くなる一方で，本文の頻出単語と関連性の低出単語である割合が，タグが本文の頻出単語である割合と同程い単語のほうが割合が高くなることもある．

度であることがわかる．

4. 2 RQ2：本文のプログラミング言語の基本機能に関する頻出単語はタグとして付与されるのか

RQ2 に対応する調査について，類義語を含めず調査した結果を表 5 に，類義語を含めて調査した結果を表 6 に示す．
類義語を含まない場合の結果を見ると，本文の頻出単語であ

5. 考

察

RQ1 の結果から，タグが本文の頻出単語である割合は，タグと関連性の低い単語が頻出単語である割合と比較して高いことがわかった．しかし，その割合は最大でも 65.95% でありタグが本文の頻出単語である割合は高いとはいえない．また，る単語は，本文の頻出単語である単語と関連性の低い単語と比—5—

“iteration” に関しては 16.35% であり他の単語と比較して非常

10.32% であり低かった．このような結果から，言語ドキュメに小さい結果となっていることから，タグが本文の頻出単語でントに登場する単語において，Stack Overﬂow と言語ドキュメ

ある割合が非常に低くなるケースも珍しくないことが予想されントの紐づけ手法に適用できるほどタグと本文では用語が一致る．さらに，類義語を含めて調査したところ，調査対象の単語していないことがわかった．そのため，Stack Overﬂow 上のタの組み合わせによる結果の違いがみられなくなり，タグは本文

グや本文に登場する単語をそのまま用いて言語ドキュメントにに出現する特徴的な要素であるとはこの結果からは言えない．

紐づけるような単純な方法では実現することが難しいと考えら

RQ2 の結果から，本文の頻出単語がタグとして付与される割れ，工夫が必要であると考えられる．

合は，本文の頻出単語と関連性の低い単語がタグとして付与さ今後の課題としては，本文を中心に解析し，投稿に関連するれる割合と比較して高いことがわかった．しかし，その割合はプログラミング言語の基本機能を抽出することが挙げられる．

最大でも 10.32% であり本文の頻出単語がタグとして付与されまた，言語ドキュメントから紐づけに使用する単語を適切に選る割合は低い．類義語を含めて調査しても傾向は変わらなかっ択する手法も課題である．

たことから，本文に出現するプログラミング言語の基本機能に謝辞

本 研 究 は JSPS 科 研 費（JP19K20239, JP21K02862,

関する単語が，タグとして付与される可能性は低いと言える．

JP20H04166，JP21K18302，JP21K11829，JP21H04877，JP22H03567，

そこで，他にどのようなタグが多く付けられているかを調べた

JP22K11985, JP23H03375）の助成を得て行われた．

ところ，“pandas” や “numpy” といったライブラリに関するタグが上位を占めておりプログラミング言語の基本機能に関するタグが付けらることは少なかった．これが，ある質問がプログラ
ミング言語の基本機能にどれほど深く関係しているかをタグから判別することを難しくしている可能性がある．

RQ1 と RQ2 の結果から，タグは Stack Overﬂow の投稿と言語ドキュメントを結びつける要素としては適切でないと言える．
そのため，言語ドキュメントとの紐づけのためには，本文を中心に解析を行い，投稿に関連するプログラミング言語の基本機
能を抽出することが必要であると考えられる．
本調査では表 1 に示した言語ドキュメントの 3 つの項目から
調査対象の単語を各 1 個選択した．ただし，調査対象の単語の選択条件として，項目に関連していてかつ Stack Overﬂow のタグとして存在する必要がある．そのため，本調査で選択した項目のようにどの項目においても調査対象となる単語を抽出できるわけではない．本調査では “4.1. if Statements” や “4.5. passStatements” において調査対象となる単語を選択することができなかった．これは，言語ドキュメントの項目には Stack Overﬂowとの紐づけにおいて役に立つ単語が出現しない可能性があることを示唆しており，言語ドキュメントの解析には工夫が必要であることが予想される．ただし，本調査においては名詞のみを対象としたため他の品詞も考慮することで改善される可能性がある．

6. まとめと今後の課題
本稿では，Stack Overﬂow の投稿につけられているタグのうち，プログラミング言語の基本機能に関するタグは本文に出現する特徴的な要素であるか，およびプログラミング言語の基本

文

献[1] “Stack overﬂow,” https://stackoverflow.com/, Accessed:
2023-06-21.
[2] StackOverﬂow, “Stack overﬂow developer survey 2022,” https://survey.stackoverflow.co/2022, Accessed: 2023-06-15.
[3] C. Parnin and C. Treude, “Measuring api documentation on the web,”
Proceedings of the 2nd International Workshop on Web 2.0 for Software Engineering, pp.25–30, 2011.
[4] D. Robinson, “How do students use stack overﬂow? - stack overﬂow blog,” https://stackoverflow.blog/2017/02/15/howdo-students-usestack-overflow/, Accessed: 2023-06-08.
[5] S. Subramanian, L. Inozemtseva, and R. Holmes, “Live api documentation,” Proceedings of the 36th International Conference on Software
Engineering, pp.643–652, 2014.
[6] “All sites - stack exchange,” https://stackexchange.com/
sites?view=list#traffic, Accessed: 2023-06-15.
[7] J. Zhou and R.J. Walker, “Api deprecation: A retrospective analysis
and detection method for code examples on the web,” Proceedings ofthe 2016 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering, pp.266–277, 2016.
[8] A. Joorabchi, M. English, and A.E. Mahdi, “Automatic mapping ofuser tags to wikipedia concepts,” J. Inf. Sci., vol.41, no.5, pp.570–583,
oct 2015.
[9] 眞鍋雄貴，“プログラミング学習における状況に応じた学習要素の提示方法の検討,” 信学技報，第 122 巻，pp.43–48，jul 2022．
[10] “The python tutorial ― python 3.11.4 documentation,” https://docs.python.org/3/tutorial/，Accessed: 2023-06-08．
[11] S. Baltes, L. Dumani, C. Treude, and S. Diehl, “Sotorrent: Reconstructing and analyzing the evolution of stack overﬂow posts,” Proceedings of the 15th International Conference on Mining Software
Repositories, pp.319–330, 2018.
[12] S. Bird, E. Klein, and E. Loper, Natural language processing withPython: analyzing text with the natural language toolkit, O’Reilly
Media Inc, 2009.
[13] R. Řehůřek and P. Sojka, “Software Framework for Topic Modellingwith Large Corpora,” Proceedings of the LREC 2010 Workshop on
New Challenges for NLP Frameworks, pp.45–50, 2010.

機能に関するタグが本文を特徴づけるものになっているか，言語ドキュメントに登場する単語を対象として調査した．RQ1 ではタグが本文の頻出単語である割合は，タグと関連性の低い単語が頻出単語である割合と比較して高いことがわかったが，そもそも頻出単語でなかった投稿もタグにより 4–8 割程度存在し
た．RQ2 では，本文の頻出単語がタグとして付与される割合
は，本文の頻出単語と関連性の低い単語がタグとして付与される割合と比較して高いことがわかったが，その割合は最大でも—6—