$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 田島 逸郎(慶應義塾大学大学院) <niryuu@keio.jp>

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

  4. Stack Overflow(SO) • プログラマー同士の質問回答の形で公開されたアクセ ス可能な知識を増やすサイト SOにおける質問回答 参加者による活動 ・質問者による質問 (2015年発表) ・回答者による回答

    ・コメント ・投票 ・編集(2019年発表) 課題を抱えたプログラマー 情報源として アクセス
  5. 目的と方法 • アクセス可能な情報源としてのSOの性質は,それを仕事の 中で利用するプログラマーの観点からは研究されていない • 目的:プログラマーがSOを含む様々な情報源を用いながら, いかにして作業を行っているのかを記述する • エスノメソドロジーの方針:人々が物事を,人に説明できる ような方法で行っている。それによって例えばプログラミ

    ング場面などは,ひとまとまりに組織されている • プログラミングという作業における知識や推論が,いかに して特有のスキルを具現化した形で組織されているのか • 発表者自身(A)がソフトウェア開発プロジェクトに従事し, プログラミングにおいてSOを利用した経験をメモ,分析
  6. 本研究で扱う ソフトウェア開発プロジェクトの概要 • 短期間でWebアプリケーションのプロトタイプを作る プロジェクト • 様々な種類のデータを統合的に管理・表示する方法の 中で,どの方法が良いか模索する • 問題(1)効率的に作れるようにプログラムやデータベー

    スを維持しなければならない • 問題(2)柔軟に変更できるようにプログラムやデータ ベースを維持しなければならない • その中で,1つの機能を実装する作業を記述
  7. “良い”プログラムと”良い”データベース • 基本的に,プログラムもデータベースも自由に書ける • しかし,書き方によって機能の追加しやすさが異なる • プログラムとデータベースの”良い”とされる設計は違う →折り合いをつける必要 新機能 新機能

    ? 追加しやすい設計 追加しにくい設計
  8. “良い”方法に従う:Ruby on Rails • Ruby on Rails(RoR)を採用した • Webアプリケーションに関する”良い“プログラムの経 験則”デザインパターン”に影響を受けた部品を提供

    • 意図された使い方”Rails Way”に従わないと活かせない RoR プログラム データベース 管理システム 一連のWebアプリケーションの流れそれぞれに対し部品を提供
  9. 直面した課題: ActiveStorageの問題 • RoRにおけるデータベース管理システムとのやり取り: ActiveRecordパターン • データベースのテーブルとプログラムの表現が一対一 対応している→データベースの内部を考えないで済む • 一対一対応が難しいアプリケーションの場合,かえっ

    て使いにくくなる場合がある データベース 管理システム ActiveRecord アプリケーション プログラム 食べ物オブジェクト 食べ物テーブル =
  10. 直面した課題: ActiveStorageの問題 • ActiveStorage:Web上の保管場所とデータベース管理 システムを一貫して扱えるActiveRecordの一機能 ActiveStorage データベース 管理システム Web上の 保管場所

    1つのデータベースに見える ActiveRecord
  11. 直面した課題: ActiveStorageの問題 • 直面した問題:今までは1つのファイルを扱っていたの に対し,3つのファイルをひとまとまりで扱う必要が あった • 複数のファイルはActiveStorageでどのように表現され るのかがわからなかった •

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

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

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

  15. 解決に向けたWeb検索の試み • タイトル"When you upload multiple files using ActiveStorage, is

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

    has_many_attached"でWeb検索
  17. 解決に向けたWeb検索の試み • "ActiveStorage has_many_attached"でWeb検索 • 解説記事を参照→SOの記事以上の情報は得られず • RoRの公式ドキュメントを参照 • ActiveStorage自体の構造について概要を理解

    • has_many_attachedがアプリケーションでは明示さ れていない,背後で行っていることをある程度理解 • SOにおいてはhas_many_attachedによる方針1が実 際のプログラミングでよく使われていることを理解し • 公式ドキュメントではActiveStorageを部品として使う 際に必要な詳細を理解していた
  18. まとめ • 効率的に,柔軟にプログラムやデータベースを設計す るというプロジェクト特有の問題のために • Ruby on Railsの機能をうまく利用する必要があり • ある機能を実装する際にうまく利用するには

    ActiveStorageについてより深く知る必要があった • SO:他のプログラマーはどのようにActiveStorageを 用いているのか→複数の方向性の判断材料 • 公式ドキュメント:内部構造など実装に必要な詳細 • 「ActiveStorageで複数のファイルを探す方法」,およ びそれを探し求めることは,あくまでも特定の仕事の 中で行われた
  19. 結論 • 「ActiveStorageで複数のファイルを探す方法」,およ びそれを探し求めることは,あくまでも特定の仕事の 中で行われた • プログラマーは一連の活動を組織する中で,スキルの1 つとしてSOなどの情報源を用いていた • エスノメソドロジーの方針により情報源へのアクセス

    や利用を活動の組織の中で記述できた • SOにおいて質問者や編集者がおこなった活動の成果1)が 今回のようなSOの利用を可能にしたと示唆される →時間と空間を隔てた協働の観点からの研究が必要 1)田島逸郎."専門的Q&Aサイトにおける質問行為の分析".三田図書館・情報学会研究大会発表論文集2015年度.2015, p.1-4. 田島逸郎."Stack Overflowにおける編集活動:知識の公開という観点から".三田図書館・情報学会研究大会発表論文集2019年度.2019, p.45-48.