こんにちは!広報のおだんみつです。ニュースパス開発部のエンジニアの横山と加藤が共同で執筆した『Pythonによるクローラー&スクレイピング入門』が10月23日に発売されることになりました〜!!
本には書かれていない解説が載っているPDF特典の予約キャンペーンを実施中だそうで、気になる方はこちらの予約特典サイトをご覧ください。
『Pythonによるクローラー&スクレイピング入門』Amazon予約特典キャンペーン | 翔泳社の本
クローラーのプロたちから学んだ極意とは?著者インタビュー
出版を記念して、著者のお二人にインタビューしてきました!「クローラー開発未経験の方に読んでもらいたい」という想いを込めた今回の本、どんな経験を通して書かれたのでしょうか?
ー お二人のプロフィールを教えてください。
横山:サーバーサイドエンジニアの横山です。サーバーサイドエンジニア歴は10年程で、Gunosy歴は2年くらいです。Gunosyに入る前はPHPなどの言語を使っていて、Pythonを本格的に使うようになったのはGunosyに入社してからです。
加藤:スマホアプリエンジニアの加藤です。エンジニアとしての経歴は、家電メーカーの組み込み機器の開発から始まって、iPhoneとAndroidが出始めた黎明期からアプリエンジニアに転向し、7〜8年程アプリ專門でやっています。Gunosy歴は1年くらいで、今はニュースパスというKDDIと共同で提供しているアプリのiOSとAndroidを担当しています。
― お二人が所属するニュースパス開発部はどんなチームですか?
横山:Gunosyの開発本部は、データ分析とインフラ、QAが他のプロダクトも横断的に携わるチームとして存在していて、それ以外はプロダクトごとに開発チームがあります。
ニュースパス開発部は、私がいるサーバーサイド側に2名、加藤さんがいるアプリ側に3名のチームです。
サーバーサイドエンジニアの役割の一つは、いわゆる「バッチ系」という外部からデータを取ってきて処理をしてアウトプットすることです。媒体から提供されているニュース記事を収集してきます。もちろん、取ってきた情報をそのまま掲載しているわけではなくて、どんな記事をユーザーに届けたら価値があるかを計算するアルゴリズムを経由します。
加藤:アプリエンジニアの役割は横山さんたちのサーバサイド側が処理したデータをAPIを経由で取得して、読みやすい・使いやすいアプリを提供することです。アプリでは様々なログを取得しておりそれらのログをサービスの改善に役立てています。
※ニュースパスの仕組みについては、こちらの記事を合わせてご覧ください
情報収集する “だけ” のプログラム開発はしない
ー 今回執筆された『Pythonによるクローラー&スクレイピング入門』はどんな本ですか?
横山:インターネット上からデータを集めてくるプログラムやシステムのことを一般的に「クローラー」と呼びます。インターネットで見ている情報はHTMLで書かれていることが多いんですけれども、ごそっと保存すると不要な情報も含まれてしまうので、欲しい情報だけをよりわけて集める「スクレイピング」という作業が必要になります。
今回の本は、これらの「クローラー」と「スクレイピング」に特化した内容で、プログラミング言語はPythonを選びました。
加藤:Pythonとデータ分析の関連書籍は、ここ一年くらいでたくさん出ているんですが、この本はクローラーとスクレイピングで情報を集めて終わりではなく、他のアプリとの連携など運用面を考慮しているのが特徴です。
ー 日頃の業務のなかで、どういった経験が今回の執筆に活かされていると思いますか?
加藤:私は、自分のようなスマホアプリのエンジニアがサーバーサイドを始めるとき、こういうところから勉強するといいよといった基本編を書かせていただきました。
スマホアプリとちがって、単にプログラムを動かすだけではなく、サーバーの負荷を考慮したり必要な環境をあらかじめ知っておく必要があるので、そのあたりを重点的に解説しています。
横山:情報を収集できる “だけ” の開発で終わらない、その後の運用で苦労しないためのノウハウかなと思います。これほどの規模でデータ収集して運用までおこなうシステムの開発経験はGunosyが初めてだったので。
ニュースパスのクローラーは、今は新規事業開発室でBazzary(バザリ―)を開発しているmosaさんが開発したんですが、グノシーで直面してきた課題や知見を活かした設計になっているんです。今回の本には、その経験で学んだことも書かせていただきました。
※エンジニアのmosaがインタビューを受けた記事はこちらをどうぞ!
横山:あとは集めたデータを使ってフィードやAPIを作ったり、運用するための管理画面はどんな点に気をつけたらいいかを注力して書きました。クローラーの本というと開発に重きを置いていることが多いですが、実際の開発現場では作って終わりということはほとんどありません。継続的に運用していくことが現場では求められますから。
加藤:そうですね、すごく実践的な内容になっていると思います。ただ勉強して終わりではなくて、その後に自分の仕事や個人のプロダクト開発に活かせるよう、横山さんが!書きました。(笑)
横山:いやいや、加藤さんも書いているじゃないですか。(笑)もともとは、加藤さんが書いたSwiftの本の出版社さんからお話をいただきまして。
加藤:Pythonを使ったクローラーに詳しい人を知らないかと連絡がありまして、Gunosyならスーパーエンジニアがいるよと。(笑)
現場のノウハウを活かした実践的な知識が求められていたので、グノシーとニュースパスで培った経験は読者の方にとっても、貴重な知見になるのではないかなと思っています。
「作って終わりじゃない」大量のデータを扱う経験で学んだこと
ー Gunosyでの開発経験をアウトプットする機会になったかと思いますが、書いてみてどうでしたか?
横山:入社した当時の何も知らなかった自分に向けて書いているような感覚がありました。私の場合は、幸いなことにCTOの松本さんやmosaさん、根岸さんのようなクローラー開発経験豊富な方がいてくださる環境だったので、学ばせていただいたことは本当に多かったです。そういう意味では、自分が学んできたことの整理になったような気がします。
これからクローラー開発に携わる方には、一度目を通していただければ、クローラーのプログラムを開発するときにどういった技術や要素が必要になるかという俯瞰を持てるようになると思います。
ー「作って終わり」ではなく、継続してサービスを提供できる開発環境こそユーザーに価値を届けられるという志向は、Gunosyらしさが表れているように感じますね。
横山:そうですね。データをフィードやAPIとして出力して、外部にデータを渡せるよう考慮して開発するところなんかはまさに「作って終わりじゃない」ところですね。
私たちがクローリングするのは、どんな記事が追加されたか更新情報を見る、RSSのデータなんですが、どうすればクロールしやすいRSSを作れるかという視点での開発もGunosyならではの経験だと思います。
ー グノシーもニュースパスも、外部との連携で成り立っているプロダクトだからこそ、連携部分に負荷をかけず効率よく運用するかが重要なんですね。
加藤:本当にそうですね。例えば、自社のサイトだけが収集の対象になっている小規模のクローラー業務経験では、いかに保守・運用するかをここまで強調して書くのは難しいんじゃないでしょうか。
設計から開発・運用まで現場でのノウハウが詰め込まれている一冊!
ー では最後に、これから本を手にとる読者の方に向けたメッセージをお願いします!
横山:Gunosyに新しく入ってこられる新入社員の方も含めて、クローラー開発の経験がない方に読んでもらいたい内容を包括できればなという思いで書きました。開発を始めようとする前に、一度目を通してもらえると嬉しいです。
加藤:Webエンジニアの方だけではなくて、スマホアプリエンジニアの方にも読んでいただくと、自分の業務の幅が広がると思います。
私のように、チームでサーバサイドエンジニアの方と関わる方であれば、仕事でのコミュニケーションに役立つはずです。Pythonの言語から解説しているので、iOS・Androidエンジニアの方にも読んでもらいたいです!
横山さん、加藤さん、ありがとうございました!