$30 off During Our Annual Pro Sale. View Details »

プログラミング活動の中の情報源としてのStack Overflow

Tajima Itsuro
November 07, 2020

プログラミング活動の中の情報源としてのStack Overflow

2020年度三田図書館・情報学会研究大会

Tajima Itsuro

November 07, 2020
Tweet

More Decks by Tajima Itsuro

Other Decks in Research

Transcript

  1. プログラミング活動の中の
    情報源としての
    Stack Overflow
    田島 逸郎(慶應義塾大学大学院)

    View Slide

  2. 背景:プログラミングにおける知識
    • コンピュータ・ソフトウェアのプログラミングは知識集約
    的で,単にコードを書く以上の作業である
    • Naur, Peter. Programming as theory building, Microprocess and
    Microprogrmming. 1985, vol.15, no.5, p.253-261.
    • 「ソーシャルプログラマー」の興隆:様々なコミュニケー
    ションチャネルを利用しながら情報を共有
    • Storey, Margaret-Anne; Zagalsky, Alexey; Filho, Fermando Figueira; Singer, Leif;
    German, Daniel M.. How Social and Communication Channels Shape and
    Challenge a Participatory Culture in Software Development. IEEE TRANSAC-
    TIONS ON SOFTWARE ENGINEERING. 2017, vol.43, no.2, p.185-204.
    • その1つとして,2008年にStack Overflow(SO)が登場
    • プログラマー同士の質問回答の形で公開されたアクセス可
    能な知識を増やすことを目指しているサイト

    View Slide

  3. Stack Overflow(SO)
    • プログラマー同士の質問回答の形で公開されたアクセ
    ス可能な知識を増やすことを目指しているサイト

    View Slide

  4. Stack Overflow(SO)
    • プログラマー同士の質問回答の形で公開されたアクセ
    ス可能な知識を増やすサイト
    SOにおける質問回答
    参加者による活動
    ・質問者による質問
    (2015年発表)
    ・回答者による回答
    ・コメント
    ・投票
    ・編集(2019年発表)
    課題を抱えたプログラマー
    情報源として
    アクセス

    View Slide

  5. 目的と方法
    • アクセス可能な情報源としてのSOの性質は,それを仕事の
    中で利用するプログラマーの観点からは研究されていない
    • 目的:プログラマーがSOを含む様々な情報源を用いながら,
    いかにして作業を行っているのかを記述する
    • エスノメソドロジーの方針:人々が物事を,人に説明できる
    ような方法で行っている。それによって例えばプログラミ
    ング場面などは,ひとまとまりに組織されている
    • プログラミングという作業における知識や推論が,いかに
    して特有のスキルを具現化した形で組織されているのか
    • 発表者自身(A)がソフトウェア開発プロジェクトに従事し,
    プログラミングにおいてSOを利用した経験をメモ,分析

    View Slide

  6. 本研究で扱う
    ソフトウェア開発プロジェクトの概要
    • 短期間でWebアプリケーションのプロトタイプを作る
    プロジェクト
    • 様々な種類のデータを統合的に管理・表示する方法の
    中で,どの方法が良いか模索する
    • 問題(1)効率的に作れるようにプログラムやデータベー
    スを維持しなければならない
    • 問題(2)柔軟に変更できるようにプログラムやデータ
    ベースを維持しなければならない
    • その中で,1つの機能を実装する作業を記述

    View Slide

  7. “良い”プログラムと”良い”データベース
    • 基本的に,プログラムもデータベースも自由に書ける
    • しかし,書き方によって機能の追加しやすさが異なる
    • プログラムとデータベースの”良い”とされる設計は違う
    →折り合いをつける必要
    新機能
    新機能

    追加しやすい設計 追加しにくい設計

    View Slide

  8. “良い”方法に従う:Ruby on Rails
    • Ruby on Rails(RoR)を採用した
    • Webアプリケーションに関する”良い“プログラムの経
    験則”デザインパターン”に影響を受けた部品を提供
    • 意図された使い方”Rails Way”に従わないと活かせない
    RoR
    プログラム
    データベース
    管理システム
    一連のWebアプリケーションの流れそれぞれに対し部品を提供

    View Slide

  9. 直面した課題:
    ActiveStorageの問題
    • RoRにおけるデータベース管理システムとのやり取り:
    ActiveRecordパターン
    • データベースのテーブルとプログラムの表現が一対一
    対応している→データベースの内部を考えないで済む
    • 一対一対応が難しいアプリケーションの場合,かえっ
    て使いにくくなる場合がある
    データベース
    管理システム
    ActiveRecord
    アプリケーション
    プログラム
    食べ物オブジェクト 食べ物テーブル

    View Slide

  10. 直面した課題:
    ActiveStorageの問題
    • ActiveStorage:Web上の保管場所とデータベース管理
    システムを一貫して扱えるActiveRecordの一機能
    ActiveStorage
    データベース
    管理システム
    Web上の
    保管場所
    1つのデータベースに見える
    ActiveRecord

    View Slide

  11. 直面した課題:
    ActiveStorageの問題
    • 直面した問題:今までは1つのファイルを扱っていたの
    に対し,3つのファイルをひとまとまりで扱う必要が
    あった
    • 複数のファイルはActiveStorageでどのように表現され
    るのかがわからなかった
    • プログラムやデータベースの設計に影響する
    • 一対一対応ができない可能性
    • 場合によっては,効率的かつ変更が容易なようなプ
    ログラムやデータベースを保つことが困難になる
    • ActiveStorageがどのように複数のファイルを取り扱う
    かに関する知識が必要

    View Slide

  12. 直面した課題:
    ActiveStorageの問題
    プログラム1 ファイル1
    ファイル2
    ファイル3
    ActiveStorage プログラム1 ファイル1
    ActiveStorage
    ファイル2
    ActiveStorage
    ファイル3
    ActiveStorage
    プログラム2
    プログラム2
    方向性1 方向性2
    方向性2→プログラムの書き方を変更した方が良い

    View Slide

  13. 解決に向けたWeb検索の試み
    • RoRの公式ドキュメントを有効に活用するには,RoR
    の内部構造を知る必要がある→短期間では困難
    RoR自体の
    プログラム
    (合計384813行)
    へのリンク
    実際の仕事に
    即していない
    説明

    View Slide

  14. 解決に向けたWeb検索の試み
    • GoogleによるWeb検索を行った
    “ActiveStorage multiple files”→SOの質問回答が表示
    SOの質問回答
    RoRの公式ドキュメント

    View Slide

  15. 解決に向けたWeb検索の試み
    • タイトル"When you upload multiple files using
    ActiveStorage, is it possible to determine what
    was just uploaded?"
    • 質問の冒頭からhas_many_attachedという機能を使
    えばよいということがわかった
    質問文

    View Slide

  16. 解決に向けたWeb検索の試み
    • 他にもう1つSOの質問回答を読んだ。どちらも作るべ
    き機能そのものに関する質問ではなかったが,方向性1
    で効率的で柔軟なプログラムを書くことは可能だろう
    ということはわかった
    • has_many_attachedについてより詳しく知る必要
    • "ActiveStorage has_many_attached"でWeb検索

    View Slide

  17. 解決に向けたWeb検索の試み
    • "ActiveStorage has_many_attached"でWeb検索
    • 解説記事を参照→SOの記事以上の情報は得られず
    • RoRの公式ドキュメントを参照
    • ActiveStorage自体の構造について概要を理解
    • has_many_attachedがアプリケーションでは明示さ
    れていない,背後で行っていることをある程度理解
    • SOにおいてはhas_many_attachedによる方針1が実
    際のプログラミングでよく使われていることを理解し
    • 公式ドキュメントではActiveStorageを部品として使う
    際に必要な詳細を理解していた

    View Slide

  18. まとめ
    • 効率的に,柔軟にプログラムやデータベースを設計す
    るというプロジェクト特有の問題のために
    • Ruby on Railsの機能をうまく利用する必要があり
    • ある機能を実装する際にうまく利用するには
    ActiveStorageについてより深く知る必要があった
    • SO:他のプログラマーはどのようにActiveStorageを
    用いているのか→複数の方向性の判断材料
    • 公式ドキュメント:内部構造など実装に必要な詳細
    • 「ActiveStorageで複数のファイルを探す方法」,およ
    びそれを探し求めることは,あくまでも特定の仕事の
    中で行われた

    View Slide

  19. 結論
    • 「ActiveStorageで複数のファイルを探す方法」,およ
    びそれを探し求めることは,あくまでも特定の仕事の
    中で行われた
    • プログラマーは一連の活動を組織する中で,スキルの1
    つとしてSOなどの情報源を用いていた
    • エスノメソドロジーの方針により情報源へのアクセス
    や利用を活動の組織の中で記述できた
    • SOにおいて質問者や編集者がおこなった活動の成果1)が
    今回のようなSOの利用を可能にしたと示唆される
    →時間と空間を隔てた協働の観点からの研究が必要
    1)田島逸郎."専門的Q&Aサイトにおける質問行為の分析".三田図書館・情報学会研究大会発表論文集2015年度.2015, p.1-4.
    田島逸郎."Stack Overflowにおける編集活動:知識の公開という観点から".三田図書館・情報学会研究大会発表論文集2019年度.2019, p.45-48.

    View Slide