Pythonと本と子供と雑談と

いつからはじめても遅くない

Pyconjp2019で「Dashとオープンデータで日本経済をインタラクティブに可視化する」というトークしたことに関するメモ

TLDR

Pyconjpにトークが初応募で初採択されました。私は年初の目標に掲げてたので、めっちゃ喜びましたが、ほかの人に言ってもあっそ的な反応だったのがちょっとあれでしたwww。Pyconjp前にリンゴ病となり、3週間倒れたのはつらかったです。はい。

閑話休題トークのCFPは、これまでのトークの傾向を見て自分が向いていると思う方を選択し、少しほかの人はしなさそうなことを書きました。

トークの内容は、広い世界に目を向けようという隠れたテーマを持たせたいと考えました。私はもともとプログラマではないのですが、どうしてもプログラミングなどをしているとPCがつながっている世界のみしか考えなくなりがちだからです。そのため、プレゼンは徐々に視野が広くなるような作りにしました。

あと私は緩い感じの人間なので、緩い話としっかりした話を交互にするように作りたいと考えました。自分の緩い部分を出しながら、一方でしっかりしたメッセージが出せるように心掛けました。

ちなみに資料は以下の通りです。github初公開。といっても、もともとあったのですが。

普通のウェブのように作ろうかとも思ったのですが、今回はプレゼンテーションをDashで作るというコンセプトがあったので、プレゼンツールで作った資料のようなものにしました。そのせいで移動の仕方が分からないとかいろいろ意見をいただいたので、また分かりやすく使えるように作り変えたいと思います。

一先ず現時点で思い出せることを書いておきます。忘備録的なものとして、そして今後の自分の発展のために。考え方はどんどん変わるので、ここに書いたのは現時点の考えで、今後ガラッと変わることがあると思います。いろいろ思いついたときは、ここに追記していきたいと思います。

CFPの作成

CFPを作成するってのがまずは全然わかりませんでした。どう作ったらよいのやら。というわけで、前年のトークのCFPをいくつか見て、しっかりと作られているものをピックアップしました。PEPを可視化するのfurukiさんのCFPなど、しっかりと作られているものが分かりやすくて良いなと思いました。具体的なイメージも添付されていたことから、私も以前に作成したDash全体を解説したプレゼンを参考資料として掲載しました。

その後、複数の方が本年度用のCFPを公開されていたので、そちらも参考にさせていただきました。時間の選び方は45分は昨年の傾向を見ると採用される確率は高いけど、強い人が多い。またそれほど話すことがないかもしれない。しかし、15分は短い。というわけで競争は激しいけど30分にしようということで決めました。結果、45分の方が応募が多くなり、30分の方が採択確率が高かったわけですが、それでも18%なので、かなりの試練であるといえます。来年はもっと競争率が上がるでしょうね。今年のスピーカーTシャツを大切にします。普通のTシャツは、あの後ご飯を食べに行った友達にあげましたw

あと、過去のトークを見ていると内容は2つに分類できるように思いました。1つはしっかりとライブラリなどを紹介するもの。もう1つは狂気を持って何か作るというもの。私は後者な発表を聞くのが好きなので、自分もそちらにしようと思いました。Dashはかなり興味深いウェブフレームワークなのですが、その辺は結構Qiitaとかに書いたので、その辺は興味を持った人は調べてくれるかなと思い、思い切って「バッサリ」カットしました。

今年のCFPもpyconjp2019のサイトに出ています。今回、レビュアーの方と話させていただく機会があったので、いろいろお話を聞きましたが、CFPをしっかり作るという以外に採用される道はないことが分かりました。あと、話す内容がその時点で具体的でない場合、ダメだそうです。

私の場合、強みは他分野の知識プラスデータ分析だったので、その辺が目立つかなぁという感じに書きました。それが良かったのかは謎ですが。

内容に関して

発表に関しては、そのころに興味のあるものを全部盛にしたものをタイトルとしました。語りたかったことは、

  • データ分析
  • 可視化及びDash
  • 日本経済
  • オープンデータ
  • エモい部分

でした。エモい部分は何か印象に残せればなと思い、少しチャレンジングな話をしました。

最後の部分のチャレンジ

最後の部分で今回のプレゼンで触れなかった車の運転の記事を持ち出しました。うまい運転のために重要なことは「人をいたわるかどうか」という、技術とは関係がないことであること。そしてそれがデータ分析も言えると思っていること。そして、「無意味な広告を踏ますのもデータ分析、社会をよくするのもデータ分析。どちらをするか。選ぶのはあなたです」という形で話をぶつっと終えることで、エモい部分をちょっとでも考えていただけたらなと思いました。もちろん「相手をいたわるかどうか」ということはすべてに通じることであって、社会がある限り、そこに生きるものが人間でなくても永遠に必要な部分ではないかと思います。

データ分析というと、アルゴリズム議論で終わりがちなわけですが、徐々にそのような点以外にも、最近は道徳的な部分にフォーカスが集まりだしています。例えば自動運転などでも少し話題になってきていますが、車が事故を起こしそうになった場合どうするか?などです。

今回も話していて話題になったのですが、ルールのある箱庭でのデータ分析と、ルールがなく予想がつかない世界でのデータ分析は全然違います。そのような世界をどのように想定しておくかというのは、今からやるべきではないかそのように感じます。そんな世界作るために人間はもっと成長する必要があるというのは間違いないような。

ほかにもいろいろことがあると思いますが、そのあたりをデータ分析をやっている人が多いPyconjpという場で話すというのは、1つ興味深いことであるということで、エモい部分を入れました。

5つの話題を入れるために

プレゼンでは先にあげた5つの点をすべて入れました。かなり散漫な印象を受けられた方もおられるかもしれませんが、自分的には詰込みがひどいわりにすっきりとしたものに仕上げられたかなぁと思っています。

話の構成的にはクイズで皆さんに意外に経済って面白いけどよくわかっていないと思っていただき(新聞を毎日読んでいても全問正解は難しい感じに作成しましたw)、Dashについて知ってもらい、データ分析の問題点を解決できるのではないかという提案を行い、ちょっと詳しめに経済を見て、最後にエモい話をして余韻を残して終わる。そんな感じに作りました。残念ながら私がプレゼン下手なので、うまく表現できなかったなと反省してます。なのでこれを書いているというのもありますw

あと視点を徐々に広げていくという試みを行いました。クイズの後、フレームワークの話で視野を最小のところに持っていき、そこから地図を出して現実世界を少し意識してもらって(残念ながら1つうまく動きませんでしたがw)、日本経済を見る部分で日本を考えてもらい、最後のエモい部分で広い世界を考えてもらえたらなと。そこまで考える人はたぶんいないでしょうが、サブリミナル的に効果があるかななんて考えましたが、いかがだったでしょうか。

あとPyconjpのビデオがあまり見られていないということが分かったので、アプリケーションはトークを見ないと全然動かせないように作りました。動かないけどどうなっているのだろうとyoutubeをみてもらったら、動かし方が分かるとか思っていたのですが、今から考えるととんでもない仕組みなので、のちほどアプリケーションに使い方を補助するコメントをつけようと思っています。

データが中立に見れるように

データを見る部分に関しては、みんなが中立にみられるように作ろうと考えました。プレゼンで話すには、自分がデータを見て思ったことを話さないと、プレゼンにならないというのがあります。「データが4つあるのでみんなで5分黙って使ってみましょう。皆さんどう感じましたか?」といってやっても良いかなぁと思いましたが、それではたぶん面白くないので少しデータを私が見て思ったことを話すながれにしました。

一方で、このようなデータは皆さんが見てどう思うかということが重要であると考えているので、今後作る際は使い方を分かりやすくすることを心掛けながら、中立的な資料としてバイアスを与えないものを作ることを心掛けたいと思います。

没ネタ

今回の発表にあたって、実は発表にあったこと以外にもいろいろと書いたり調査したりしました。しかし残念ながらすべては話せていません。どうしてか?そうすると、30分に収まらなかったからです。当初作ったのは、原稿にして1万文字くらいの作品でした。普通の人が話す基準は1分間に250文字なので、40分です。止められて終了です。そこで削りに削りました。そうするとちょっと質問時間を残して終了できるプレゼンになりました。最後の皆さんを映すってのがどうしてもやってみたかった。これはどのトークか忘れましたが、TEDのトークからインスパイアされました。

ここからは削ったものをあげていきましょう。

アラフォーのおっさんがプログラミングを初めて4年くらいでトークに選ばれた話

私はナチュラルボーンプログラマーではなく、4年くらい前にプログラミングをはじめ、それで今回トークさせていただきました。「みんな頑張ればいけるぞ!」という話をすることにしようかと思いましたが、若い人が頑張ってプログラミングはじめてエンジニアになったという話は、みんなウルウルで頑張って!!!という応援したい気持ちになるでしょうが、誰もおっさんの暑苦しい泥くさい話なんて聞きたくない。ということでカットしました。

でもおっさんも頑張ってプログラミングを始めてほしいという思いはあって、なんかできればいいなぁと最近思っています。

可視化はデータ分析の一部ですという話

これは常識かなぁと思って外しましたが、そのあたりの知見を持たれている方と話していると、どうも常識ではなく、現場では結構問題になっているようなので、ちゃんと資料に入れるべきだったところかなと今は反省しています。

機械学習とかディープラーニングとか学校でも教えてるよなということから、まぁこういうことは常識化しているのであろうと思っていましたが、そうでもなく「学校ではモデルにいきなりデータを食わすとこから説明がスタートします」というお話をお聞きしてまじかという気持ちになりました。

データ分析の流れとしては

  • 問題を定義する
  • 利用データの前処理
  • 可視化してデータを見る(特徴量の選択)
  • データ分析で使いやすいようにデータを処理する
  • モデルを選択し、データを食わす

というような流れになっております。

というわけで、可視化はデータ分析の最初の方に出てくる必須作業で、これを行ってその後の分析を進める上でどのデータを使うかとか考えたりするところなのです。

実世界で強い人に聞いてみると、可視化でよいデータがなかったら、モデルにどんだけ力を入れてもあまり良い結果が得られないとかって話だったりします。

世の中にはモデルを語る本にあふれていますが、いざ使ってみようとすると、pandasが使えないと自分で作ったデータがモデルに入れられんとかなったりするケースがあったりするみたいですね。

Pandasでのデータ加工のつらみ

先ほどのデータ分析の流れでいうと、可視化の前の部分の利用データの前処理というところです。オープンデータの前処理ははっきり言ってつらい。以前もお話ししましたが、Excelで作られているものは、15年くらいのデータを加工するのに、1日半くらいかかるなんて当たり前だったりします。でも、オープンデータも日に日に扱いやすくはなっています。データ加工のつらみはCFPにも入れていたわけですが、これもまぁ当たり前かということと、ネガティブなことはあまり話さないというのが、最初のトークの目標にあったので外すことにしました。

今回のトークは「ファクトフルネス」と「やばい経済学」の二つをまぜこぜにして、そのうえでDashに関してもちゃんと話すというのがコンセプトだったのですが、ファクトフルネスには人間には悲観的に見てしまう本能があるということで、そういう部分をひっくり返そうということもやりたいなと思っていました。

しかし、やはり私の本能のせいか、なかなかそのようなデータが見つからなかったのです。というわけで、ネガティブなことは入れないという色は、発表からはあまり感じられないものとなり、どちらかというと事実を淡々と見るという方向にシフトしていきました。

データの形の話

データ加工の話とよく似ていますが、データの形をどのようにするかという話もしたかったのですが、バッサリと切り落としました。

実はDashで可視化をはじめて、そこで色々切り替えながらどのように可視化しているのか見ていた際に、データの形が通常みるものと違うことが分かりました。それは調べるとtidy data、long form data、整然データなんて呼ばれる形であり、徐々にその形でデータが提供されることが多くなっているということもわかってきました。

人がどんな形のデータを当たり前に使っているかわからんという話を聞いて、確かに私が当たり前のようにワイドフォームデータをこれまで見ていて、それを知って驚いたというのはありましたが、普通の人にとっての当たり前は分かりません。結果、こういう細かい話をしても、8割の人が知っているという可能性もあり、それに時間を費やすよりもそれ以外のことでという考えの元外しました。

その後、話していた方とこの話になりあんまり世の中でこのことを知っている人は少ないということが分かりました。ワイドフォームからロングフォームにはpandasのmeltという関数を使えばできます。

ちなみにこの辺の詳しい話ははんなりPythonの1月にやっています。

hannaripython.hatenadiary.com

グラフの種類

最近は可視化が進化して、いろいろと斬新な見せ方があります。それだけで派手にできるのですが、逆にわかりにくくなるという面もあり、今回は線グラフ、棒グラフ、箱グラフくらいにしました。あまり見ないプロットで、それらをインタラクティブに可視化するというのも試みましたが、かっこいいけど分かりやすく作れなかったので、今回は地味だけど分かりやすくという感じで行きました。インタラクティブとうたいながら地味というのは、ちょっと期待に沿えない部分だったかと思いますが、今後新しいグラフを使ってインタラクティブかつ、分かりやすいグラフを連動させて作れるように頑張ります。

唯一これまであまり見ないもので利用したのは地図にプロットするものなのですが、これは今後のIoT大活用時代に役立つものではないかと考えており、気に入っています。plotlyではmapboxを使っていて、これがゼンリンのデータを使っているというのも、日本人には地味にうれしいところかなと思っています。活用しながら理解を深めていきたいところです。

ウェブでの共有の方法

Dashの大きなメリットは、アプリケーションを作成しウェブで共有して多くの人でそれを見て、それについて考えられる点であるというのはお話に入っていましたが、ウェブでどうやって共有するのか、実際の方法は話しませんでした。

その理由は、私のようにデータ分析にしかプログラミングを使っておらず、ウェブ全く分からないという人は少ないと想定したからでした。あと、それについて話すのはよいのですが、herokuが凄いということにしかならないなということで、今回はトークからは外しました。

実際herokuは凄くて、githubにコードをあげて、herokuにそのリポジトリを指定するとそのままウェブアプリケーションになります。すげー。最近はどのクラウドでもできることなのかもしれませんが。

自動車事故の話

なんか最近、自動車に関するネガティブな話題が飛び交っています。なので、道路は北斗の拳(ふるい)状態になっているかと思いきや、調べてみると安全になっていることが分かったので、これを話そうと思いました。いや、危険なことが起こっているのは確かなんですが、この辺りも最近みんなが録画するようになって見えてきただけで、これまでもあったと思うので。経済学というのは「やばい経済学」を読んでわかるように、なんでも取り上げられるのが良いところです。逆に何でもできる過ぎるというデメリットもあります。

資料にもあるのですが、実は日本の交通事故での年間死亡者数はピークは1970年の1万6千人、一方、2018年の死亡者数は3500人でした。これをゼロにしないといけないという課題ではあるわけですが、日本の道路は安全になっているということは、この数値を使うと確実に言えます。警察の方などは文句を言われる対象によくなりますが、実際行政は世の中を良くしているんだよというようなことを言って、後半のお金の話では税金を見て、実は税金は社会の不公平性を取り除くためのシステムで、社会の安定につながるのですよみたいな話しをしようと考えていました。

しかし、自動車事故に関していろいろと調べていると、高齢者が交通事故死に占める割合が、世界において日本がダントツで高いことが分かってきました。元の数値が減っているから、弱者である高齢者の比率が高くなるのは仕方ないのかなぁと思い、OECDからデータを取り可視化してみると、世界的な割合と比較するとそんなことがないことが分かりました。うーむ・・・。その後またいろいろなレポートを読んだりしていたのですが、結局ちょっと憂鬱になってきたので、この題材をプレゼンで取り扱うのはやめました。

これに関しては、体調が回復したらしっかり調べて、詳しくみて原因を探れたらと思っています。

タレブな話

さて今回のトークの締めの話は、全体のまとめではなく、自分の主張を行うことにしました。どうしてかというと、データ分析、もっと具体的に言うとAIが無機質、もしくは何か天から与えられたものみたいな方向に世の中が進んでいるのは、かなり危ういなという思いからでした。そして上にも書いた通り、今回は道徳的な部分を考えるというところを話しました。

もう1つの選択肢として、タレブの本からの引用で話そうかと思っていました。タレブはブラックスワンで有名になった人です。簡単に言うと、白鳥はみんな白いと思っていたら黒いのも実はいる。そんな風に世の中には不確実性が存在し、それが世間に莫大な損失を発生させうるような話をした人です。リーマンショックを言い当てたということで有名ですが、リーマンショックを当てたという部分を抜いても素晴らしく面白い思考を持っている人で、データ分析をやっている人に限らず、ご一読をお勧めします。

そのあたりを扱うのは難しいですが、そういうのも考慮して世の中を作ってほしいという思いが私にはあります。例えば「反脆弱性」にはフクシマの原発事故の話が出てきます。これまで考えていたリスクではそんなことは起こらないとされていましたが、実際には起こってしまった。これはテイルリスクを軽んじすぎたせいだと思います。考え方的には、これまで起こらなかったテイルイベントが起こっても、大丈夫なシステムを作ることが重視されるべきで、普段は大丈夫だけど、テイルイベントが起こるととんでもないことが起こってしまうようなものを、システムの核として入れてしまうのはどうかといったらよいでしょうか。

データのみを見て行動してしまうと、そのようなことが起こりがちで、未来を作るならそこを重視てほしいなという考えがありました。そういう話をしようかと考えましたが、少し考えを話すのに時間がかかりすぎるということ、あとうまく話せる自信がない、今回は採用しませんでした。ちなみにここで書いているのは正確性に欠ける私の覚えている部分を書いているので、後ほど本を通して読み正確に書きます。

id:segafrederさんから「理論やってる学者が歴史に残るけど、アマチュアのいじくり回しが実は重要な働きをしてる」という予想をいただきました。確かにそちらだと短い時間で話せて、しかもPyconjpの精神を表現できている、素晴らしい引用だと思います。残念ながら私はここを見逃していました。

この言葉はよいですね。エリックホッファーのように、学者でなくともとんでもない研究をしてしている人がたくさんいるような世界が広がるとよりよい社会世界が実現できるでしょう。逆に現在は、みんな政府に頼りすぎ(特に日本は)、というところもあると考えているので。

プレゼン後、東京から戻ってきて、connpassを見ていると「本」に関するLT会が大阪で10月初旬にあることを知りました。なので、もう少しちゃんと本を読んで、LTで面白いなと思ったところなどを話したいと思います。

yahoo-osaka.connpass.com

まとめ

さて、長々と書きました。これをすべて読む人はいないと思いますが、この時点で考えたことを吐き出して、次やりたいことに向かいます。

私も若干テイルにいるような人間なので、まぁメモ的に現在の思考を残しておくとの意図の元、この記事をPyconjpの帰りの新幹線で大枠を作りました。今後もいろいろ興味持ったことを持ったことを研究する人として、頑張っていきたいなとは思います。

さて、最後にプレゼンの話を。今回はクイズを挙手で行うということにしました。最初に参加できるところを作ると、プレゼンも聞いてもらいやすいということを知っての試みでした。全然参加してもらえない可能性もありましたが、ほぼすべての方に参加していただけたのがうれしかったです。いやーほんと想定外でした!

一方で、Devon5参加者0だったのも想定外で、かなり動揺しました。私の想定問答集では最低1人くらいは参加する人がいるよね~。ってことになっていたからです。ブロックチェーン脳になっているのを初めて自覚しました。

プレゼンは皆さんにとってどうだったかわかりませんが(すみません)、私にとってはよい経験になりました。プレゼン力を鍛える必要も痛感しました。今後も何らかの形で、pyconjpの発展に協力できればとも思います。 また何か面白いネタがあればCFPは出してみたいですね。来年はなさそうです。

最後に運営スタッフの皆様、素敵な会をありがとうございました。