Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

Db3d00564e01b3b4efb99edeb5e40f64?s=47 Tajima Itsuro
November 07, 2020

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

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

Db3d00564e01b3b4efb99edeb5e40f64?s=128

Tajima Itsuro

November 07, 2020
Tweet

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.