近年,ビッグデータなどで言い表されているように,大量のデータを扱う仕事や場面が増えています.このような状況においては単純に1つ1つの元データを見て何かを言い表すことは不可能です.そこでデータに隠された情報をより分かりやすい形に表現する技術,すなわち情報可視化,に大きな注目が集まっています.このような観点から,本実験では情報可視化技術を用いたデータ解析の基礎を学びます.具体的には,
を目指しています.この実験の最終成果として,D3とオンライン上にあるデータセットを用いてオリジナルの情報可視化システムを作り,データにどのような関係性があるのか,どのような仮説が立てられそうか,を発表してもらいます.
この実験はユーザインタフェースの研究を行うための基礎的技術・経験を積んでもらうことも目的としています.このため,
を達成できるように授業が設計されています.
また本講義のホームページは日本語ですが,講義内で使用される資料はすべて英語です.授業に英語で参加することも歓迎です.
場所 | 241講義室,およびzoom |
---|---|
原則,対面での受講となります. | |
時間 | 13:00 - 16:40 |
講義担当者 | 矢谷浩司 (koji “at-mark” iis-lab.org) |
TA | Zefan Sramek, 宮崎翔 (infovislab “at-mark” iis-lab.org) |
授業資料 | https://drive.google.com/drive/folders/1jW4M_lqcwDfhPy0zR1bqq_GZFGcR5JW4?usp=sharing |
本実験では基礎的な知識と実際的な技術を学ぶため,実験の前半はセミナー形式のDesign Discussionsと実習形式のHands-on Tutorialsの2つを組み合わせた形式になっています.Design Discussionsでは,情報可視化に関する基礎と学術的な知識を学びます.例えば,可視化の基礎要素(大きさ,長さ,色など)に対する人間の認識能力,様々なデータの代表的な情報可視化手法などをカバーします.一方,Hands-on Tutorialsでは,Design Discussionsで学んだことをD3を用いたプログラミングで実装することにより,具体的な例を通した学習を行い,理解を深めます.
実験の後半はCapstone ProjectとしてD3とデータセットを用いて各自で情報可視化システムを構築します.Capstone Projectは基本的に2人ないし3名が協力して行うものとします.また,学生間での情報やアイデアの共有・相互協力は推奨されます.
本実験では課題を通して評価が決まります.採点の大まかな枠組みは以下の通りです.IPCを7回にすることとしたため,総点が106点になっています.成績評価の際には100点に換算します.
この採点配分のうち,個人として採点されるものは58%(Quick Review Assignments #1から#4とIndividual Project Contributions),プロジェクトグループとして採点されるものは48%となっています.この採点配分により個人としてもグループとしても精力的に取り組めるように設計されています.
また本実験では成果物だけではなく,それに至るまでのプロセスを評価するため,Individual Project Contributionsのようにシステムの開発プロセスにおいてどれだけ貢献してきたか,も採点対象としています.
本実験を受講する場合,以下の知識,経験,および実験機器があることを想定しています.
情報可視化やインタフェースに関する知識・経験の有無は問いませんが,あれば講義内容をより理解できます.
実験中は各自のコンピュータを使用します. 実験に使用するコンピュータは毎回持ってきてください. 学科で貸し出されているものでも自分のものでも構いませんが,プログラミングに必要な環境構築は自己責任です.
本実験を受講する前に,D3をダウンロードしておいてください. 今年度の実験では,バージョン7.6.1のD3を使用します.D3.jsはこちらからダウンロードできます.また,プログラミングをするためのテキストエディタとデバッグを行うためのウェブブラウザが必要になります.ブラウザとしてはChromeを使用しますが,以下に示す準備が必要になります.各自で準備できる場合に限り使用を許可します.
また本講義ではGitHub(https://github.com/)を利用します.登録は無料ですので,あらかじめ行っておいてもらえると授業内での手続きがスムーズになります.
Chromeはセキュリティ上の理由によりhttpなどの特定のプロトコルに沿う場合に限り,外部のファイルを読み込むことができます.このためFirefoxのように単にhtmlファイルを開くだけではD3の挙動を確認できません.
そこでローカルにWebサーバを実行する必要があります.最も手軽な方法として,Chromeのextensionを使用するものがあります.
上記のextensionをインストール後,Chrome App Launcherから実行するとポップアップが現れます.ここから“choose folder”をクリックし,プログラムを行っているフォルダを選択して,http://127.0.0.1:8887/にアクセスすると,httpを通してローカルのファイルにアクセスするようになり,D3等の挙動を確認することができます.
他の方法でローカルにWebサーバを実行する方法もあります(ApacheやPythonを使う).どのような形であってもプログラムが実行可能な環境を作ることができればOKとします.
テキストエディタはどのようなものを使ってもらっても構いませんが,コードのハイライトや自動補完,自動インデントを備えているものがよいと思います.
本実験では講義担当者やTA,他の学生さんとのコミュニケーションにSlackを用います.授業中の質問やTAさんへのヘルプの呼びかけなど,自由に使ってください.
ただし,公休のような公的な申請に関してはメールでお願いします.場合によっては物理的な提出物を求める場合もありますので,講義担当者と事前によく相談してください.
授業の資料等は以下にアップロードしてあります.東京大学のgoogle accountでアクセスしてください. https://drive.google.com/drive/folders/1jW4M_lqcwDfhPy0zR1bqq_GZFGcR5JW4?usp=sharing
回 | 日程(第2実験) | 日程(第3実験) | 講義内容 | |
---|---|---|---|---|
第1回 | 10/31 | 11/29 | [Design Discussions] | 情報可視化とデータ解析とは?・人間の視覚的認識能力 |
[Capstone Project] | Capstone project概要,チームメイト探し,GitHubの使い方講習 |
|||
[Hands-on Tutorial] | D3の基礎,データ読み込み,基本的なグラフの実装 | |||
[Deliverable] | Hands-on Tutorial #1の実装結果,チームセットアップ,GitHubリポジトリセットアップ |
|||
第2回 | 11/1 | 12/1 | [Design Discussions] | 時系列データを可視化する技術とその例 |
[Capstone Project] | プロジェクトブレインストーミング,既存システムの調査 | |||
[Hands-on Tutorial] | Hans Roslingのグラフの実装 | |||
[Deliverable] | Hands-on Tutorial #2の実装結果,プロジェクトの候補になる大まかなアイデア,印象に残った可視化システムの紹介(1人1~2分程度) | |||
第3回 | 11/7 | 12/5 | [Design Discussions] | 地理情報を組み合わせた情報可視化技術 |
[Capstone Project] | デザインスケッチ,Paper prototype作成 | |||
[Hands-on Tutorial] | 地図とデータを組み合わせた可視化技術の実装 | |||
[Deliverable] | Hands-on Tutorial #3の実装結果,Paper prototypeの完成 |
|||
第4回 | 11/8 | 12/6 | [Design Discussions] | ツリー・ネットワークグラフとその応用例 |
[Capstone Project] | Paper prototypeを用いたpeer review,デバッグ用の一時的なデータセット用のデータ収集,整理 | |||
[Hands-on Tutorial] | ネットワークグラフ(force-directed graph)の実装 | |||
[Deliverable] | Hands-on Tutorial #4の実装結果,システム実装方針完成,一時的なデータセットの完成(100件程度のデータ) | |||
第5回 | 11/10 | 12/8 | [Design Discussions] | テキスト情報の可視化 |
[Capstone Project] | システム実装,データセットの拡充 | |||
[Hands-on Tutorial] | チームで協力してD3の公式サイトの例に機能を追加 | |||
[Deliverable] | Hands-on Tutorial #5の実装結果,システム実装一部完成,500~1000件程度のデータセット | |||
第6回 | 11/14 | 12/12 | [Design Discussions] | 情報可視化システムにおけるインタラクションデザイン |
[Capstone Project] | システム実装,データセットの拡充 | |||
[Deliverable] | アルファバージョン完成(大枠のみ完成しているバージョン),数千件程度のデータセット | |||
第7回 | 11/15 | 12/13 | [Design Discussions] | よい情報可視化とは? |
[Capstone Project] | peer-review 2回目,システム実装 | |||
[Deliverable] | ベータバージョン完成(少し動かせるバージョン),数千件以上のデータセット | |||
第8回 | 11/21 | 12/15 | [Capstone Project] | システム実装,データセットの拡充 |
[Deliverable] | システムの修正方針確認 | |||
第9回 | 11/22 | 12/19 | [Capstone Project] | 最終のデバッグ,プレゼンテーション計画・準備 |
[Deliverable] | デモができるバージョン完成 | |||
第10回 | 11/24 | 12/20 | [Capstone Project] | デモプレゼンテーション @工学部2号館12階電気系会議室4 |
[Deliverable] | プレゼンテーション | |||
課題提出 | 12/8 13:00:00 | 1/9 13:00:00 | [Deliverable] | Final Project Report提出期限 レポートテンプレート |
Quick Review Assignments (QRA)は各Design DiscussionsやHands-on Tutorialで学んだことを復習し,知識を身に見つけることを目的としています.各QRAは実験時間内に完了できる程度の内容で,講義担当者やTAがその場で確認します.例えば,hands-on tutorialで勉強したコードに更なる改良を加えるなどです.評価は以下のような基準で行われます.
当日出席をしていた場合,その次の授業内で再度提出する(講義担当者やTAに見せる)機会が与えられます.この場合は再提出時の完成度に応じて点数が更新されます(例えば授業中は課題を終えることができなかったが,次の講義ではすべての課題を終えて再提出した場合は,3点から5点に変更).
Capstone Projectでは,本実験で学んだことをベースにして,オリジナルの情報可視化システムを構築します.学術的な新規性は必須ではありませんが,本実験で示した実装例から比較して大きく違うもの,独創性のあるもの,あるいは有用性の高いものである必要があります.Capstone Projectは2名ないし3名が協力して行うものを推奨しますが,1名で実施しても構いません. これ以外のチーム構成を行う場合は講義担当者に事前に相談してください.また,学生間での情報やアイデアの共有・相互協力は推奨されます.
実装に際してはD3とHands-on Tutorialで使用したライブラリのみ用いることを可とします. ただし,D3のAPIをそのまま利用しただけのものや,インターネット上にあるサンプルコード等に小規模の変更を加えただけものは課題を提出したと認められず,デモプレゼンテーションも含めて自動的に0点となります.自分自身が書いたコードが大部分を占めるようでなければなりません.もしそれ以外のライブラリを使うことが必須である場合は,講義担当者やTAに相談してください.また,jQueryやAngularJSなど可視化部分に直接関連しないようなライブラリは必要に応じて使ってもらって構いませんが,こちらも講義担当者やTAに事前に相談してください.
構築するシステムはインタラクティブである必要があります. 例えば,フィルタリング(データの一部だけを選んで表示する),ソート(様々な基準で可視化できる),可視化方法の変更などが挙げられます.高機能である必要はありませんが,扱っているデータを解析するうえで役に立つであろう機能を実装してください.
システムが扱うデータのサイズは最低でも数千件程度を目標としてください. 「件」の定義に関してはある程度あいまいに扱いますが,システムで使用されているデータのサイズが明らかに大きくない場合は減点となります.また多少データサイズが大きくなっても扱えるようにシステムを実装してください.
評価としては見た目の良さよりも,与えられたデータセットに対して適切な可視化手法を使っているか,データからいろんな知見を読み解くことに役に立っているか,システムがプログラマや専門家ではなくても使うことのできるものか,という点を重視します.過度に見た目にこだわるのではなく,ユーザにとって面白い情報が提示できるようなシステムを目指してください.また,マニュアルやヘルプがなくともユーザがシステムを十分に使えるようにデザインを工夫してください.
データセットはオンライン上にあるものを利用して構いません.あるいは自分で別途プログラムを書いて集めてきても構いませんが,データの信頼性が保たれていることを確認してください.データセットがないからと言って,自分で偽のデータを作ることは禁止です.実装するシステムはある特定のデータセットに対してのみ問題なく作動することを前提としてよいこととします.すなわち,ある1つのcsvファイルを読み込んで,そのデータに対して情報可視化を行うものでよいということです.あるいは,自分でデータを集める場合はある程度限られたデータサイズでよいということです.例えば,レストランのレビューを可視化するようなシステムの場合,既存のウェブサイトで公開されている全てのレストラン情報に対して構築するシステムが動作する必要はありません(無論,動作するのであればさらによい).
プロジェクトのアイデアとしては以下のようなものが挙げられますが,本実験に関係する限りは他のテーマも大歓迎です.Capstone Projectはチームでの作業で実験の時間内(20時間程度 X チームの人数)に終わらせることができる程度の大きさのプロジェクトを想定しています.チャレンジングなものに取り組んでも構いませんが,確実に終わらせることができるものからまず始めて,進捗状況を見て徐々にシステムを大きくしていくように心がけてください.
D3のギャラリーには非常に良い実装例がいくつもあります.アイデアを1つに絞る前に,どんな可視化技術を使っているか,どんなデータセットを使っているか,そしてどんな知見を伝えようとしているかを綿密に調査してください.以下に私が個人的に面白いと思ったものを挙げます.
データセットとしては以下のようなものが利用できますが,一般に公開されているデータであればどのようなものを用いても構いません.
データセットを構築する際,各種サービスのAPIを使うほか,自分自身で収集する方法があります.このようなオンライン上の情報を収集してくるシステムをクローラーと呼んでいます.
またこのようなクローラーを運用したり,データを蓄積したりするために,Azureサービスへのアクセスを提供します.もしAzureサービスを利用したい場合には講義担当者に相談してください.
授業においてペーパープロトタイプを制作します.授業内でも説明しますが,自主的にいろいろとペーパープロトタイプの例を見て,インタラクティブなプロトタイプを作ってください.以下にペーパープロトタイプの面白い例を挙げます.
これまでのCapstone Projectで作成されたシステムのビデオをまとめたものです.是非参考にしてみてください.
第3回の講義終了後,各チームはプロジェクトの提案を行います.この提案は授業中に制作したペーパープロトタイプを利用して行います.具体的には,
をビデオにて説明してください.Capstone Project Proposalの採点基準は以下の通りです.
ビデオは長くても5分程度で,100MBを超えないようにしてください.また,形式はmp4でお願いします. ビデオの撮影には自分の持っている携帯電話やPCに付いているカメラなどを利用してください.撮影されたビデオは高解像度でなくても構いませんが,写っているものが見てとれるように撮影をしてください.また,字幕やエフェクトなどの編集は必要ありません.説明のナレーションはビデオを撮影しながら行ってください.
提案ビデオの提出期限は当日の23:59です. 提出先はslackの各チームのプライベートチャネルになります.
第4回目から第9回目までの6回は提案したシステムの実装や必要なデータセットの構築を行います.この間はどの程度プロジェクトに貢献したかをGitHubのcommitログを元に評価をします.このIndividual Project Contributionsは以下のような採点基準で評価されます.
評価はリポジトリにpushされているmasterブランチに対して行います.また,各講義日の23:59を各回の締切とします. 必ずこの時間までにpushと必要に応じてmergeを行ってください.複数人が同時に作業をしているとconflictを起こすこともあります.締切前にだけpushが集中するようなことがないようにして,締切直前でconflictが発生しないように気をつけてください.具体的な採点期間は以下の通りです.
評価はcommitの数だけではありませんので,注意してください.不自然にcommitの数が多いものは減点の対象となり得ます.ある程度意味のあるまとまりで(例えば,1つの機能とか1つの関数など)commitするようにしてください.ですが,1つのcommitが大きすぎる(多くの変更が1つのcommitに含まれている)のは望ましくないので,多少細かくcommitするのは問題ありません.またcommitはコードの変更に限る必要はありません.例えば新しいデータセットを作ったり,それを作るためのコードを書いたりした場合にも積極的にcommitしてください.プロジェクトに関係するようなファイルやデータは全てリポジトリに置いてもらって構いませんので,自分がやったことがあればcommitをするようにしてください.ただし,システムの開発に関係しないcommitに関しては採点の対象となりません.
またcommitはコードの追加や変更だけに限る必要はありません.例えば,データセット内のデータの追加,システムのデザインのスケッチ,既存システムのサーベイ結果などプロジェクトに関連するものはすべて採点の対象となります.しかし,採点の重みはプロジェクトの進行に応じて変わります.例えば,既存システムのサーベイ結果は最初の方ではある程度の重みを持ちますが,プロジェクト後半では重要視されません.一般的には,プロジェクトの前半では,実装だけでなく,データセットの拡充や整理,インタフェースデザインのスケッチ,サーベイ結果の要約,なども積極的に採点されます.一方,プロジェクト後半では,システムの実装やバグの修正に重きが置かれます.
また,チームメンバーに対して行ったサポート(例えば,JavaScriptを教えた,環境構築を手伝ったなど)も採点の対象としますので,どのようなサポートを誰に対して何時間程度行ったかを具体的に記述し,テキストファイル等でpushしておいてください(具体性の低い報告は採点されないことがありますので,注意してください).
commit時のコメントも重要です. どんな実装や変更を行ったのか,TAが一見してわかるように,簡潔かつ丁寧に記述してください.commit時のコメントが欠けている,あるいは不明瞭なものは減点の対象となり得ます.
IPCはチーム全体ではなく,チームメンバーごとに評価されます. 作業量が少なすぎる場合には上記に示したように大幅な減点となりますので,チームにしっかり貢献をしてください.
第10回目においてはCapstone Projectの成果を発表してもらいます.プレゼンテーションは全体で2時間半~3時間程度を予定しています.
プレゼンテーションの中では以下の点に関して説明してください.プレゼンテーション,システムのデモは自分たちのPCで行ってください.PC用の電源は講義担当者側で用意します.各チームの発表時間は10分とします.その後,数分の質疑応答を予定しています.
この課題ではシステムの完成度だけではなく,プレゼンテーション自体の完成度を評価します.具体的な評価基準は以下の通りです.
評価は講義担当者とTAの計3名で行い,その平均値が最終的にチームに与えられる点数となります.
プレゼンテーションにおいては,誰が話すかをチーム内で決めてください.特段の理由がない限り,各チームメンバーがプレゼンテーションのどこかを担当するように分担をしてください.
各学生は,最もよかった他のチームのプレゼンテーションに1票投票ができます.また,当日はIIS Lab(矢谷研究室)の学生さんもゲストとしてプレゼンテーションを拝見し,彼らは2票投票できます.獲得数上位にはボーナスの点数を与えることとします.
最終レポートでは今までのPMRで報告されてきたことをまとめるとともに,システムのソースコードとデータセットを提出してもらいます.プロジェクトの評価は最終的に提出されたシステムに対して行われるため,最後の授業以降に変更を加えても構いません(より高い点数を取るためにむしろ推奨されます).
最終レポートでは,
を提出してもらいます.ソースコードとデータセット一式に関してはGitHub上にすでにpushされているものとし,以下ではそれ以外の提出物に関して説明します.
デモビデオは3~5分程度の長さで,100MB以下のサイズにしてください(GitHubにpushできなくなってしまうため).デモビデオはスクリーンキャプチャを用いて撮影し,字幕で説明をつけてください. ビデオは特に高解像度でなくてもかまいませんが,システムのデモの様子がはっきりとわかるようにしてください.また,どうしてもビデオのサイズが100MBを超えてしまう場合はあらかじめTAに相談をして提出方法を確認してください.
リポジトリ内に“FPR”というディレクトリを作成し,そのディレクトリ内に提出すべきファイルをpushしてください. ただし,ソースコードとデータセット一式に関してはすでにGitHub上でpushされているもので構いません(提出のために新たに移動させる必要はありません).
Final Project Reportの提出期限は12:59です. 提出すべきものすべてが自分のチームのリポジトリのmasterブランチに確実にpushされていることを確認してください.採点はmasterブランチに存在するものに対して行われます.
Final Project Reportとシステムの評価は以下の基準に沿って行われます.
これらに加えて,ビデオの見やすさ,レポートの読みやすさを減点法で採点します.提出されたビデオのデモがわかりにくい,レポートの内容が不十分などの場合には,それに応じた点数が減点されますので注意してください.
最終回のスライド(PDF)にもいくつか細かな指示がなされていますので,必ず目を通してください.最終レポートはチームのメンバー全員で協力して仕上げてください.
本実験ではCapstone ProjectにGitHubを利用します.プロジェクトに関する提出物は基本的にGitHub経由で行います.またcommitの数,内容も成績の採点に含まれるため,あらかじめGitHubの基本的な使い方に慣れておくようにお願いします.こちらのページにGitHubに関する説明があるほか,インターネット上に様々なチュートリアルがありますので,自分で使い慣れておいてください.
本実験ではプログラミング言語としてJavaScriptを使用します.またそれに付随して,HTML,CSSを使うことになります.本実験を受けるにあたってこれらに関する前提知識は必須ではありませんが,ある程度自習してもらうことを想定しています.以下のようなリソースを利用するなどして勉強してください.
SVGに関しては講義内であまり深く扱いません.各自で勉強して応用することを想定しています.
データセットに不備がある,一貫性がないなど,なんらかの修正等が必要な場合,Open Refineなどのツールを利用してもよいこととします.ただし,それらを利用した場合にはレポート内にてどのような前処理を行ったかを明記してください.
地図作成に必要なTopojsonは以下にありますが,必要に応じて他のリソースを使用しても構いません.ただしどこから入手したか,レポート内で明記してください.
なお地理データからTopoJSONを自作する方法もありますが,Linuxベースのシステム(macを含む)でないと作業は少し大変です.
自然言語処理が必要な場合,PythonのNLTKをはじめとして様々なツールがあります.しかし,他言語で実装されているので1つのシステムにするには労力(特に環境構築)が必要となります.本実験においてはこれらツールを使用して必要なデータを前処理し,データファイルとして出力しておき,情報可視化システムではそのファイルを読み込んで表示する,というもので構いません.ただしこれらツールをうまく導入し,インタラクティブに文章を処理,可視化できる場合は大きな加点とします.各ツールの使い方等は講義では紹介せず,個人で勉強してもらうことを前提にしています.
本実験では指定の教科書はなく購入の必要はありませんが,Scott Murrayの“Interactive Data Visualization for the Web”がD3に関する基本的なプログラミング方法を詳しく解説しており,薦めています.英語版のPDFはオライリー社のホームページより無料でダウンロードできます.
また,Scott Murrayはオンラインのチュートリアルも公開しており,上記の本に比較的準拠した内容になっています.
その他インターネット上にて様々なチュートリアルや解説,プログラミング例を見つけることができます.以下にその例を挙げておきます.
またInformation Visualizationの一般的なトピックをカバーする本として,Colin WareやEdward Tufteの本を推奨していますが,購入の必要はありません.工学部2号館内にある図書館でも閲覧することができます.
本実験ではペーパープロトタイピングを行います.具体的な方法に関しては授業内で説明を行いますが,参考書としては以下のものを薦めます.
情報可視化システムでは色を様々な情報に利用しますが,その際に考えておくべきポイントをまとめた資料として以下の論文があります.
HCIに関して一般的な教科書としては以下のものがあります.
この実験は主に海外の学部生向けInformation visualizationのコースを参考にして構成されています.参考までにそれらのコースのホームページを以下に記載します.これらホームページには学生が行ったプロジェクトも掲載されているものがあります.本実験でもそれらプロジェクトを参考にして構いません.ただしそのままコピーしたものや,少しだけ変更したもの(例えば,データセットだけを変更したもの)は認められず,剽窃とみなされる可能性があります.
剽窃や不適切な引用,改竄などはAcademic Misconductとして重い処分を受けます.本実験ではアイデアや実装に関してoriginalityを不正に高めるような行為を特に厳重に処罰します.例えば,
などが挙げられます.特に重大なAcademic Misconductが発見された場合,その影響度の大きさに応じて以下の罰則を与えることになります.
レポートやソースコードは誤解の生じないように十分注意して作成・管理してください.