-
-
Labels: イベント/登壇
ランサーズ開発合宿2018@熱海 仕事案件のクローラー開発チーム
はじめに
開発部の吉本です。
一泊二日で、ランサーズ開発合宿を熱海で行いました。
一泊二日で、ランサーズ開発合宿を熱海で行いました。
クローラー開発チームでは、自社の外部サイトや提携サイトの仕事案件をランサーズの仕事検索に表示するという目的で、クローラーを開発して外部サイトとのデータ連携を行いました。
データ連携の全体像
主に以下の2つの処理に分けられます。
- 案件をクロールしてCloudSearchに追加するバッチ処理
- 案件を表示する仕事検索のview側処理
1. バッチ処理
案件をクロールするバッチ処理では以下を行っています。
- 案件をクロールして取得する
- 取得したデータをドキュメントとしてDBに保存
- ドキュメントをCloudSearchに追加する
外部サイトの案件をクロール
クローラーで自社の外部サイト、提携サイトの案件の取得を行います。
クロール先では、求人情報の構造化データとして、schema.orgのJobPostingを使用しています。
schema.orgとは、正確な情報を検索エンジンなどのクローラーが認識するための、構造化データのマークアップです。統一した規格でデータを用意することで、複数の外部サイトで同じ形式でデータを取得することができます。
CloudSearchに追加
取得したJSON-LDをCloudSearchのドキュメント形式に変換して追加します。
ドキュメントをDBに保存しておくことで、変更があった時に差分のみ更新できるようにしています。
キャッシュについて
バッチを実行した際に、クロールした案件データを以下でキャッシュして、表示側で読み込む際にはキャッシュを使用しています。
- JSON-LDをキャッシュ (memcached)
2. 仕事検索のview側処理
CloudSearchから取得したドキュメントをオブジェクトに変換して、viewに渡すことで、ランサーズ仕事検索に自社の案件と同じ形で表示しています。オブジェクトに変換する際にキャッシュを読み込むことで処理を軽くしています。
クロール先を変更することで、同じ仕組みで複数の外部サイトから案件を取得して表示することができます。今回は、以下のサイトの案件を取得して表示しています。
ランサーズではサービスを成長させてくれるエンジニア、デザイナーを募集しています!
ご興味がある方は、以下URLよりご応募ください。
【中途採用】
フロントエンドエンジニア
サーバーサイドエンジニア
コーポレートエンジニア
SREエンジニア
【新卒採用・その他】
21・22新卒
その他採用情報
関連記事
-
-
ランサーズ開発合宿2017@湯河原温泉おんやど恵
こんにちは。ランサーズの @sayaです。 先月末、湯河原温泉で第3回開発合宿をしてきたので、その模様をレポートします。 今回は幸運にも「湯かけまつり」という楽しいお祭りの開催と重なり、大いに盛り上がる合宿となりました。 テーマ 今回のテーマは「開発を最大化す …
-
-
プログラミング言語Go読書会#13(7.11-8)[2017/06/21]
どうも、ameshoです。 先日Lancersで開催された「Go 読書会 #13」の記録をQiitaに書きました。 http://qiita.com/amesho/items/d7085e4bb8ea3073d1fc よろしくお願いします。
-
-
プログラミング言語Go読書会#8(5.3-5.7)[2017/05/10]
どうも、ameshoです。 先日Lancersで開催された「Go 読書会 #8」の記録をQiitaに書きました。 http://qiita.com/amesho/items/d7085e4bb8ea3073d1fc よろしくお願いします。