Session:「Programming 2」

Exploration and Explanation in Computational Notebooks

論文URL: http://dl.acm.org/citation.cfm?doid=3173574.3173606

論文アブストラクト: Computational notebooks combine code, visualizations, and text in a single document. Researchers, data analysts, and even journalists are rapidly adopting this new medium. We present three studies of how they are using notebooks to document and share exploratory data analyses. In the first, we analyzed over 1 million computational notebooks on GitHub, finding that one in four had no explanatory text but consisted entirely of visualizations or code. In a second study, we examined over 200 academic computational notebooks, finding that although the vast majority described methods, only a minority discussed reasoning or results. In a third study, we interviewed 15 academic data analysts, finding that most considered computational notebooks personal, exploratory, and messy. Importantly, they typically used other media to share analyses. These studies demonstrate a tension between exploration and explanation in constructing and sharing computational notebooks. We conclude with opportunities to encourage explanation in computational media without hindering exploration.

日本語のまとめ:

計算用ノートブックは、コード、ビジュアライゼーション、およびテキストを1つの文書に統合します。研究者、データアナリスト、ジャーナリストさえも、この新しいメディアを急速に採用しています。私たちは、ノートブックを使って探索的データ分析を文書化して共有する方法について3つの研究を提示します。最初は、GitHub上の100万件以上の計算用ノートブックを分析し、4分の1に説明テキストはなく、完全に視覚化またはコードで構成されていたことがわかりました。 2番目の研究では、200件以上の学術計算用ノートブックを調べ、多数の方法で説明されていましたが、少数しか推論や結果について議論していませんでした。 3番目の調査では、15人の学術的データアナリストにインタビューし、最も考慮されている計算用ノートブックが個人的、探索的、そして乱雑であることを見出しました。重要なことに、彼らは通常、分析を共有するために他のメディアを使用しました。これらの研究は、計算ノートを構築して共有する際の探索と説明との間の緊張を示している。私たちは探査を妨げることなく計算メディアの説明を促す機会をもって結論づけます。

The Story in the Notebook: Exploratory Data Science using a Literate Programming Tool

論文URL: http://dl.acm.org/citation.cfm?doid=3173574.3173748

論文アブストラクト: Literate programming tools are used by millions of programmers today, and are intended to facilitate presenting data analyses in the form of a narrative. We interviewed 21 data scientists to study coding behaviors in a literate programming environment and how data scientists kept track of variants they explored. For participants who tried to keep a detailed history of their experimentation, both informal and formal versioning attempts led to problems, such as reduced notebook readability. During iteration, participants actively curated their notebooks into narratives, although primarily through cell structure rather than markdown explanations. Next, we surveyed 45 data scientists and asked them to envision how they might use their past history in an future version control system. Based on these results, we give design guidance for future literate programming tools, such as providing history search based on how programmers recall their explorations, through contextual details including images and parameters.

日本語のまとめ:

リテラートプログラミングツールは、今日の何百万人ものプログラマによって使用されており、ナラティブの形でデータ分析を提示することを容易にすることを目的としています。私たちは21のデータ科学者にインタラクティブなプログラミング環境におけるコーディング行動を研究するためにインタビューし、データ科学者が彼らが調査した変種をどのように追跡したかを調べました。実験の詳細な履歴を保持しようとした参加者にとって、非公式のバージョン管理の試みはノートブックの可読性の低下などの問題を引き起こしました。反復の間、参加者は主にノートダウンの説明ではなくセルの構造を通じて、ノートを積極的に物語に編成しました。次に、45名のデータサイエンスを調査し、将来のバージョン管理システムで過去の履歴をどのように使用するかを想像してみました。これらの結果に基づいて、プログラマが画像やパラメータなどの文脈的な詳細を使って探索を思い出す方法に基づいて履歴検索を提供するなど、将来の文章作成ツールの設計ガイダンスを提供します。

Iris: A Conversational Agent for Complex Tasks

論文URL: http://dl.acm.org/citation.cfm?doid=3173574.3174047

論文アブストラクト: Today, most conversational agents are limited to simple tasks supported by standalone commands, such as getting directions or scheduling an appointment. To support more complex tasks, agents must be able to generalize from and combine the commands they already understand. This paper presents a new approach to designing conversational agents inspired by linguistic theory, where agents can execute complex requests interactively by combining commands through nested conversations. We demonstrate this approach in Iris, an agent that can perform open-ended data science tasks such as lexical analysis and predictive modeling. To power Iris, we have created a domain-specific language that transforms Python functions into combinable automata and regulates their combinations through a type system. Running a user study to examine the strengths and limitations of our approach, we find that data scientists completed a modeling task 2.6 times faster with Iris than with Jupyter Notebook.

日本語のまとめ:

今日では、ほとんどの会話エージェントは、指示の取得や予定のスケジューリングなど、スタンドアロンコマンドでサポートされている単純なタスクに限定されています。 より複雑なタスクをサポートするためには、エージェントは既に理解しているコマンドを一般化して組み合わせることができなければなりません。 本稿では、エージェントがネストされた会話を介してコマンドを組み合わせて複雑な要求を対話的に実行できる、言語理論に基づいた会話エージェントを設計する新しいアプローチを紹介します。 私たちは、このアプローチを、字句解析や予測モデリングなどのオープンエンドのデータサイエンスタスクを実行できるエージェントIrisで実証します。 アイリスを動かすために、私たちは、Python関数を組み合わせ可能なオートマトンに変換し、型システムを介してその組み合わせを制御するドメイン固有の言語を作成しました。 私たちのアプローチの強みと限界を調べるためにユーザースタディを実行すると、データ科学者はJupyterノートブックよりIrisで2.6倍のモデリング作業を完了しました。

Mercury: A Messaging Framework for Modular UI Components

論文URL: http://dl.acm.org/citation.cfm?doid=3173574.3174162

論文アブストラクト: In recent years, the entity--component--system pattern has become a fundamental feature of the software architectures of game-development environments such as Unity and Unreal, which are used extensively in developing 3D user interfaces. In these systems, UI components typically respond to events, requiring programmers to write application-specific callback functions. In some cases, components are organized in a hierarchy that is used to propagate events among vertically connected components. When components need to communicate horizontally, programmers must connect those components manually and register/unregister events as needed. Moreover, events and callback signatures may be incompatible, making modular UIs cumbersome to build and share within or across applications. To address these problems, we introduce a messaging framework, Mercury, to facilitate communication among components. We provide an overview of Mercury, outline its underlying protocol and how it propagates messages to responders using relay nodes, describe a reference implementation in Unity, and present example systems built using Mercury to explain its advantages.

日本語のまとめ:

近年、Entity - Component - Systemパターンは、UnityやUnrealなどのゲーム開発環境のソフトウェアアーキテクチャの基本的な機能となっており、3Dユーザーインターフェイスの開発に幅広く使用されています。これらのシステムでは、通常、UIコンポーネントはイベントに応答し、プログラマーにアプリケーション固有のコールバック関数を記述させる必要があります。場合によっては、コンポーネントは、垂直に接続されたコンポーネント間でイベントを伝播するために使用される階層に編成されます。コンポーネントが水平に通信する必要がある場合、プログラマはこれらのコンポーネントを手動で接続し、必要に応じてイベントを登録/登録解除する必要があります。さらに、イベントとコールバックシグネチャが互換性がないため、モジュール式のUIがアプリケーション内またはアプリケーション間で構築および共有するのが面倒になります。これらの問題に対処するために、我々はコンポーネント間の通信を容易にするメッセージングフレームワーク、Mercuryを導入する。 Mercuryの概要、基本プロトコルの概要、リレーノードを使用して応答者にメッセージを伝播する方法、Unityのリファレンス実装を記述する方法、およびMercuryを使用して構築された現在のシステム例について説明します。