どうする、ニンゲン|国立科学博物館×総合地球環境学研究所
国立科学博物館と総合地球環境学研究所(地球研)の共同企画展「どうする、ニンゲン -研究の現場から地球の未来を問う」(2026年7月31日〜9月23日、国立科学博物館 日本館1階)で、来場者のアンケートを会場のディスプレイに映し出すシステムを開発した。

来場者は展示を見たあと、3色の用紙から1枚を選んで手書きで答える。問いは色ごとに違う。
- 今の地球のすみごこちってどう?
- あなたにとって、変わってほしくないものを1つあげてみて
- どのくらい未来のニンゲンのことまで考える?
書かれた用紙はスタッフがスキャンし、問いごとに1面ずつ、縦置きの4Kディスプレイ3面に映される。
企画の段階では、会期約60日で1日100枚、全体で6,000枚ほどと見込んでいた。実際に集まった回答は12,442件で、想定のおよそ2倍になった。


全体の流れ
システムはスキャンする側と表示する側の2つのアプリに分かれていて、そのあいだを Slack がつないでいる。

- 来場者が用紙に記入する
- 回収した用紙をスタッフがスキャナで取り込む
- Python のスクリプトが新しい画像を見つけて、Slack のチャンネルに投稿する
- 表示側の Python が Slack から新しい投稿を取ってきて、問いごとに振り分ける
- TouchDesigner が振り分けられた画像を3面に並べて映す
その場で書いたものがすぐ画面に出る、という作りにはしていない。スタッフが回収してまとめてスキャンし、表示側が取り込んだ時点で画面に加わる。
スキャンから Slack へ
スキャンには純正の IJ Scan Utility をそのまま使い、保存先のフォルダを Python のスクリプトが監視している。新しいファイルが現れたら5秒待ってから読みにいく。スキャナがファイルを書き終える前に投稿してしまうのを避けるためで、念のため画像として開けるかも確かめてから送る。
投稿したファイルは記録しておき、スクリプトを再起動しても同じ画像を二重に送らない。
Slack をあいだに挟む
スキャン側と表示側を直接つながず、Slack を経由させたのには理由がある。
- スタッフが手元で確認できる。 投稿がチャンネルに時系列で並ぶので、何がどこまで取り込まれたかをスマートフォンからでも見られる
- 表示するかどうかを人が決められる。 公共の展示室に手書きの自由記述をそのまま出すので、リアクションを付けた投稿だけを表示の対象にする設定を用意した
- Slack が原本になる。 表示側の画像と取得位置の記録を消して起動し直せば、Slack から最初から取り込み直せる。表示側の PC で何かあっても、回答そのものは失われない
用紙の色で振り分ける
Slack から取ってきた画像は、どの問いの用紙かを判定してから、ディスプレイに映せる形に加工する。

問いの判定には用紙の色を使っている。枠の一部の色を測り、3色の用紙のうちどれに色相が一番近いかで決める。明るさではなく色相で比べているので、スキャナの露出が多少ぶれても判定が崩れにくい。
判定のあとは記入欄だけを切り出す。画像を上から見ていき、白い行がまとまって続く「帯」を探す。1本目の帯は問いが書かれた吹き出しなので読み飛ばし、2本目から下を記入欄とみなす。角丸の外にはみ出した用紙の色はマスクで落とす。
最後にコントラストを上げ、明るい画素を真っ白に揃える。紙の地が消えて鉛筆やペンの線だけが残るので、TouchDesigner の側で色のタイルに重ねたとき、手書きの線がそのまま色面に乗って見える。
TouchDesigner での演出
表示は TouchDesigner で組んでいる。3面それぞれの上部に問いを置き、その下で回答が1枚、4枚、9枚のグリッドに入れ替わりながら映る。タイルは時間差でフェードアウトし、少し間を置いて次の回答が同じように時間差で現れる。タイルの色は用紙の3色に縛られず、6色の色面を使い分けている。
Slack からの取り込みは、TouchDesigner の起動時に Python を別プロセスとして立ち上げて行う。ダウンロードや画像の加工に時間がかかっても描画は止まらない。取り込み中かどうかと実行ログは TouchDesigner の画面の中でも確認できるようにした。
会期中、止めないために
会期は2か月近くあり、会場で機材を動かすのは現場のスタッフになる。
- スキャン側も表示側も、Windows の起動時に自動で立ち上がる
- プロセスが落ちたら数秒後に自動で起動し直す
- 表示側は起動時にネットワークがつながるまで待つ。つながらないままでも、一定時間が経てばそのまま起動して手元の画像で表示を続ける