昨日ですが、いつもお世話になってるCo-Edoで第1回クローラー開発勉強会を行いました。
クローラー開発というニッチなテーマのものをなぜ開催しようと思ったのかというと
- モバイラーズオアシスの中の人であるもぎゃさんから、モバイラーズオアシスで使っていたスクレイピングライブラリについてちょっと意見を聞かせて欲しいっていう話をメッセでもらった
- 実際にCo-Edoで会ってもぎゃさんと色々とクローラーの話をしてたら、互いにあるあるネタが結構満載で、きっと似たような経験ある人が他にもいるんじゃね?っていう感じになり、それなら何かイベントしましょう
っていうのがきっかけでした。
発表資料など
- もぎゃさんの発表資料はこちら
- 昨日は時間の都合で技術的な深いところは触れなかったので、そちらについて深く知りたい方むけのスライドとして実践スクレイピングを紹介されてました
- 自分はこちら
- 昨日気づいたけどSlideShareの日本語フォントの表示がおかしいので、ブログの埋め込みのために、SpeakerDeckにもアップしました
当日のおおまなな流れ
昨日の勉強会ですが告知文で記載したタイムテーブルに基本的に沿って以下のように実施しました。
- 自己紹介しつつ簡単な交流時間
- もぎゃさんと私が発表
- フリータイム
良かった点と改善点
- 良かった点
- 過去のトークイベントの経験を活かして、参加者を巻き込んだコミュニケーションが自分のイメージとおりに出来た。
- 勉強会でもやっぱりアイスブレイクのようなものを設けたほうがいいと思ったので、今後自分がやるものは今回みたいなスタイルを継続しようかと思ってます
- 改善点
- フリータイムの位置づけをあまりはっきりさせなかったから、なんとなくグタグタした感じになってしまって、申し訳なかった。もくもくタイムとか明確に宣言&ひとまずの終了時間を明確にするべきだったなぁ・・
開催して気づいたこと
昨日自分で勉強会をやってみて、以下の3つについて気づきがあったので順番に触れていこうと思います
- 意外と仕事で開発してる人が多い
- ターゲットのサイトタイプが意外と多い
- 技術的に下から上までそれなりのものが求められる
意外と仕事で開発してる人が多い
たまにクラウドワークスとかで、クローラー・スクレイピング開発の案件は見るのですが、世の中の一般的な求人情報でクローラー開発に関連する内容は見たことがないので、仕事でそういうのをやることって基本的にはないのかなとなんとなく思っていました。
そのため、自分の想定参加者イメージとしては趣味でサービス開発しててその一環でクローラー開発をしてるのかなと予想してたのですが、現在仕事で開発してる(あるいはこれから着手予定)という人が、想定以上にいたのが気づきというか、ちょっと興味深いなぁと思いました。
ターゲットのサイトタイプが意外と多い
初対面の人同士の話のネタとして適切かなと思って、参加されてる人達が普段対象にしてるサイトがどんな感じなのかをちょっと聞いていたのですが
あたりは、想定内だったのですが
とかは全然イメージ出来ませんでした。
国会図書館の方は、許可を得るまでにメールなどで何度かやり取りして、話がなかなか進まずに、実際に足を運んで、依頼をして、許可を得るための色々な手続をしたみたいだし、楽譜の情報はサイトを見てもらうとわかるのですが、URLの規則性が全然ないから、どっから攻めるのがいいのか検討つかないし、ヘア・ネイルサロンはそもそもポータル的なサイトがないので、個別にそういうサロンを運営してるところを見つけて、かつ、スクレイピングってなると結構大変そうですね・・・
技術的に下から上までそれなりのものが求められる
最初に2人1組のペアーを作ってもらって、互いに自己紹介してもらった後に、今回の勉強会で聞きたいことや相談してもらいたいことを話し合ってもらい、ホワイトボードに書きだしてもらったのですが、そこで
というような内容が書かれていました。
法的な話題を除くと、スクレイピング、クローラー開発それぞれで期待されるスキルって
- スクレイピングを行う時に必要となるスキル
- HTML内から特定の要素を抽出するためのXPathやCSSセレクターについての理解
- 慣れ親しんでるプログラミング言語でのスクレイピングライブラリの使い方
- 文字列操作
- 対象サイトがJavaScriptを多用してるケースがあるため、一般的によく利用されるJavaScriptライブラリ・フレームワークについての理解
- WebAPIの概念についての理解
- クローラー開発を行う時に必要となるスキル
- 何らかのツールを組み合わせてジョブキューシステムを構築できる
- 並列での処理
という感じで、技術的には、インフラ寄りの所〜アプリケーションレイヤーの所まで割りと広い知識が求められるのかなと思いました。
最後に
昨日の勉強会の最後にも喋ったのですが、第二回目をやりたい気持ちがある反面そもそもみんな使ってるプログラミング言語が異なるため、今回の話を踏まえて、ちょっと詳しく解説となると、どうしてもそのプログラミング言語を利用した時の固有の話が出てきてしまうのかなという懸念があります。 実際、私ともぎゃさんはRubyなのですが、他の方でPython+Scrapy/Beautiful Soupという組み合わせの人もいたし、Node.jsでやろうとしてる人もいたので、そういう人達に共通のテーマで2回目というのはなかなか難しいかなと。
違うネタとして、ハンズオン的なやつをやってもいいかなと思ったのですが、参加者のパソコンを見てたらWindowsマシンの人も半分くらいいた気がするので、当然みんな開発環境がバラバラになるので、その状態でのハンズオンはちょっと厳しいのかなぁと。
もしやるとすると、比較的スクレイピングしやすいサイトを見つけて、
でどういう形でスクレイピングを行うのかを発表してもらうみたいなスタイルなら、ネタとしては継続的に出来そうだし、これからチャレンジしてみようかなと思ってる人向けの参考情報になって、将来的にそういう人が実際にチャレンジ&発表してもらうというスタイルが確立できると継続した開催ができるのかなと何となく思ってるのでそういう形での実現可能性をちょっとだけ探ってみようかなと、これを書いててなんとなく思いました。
最後になりましたが、会場利用させてもらったCo-Edo&発表されたもぎゃさん、協力ありがとうございました!