(時間がない人のための要約)

    対話的開発環境であるJupyter Notebookの上に
    作りっぱなしだったいろんな調査ツールをまとめたもの
    読書猿のワークベンチなのでMonkeyBenchと名前をつけた。




     探しものの際に、自分がやってる手作業のうち、ネットやコンピュータでできそうなことをPythonにやってもらえるように短いプログラムをいろいろ使い捨てして来たが、これらをまとめてJupyter Notebookのマジックコマンドにしたものである。
     


     コードの中身と簡単な使用例をこちらに乗っけた。

     http://nbviewer.jupyter.org/gist/kurubushi--rm/231f5dff7e5c6f9a50bb709e0d234dd8

    https://gist.github.com/kurubushi--rm/231f5dff7e5c6f9a50bb709e0d234dd8


     




     主だったコマンドと、どんな順番に使うかを図にしてみた。
     これは自分がどんな手順で探しものの初動調査を行うかを(そしてネット上で検索から入手までできる論文とは違った対応をしなきゃならない書籍の面倒くささを)反映している。

    MonkeyBench.png

    (クリックで拡大)



     以前紹介したSuggestmapのプログラムなど公開してほしいという声がたまにあるので、他人様に使ってもらう品質にはほど遠いけれど紹介することにする。


    Jupyter Notebookがもたらすもの

     Jupyter Notebookは元々、IPython Notebookという名前で、Pythonのインタラクティブ実行環境(iPython)をブラウザ上で実行できるツールだった。その後、Python以外の言語も利用可能になり、Jupyter Notebookという名前で開発が勧められている

    数式処理ソフトMathematicaを知っている人なら、Mathematicaノートブックのようなもの、というと分かりやすいかもしれない(実際、IPythonの開発者がMathematicaノートブックにインスパイアされたらしい ※参考 The IPython notebook: a historical retrospective)。
     Mathematicaノートブックは、プログラムが実行可能なノートのようなもので、ユーザーの入力(テキストと Wolfram コード)も、コンピュータの演算結果(数式やグラフィックなど)も、ひとつのノートの中で一括して扱うことができる。一つのノートブックの中でデータの処理から可視化、さらに文書作成までをシームレスに行えることが、Mathematica の最大のうりだった。



     Jupyter Notebookはまず、いつも使ってるWebブラウザの上で、プログラム(コード)を書いたり、試したりできる開発環境である。
     Webブラウザを使っているので、Webブラウザが扱えるコンテンツ、テキストも画像も、その気になれば動画や音声も、織り込める。Markdownでテキストを表示することも、数式を綺麗に表示することもできる。
     動作するプログラムも、その実行結果も、それ以外のテキストや画像も、動画も、インタラクティブなグラフなんかも、一括して保存し、シェアすることができる。
     例えばグラフだけでなく、グラフの元になったデータも、それを描いたコードもまとめて扱える。このことは、書いてあるコードを使って、自分の手で結果を確認したり、作り変えて再利用することができることを意味する。
     こうした特徴は、Jupyter Notebookをデータサイエンスや科学技術計算における強力なツールにしている。


    Jupyter×ライブラリ・リサーチ

     さて、ライブラリ・リサーチにJupyter Notebookを使うと、どんないいことがあるのか?

     ライブラリ・リサーチは、意義においては「巨人の肩に乗る」のに不可欠なプロセスであるけれど、作業としては大部分がお決まりのルーチンワークで構成されている。
     たとえば分野ごとに、まず当たってみるべきリソース、データベースがあり、その他押さえておくべき調査ツールがある。
     しかし、終始一貫して、いつものやり方だけで押し切れるかというと、そうでもない。事典やデータベースに当たれば解決するごく簡単なものを除けば、振り返ればなんてことのないものであっても、いくつかの(大抵は些細な)「発明」を必要とすることが多い。

     探しものとは、問いをつくり、その問いを世界に投げかけ、返ってきた結果から次の問いをつくり、……と繰り返していくものであり、その意味で対話的(インタラクティブ)な作業である。そこでは、いつでも当初は予想していなかった不意打ちが潜んでいる。だからこそ、探す前には気づかなかったことに出会い、以前とは違う自分に成り変わる契機に突き当たるのだ。

     Jupyter Notebookは、そのインタラクションを、探しものの過程と成果を(探しもののツールを作ることも含めて)、その上に展開でき、まとめて保存し、再利用できるようにする。
     Jupyter Notebookの上で作業を行うことで、たとえば辞書や図書館検索(OPAC)の検索結果が、次の作業に利用できる。
     さらに探しものの過程を振り返り、調査のPDCAサイクル回すことで、調査プロセスの品質向上から、ノウハウ化、知恵化につなげやすくなる。
     検索結果を取りまとめたり、並べ替えたり、組み合わせたりする作業も、それをめんどくさく感じて作った作業を自動化する(つまりルーチンワークをいくらか担ってくれる)プログラムも、すべてまとめて保存し、再利用できる。

     ライブラリ・リサーチ上の不満→面倒な繰り返し作業をコード化→繰り返し使いながら手直し→違うリソースに同じようなコードがたまってくる→コードをまとめる→コードをマジックコマンド化……
     こうしてできたツールを整理してまとめると、今回紹介するようなワークベンチとなる。
     
     つまり、このワークベンチ自体が、Jupyter Notebook相手に「あーもう、もうちょっと、どうにかならないの?」と嘆きと愚痴を繰り返す中で、問いを投げかけ返ってきた結果を吟味しまた思いつきをぶつけてきた、対話的試行錯誤の産物である。
     航海しながら船を改造しつづけるようなもので、この先もどんどん変わっていくことが予定されているが、とりあえず現時点のものを。


    奇特にも実際使ってみたいという人のために

     Jupyter Notebookのことをほとんど説明してないので、いくつかのサイトを紹介します。

    Jupyter Notebook 公式サイト http://jupyter.org 

    Jupyter/IPython Notebook Quick Start Guide

    nbviewer http://nbviewer.jupyter.org

     Jupyter Notebookのための共有サイト。



    ・Jupyter Notebookを使えるようにする近道はAnacondaをインストールすることですが、次のページが参考になります。


    (追記)

    Python2系で動くMonkeyBenchの他に、

    Python3 系で動くMonkeyBench3を作りました。




      AnacondaでPythonの分析環境をまとめてインストール - TASK NOTES

    ・すでにPythonを使ってる、pipも使えるという人は、次のやり方で。依存ライブラリも一緒にインストールされます。

      $ pip install jupyter

    Jupyter Notebookの起動など最低限必要な情報とともに、上と同じサイトの次の記事が参考になるでしょう。

      Jupyter(Python Notebook)のインストールと始め方 - TASK NOTES




    (追記)

    MonkeyBenchで使ってるパッケージは、ほとんどAnacondaに入っているのですが、
    ネットワーク図を描くのに使ってるpygraphvizは改めてインストールしないといけないようです。

    Anacondaでのpygraphvizインストール方法は、下記の方法を試してみてください。

    (linux, osx)
    conda install -c https://conda.anaconda.org/pdrops pygraphviz

    (windows)
    conda install -c https://conda.anaconda.org/rhishi pygraphviz

    (参考)
    https://anaconda.org/pdrops/pygraphviz
    https://anaconda.org/rhishi/pygraphviz




    ・Jupyter Notebookが使えるようになったら、以下のURLから


    (Python2系の方)

    https://gist.github.com/kurubushi--rm/e03c9b40956752ce1a3ea6e0d3bdda5d

    からMonkeyBench.pyをダウンロードして適当なところに置くか、Jupyter Notebookで(長いんですが)

    %install_ext https://gist.githubusercontent.com/kurubushi--rm/e03c9b40956752ce1a3ea6e0d3bdda5d/raw/006edbbf77c35018caeda9bea0fa190fec275f18/MonkeyBench.py

    とした後に

    %load_ext MonkeyBench

    とすれば、MonkeyBenchのマジックコマンドが使えるようになるはずです。


    (Python3系の方)

    https://gist.github.com/kurubushi--rm/6df37bbc7d0a9f4356e299a2f683a1a6

    からMonkeyBench.pyをダウンロードして適当なところに置くか、Jupyter Notebookで(長いんですが)

    %install_ext https://gist.githubusercontent.com/kurubushi--rm/6df37bbc7d0a9f4356e299a2f683a1a6/raw/85d830c1d56dc64da4e5423ef0c4168976a43d45/MonkeyBench3.py

    とした後に

    %load_ext MonkeyBench3

    とすれば、MonkeyBenchのマジックコマンドが使えるようになるはずです。



    monkeybench_install.png

    (クリックで拡大)




    Amazon関連でAmazon アソシエイト Webサービスを、図書館の蔵書確認でカリールAPIを使っているので、
    アプリケーションキーなどは各自取得して、入れてください。


     








    MonkeyBenchのワークフローとコマンド

     MonkeyBenchはライブラリ・リサーチのためのワークベンチである。
     ライブラリ・リサーチの折り返し地点まで、すなわち〈知りたいこと〉からはじめて、それに関する文献を入手するところまでを取り扱う。

     探しもののの際に、MonkeyBenchに何ができるか、どんな風に使うかについて、詳しくは先のリンクに上げた実例を見てもらった方がいいだろうけれど、主だったコマンド/機能を紹介しつつ、もう少しだけ説明してみる。

     

    予備調査

     文献を検索する前に、知りたいテーマ・トピックについての背景知識などを入手するために予備調査を行う。
     具体的には事典を引き、そのテーマ・トピックがどんな分野に属するかを知り、テーマ・トピックの言葉とともに使われる共起語や、関連語を収集する。
     こうすることで文献の当たり外れや価値を判断するために必要な前提知識や背景知識、検索に使えるワードなどの漏れを防ぐことができる。

    マジックコマンド機能
    %encyclopedia (キーワード)  キーワードについて手持ちの辞書(EPWING)とネット上の辞典をまとめて検索し、記述の短い順から並べて表示
    %refcase (キーワード) レファレンス共同データベースを検索して、レファレンス事例を収集して表示
    %thememap (キーワード) キーワードについてウィキペディアのカテゴリー情報を元に、該当する分野の階層図を作成する
    %suggestmap (キーワード) キーワードについてgoogleサジェスト機能を使って、検索で共に使われる共起語を集めてマップ化する
    %kotobankmap (キーワード) kotobankの関連キーワードをつかって関連図をつくる
    %webliomap (キーワード) weblioの関連キーワードをつかって関連図をつくる



    文献調査

     事前の予備調査が終われば、文献調査に進む。
     ネット上でできることは限られるが、それでもいくつかの目録・所在情報データベースやネット書店・通販サイトを利用できるし、それぞれのリソース/検索結果を組み合わせれば、個々のサービスではできないこともできる。

    マジックコマンド機能
    %webcat (キーワード) webcat plus minusを使って書籍等を検索して、結果をデータフレームにする
    %ndl (キーワード) 国会図書館サーチを検索して、結果をデータフレームにする。
    書籍、雑誌記事だけでなく、デジタル資料やレファレンス事例などを含めて検索できるが、上限500件の制限がある
    %amazonsimi (キーワード) アマゾンの類似商品情報を辿って、関連書を集める
    %amazonmap (キーワード) アマゾンの類似商品情報を辿って集めた関連書を、関連チャートに図化する
    %amazonPmap (キーワード) アマゾンの類似商品情報を辿って集めた関連書を、商品写真を使って関連チャートに図化する



    文献調査補助

     いくつかのリソースで拾い集めた文献リストを総合し、各種コードや出版者名、発行年、頁数、概要や目次情報などを補完することで、文献リストをとりあえず完成させる。
     調査が進むごとに文献リストは繰り返し改訂されるだろう。
     とりあえず完成させた文献リストは、今後のライブラリ・リサーチの拠点となる。たとえばこのリストをコマンドに与えることであられる、目次マトリクスやレビューのリストは、文献の概要をつかむのに、いくらか役に立つ。

    マジックコマンド機能
    %extbook (データフレーム) データフレーム内に含まれる書名を抜き出してデータフレーム化する
    事典検索やレファレンス事例の結果から書名を抜き出すのに用いる
    %%text2bib
    (複数行の書誌データ)
    テキストから書誌情報を拾ってデータフレーム化する
    コピペや手入力で文献を入力するのに用いる
    %makebib (データフレーム)(データフレーム)…… 文献調査の各コマンドが出力した複数のデータフレームをマージして重複を除き、詳細情報を取得してデータフレーム化する
    %expand_content (書誌データフレーム)データフレーム内に含まれる目次情報を展開する
    %amazonreviews (書誌データフレーム)データフレーム内に含まれる書籍についてamazonレビューを収集する




    所在調査

     文献リストをとりあえず完成させたら、入手する行動へ進む。
     文献リストをコマンドに与えることで、最寄りの図書館の蔵書/貸し出し状況や、ネット書店の在庫/価格の一覧を取得することができる。
     いくつかの文献は、重要であるが入手困難であるかもしれない。最後の手段としての国会図書館の所在確認とともに、複写サービスへのURLを取得することができる。

    マジックコマンド機能
    %librarylist (地名、駅名など) 地名、駅名など(コンマ区切りで複数指定可能)を入力すると、該当する/付近の図書館のリストをデータフレームにする
    次の%librarystatueで検索対象図書館を指定するのに使う
    %librarystatue (書誌データフレーム)(図書館リストデータフレーム) 書誌データフレームと図書館リストデータフレームを受けて、各書籍について各図書館の所蔵/貸出情報/予約用URLを取得してデータフレームする
    %stock_amazon (書誌データフレーム) 書誌データフレームを受けて、各書籍についてAmazonの在庫、新刊・中古の最低価格を取得してデータフレームする
    %stock_kosho (書誌データフレーム) 書誌データフレームを受けて、各書籍について「日本の古本屋」の在庫、出品店・価格等を取得してデータフレームする
    %stock_ndl (書誌データフレーム) 書誌データフレームを受けて、各書籍について国会図書館、各県立図書館の所蔵/貸出情報/予約用URLを取得してデータフレームする


     
     
    関連記事
    Secret

    TrackBackURL
    →http://readingmonkey.blog45.fc2.com/tb.php/769-5e9ce9fb