日本ソフトウェア科学会第 37 回大会 (2020 年度) 講演論文集

プログラミング QA サイトにおける閲覧者の視点に着目した回答の予備調査
三野 晃季

福安 直樹

満田 成紀

鯵坂 恒夫

ソフトウェアの開発者同士が質問と回答を行い知識を共有するための QA サイトが広く利用されている．こうしたQA サイトでは，利用者の大半は質問や回答をしない閲覧者である．一方で，知識の共有は質問者と回答者のやり取りによって行われることから，そのやり取りは直接的には閲覧者に向けられておらず，また回答の閲覧者にとってのユーザビリティは質問者や回答者に比べてそれほど高くないという現状がある．そこで，質問者と閲覧者の双方にとって良い回答を明らかにすることを目的とし，本研究では，QA サイトの一つである Stack Overflow により提供されるデータダンプを用いて，予備調査を行った結果を報告する．

手段がある．こうした QA サイトは質問者が実際に1 はじめに直面した問題についての議論がなされるため，現実にプログラミング中の開発者が自身の持つ問題を解即した事例ベースの情報が得られやすい利点があり決するために情報を収集する手段は複数ある．公式

広く利用されている．また，QA サイトでは自ら質問に Web で公開されるドキュメントを参照することや，を投稿する他，既に過去に投稿された質問と回答を参書店で販売される書籍を参照するといった手段の他，照し自らの問題解決に利用するといった活用方法もあGoogle などの検索エンジンを用い，Web 上の公式のる．こちらも一般的に行われており，一例を挙げるとものでない資料を参照するといったことも近年では広

Stack Overflow ではサイトの訪問者の大部分がユーく行われている．

ザ登録を行っておらず [1]，サイトの訪問者の 90%以こうした Web を活用した情報収集には，ブログな上が検索エンジンを用いてアクセスしている [2]．

どのユーザが自由に記事を投稿可能な個人サイトの

しかしこうした QA サイトはその特性上，サイト参照や，Qiita などの投稿型コミュニティサイトの参のコンテンツはあくまで質問者と回答者のやり取り照など，ユーザが自らの知見を投稿し共有する投稿型に過ぎない．つまり，利用者の大半が質問や回答を行の Web ページの閲覧といった手段に加え，ユーザがわない閲覧者でありながら，サイトのコンテンツはそ自らの疑問や解決困難な事象についての質問を投稿の閲覧者に向けられたものではなく，閲覧者は自分自し，その問題の解決策や提案を持ったユーザが回答を身に向けられていない回答から自分にとって必要な回提示する，Yahoo!知恵袋や Stack Overflow，teratail

答を探す必要がある．多くの閲覧者が日々参照し情報などの QA サイトと呼ばれる Web ページを活用する源とする大規模な QA サイトではこの問題は決して小さなものではない．

a preliminary survey of programming QA site answers
focusing on perspectives of visitors
Koki Mino, 和歌山大学大学院システム工学研究科, Dept.
of Systems Eng., Wakayama University.
Naoki Fukuyasu, Naruki Mitsuda, Tsuneo Ajisaka, 和歌 山 大 学 シ ス テ ム 工 学 部, Fact. of Systems Eng.,
Wakayama University.

そこで本研究では情報技術，特にプログラミングに関する技術を中心とした開発者向けの QA サイトである Stack Overflow を対象に，最終的な目標を以下の二点に設定した．

1. 閲覧者の視点を考慮し，閲覧者にとっても良い2. 2. 1 質問の分類
Duijn らは，Stack Overflow の質問に含まれるコードの特徴から低品質な質問を識別することを試みた[5]．この研究において，質問は以下の 2 つの指標で分類されている．

• 未編集かつ Score が 0 未満である質問を低品質，未編集かつ Score が 0 以上である質問を高品質
図1

Stack Overflow における評価 [4]とみなす．

• 未編集であるものを低品質，編集済みであるもStack Overflow の回答の特徴を明らかにする
2. その結果に基づき回答のガイドラインを作成
する
本稿では，そのために行った予備調査の結果について報告する．のを高品質とみなす．

2. 2. 2 回答の分類
Nasehi らは，プログラミング学習を支援する効果的なコードサンプルの特徴を発見することを目的とし，Stack Overflow 上の評価の高い回答を分析しコードの特徴を明らかにすることを試みた [6]．この研究

2 Stack Overflow

において，良い回答を以下のいずれかに当てはまるも

2. 1 Stack Overflow についてのと定義している．

Stack Overflow は Stack Exchange, Inc. によって2008 年に開設された情報技術，特にプログラミングに関する技術を中心とした開発者に向けた QA サイ• Accepted Answer であるもの• Accepted Answer でないもののうち正規化された Score が 0.4 以上であるもの

トである．開設から今日に至るまでに 1900 万件以上

• Score が 10 以上であるものの質問が投稿され，月間訪問者数は 1 億 2000 万人

また Masson らは，Stack Overflow 上の多様な回答を超える極めて規模の大きなコミュニティである [3]．

をカテゴライズすることを目的とし，Stack Overflow

Stack Overflow 上では，ユーザによって質問は Score

上のデータからは観測しづらい閲覧者に目を向けた分を用いて，回答は Score と Accepted Answer の 2 つ析を行った [7]．この研究では，閲覧者が好む回答のを用いて評価される．図 1 は回答の一例である．質特徴を得るために調査対象とする回答を，Accepted

問と回答どちらにも存在する Score は閲覧者によるAnswer であるが Score が最も高い回答が他にある回評価であり，回答のみがもつ Accepted Answer は，答と Score が最も高いが Accepted Answer でないも質問者が最も良いと認めた 1 つの回答につけることの，つまり質問者と閲覧者による評価が一致しないもができるものである．また Web ページ上で表示されののみとした．

る質問と回答を含んだスレッドでは，質問に続いて2. 2. 3 関連研究の比較

Accepted Answer が表示され，その下にその他の回

2. 2. 1 節では質問を，2. 2. 2 節では回答を対象と答が Score 順に続くといった構造となっている．

した調査を行っているものを取り上げた．これらのStack Overflow を対象とした調査では，文献 [7] 以
2. 2 Stack Overflow を対象とした関連研究

外に，閲覧者の視点を考慮し Accepted Answer とここでは，Stack Overflow の質問や回答の品質とScore を得た回答を区別し分析した研究はなく，またその特徴を主題とした研究において，どのような基準

文献 [7] においても Accepted Answer であるが Scoreで質問や回答を分類したかについて述べる．

が最も高い回答が他にある回答と Score が最も高いが Accepted Answer でないものの比較という限定的なものにとどまっている．そこで本研究では閲覧者の視点を考慮しつつ，対象とする回答の範囲をより拡張した分析を行う．

3 閲覧者に着目した回答の調査
3. 1 調査対象
本研究は Stack Exchange, Inc. によって提供され

図2

文章とコードの区分 [8]る Stack Overflow のデータダンプ [9] を利用し分析を行った．2019 年に Stack Overflow に投稿された中の HH や hh なども同様のハイライトがあり，デー

1,421,073 件の質問と，それらに対する 2,051,044 件

タダンプ上では同様に<code>˜<\code>で括られおの回答を調査対象とした．また，前述の関連研究とのりコードであるとみなすこともできるが今回は対象比較から，調査対象とした回答を以下のように分類外とした．これらは，Stack Overflow のページ上のした．

回答入力欄では，前述の定義したコードとは入力方法• Accepted and Scored– Accepted Answer であり，Score が最も高が異なり，コードであると明示して入力するものもな
いからである．

い回答

このような条件で抽出した本文とコードから，全• Accepted体のうちのコードが占める割合を文字数で比較し求– Accepted Answer であるが，Score は最も高くない回答• Scored– Accepted Answer ではないが，Score が最も高い回答

Accepted Answer は質問者による評価であり Scoreめた．

3. 2. 2 質問と回答のコードの類似度
質問と回答のコードの類似度の調査では，文献 [7]に従い Jaccard 係数を用いて比較を行うこととした．

Jaccard 係数は比較するそれぞれの文章から重複を取り除いた語群を作成し，その積集合を和集合で除算すは閲覧者による評価であるため，それぞれ質問者と閲ることで求められる．つまり Jaccard 係数は純粋に覧者の両者に評価された回答，質問者にのみ評価さ単語群を比較するのみであるため，語順などの要素はれた回答，閲覧者にのみ評価された回答であると考無視されることとなる．またコードを単語に分割しえられる．また，これらとの比較の指標とするため，語群を作成するにあたり，多くのコードが共通して持

上記の 3 つ全ての分類と，分類に当てはまらないそち，それ単体では意味を成さない例が大半であると考の他のものも含めた回答を分析した ALL という区分えられる記号類を全て除去した．

も調査対象とした．

3. 3 調査結果
3. 2 調査方法

3. 3. 1 コードの含有率

今回この研究の予備調査として，文献 [6] 及び文献まずコードを含む割合を求める前に，コードを含[7] において取り上げられているコードの含有率と，文む回答の割合について調査した．その結果が図 3 で献 [7] において取り上げられている質問と回答のコーある．全体 (ALL) ではコードを含む割合は 71.3%でドの類似度について調査を行った．

あったのに対して，Accepted and Scored では 83.0%

3. 2. 1 コードの含有率と，10 ポイント以上の差があるという結果を得た．

コードの含有率を調査するにあたって，コードの定

また Accepted と Scored に関しては，やや Accepted

義を図 2 のような，Stack Overflow のデータダンプがコードを含むものが多いものの，それぞれ約 80.5%

上では<code>˜<\code>で括られ表示の上では灰色と 79.0 ％と約 1.5 ポイント程度の小さい差となった．のハイライトが挿入されているものとした． また図

次に，実際にコードが占める割合について調査し

図3

図5

コードを含む回答の割合

回答のコードの割合

out Code は質問と回答いずれかにコードが含まれておらず，Jaccard 係数では比較不可能なものである．

Accepted と Scored の関係に注目すると，コードの割合と同様にグラフの形状は類似しているものの，コードの類似度が低いものは Scored，つまり閲覧者によって評価される傾向があり，類似度が高いものはAccepted，つまり質問者によって評価される傾向があることがわかる．

4 考察
今 回 得 ら れ た 結 果 の 中 で も ，特 に Accepted とScored，つまり質問者もしくは閲覧者のどちらかのみが評価した回答の結果に注目しそれぞれを比較
図4

回答のコードの割合

すると，• 質問者が評価する傾向にあるもの (Accepted)
た．その結果が図 4 である．Accepted and Scored，– コードを多く含む

つまり質問者と閲覧者の両方に評価される回答は，– 質問と回答のコードが類似している

コードが極端に多いものも好まれないことが伺える．

• 閲覧者が評価する傾向にあるもの (Scored)

また，Accepted と Scored を比較すると，グラフの– コードが比較的少ない

形状は類似しているものの Scored はコードが少ない– 質問と回答のコードが類似していないものが，Accepted はコードが多いものが多い傾向にといった傾向があることがわかる．コードの含有率にあることがわかる．

ついて着目すると，コードとそれ以外の本文は多く

3. 3. 2 質問と回答のコードの類似度の場合回答と解説・補足のような関係にあり，質問者それぞれの分類において Jaccard 係数による分析

は単に自分の提示した質問に対する答えや提示したを行い図 5 のような結果を得た．図における With-コードの修正案のみを必要としており，一方，質問者とは異なる環境での疑問の解決策を求める閲覧者は現象そのものやその解決策に関する解説などより具体的で説明的な内容の回答を求めているのではないかと推測することができる．また，同様に質問と回答に含まれるコードの類似度について着目した場合も，質問者は質問者自身が提示したコードが持つ問題が解決できればそれでよく，一方の閲覧者はより一般化された問題に対する解説を求めているのではないかと推測することができる．これらの結果から，現時点で得られたデータからは質問者は答えを求め，閲覧者は知識を求めているのではないかと考えられる．

5 おわりに本稿は最終的な目標を達するための予備調査という位置づけにある．現時点の調査によって判明した結果は，目標を達するために十分なものであるとは言えずより調査が必要である．また関連研究での分析
では，コードの分割数や太字などの装飾のフォーマットの利用の程度など今回調査ができていない観点での調査も多く残されているため，まずはその調査を行うことを当面の目標としたい．

参 考 文 献[1] Mamykina, L., Manoim, B., Mittal, M., Hripcsak, G., Hartmann, B.: Design lessons from thefastest q&a site in the westProc. CHI ’11: Proceedings of the SIGCHI Conference on Human Factors
in Computing Systems, 2011, pp. 2857–2866.
[2] Jeﬀ Atwood, Stack Overflow 2010 Analytics Stack Overflow Blog, https://stackoverflow.blog/
2010/12/15/stack-overflow-2010-analytics[3] About - Stack Overflow, https://stackoverflow.com/company[4] user2357112 supports Monica, linear programming - How to simplify repetitive Python PuLP syntax? - Stack Overflow, https://stackoverflow.com/questions/17754363[5] Duijn, M., Kucera, A., Bacchelli, A. :Quality Questions Need Quality Code: Classifying
Code Fragments on Stack Overflow, Proc. 2015
IEEE/ACM 12th Working Conference on Mining
Software Repositories, IEEE, 2015, pp. 410–413.
[6] Nasehi, S., Sillito, J., Maurer, F., Burns, C.:
What Makes a Good Code Example? A Study ofProgramming Q&A in StackOverflow, Proc. CS846
Final Project, Fall 2019, Waterloo, ON, Canada,2019.
[7] Masson, D., Melo, G.: What Answer for WhichAudience?
Identifying Categories of Answers
on Stack Overflow, Proc. 2012 28th IEEE International Conference on Software Maintenance(ICSM), IEEE, 2012, pp. 25–34.
[8] Jonathon Chase, c# - string not recognized asvalid datetime with same format - Stack Overflow,
https://stackoverflow.com/questions/54012706[9] Stack Exchange Data Dump : Stack Exchange,
Inc. : Free Download, Borrow, and Streaming: Internet Archive, https://archive.org/details/slashstackexchange