Pythonと本と子供と雑談と

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

PlotlyとDashの本を共著で執筆しました(事後報告)

12月1日に共著で執筆させていただいた「Python インタラクティブ・データビジュアライゼーション入門」(ハッシュタグ #plotlydashbook )が発売されました。まずは、共著者のdrillerさん、komo-frさんにはお世話になったお礼をのべておきたいとおもいます。

「ありがとうございました。」

またレビュアーのみなさま(kozo2さん、soogieさん、tsjshgさん、yutakanzawaさん)、朝倉書店のみなさまにも大変お世話になりました。

「ありがとうございました」

これからもお世話になります。よろしくお願いいたします。

本書に関して

PlotlyDashをご存じない方に解説すると、両方ともPlotly社が作成したPythonから使えるパッケージです。Plotlyはグラフを作成するためツール、Dashはウェブフレームワークです。

Dashの特徴は、Plotlyが直接使えるようになっており、動的なウェブアプリケーションを作成できることが挙げられます。また、React.js、Plotly、Flaskを組み合わせて作られており、PythonのReactラッパー的な存在であると思います。Reactはちょっと難しいなぁと思われる方が、ちょっとこれでどんなものか試してみる的な使い方もできるのではないでしょうか(実際、本ではかもがわの鳥たちの画像が切り替わるだけのアプリケーションを作ってそのような面をとりあげてみました(下の動画))。

本書のターゲットはデータ可視化を色々やってみたいけど、英語のドキュメント読んでもよくわからないという方になるかと思います。

次からは、私が思うこの本の特徴を三点とりあげます。

  • インタラテクィブ・データビジュアライゼーション
  • ネットワーク分析
  • 他技術への拡張

インタラテクィブ・データビジュアライゼーション

タイトルを見て最初に疑問を持たれるところが「インタラテクィブ・データビジュアライゼーションってなに?」という点ではないでしょうか?定義があるのか分かりませんが、「利用者が思うようにデータを見れるような可視化」ではないかと私は思います。

巷でよく見かけるグラフは次のような静止したままの動かないグラフです。元のデータは家計調査(「家計調査結果」(総務省統計局))で、100を超える項目があります。ここでは、米とパンの支出金額を線グラフで表示しています。これをみて好奇心のある人は、肉はどうなっているのだろう?とか、魚は?果物は?となると思うのですが、そういうことを知ることはできません。

Image from Gyazo

元の家計調査には100以上の項目があるのでもっと見たい!!というのがデータを生かすための原動力かつ、それが自由にできるというのがデータを生かすための必須条件のように思います。

インタラクティブな可視化だと次のようなアプリケーションが作れます。ファイルを読み込み、データがアプリケーションに反映されると、ドロップダウンから調べたいデータを選択して、線グラフとして表示する。

このようなツールがあれば、人の好奇心を刺激し、いろいろなアイデアに発展させられる可能性があります。

ここで示したようなツールがDashを使うと90行で書けます。しかもBlackでフォーマットした後の行数です(ご確認は私のgithubまで。ついでにスターをもらえると嬉しいです)。

こんな感じで、「これまで止まっていたグラフを動的にすることで、好奇心を生かしたアイデアを生み出せるツールを作る。」というのがインタラテクィブ・データビジュアライゼーションの神髄ではないかと勝手に思っています。

そして、これが簡単に作れるというのがPlotly / Dashの強みだと思います。先ほども90行とか書きましたが、次にあげるような動的なツリーマップが1行のコードでPlotlyだと書けます。複雑に動くツールは、それを使うことによって得られる知見が多いのですが、これまで作るのに時間がかかるということで避けられてきた面もあるのかなぁと思っています。しかし、Plotlyを使うと1行で書けるのでアイデアを得るのに時間が割けるという強みがあります。

あとデータ分析者としてうれしいのは、これをJupyter上から利用できるという部分です。例えば、多くのデータを見る際にちょっと文字を変更してshift+enterを繰り返していることも多いかもしれませんが、Juptyer dashをつかうことにより、マウスの動作だけでそれを動かせるようになります。

ネットワーク分析

本書の特徴としてはDash CytoScapeをとりあげるとともに、ネットワーク分析の基礎知識も得られるという点です。この部分は古木さん(komo-frさん)が書かれています。komo-frさんはPEPの可視化の人ですね。

わたしは、ネットワーク分析に関しては何冊か本を読んだ程度なのであまり書けることがありませんが、可視化ついでにネットワーク分析の基礎学べるというのは興味深いですよね。個人的に実際のデータを触りながら、何かを学習するってのは学習の近道なような気がしています。あと昨日のスタパイでは、辻先生がアルゴリズムの話をネットワークとともに話されていました(資料youtubeも是非ご確認を)。

それをアプリケーションで使えるというのもDashの強みですね。しかも基礎から学べるなんて。素敵。

他技術への拡張(Webの技術など)

この特徴はDashにあるのですが、普通データ分析をしているとほぼWeb技術に触れることはなく、ハンズオンなんかをしていてもHTMLもCSSも全く分からないという方が多いように感じます。可視化とともにその辺りに触れられるというのは良い点ではないかと思います。

データ分析していると、大体ノートブックでコードを書いて終了みたいな感じのことが多いですが、Dashを触りだすとデザインとかReactとか気になって、その辺りに関してちょっと調べてという感じになっていくと思います。

私もそのくちで、Dashを触ってフロントのことを色々知るようになり、世界が広がっている感があります。データ分析を極めるんだという方には必要ないかもしれませんが、サービスを最終的には作りたいというような志のデータサイエンティストには、これは最も良い点なのではないかと思います。

Dash HTML Componentsは全てのHTMLタグをカバーしており、それだけでもウェブアプリケーションが作成できます。そのようなものをどんどん調べていくと、いろいろなところに飛んでいけるし、無限の拡張性を持っているのではないかと思っています。

あと最近、プログラミングをやっているのであれば、マシンパワーのスケールする力(処理能力)と共に、ウェブのスケールする力を使わない手はないなと思います。

まとめ

本の特徴は以上のような感じになっています。最後の部分は私のポエムみたいになってしまいましたが、まぁそういう部分があっても良いかなと思い入れました。

本書に関しては2019年4月から1年8カ月かけて漸く出版にたどり着くという長いプロジェクトとなりました。最初、連絡を受けたのは2019年4月5日でした。その日は大阪Pythonの会があり、そこでDashに関して話したところ「これに関する本はないのか?」ということを聞かれたところで、これはマーケットが大きいのではないかと、喜んで引き受けました。あの時の方々に本が出たということは届いているだろうか?

長かったおかげでパターンマッチングコールバックが本に入れられたのは幸いでした。怪我の功名ってやつですかね。私の学習手法・および思考は雑であるため、解説の仕方という面から共著者のおふたりにお話しいただいたり、色々とお手を煩わせてしました。これを読めと「理科系の作文技術」を進めていただき読んだのは遠い昔のような気もします。終わった今、今一度読んでおくべきですね。

本を書くということも1回目はなかなかつらいですが、回を重ねるとそれも慣れてくるかと思います。まぁ何回もチャンスが巡ってくるか分かりませんがw今回の場合、自分のパートだけで1冊の本のページ数をオーバーし、その後内容を削りながら内容を大幅に変更するという、かなりタフな体験をしました。ここからいえるのは、初期段階の構想超重要ということです。

今回思ったのはレビューを体験していると、文章力も上がっていくのではないかということでした。実際、最初のころはほかの人の書く文章に特に意見はありませんでしたが、最後の方になるとこうして欲しいなということが分かってきました。なので、レビューはちょっとしたいなと思っています。

はい。というような感じの本となっております。興味を持たれた方は是非お手に取っていただければと思います。