Indeed.comの求人情報をPHPで検索する

イレブンナインのふじけんです。

求人捗ってますか。
無料で求人広告を出せるIndeed.comというサービスがあります。
このサービスに公式のAPIが用意されており、XMLを取得可能ということで、PHPでさっと求人広告を検索してみました。
本当は、求人に対する閲覧数、応募数を取得したかったのですが、まだ公式APIは対応していないようです。また、わたしはインフラエンジニアなので、普段PHPコードを書いていないのですが、勉強のためトライしました。なるべく初心者の方にもわかるコードの書き方となっています。ご容赦ください。


#準備

[Indeed パブリッシャープログラム](http://jp.indeed.com/publisher)にアクセスして、「アカウントを作成」ボタンをクリックします。

![20170310_indeed_com_publisher.png](https://qiita-image-store.s3.amazonaws.com/0/2567/b40c2f0b-5e46-8f38-70b6-bdff6daa584d.png)

※すでに登録済みの方は「パブリッシャーアカウントにログイン」のリンクをクリック。

#求人検索API

４つのタブが画面に表示されているので、その中から「求人検索API」をクリックします。

![20170310_indeed_com.png](https://qiita-image-store.s3.amazonaws.com/0/2567/36b5b912-9389-811c-e97c-b10f96bb8df1.png)

##アトリビューション
> Indeed の検索結果を表示する際には、以下のアトリビュートを使う必要があります。

説明書きにあるとおり、Indeed.comが用意したコードを含める必要があります。

![20170310_indeed_com_attribution.png](https://qiita-image-store.s3.amazonaws.com/0/2567/64774e9a-812c-eced-17d4-fd464d851325.png)

以下のコードを適当なところに貼っておきましょう。

```php:アトリビューション用コード
<span id="indeed_at"><a title="求人検索" href="https://jp.indeed.com"><img alt=Indeed src="https://www.indeed.com/p/jobsearch.gif" style="border: 0; vertical-align: middle;"> からの求人</a></span>
```


貼るとIndeed.comへのリンクとなるようです。


![20170310_indeed_com_logo.png](https://qiita-image-store.s3.amazonaws.com/0/2567/b1e3e8f0-6175-d087-0a6e-1172bbcb09ac.png)



#パブリッシャーアカウントにひとつのパブリッシャーID

このAPIは、検索文字列と勤務地を入力すると検索を結果をXMLデータとして返しくれます。利用するにはログインしたパブリッシャーアカウントにそれぞれ付与されるパブリッシャーIDを渡してあげる必要があります。

ほかにも細かく設定可能なパラメータがXMLリクエストのサンプルフォーマットとしてあらかじめ用意されています。

![20170310_indeed_com_format.png](https://qiita-image-store.s3.amazonaws.com/0/2567/b0dfa31b-045d-43d1-aa20-6f83ec87291b.png)


サンプルリクエストのURLとして、以下記載があります。

> XML リクエストのサンプルフォーマット:
http://api.indeed.com/ads/apisearch?publisher=xxxxxxxxxxxxxxxx&q=java&l=austin%2C+tx&sort=&radius=&st=&jt=&start=&limit=&fromage=&filter=&latlong=1&co=us&chnl=&userip=1.2.3.4&useragent=Mozilla/%2F4.0%28Firefox%29&v=2

この`?publisher=xxxxxxxxxxxxxxxx`の箇所をPHP上で格納しています。

publisher.phpの中で、INDEEDCOM_PUBLISHERの中にパブリッシャーIDを設定しています。※セキュリティ上伏字にしています。

```php:publisher.php
$ cat publisher.php
<?php

//publisher.php

define( 'INDEEDCOM_PUBLISHER', 'xxxxxxxxxxxxxxxx' );

```

URL生成時に参照しています。

```php:index.php
require_once("publisher.php");
:
  $req = "http://api.indeed.com/ads/apisearch?publisher=".INDEEDCOM_PUBLISHER.～;
  
```

生成したURLを元にsimplexml_load_file()関数でXMLファイルからXMLデータを取得しています。

```php:index.php
//XMLデータ取得用ベースURL
  $req = "http://api.indeed.com/ads/apisearch?publisher=".INDEEDCOM_PUBLISHER."&q=".$query."&l=".$location."&sort=&radius=&st=employer&jt=&start=&limit=&fromage=&filter=&latlong=1&co=jp&chnl=&userip=1.2.3.4&useragent=Mozilla/%2F4.0%28Firefox%29&v=2";
  
  //XMLファイルをパースし、オブジェクトを取得
  $xml = simplexml_load_file($req)
   or die("XMLパースエラー");
```

返ってきた結果をechoでHTMLに戻しています。

```php:index.php
  echo '<p>query:'.$xml->query.'</p>';
  echo '<p>location:'.$xml->location.'</p>';
  echo '<p>results:'.$xml->results->result->count().'</p>';
  $ret = '<div class="lwws">';
  foreach($xml->results->result as $result) {
    $ret .= "<div><a href='".$result[0]->url."'>".$result[0]->jobtitle."</a></div>";
  }
  $ret .= "</div>";
  return $ret;
```

ほかにも取得したい項目があれば、サンプルを参照ください。

![20170310_indeed_com_samplexml.png](https://qiita-image-store.s3.amazonaws.com/0/2567/3445e2d1-4515-e83d-1382-74e4d90bc798.png)

検索フォームなどのデザインはお好みで調整してください。


![20170310_indeed_com_sample.png](https://qiita-image-store.s3.amazonaws.com/0/2567/a0b6738d-9d25-f73c-54c7-d5944f5f9571.png)

#ソースコードはこちら
[github](https://github.com/fk2000/search_indeedcom_xml)

#宣伝
イレブンナイン株式会社では、エンジニア採用に力を入れています。本稿以外のノウハウも弊社は有しており、日々向上を是として取り組んでおります。自社サービスの開発もその一つです。

弊社のサイトです。
http://www.elevennines.co.jp

弊社のサイトにも採用に向けた応募フォームがありますが、採用強化週間としてIndeed.comに求人広告を載せています。

[Indeed.com - イレブンナイン株式会社の求人広告](http://jp.indeed.com/%E6%B1%82%E4%BA%BA?q=%E3%82%A4%E3%83%AC%E3%83%96%E3%83%B3%E3%83%8A%E3%82%A4%E3%83%B3%E6%A0%AA%E5%BC%8F%E4%BC%9A%E7%A4%BE&l=&rq=1)

ご興味がありましたらぜひコンタクトをいただければ幸いです。