読者です 読者をやめる 読者になる 読者になる

まだ厨二病

RとPyhtonを使ったデータ分析・統計解析らへんの話題をしていくだけ

「Rによるスクレイピング入門」を執筆しました

タイトルの通り、執筆に関わった書籍が出版されたので内容紹介と宣伝です。

Rによるスクレイピング入門

Rによるスクレイピング入門

「Rによるスクレイピング入門」、この本は書名やカバーから想像するに、 Rを使ってウェブ上のデータを取得し、実践テクニックを豊富に示す 、ことが伺えます。ただし本書で扱う内容はそれだけではありません。以下に述べるように、R言語の解説書、モダンなR言語の操作方法、データ処理・可視化について一通り学べるR言語の本、ウェブ技術書としての側面があります。

本書の多様性

本書の書名を見て、「え?Rでスクレイピング?」といった感想を持たれる方がいるかと思います。Rって、統計解析や可視化が得意な言語だったのでは?… もちろんそれらも得意ですが、Rでできることは実に多様です。多くのプログラミング言語スクレイピングを実行するライブラリがあるように(RubyでいうところのNokogiri、PythonのScrapy)、RでもスクレイピングAPI操作のためのパッケージが開発されています。その中から本書では、主にrvest、httrパッケージを使ったR流の手法を紹介しています。

本書の著者の一人、石田基広先生は「Rデータ自由自在」や「新米探偵、データ分析に挑む」など豊富なR本の翻訳・執筆を経験されています。そのためRのインストールから基礎について学ぶことができます。一方で本書ではRのモダンな操作方法やパッケージを積極的に導入しているのが特徴です。パイプ処理、dplyr、ggplot2、purrrといった手法やパッケージを駆使して、取得したデータを効率的に処理する方法が書かれています。

本書で取り扱うデータ収集の事例は、

  • 対象のデータを選ぶ
  • データを取得する
  • データに対して前処理を行う
  • データを可視化する

といった内容をほとんどの章で扱います。この中の前処理と可視化はウェブデータの処理だけでなく、一般的なデータ操作の段階で必要な事項として活用できるでしょう。前処理の苦労は、テキストファイルでもウェブデータやAPI経由で取得したデータでも変わりがありません。言語や環境を変えずに、データの取得から加工、可視化までをRを通して実行できるというのが、スクレイピングAPI操作にRを用いる大きなモチベーションとなります。

またウェブスクレイピングを行ったりウェブAPIを扱うためには、ウェブに関する基礎知識やマナーに加え、専門技術を必要とします。本書は「入門」書として、これらの内容に触れています。XMLXPath、HTTPのステータスコードといったウェブ技術の解説書としても読むことができるでしょう。また、応用としてログインを必要とするウェブサービススクレイピングやブラウザ操作の自動化処理に用いられるSeleniumの技術にも踏み込みます。

ウェブデータの可能性

最後に、本書やスクレイピングAPIに少しでも興味を持っている方に向けたメッセージです。

ウェブデータ(オープンデータ含む)やAPIの活用は、手持ちのデータや分析の幅を広げるのに有効です。e-StatやRESASでは豊富な行政データが提供されています。また、Google Cloud Vision APIMicrosoft Cognitive ServiceのようなAPIを利用することで、簡単に機械学習モデルを取り込むことも可能になります。

著者の一人、湯谷さんが述べていることですが、 “Tidy API are all alike but every messy API is messy in its own way” と、APIの種類に応じて扱い方が異なってきます。本書のAPI活用事例はごく一部ですが、皆さんが興味を持たれたAPIを利用する際に役立つ内容がきちんと書かれているはずです。

本書の内容に沿ってソースコードを実行するのも良いですが、私は、皆さんが興味ある対象のデータやAPIを活用するために本書を読むのが良いと思います。私はこのブログの過去記事にあるように、趣味の延長でスクレイピングAPIについての知識・経験を深めてきましたが、その時は手探りでやっていた部分が多いです。当時このような本があれば…と思うばかりです。皆さんがウェブデータを利用する際、「罠」に陥ってしまわないよう、本書が指南書となることを期待します。

「Rによるスクレイピング入門」は書店、amazon等で絶賛発売中です。またサポートページとしてRコードを公開しています(なるべく本を買ってね!)。

Rによるスクレイピング入門

Rによるスクレイピング入門

是非!

広告を非表示にする