バーチャルキャストは顔出し動画を民主化する

 バーチャルキャストはVR機器とPCを使用してVR空間上でバーチャルキャラクターになって生配信や動画を作ることができるサービスです。機材さえあればVTuberに誰でもなれるサービスといったところでしょうか。
virtualcast.jp

 僕は以前からニコニコ生放送で砂防やダムなどについてあらかじめテーマを決めて話す講座形式の放送を定期的に行っていました。
com.nicovideo.jp

 放送前にプレゼンテーションソフトで作ったスライドを映像に流してそれに沿ってひたすら喋り倒すというスタイルの放送なのですが、どうしても画面が単調になりがちでした。またコメントに反応してなにかリアクションしようとしても声とマウスカーソルで反応する程度のことしか出来ず、どうにかならないかとずっと思っていました。

f:id:dambiyori:20181021210722j:plain

 そこに現れたのがバーチャルキャストだったのです。今年の6月くらいにホワイトボードというアイテムに画像をあらかじめ設定した順番に表示する機能が実装されて、これを使うと番組内でスライド画像を使用したプレゼンテーションができるようになりました。
 「これ、ひょっとしたら僕の放送で使えるのでは…」と思って実際にやってみたら想像以上に良かったわけです。スライドだけの配信と見比べて全然見栄えがするし、なによりやっていて楽しいんですね。話者の身振り手振りといった言葉以外での表現というのはやる方も楽だしスライド映像だけの時と比較してその力も圧倒的に大きいとしか言いようがないわけです。

f:id:dambiyori:20181021211404j:plain

 実は以前からスライドをどこかに投影してそれを説明している様子をカメラで収録するような形の配信はできないだろうかと考えてはいました。ところが「それなりの大きさのスクリーンにプロジェクタでスライドを投影してその前に立って話をする様子をカメラで収録」みたいな事、実際にやろうとするとかなりの大ごとになってしまいます。
 まず、ちょっとした会議室程度のスペースを撮影スタジオとして整えることが必要になるでしょう。話者とスライド画像を綺麗に映像にするには照明やカメラの調整も大変そうです。しかもこれらを一人で配信中に操作しないといけないし、そもそも顔出しの配信を行うこと自体の敷居の高さはなかなかの物です。
 以前から「with Dam☆Night」というダムについてのトークイベントのネット生中継をやっていたので、だいたいどれくらいの手間が必要なのかはおぼろげながら見当がついて、あれをやってさらに話をするという一連のことを一人で行うのは相当厳しいなという実感がありました。

f:id:dambiyori:20181021210737j:plain

 そういった困難をバーチャルキャストは見事に解決してくれます。バーチャルスタジオ内の移動はコントローラーの操作で行えるため、リアル空間上のプレイエリアがそれほど広くなくてもどうにかなってしまいます(とはいえ、広いのに越したことはないですが)。僕はOculus Riftを使用しているのですが、自室のPC前にある大体1.5m四方くらいの空間でVR空間に作られたスタジオの広い空間を行ったり来たりすることが無理なくできるんですね。しかもソフトをセットアップするだけでカメラやライトの設置や調整みたいなややこしいことが一切いらず十分に見やすい配信画像を得ることができるわけです。
 バーチャルキャストというサービス、このバーチャルスタジオとしての作り込みが現時点でも非常に良く出来ていてVRに関する知識や技術を必要とせず、しかも一人で全ての操作を行うことを前提に作られているので、かなりのことが無理なく手軽に出来てしまって本当にびっくりします。
 さらに、アバターによる動画出演なので自分自身のリアルな姿を出さずに自分自身を動画に落とし込むということができるわけです。「VRによる撮影に使える広いスタジオと自由に選べる自分の姿による放送の実現」というのはいろんな手間や覚悟を決めなくても実質顔出し動画のメリットを享受できるという、ある意味「顔出し動画の民主化」とでも言えるような状況が実現されているのではないでしょうか。


 いろんなものが電子化されることにより得られるメリットっていうのは二つの方向性を持っているように思うのです。例えば、電子楽器が作られたことによって、テクノミュージックのような今までなかった新しい音色による新しい音楽が生まれる一方、カラオケの伴奏を音源装置一つで肩代わりできるようになるようなオーケストラの代替の存在になり得るという価値を生み出しました。
 VTuberの場合も同様に、まずは全く新しいバーチャルタレントとでもいうべき存在を生み出されたという部分が現時点でクローズアップされていると思います。しかし、特段新しい人格を創造したキャラクターを作ったりしなくてもアバターを使ってVR空間にスタジオを作って動画や生配信を行うというのは従来個人では難しかったことを実現させる手段として大きな可能性があるように思えるのです。


バーチャルキャストを使用するにはハイエンドPCとVR機器が必要ということで、まだまだ導入するのは手軽とは言い難い感じではあります。しかし、この一連の技術というのは、今時点でVTuberという言葉で括られる印象以上に、もっと広い領域で使われる可能性を秘めているように思えるのです。少なくとも、今まで講座動画や生放送みたいなものを作ってた人、これ使えるよ!って声を大にして言いたいのです。


※.ちなみに、バーチャルキャスト登場以前からある特定のテーマや学術領域に関してのVTuberなどの活動をされている方が「VRアカデミア」という概念を提唱されています。

VRアカデミア

ダムアイコンに目的表記を追加 (DamMaps新機能)

DamMaps version1.3.4
http://dammaps.jp/

久々DamMapsの新機能です。
今回リリース機能は

  • ダムアイコンにダムの目的表記を追加

です。
ダムのアイコンを見ただけでそのダムがどんな目的で作られているのか見分けられるようになります。
f:id:dambiyori:20171007190220p:plain
一応この並びには意味があって、まず治水は縦線、利水は横線になってて(水を止めるのと流すののイメージ)Pは電気は天井にあるから、WIAは上に行くほど水を綺麗にしてる感じ、で河川の最低限の流量維持するっていうことでNが下、ってなっています。
アイコンにダムの目的を表示したい、っていう思いはずっと持っていたのですけど、小さなアイコン上にどうやったら分かりやすく表示できるかっていうところでうまいやり方が思いつかなかったのですが、とりあえずこれならいけそうっていう形ができたので今回実際に実装してみました。実際使っていただいての感想などお寄せいただければありがたいです。
というわけで、どうぞよろしくお願いします。

夏コミのご案内 #C91

夏コミサークル出展します!

サークル名:ダム日和
コミックマーケット91 12日(2日目)東ヘ54a
※.ヘはカタカナです。東5ホールにあります。
https://webcatalog.circle.ms/Circle/13316957

新刊はこちらです。

f:id:dambiyori:20170731204718p:plain
私立荒玉女子高校 ダム部 活動日誌 vol.4 -ダムマンガ聖地巡礼ガイドブック-
A5横カラー26P
頒布価格:600円

ダムマンガ聖地巡礼ガイドブックの4冊目、ダムマンガの最終巻である4巻に対応しています。単行本の完結に遅れること1年、なんとか僕もゴールにたどり着くことができました。このために春先台湾に行ってきたよ。
このほかに既刊の

をご用意して待ってます!

加治川治水ダムの事故

きちんとブログにまとめたいところなのですが、色々あれこれあってちゃんと調べてきちんとしたブログ書ける個人的な余裕がないのでとりあえずTwitterに投稿した現時点で僕が思ったことをまとめて置こうと思います。
今日のニュースで新潟県知事により規定から外れた操作がされたとする見解が示されたようですが、投稿の内容はその当時の報道などを元に書いていることをご留意ください。

2017年6月19日投稿







2017年6月19日投稿





これから、夏に向けて各地のダムでいろいろなイベントが計画されていると思います。今まであんまりこんなことを考えたことなかったことではありますが、ダムに興味を持つ人が一昔前とは考えられないほど増えている現在、どうか安全に楽しく周囲にも理解されるイベントが行われることを願っています。

6月26日追記

新潟県から詳細な事故の報告が公開されました。
www.pref.niigata.lg.jp

冬コミのお知らせ

直前になりましたがコミックマーケット91に出展します。

コミックマーケット91 30日(2日目)東k06a
https://webcatalog.circle.ms/Circle/13007219

今回新刊が間に合わず既刊のみとなります。すいません。

で、なにもないのも寂しいので高圧/低圧受電ポストカードを作りました。
f:id:dambiyori:20161227230223j:plain
四軒となりのソラパネさんの中にある電柱の図のポストカードです。当日無料で配布しますので是非お気軽にスペースに立ち寄りください!

悲しくてとてもヤリキレナイ川 - 国土数値情報の流域メッシュデータ処理に関するバッドノウハウ

この記事は
FOSS4G Advent Calendar 2016 19日目の記事です。



日本全国の河川とその流域を地図に表した「DamMaps:川と流域地図」という地図タイルを公開しています。去年の秋口に思いつきで作り始め、今年の初めにVersion1.0を公開することができました。

この地図タイル、国土交通省が公開している国土数値情報のデータを利用しています。地図タイル制作の全体的な話は以前ブロクで書いたのですが

dambiyori.hatenadiary.jp

shapefileという標準的なデータ形式で配布されており、またFOSS4Gの各種ツールが揃っているので、「データ全部読み込ませてちょこちょこと設定したら完成!」くらいの気持ちでいました。ところがデータに起因するあれこれで落とし穴があって大変だったという話を書いてみたいと思います。

消えないヘアライン

川と流域地図の最も重要な要素である流域は、国土数値情報の「流域メッシュ」のデータをもとに作成しています。これは「3次メッシュ1/30細分区画(100mメッシュ)」と呼ばれる日本列島の緯度を3秒間隔、経度を4.5秒間隔で区切り、それぞれがどこの川の流域に属しているのかを表したデータで、一つ一つのメッシュをその四隅の経緯度を持った方形の地物の集まりとして表現されたデータになっています。
ただ、地図タイルをつくるにあたっては、同じ流域のメッシュはくっつけて一つの地物としてまとめておきたいため、QGISの空間演算ツールにある「融合(最新の2.18.1ではDissolve)」という処理を行うのですがどうも上手くいかないのです。
具体的にどんな風になるかというと、
f:id:dambiyori:20161217212424p:plain
※国土数値情報「流域メッシュ(JPGIS2.1)」により作成
グリッド状の細い隙間ができてしまうのです。試しにもう一度融合処理を行ってみたりしても一向に消えてくれない。さらに、データによっては融合処理がいつになっても終わらないという事態に陥ることもある始末。
これは一体なんなのか。結論からいうと、これは配布されている国土数値情報の流域メッシュのshapefileのデータの経緯度の精度が悪いことに起因していました。前述の通り流域メッシュの区画は経緯度を等分割したものでキリの良い数字になるはずなのですが、小数点第8位以下くらいからおかしな値が入ってる。
なので、小数点第6位くらいで丸めてあげたら見事に融合できる流域メッシュのデータが出来上がります。例えばQGISで流域メッシュのshapefileをgeoJSON形式に変換して出力、その後にrubyで書いたこんな感じのプログラムに通してあげれば上手くいくデータが吐かれます。

require 'json'

j = JSON.parse($stdin.read)

j['features'].each do |feature|
	feature['geometry']['coordinates'][0].each do |coordinate|
		coordinate.collect! do |v|
			v.round(6)
		end
	end
end

print JSON.pretty_generate(j)

調べてみるとJPGIS版のXMLデータでは経緯度が正しいようなので、どうやらshapefileの変換に問題がありそうな気がします。

不完全な河川名

流域メッシュのデータはメッシュの流域がどの河川のものなのかを表すデータとしてコードと名称をそれぞれ持っています。ところが全ての河川にユニークなコードが振られているわけではなく、一部の川が単一のコードにまとめられてしまっているようです。なので流域を分類するには河川コードだけではなく名称も使用しないといけなくなるのですが、この名称の精度が悪いのです。
どんな感じなのか説明するとメッシュによって名前の前の部分が途切れてたりする。例として処理に使用している河川名を集計したデータをあげると
f:id:dambiyori:20161217232740p:plain
と、こんな感じ。
北海道にあるヤリキレナイ川はコードが振られているものの
f:id:dambiyori:20161218091237p:plain
ただの川。
一体何がどうなるとこんなデータになるのかよくわかりませんが、仕方ないのでDamMaps:川と流域地図では後方一致で河川名同士を比較して文字数の最も多いものを河川名として採用するという名寄せ処理をしてます。
その他にも
f:id:dambiyori:20161217233547p:plain
※川と流域地図(国土数値情報「流域メッシュ」「河川」「湖沼」国土地理院 地球地図日本「行政界」により作成)
おそらく間違っていると思われるこんな感じのポツポツとごま塩降ったように分布するノイズのようなデータが場所によって含まれていたりしてどうにかしないとなーと思っているんですが1年経ってしまいました。どうにかしなければ。

というわけで、日本国内をほぼカバーする流域のデータの存在というのは大変素晴らしいですし、これがなかったら個人でこんな地図タイルの制作と公開なんてできなかったわけですけど微妙に精度が悪いという話でした。公開ページに記載してますが、「国土数値情報は国土計画関連業務のために作成されたデータが副次的に公開されたものであり、国土計画関連業務に差しさわりがない範囲で時間的、位置的精度において現況と誤差が含まれている」ということなのでこれが間に合っているデータ精度ということなのでしょうか。
っていうか、こんなバッドノウハウを書いて公開してる場合じゃなくて公開元にフィードバックするべきじゃないかという気がしてきたのでとっととメールしようと思います。

「春の小川」にコイキングが泳ぐ?! - 渋谷のコイキングを調査してみた その2

「春の小川」にコイキングが泳ぐ?! - 渋谷のコイキングを調査してみた その1からの続きです。

9月13日に追記しました

f:id:dambiyori:20160908005709j:plain
渋谷の街の中を歩き回ってみたところ、確かにかつての川の跡の上でコイキングがビチビチ跳ね回っている様子を実際に目の当たりにすることができた。しかし「コイキングは水辺に出現する」ということが正しいのなら、かつては川だったとはいえ、なぜ現在の渋谷の街に現れたのだろうか。

まず最初に思いつくのは、わざと出現させたという身も蓋もない話である。確かに渋谷の街の地下には川が流れているという話はかなり有名なのでそれにちなんでこっそり仕込んでおいたなんていうことはありそうな話ではある。しかし、そういう理由でコイキングをだそうとすれば「春の小川」の歌碑が建立されている河骨川沿いにまず出現させようとするんじゃないだろうか。ところが実際に行ってみると鉄道の線路沿いというのを差し引いても歌碑周辺はコイキングが出現する様子ではなかった。

では一体何がコイキングを渋谷に呼び寄せているのだろう。ひょっとしてリアルな渋谷の街中に川を見ることはできないけど、例えば地図には何かしら記載されていてそれがコイキングを出現したりしているのではないだろうか。
というわけで、国土地理院の提供する地理院地図の電子国土基本図で渋谷周辺を見てみる。

地理院地図 渋谷駅周辺

ご覧の通り、渋谷川の開渠部分のみが地図上に記載されており、暗渠部分は全く記載されていない。
ではGoogleマップならどうだろうか。

Googleマップ 渋谷駅周辺

やはり同様に稲荷橋より下流の開渠部分のみが川として表されていて、暗渠部分は地図上に一切記載がない。っていうか、そもそもポケモンGOのアプリのプレイマップ上の表記がこうなっていた。ということで、地図表記上に原因を求めるのも脈がなさそうである。

では、ポケモンGOはなにをもって渋谷の川を判断しているのだろうか。考えてみた結果がこれである。
f:id:dambiyori:20160908004235j:plain
これはJAXAによって無料公開されている「ALOS全球数値地表モデル (DSM) "ALOS World 3D - 30m"」というデータを使用して作成した渋谷周辺の標高を表した地図である。白黒の濃淡が標高を表していて色が白くなるほど標高が高いことを示している。

そして、ポケモンGOはこの地形データから自前で川を算出することによりコイキングコダックの生息域を設定してるように思えるのである。

もっと詳しく見ていこう。
f:id:dambiyori:20160908004345j:plain
先ほどの地図にOpenStreetMapのデータや地名を記入したものである。渋谷の街に刻まれた谷状の地形にそって道路などが走っている様子が見て取れる。

さて、GISツールと呼ばれる地理情報を扱うためのソフトウェアを利用すると、こういった地形のでこぼこのデータをもとに流域や川筋を算出するなんていうことができたりする。

Q:簡単に流域界データをつくりたい | giscience.jp

の記事を参考にしてデータを作成してみた結果を合成してみるとこんな感じになる。白い線が算出された河川の流路、オレンジ色の線が雨が降った時にそこに流れ込む場所である流域の境界を表している。
f:id:dambiyori:20160908004441j:plain
注目したいのが駅周辺の様子。この「ALOS World 3D - 30m」というデータは「数値表層モデル(DSM)」と呼ばれるデータで、建物や樹木など地表の事物も含めた標高が記録されている。(参考測量に関するミニ知識|国土地理院)そのため、渋谷駅周辺の高いビルがそのまま標高として地図上に現れてしまい、算出された川が駅周辺を蛇行するように流れているようになってしまっている。現地でコイキング探しをしてみると駅周辺だけなぜかコイキングが現れなかったが、それがこのデータを利用してる証左にならないだろうか。

では、なぜポケモンGOはわざわざこんなことをしているのだろうか。それはポケモンGOのサービス対象エリアが特定のある一国を対象にしているわけではないからじゃないだろうか。

日本の場合、国土地理院によって全国をカバーする地形図が作られていて、さらにそれの電子化も強力に推し進められている。また国土数値情報のような各種の電子化されたデータが無料で公開されていたり、おそらくお金を出せばもっといろいろなデータを手にすることもできるだろう。

しかし、リオオリンピックに合わせてブラジルでポケモンGOのサービスが開始されたことがニュースで伝えられたように、おそらくポケモンGOは最終的に全世界をサービスエリアとしてカバーできるようにすることが求められ、また目指していると思われるのである。

ところが地図の整備状況やその電子化の状況というのは地域によって相当に差がある。日本のように電子化された地理情報が整備されて容易に手に入れられるような地域は世界の中ではかなり稀な状況といえるだろう。

その様子は実際にGoogle Mapsでうかがい知ることが出来る。試しに日本とブラジルで同一レベルの地図を表示してみよう。

Googleマップ 日本の地図

リンク先の日本の地図では支流の小さな河川まで表記されているのに対して

Googleマップ ブラジルの地図

ブラジルでは衛星画像でみると明らかに河川のようなところも地図には川として表示されなかったりする。

このような状況下において全世界で同じようにゲームを行えるようにするためには全世界同じようなレベルで提供されているデータを利用するしかない。幸い、先ほど使用した「ALOS World 3D」などの標高データはほぼ全世界をカバーするような規模で提供されていて、これを利用して自分で川筋を計算すれば、全世界の中小河川までカバーできる河川の地図を得ることができるだろう。コイキングコダックといった水辺のポケモンの生息域を表現することも可能になる。ただ、この方法では渋谷のように川底が暗渠化されたなんていう情報は得ることができない。そのため、今は消えてしまった川筋にコイキングが跳ねまわるなんていう椿事が起こったんじゃないだろうか。

ところでポケモンGOのゲーム中の位置情報の取り扱いを注意深く見てみたとき気づいたことがもう一つある。それは「ポケモンの巣」の設定方法である。

ポケモンGOのゲーム中でレアなポケモンはある特定の場所のみに出現するようになっているようで、そういった場所が「ポケモンの巣」と呼ばれていたりしているようなのだが、どうやらそれらは必ず公園の中になるように上手に設定されているようなのだ。ポケモンGOのサービス開始以来、世界各地のゲームに興じるポケモンプレイヤーの熱狂ぶりを伝えるニュースを幾度ともなく見聞きしたと思うけど、人が集中して大変なことになっている場所はキチンと公園になっているようなのである。つまり、ポケモンGOゲームエンジンポケモンGOが安全に遊べる広場のような場所をきちんと把握できている可能性が高いのだ。

これは、日本国内だけで実現するのならそういうデータはどこかにありそうである。しかし、全世界で同じようにやろうとしたらどうだろう。かなり難易度の高い作業なのではないか。しかし、事実としてそれを実現してしまっているようである。一体どのように実現しているのだろうか。

一つ考えられるのはIngressのゲームデータの活用できるる。ポケモンGOのポケストップはIngressのポータルのデータが流用されているという話は有名である。だが実際はもっと深い部分でIngressのプレイ情報がポケモンGOに活用されていたりするように思えるのだ。「ポケモンの巣」の設定も、Ingressのポータルの密度や移動速度が一定速度以下のエージェント(Ingressのプレイヤー)しかいないまとまった領域みたいな基準で算出するなんてくらいのことはしているんじゃないだろうか。

ポケモンGOといえばポケモンという強力なIPとAR要素がまず注目されがちだけど、位置ゲーを全世界で同一ルールで提供できる技術や体制というのは一見地味だけどかなりのものにみえるのだ。これは本当にちょっとやそっとじゃ真似できない気がする。

まあ、なにはともあれ、「かつて文部省唱歌として歌われ高度経済成長によって失われた川が、グローバル企業のグローバル戦略によってうっかりその姿を現してしまった」としたら、なにか虚をつかれたような驚きと不思議さがあってすごく面白いなぁと思う。また、こんな風に地形が思いもよらない形で表現されている可能性を見るに、地図や地形の表現というのはまだまだ色んな可能性があるなーなんてしみじみ思うのだ。

追記(2016年9月13日)

と、なんとかブログにまとめてホッとしていたのですが、衝撃的な情報が飛び込んできました。

結論からいうと、「ポケモンGOOSMに掲載されていた旧渋谷川水系に由来する暗渠の情報に基づいてコイキングを表示していた」ということのようなのです。

具体的にはまず「ポケモンGOポケモンの生息域を作り出すのにオープンストリートマップ(OSM)の情報を利用している」らしいということです。
詳しくは
pokesoku.co
をお読みいただけばと思いますが、OSMの地物の属性情報を基にして出現するポケモンの確率が設定されていたみたいなのです。

さらに、「OSMには渋谷の旧河川の暗渠の情報が登録されていた」というもう一つの要因が渋谷の街の中にコイキングを発生させたといえるでしょう。

国土地理院の地形図をはじめ一般の地図には旧渋谷川の暗渠は描かれていませんが、OSMの場合誰もが自由に地図を編集できるため、誰かが登録すればそれはOSMのデータとして登録されることになります。

OSMについて不勉強なためきちんと正確なところは説明できないのですが、

宇田川遊歩道から代々木八幡あたりのオープンストリートマップ

をごらんになると分かる通り、OSM上に旧渋谷川水系に由来を持つ暗渠が川として登録されているようで、そのためにポケモンGOゲームエンジンは川に現れるポケモンを出現させたということになるようです。また、地図はGoogleマップを利用して表示していると思われるので、地図上の川の表示と一致しない、ちぐはぐなことが起こったということになるでしょうか。

また、渋谷以外にも立会川の暗渠でコイキングが出現するっていう話を前に目にしたのですが、こちらも今確認してみると、確かに水路が描かれています。

大井町そばのオープンストリートマップ

というわけで、ほぼ間違いなくこれが正解だと思われます。まさか、こんなはっきりと結論がでるとは思ってもみなかったのでびっくりして拍子抜けしてしまったのですが、まあ、確かにOSMは全世界をカバーする取り扱いが一番容易な情報ではあるでしょう。でも個人的にはもっとなんだかびっくりするような方法でゲームを実現してて欲しかったなぁとかなんとか、って、まあ、個人の勝手な思いですが。