お得意の「どっちがついでのネタかわからん」やーつ。
GitHub でプロジェクトを公開する、だとか、Gist で管理する、てほどでもない、というよりは「そうするつもりが未来永劫ない」ようなものがあるとする。まさにこの COVID-19 ビジュアライズシリーズがそうで、だけれどもスクリプトがそれなりの複雑性を持ってきてしまうと、ブログ記事にぺろっと貼り付けていくだけ、という見せ方が厳しくなってくる。
そうした場合、「zip とかのアーカイブに固めてダウンロード可能にする」というのが選択肢に入ってくるのだけれど、これは受け取り手はいいが、送り手のこちらは「作った zip ファイル置き場」の問題と格闘する必要性が出てくる。
ワタシの場合だとロリポップサーバでブログ管理しているので、そこにアップロードするのでもいいし、なんらかのクラウドストレージを使って「共有」するのでもいい。それでもいい、のだが、正直それだって「牛刀」である、今の場合。てーしたもんではないのであるから、「記事外の、切り離された場所」に管理場所があるのが苦痛である。
そういうわけで「data-uri」再訪、てわけだ。以前の話は「iframe + data-uri」。今度のは、data-uri の使い方としてはむしろ正当なやつ。てわけで、「人間には未来予知の能力はなく…ても」シリーズのスクリプトまとめ: viz_cpv19data_scratch_20210408.zip
無論サイズが大きくなってきてしまえばこういう小技は使えないが、今の場合数個のスクリプトだけが入った zip なので、こうやってブログ記事に base64 エンコード状態でブチ込んでも大したことにならない。そしてワタシ的には「記事本体と完全に一体」に出来てハッピー。(ブログ編集画面が重くなるのは多少はあるけどね。)
例によってこの<a href="data:application/zip;base64,{}">{}</a>
は(ほかの人がそうするように javascript でやるのではなく)外で python で生成:
1 # -*- coding: utf-8 -*-
2 import io
3 import base64
4
5 fn = "viz_cpv19data_scratch_20210408.zip"
6 data = io.open(fn, "rb").read()
7 print("""\
8 <a download="{fn}" href="data:application/zip;base64,{enc}">{fn}</a>\
9 """.format(enc=base64.b64encode(data).decode(), fn=fn))
さらっと書いてるけど30分ほど迷走した。「data:application/zip」部分の試行錯誤が一つ目。もう一つが「download=」部分。まぁ興味ある人は、失敗パターンでどうなるか見てみたらいいよ。
さて、その zip に埋め込んだスクリプトであるが。
最後に見せた状態からスクリプトを書き換えているが、ほぼ全体でやったのはグラフのタイトルで、「cov19viz446.py」でやったことは、予測曲線の引き方を柔軟にしたこと。前まで上げてたのは、直近のピークアウトからの「下がってく予測」だけやってたので、scipy.optimize.curve_fit が収束しなくなってたりとかしてた。まぁ本質的にはそんなに大改造はしてないのだが、「ほらね簡単でしょ」という手前、さすがにあまりにもオカシイ状態のまま放置プレイはまずいな、と思って、こうやって更新したものを見せようと思い立った。丁度「第四波」に入っていくタイミングで言いたいこともあるしね。
生成した代表的な絵だけ見せとく:
ワタシはこれらの可視化によって、「あぁ順調に増えてってる、もう緊急事態だね」と把握する。まぁ解釈は色々だろう、それはいい。見たうえでならね。
これらの絵を見せられた上でもなお「今は緊急事態などでは断じてありません」なんて発言を、「するな」と言ってるのではないのよ。基本的に総合的な情報を得たうえで、それでもなお、というなら。何度でも繰り返して言うけれど、そういうことを言う大半は「見てない」し、「見せられてない」てのが実態なわけよ。
基本的に「コロナ禍」でのメディアの責務ってのは、専門家と一般人の間を繋ぐこと、てのが本来大きいわけね。だから「教えろよ」と文句ばかり言ってる今のメディアの在り方はこれは「責任放棄」でしかないと。少なくとも提供されてるデータがあれば「7日移動平均」なんて誰でも計算できるんだから、それに基づいてグラフを書くくらいのことは「お前らでも出来る」。ところがどのテレビ報道も、それを一貫してやってきたのはワタシの知る限りほとんどなく、そして「もっとわかりやすく示せ!」と政治批判ばかりしてきた。だ~か~ら~。少しは自分に目を向けてみろ。足元をみろ。
てことをさ、ずっと言ってきたわけね、一連のシリーズで。
ただ、さすがに今年に入ってから若干テレビも色々気付き始めてきてるのかなぁ、てのは感じてる。予測を割と積極的に提示するようになってる気もするし、さすがに少しは移動平均の方に触れる機会も増えているようだし、「10万人あたり」指標の重要性にも少しだけ気付いてきているようにも見える。相変わらず「一番議論しにくいデータ」だけで騒いでるという中心は全然変わってはいないけれどもね、少しずつ良くはなってるとは思う。なんでそうなったかはわからんけれど。
とにかくね、「正しく現状把握出来る材料を提供する」ことにとにかく注力して欲しい。常にそうしていれば、「伝わる人にはちゃんと伝わる」。単に忙しいということだけが理由で「理解が遅れている人」てのはいるんだよ。「ワイドショーでコメンテーターがとてもいいことを言う」→「あのさー、その時間、働き盛りの社会人は見てねーってば…」。そう、実に伝える努力に欠けてるわけだ、各テレビ局は。帰宅すれば通常運行で緊張感のないバラエティ番組ばかりやってるわけである。だから、そのサラリーマンの家時間のうちの1時間程度の「伝えるチャンス(ニュースの時間)」に「今日は感染者100人でしたきゃーびっくりびっくり」と、現状把握にちっとも適していない伝え方ばかりされれば、その「理解の遅れた忙しい社会人」は、「今日も理解が遅れ」るのだ。
2021-04-15追記:
ほんの少しだけ拡張:
viz_cpv19data_scratch_20210415.zip
一連の COVID19 見える化シリーズでやった「月曜は報告数が少ない、のはずっと変わらずわかってるんだから、なんで毎週猿みたいに喜ぶんだバカなのか」をブチ込んだやつ。こうやって zip に固めた版に含めてなかったんで、改めて。
ワタシの「予測」は専門性の高い知恵を一切持ち込んでいない「ワイドショーと同じノリ」の、まさに「素人予測」。だから全然あてにはならないんだけれど、ただこうやってグラフの形になってれば「あぁ、そうなりそう」と誰もが納得できるはずのもの、ではあるんだよね。で、その「専門性の高い」予測は西浦さんが出したものを今朝ワイドショーが取り上げてた。ワタシのアホ予測の「一番最悪の予測」よりもさらに500人以上多い予測になっているね。大阪は5月1日に4300人超、という予測だったみたい。
なお、報道機関、特にテレビに対する不満を、もう一つはっきりさせておきたい。これを書きたくて追記を書いてる。
まず「安直な若者批判」についての批判はあるのだが、ワタシが言いたいのは「タイムテーブルをなんとかしろ」てのが根本にある。働き手がテレビを最も視聴「可能」な時間は、緊急事態であることを「隠蔽する」に足るだけのラインアップである、てことに異論あるやついる? 19~22時帯が、「最もコロナについて忘れさせる時間」としての機能を担っていて、この時間こそが「働き手と若者が最もテレビを視聴することが出来る時間」。つまり「ワタシたちメディアがこんなに一所懸命伝えているのに!」という趣旨の発言を耳にするたびに怒りを覚えているわけである、ワタシは。「あのなぁ、主婦とニートしか見てない時間にばかり「ええこと」を言って、それって何か、欠席裁判なのか、そうなのか」てことじゃねーの? 「テレビのいいことを言うコメンテーター」が攻撃する対象の「政治家」や「官僚」だって、「その時間は絶賛営業時間ですがな」。この想像力が欠けているんだよ、テレビは。
確かにテレビの影響力は昔ほどは大きくはない。けれども、最低でも30代の半ばより上の世代にとってはまだまだテレビの影響は少なくはないし、実際「ワカモノガダイスキナエスエヌエス」であっても結局はテレビから流れてくる情報が一定割合を占めている。だから「こういう緊急事態なのだから」と思っているのならば、「全世代に伝えるための工夫」をすべきである、とテレビ会社自身が考えるべきなんじゃないのか、と思うんだよ。だけどワイドショーのコメンテーターは、まるで「我々の言うことを聞いていない人々が悪者」であるかのようにのたまう。だからさ、「あんたらは聞いてもらう努力を欠いてるんだよ」。想像力不足、てことなのでは?
みたいなことをね、毎日のように思うんだ、ワタシは。
2021-04-20追記:
最近 Python 3.9 に乗り換えた作業の影響で、以前はみかけなかった Deprecation なワーニングを matplotlib から喰らうようになってたのを直そうとしてたら、「宮城と秋田、大阪と兵庫」を取り違えてしまってたことにもついでに気付き…。取り違えは、スクリプトの「pppp3.py」だけで「pppp3.py」と「zzzz.py」と「cov19vizdbltetc.py」でやらかしてたミス。
ひとまず、「さらなるより良い見える化」として「実値と東京換算両方見せる」としたくて、それを「pppp4.py」としてやってて気付いたんだよね。都道府県コードの使い方間違い。行列は 0起算、都道府県コードは1始まりなので、ていう、初心者も真っ青な穴があったら入りたい場合もある。てなてな。アホや…。
とりあえず、修正と拡張した新板: viz_cpv19data_scratch_20210420.zip
まぁワタシのアホなミスはともかくとして、大阪である。まぁ大阪はたとえば鳥取とかみたいに極端に東京より人口が少ないわけではないので、東京換算しなくてもおよそ感覚的にわかる方ではある。けどそれでもなお「昨日の新規感染者は東京で言うところの1900人でした」と伝えられれば、誰でもヤバさがわかる…てことに異論ある? ないでしょ?
この話を最初にしたときも言ったけど、なんで「10万人あたり」という指標で政府や専門家会議は議論してるのに、かたくなにテレビはこれを拒絶してるのか、てのが、ほんとよくわからん。バカなの、としか言いようがない。そのくせ「伝えろ」と文句ばかりいっちょまえなんだからさ、そりゃぁ怒り心頭になるわけよ、あたしゃ。「10万人あたり」という伝え方がインパクトにならん、という報道の姿勢なのならば、「東京換算」すりゃぁいい。計算は単なる逆数である。中学生でも計算出来る。人口比さえわかっているなら。やれよ、それが君等の仕事だぞ、と。
とまぁ、致命的なミスをしちゃったワタシが言うのはちと説得力に欠ける、のかもしれんけどね。