逆求人 1/20 ITエンジニア【チャレンジ】に参加した話

概要

ジースタイラスが主催する逆求人というイベントに参加してきました。 逆求人とは、企業の人事、エンジニアと直接話せる就活イベントです。

www.studenthunting.com

その流れ、感想を書いていきたいと思います。

前日まで

開催日前日までにやることは、三つあります。

一つ目が、運営側の人との面談です。
私は、筑波大学生の就活支援をしているクロノファクトリーと言う会社のイベントに何回か参加していて、そこの方と面識があったので、その方と面談をしました。どうやらクロノファクトリーとジースタイラスは、提携してるみたいです。そこで、簡単な流れやどう言う方針で、逆求人に参加するかみたいな話をします。

二つ目が、逆求人のWebページのマイページを編集です。
これは、当日印刷して企業の方にもくばられるようなので、結構しっかり書いておくといいと思いました。これを参考に逆求人の時面談する人を決めてるようです。

三つ目が、逆求人の本番で人事の方に見せるスライドの作成です。 私の場合は、ジースタイラスの参加が決定したら送られてくるURLにある作り方を参考にスライドを作成しました。

ここまでが会場にいくまでにやっておくことです。

当日の流れ

f:id:maru-taka:20180121000705j:plain
ITエンジニア逆求人プログラム

このプログラム通りに進みます。

 最初に全体の説明等々があって、企業との顔合わせがあります。
ここで、自分に興味を持ってくださってる企業が挨拶と名刺を渡しにきます。ここで、こないと面談に来ることはまずないと思います。(ここできても指名されるとは限らない)
 この後、1時間10分昼休みがあるので、企業によっては、「一緒に昼ごはんどうですか」と顔合わせの時ついでに誘うとこもあります。
 昼休憩の間に企業側が面談したい学生をWebページを通して選択し昼休みが終わる頃には、面談の日程が決まっています。

f:id:maru-taka:20180121004355p:plain
面談調整webページ

 こんな感じのページで、ここから面談の予定の確認や相手が第1,2,3希望の場合は、こちら側からわかります。これがいい感じにスケジューリングされて、日程が決まります。
 全8タームなのですが、7タームは、企業とで、1タームだけ時間つぶしみたいな他学生との練習みたいなのがありました。この時間が個人的には、他の人のやってること聞けて楽しかったです。
 この休憩と面談を繰り返して、8タームあります。
 最後にスカウトタイムっていう時間があって特にもった学生がいた場合企業の方がお話ししにきたり、企業側からは、指名したが面談できなかった人に話ししに行ったりしてました。
 こんな感じで終わってアンケート記入して終わりです。
 一週間以内にG-Valueという企業からの感想レポートみたいなのが届きます。フィードバックがあるのは嬉しいですね。

アドバイス?

 私は、夏から授業外でやってるボートレースのやつとかの話を主にしました。
 そういった授業外で趣味でやってることがないと厳しいかなと思いました。厳しいというのは、企業の人の反応がよくないってことです。チャレンジでもそうだったので、普通のやつだともっとそうなのかなと感じました。

感想

 私は、今回逆求人に参加するのが初めてでした。
 でも、友人からどんなもんか聞いていたし、割と調べていたので、思った通りのものでした。
 私は、今回、今自分がやってることが企業の方からみてどうみえるかって言うのを聞きたくて、行ってるという明確な目的があったので、こんな、各企業に絶対聞きたいみたいなことがあると、スムーズに進むかなと感じました。
 私は、正直に言うと院進か就職か迷っていて、就活と言うかは、両方の可能性を考えた上での相談で人事の人とも話して見たいと思い参加しました。しかし、企業の方は、人事、エンジニアの両方が、企業としての目線で私がしているものづくりの感想を述べていただいて、採用のためにきてるのに迷惑といった態度のところはなくいろいろな話ができました。
 総じて参加してよかったと思います。企業の人にプレゼンしたときの受けの良し悪し、就活の時どういう風にアピールするのが効果的かなどが、わかってよかったです。
 2/10のITエンジニア逆求人にも参加する予定なので、またいろんな話をして見たいです。

Arduino Lチカ までの道のり Part2/2 (ArduinoIDE,ドライバ,スケッチ編)

maru-taka.hatenablog.com

目次

概要

Part2では、手元にArudinoがある状態から実際にLEDを点滅するサンプルスケッチを実行するまでについて説明する。

環境構築

(1)やらなければならないこと

LED点滅までにやらなければならないことは、

  • Arduino IDEの公式サイトからのインストール
  • 必要に応じてドライバのインストール
  • スケッチの検証、マイコンボードへの書き込み

の三つである。


(2)動作環境

macOS High Sierra version 10.3 MacBook Pro (Retina, 13-inch, Mid 2014)


(3)Arduino IDE インストール

Arduino IDEArduino公式HPからインストールできる。

SOFTWAREを選択

f:id:maru-taka:20171125134509p:plain
図1 . Arduino HP

自分のOSに対応するものを選択 私の場合は、Mac OS X 10.7 Lion or newer を選択

f:id:maru-taka:20171125134501p:plain
図2 . SOFTWARE

寄付してほしいな的な画面がでるので、したければCONTRIBUTE & DOWNLOADをクリック、ダウンロードしたいだけならJUST DOWNLOADをクリック

f:id:maru-taka:20171125134425p:plain
図3 . DOWNLOAD

Macの場合zipファイルがダウンロードされるので展開する。 展開して/Applicationに移動するとLaunchpadに表示される。

f:id:maru-taka:20171125134458p:plain
図4 . ZIPファイル


(4)ドライバインストール

ドライバインストールはArduino UNO R3 と Mac OSでは、必要ない。 しかし、このドライバがまあまあめんどくさくて、メジャーなArduinoを使ってればいいのだが互換版とかを使ってるとUSBシリアル変換チップが違って、違うデバイスドライバをインストールしないといけない、バイト先のArduinoが互換版で、これで割と時間かかった

USBシリアル変換チップにはFTDI Chip江苏沁恒股份有限公司のものが主に使われていて 互換版のArduinoだと安く作るため、USBシリアル変換チップとして後者の企業のCH340Gのようなものが使われていることがある。 これが使われていた場合 正規版のFTDIではなくCH340G用のドライバをインストールしなければ認識してくれない。 これに関しては以下の記事がわかりやすくまとめれられている。 qiita.com

サンプルスケッチのダウンロードと実行

流れとしては、

となる。

USB A to B ケーブルでPCとArduionoを接続

f:id:maru-taka:20171125162214j:plain
図5 . PCとArduinoの接続

回路作成

f:id:maru-taka:20171125162223j:plain
図6 . 回路作成

Arduino IDE起動 Launchpad -> Arduinoから起動

f:id:maru-taka:20171125164736p:plain
図7 . Arduino IDE起動

今回はサンプルのスケッチを実行する 開く -> 01.Basics -> Blink を選択

f:id:maru-taka:20171125164732p:plain
図8 . スケッチ記述

左上の検証をクリックし、うまくいったらマイコンボードに書き込むをクリック

f:id:maru-taka:20171125162232j:plainf:id:maru-taka:20171125162223j:plain
図9 . LED点滅

Arduinoに書き込まれてLEDが1秒間隔で点滅したら一通り終了。

まとめ

ここまでArduinoを購入するところからサンプルのスケッチであるLEDの点滅を実行するまでの手順を示した。 参考文献として

をあげるArduinoをはじめようは、特におすすめで今回私が購入したArduinoをはじめようキッド の部品を利用できる。 また本の半分から後ろは、公式リファレンスになっておりコーディングの際の参考にもなる。

何か作ったらまたブログに上げます。

以前紹介した、Boatraceのクローラは、データを見られるiOSアプリを開発中です。

maru-taka.hatenablog.com

Arduino Lチカ までの道のり Part1/2 (動機、購入、開封編)

[目次]

概要

このページでは、ノートPC(Mac)だけがある状態で、Arduinoを使って何か作ってみようと思った時にArduinoの購入、環境構築、サンプルの実行を行いとりあえず動かせることを確認するまでの話である。 写真を多めに説明していこうと思う。

Arduinoを使おうと思った理由

電子工作を用いて日常をより便利に

温度湿度計が欲しいなとおもい、どうせなら自分で作ろうと思って、電子工作には興味があったのでやろうと思った。 最終的には自転車につけたい。 電子工作を用いて日常をより便利にしていくというのがテーマ。 実は、2ヶ月前からプログラミングのアルバイトを始めていて、そこでは、大まかにいうとDAQ->Python->ArduinoでのPythonの部分のコードを書いている。ただ、Arduinoは触ってなくてただPythonでシリアル通信を行なっているだけなのだが、そういう実際に使われているのを見たのも決断した理由の一つかもしれない。 実は、高専のとき実験でちょっと使ったことある。

Arduino , Raspberry Pi , mbed

マイコンを探す上でこの三つを検討した Arduinoは、センサとかアナログ信号を扱うのに特化している。 Raspberry Piは、OSが乗ってて、メモリ容量もわりかしある普通のPCと性能を別にすると変わらない。通信とか多くする場合に強いイメージがある。 mbedは、Arduinoと似たような感じ。 この三つで、主にセンサを扱いたかったのと、入門用として結構使われていて、ドキュメントが豊富だったためArduinoにした。

このwebサイトが詳しく書いてあって参考になると思う。
ステップアップ電子工作/レベル1後編 マイコン選び - Qiita

Arduinoの購入について

購入方法

私は、Arduino Uno R3 をwebで購入した。 私が調べたところによると

このあたりがメジャーどこな感じがした。 実際に私が利用したのは、AmazonのSwitch Science公式ショップで、 Arduinoをはじめようキット を購入した。 部品を別々で買ったほうが安いという情報も見たが、今回はとりあえず使ってみるのが目的だったので、部品も含まれたものを購入した。これから制作を進めるにあたって、必要な部品が出てきたら適宜購入して行きたい。 また SwitchScience保証 が初心者には、安心だと感じたので、これにした。

開封

Arduinoをはじめようキット 開封! 意外と放送は簡単で、本とかがよく入ってる薄いプチプチがついたやつだった。 (授業以外でこういうの買ったの初めてなので実はとてもワクワクしている)

f:id:maru-taka:20171125135734j:plain
図1 . 箱

オープン! おおーすげー笑

f:id:maru-taka:20171125135722j:plain
図2 . 中身概観

なんか気の利いたメッセージが入ってたりする笑

f:id:maru-taka:20171125135700j:plain
図3 . メッセージ

中身は、リード線(硬いやつたくさん、柔らかいやつ8本くらい)、Arduino Uno、ブレッドボード、部品(抵抗、スイッチ等)、USBケーブル(A to B)、内容物一覧表が入ってる。

f:id:maru-taka:20171125135713j:plain
図4 . 内容物

次は、本体をあける

f:id:maru-taka:20171125135645j:plain
図5 . Arduino本体

かっこよすぎる笑

f:id:maru-taka:20171125140013j:plain
図6 . 本体開封

下にプラスチックのケースがついてる。 ケースも自作したい そのうち openfab 創房 にいって作りたい。

f:id:maru-taka:20171125145410j:plain
図7 . ケース

次回は、Mac上での環境構築などについて説明する。

maru-taka.hatenablog.com

ボートレース競走結果 収集クローラ作成⑤ ~webページ作成~

概要

web上からデータベースのデータにアクセスするための簡単な動的webページを作成した。
言語は、php
webserverには、apache
を使用した。
クローラの全体像については、こちらを参照 全体の概要:

Webserver構築

apacheを使用した。
このwebサイトを参考に構築した。

ソースコード説明

SQL問い合わせ入力画面
フォームの情報をポストメソッドで送った。

<html>

<head>
   <meta charset="utf8">
   <title>Boatrace_crawrer</title>
</head>

<body>
<h2>
Boatrace_crawrer<br/>
</h2>
<h4>
問い合わせ
</h4>

<form method="post" action="webpage_sample.php">
    query:<br />
    <input type="text" name="query" size=100/><br/>
    <input type="submit" value="実行"/>
</form>

</body>
</html>

f:id:maru-taka:20170913085739p:plain
実行画面


入力画面で入力しポストメソッドで送った問い合わせを実行する。

<html>

<head>
<meta charset = "utf-8"/>
<title>Boatrace_crawrer</title>
</head>

<body>

<?php

        print "<p><a href=\"getquery.php\">query画面へ</a></p>";
    //設定ファイルの読み込み
    require_once("config.php");

        ini_set("mysqli.default_socket","/tmp/mysql.sock");

    //MySQLへの接続
    $link = mysqli_connect($dbserver,$user,$password,$dbname)
        or die("MySQL unconected");

    //文字コード設定
    mysqli_set_charset($link, "utf8")
        or die("can't link code");

    //問い合わせ
    $query = $_POST["query"];

    $result = mysqli_query($link,$query)
        or die("fail implements of query!");

    $rows = mysqli_num_rows($result);
    print "<p>該当件数は" . $rows . "件でした。<br />";

    print "<p>問い合わせ結果";
    print "<ul>";
    while ($row = $result->fetch_assoc()) {
        print "<li>";
        print_r($row);
        print "</li>";
    }
    print "</ul>";

    mysqli_free_result($result);

    mysqli_close($link);
?>
</body>
</html>

f:id:maru-taka:20170910065824p:plain
実行画面

localhost127.0.0.1

MySQLでは、接続の際にサーバをlocalhostで指定するのと127.0.0.1で指定するのでは、挙動が異なる。
具体的には、localhostを指定した場合には、UNIXドメインソケットを用いて通信を行い、127.0.0.1では、TCP/IP通信を用いて通信が行われる。
今回は、ini_set関数を用いてlocalhostUNIXドメインソケットを用いて通信を行った。

ini_set("mysqli.default_socket","/tmp/mysql.sock");

うまく設定できていないと次のようなエラーメッセージが表示される。

Warning: mysqli_connect(): (HY000/2002): No such file or directory in /.../webpage_sample.php on line 19
MySQL unconected%

参考webサイト

ボートレース競走結果 収集クローラ作成④ ~データベースアクセス~

概要

 このブログでは、スクレイピングでとってきたデータをデータベースに登録する部分について説明する。
 今回は、MySQLRubymysqlライブラリを用いてアクセスした。
クローラの全体像については、こちらを参照

なぜMySQLを選んだか

 MySQLを選んだ理由は、まず金銭的に厳しいので、OSSを使用することを決めた。
 次に、ボートレースの結果のようなレース結果、選手データ、直前情報などのたくさんの種類の複雑な情報を扱うのに適していると考え、RDBMSを選択した。
 最終的にMySQLPostgreSQLで、迷ったが、過去に使用した経験があったためとっつきやすかったためMySQLを使用することに決めた。

db-study.com academy.gmocloud.com

データベース定義

race_idを主キーにした。 race_idは単純に開催場の番号*1、ラウンド、日時を結合しただけ。また第3正規形にした。
 round_infoは、そのラウンド固有の水面天候状況、払い戻しなどの情報をを格納する。race_infoは、それぞれの艇のレース結果を格納する設計になっている。

/*use test;*/
use boat;

create table round_info(
        race_id varchar(12) not null,/*place + round_no + day*/
        primary key(race_id),
        place varchar(8),
        round_no int,
        day varchar(10),
        
        /*気象条件*/
        temp float(3,1),
        sky varchar(8),
        wind int,
        water_temp float(3,1),
        wave int,

        /*払い戻し*/
        3tan_kumi varchar(10),
        3tan_money int,
        3tan_pop int,
        3puku_kumi varchar(10),
        3puku_money int,
        3puku_pop int,
        2tan_kumi varchar(10),
        2tan_money int,
        2tan_pop int,
        2puku_kumi varchar(10),
        2puku_money int,
        2puku_pop int,
        kaku1_kumi varchar(10),
        kaku1_money int,
        kaku1_pop int,
        kaku2_kumi varchar(10),
        kaku2_money int,
        kaku2_pop int,
        kaku3_kumi varchar(10),
        kaku3_money int,
        kaku3_pop int,
        tan_kumi varchar(10),
        tan_money int,
        fuku1_kumi varchar(10),
        fuku1_money int,
        fuku2_kumi varchar(10),
        fuku2_money int, 

        /*決まり手*/
        kimarite varchar(12),

        /*返還*/
        return_money varchar(1)

) engine=InnoDB;

create table race_info(
        race_id varchar(12),
        boat_no varchar(1),
        primary key(race_id,boat_no),
        race_rank varchar(1),
        racer_no varchar(4),
        race_time varchar(8),
        course varchar(1),
        st_time varchar(4),

        foreign key(race_id) references round_info(race_id)
) engine=InnoDB;

データベースアクセス

スクレイピングでとってきたデータを成型してデータベースに入れていく。
冗長なので、一例を記載している。

#データベースアクセス
connection = Mysql::connect("localhost", "username", "password", "databasename")

# 文字コードをUTF8に設定
connection.query("set character set utf8")

.
.

puts("insert into race_info(race_id, boat_no, race_rank, racer_no, race_time, course, st_time) values(\"#{query[1]+query[0]+query[2]}\", \"#{boat1[1]}\", \"#{boat1[0]}\", \"#{boat1[2]}\", \"#{boat1[5]}\", \"#{course[0]}\", \"#{st_time[0]}\" )")

.
.

# コネクションを閉じる
connection.close

手間取ったところ

データを挿入するのにとても長いSQL文を書いた。
これを書いてちゃんとデータがあってるか確認するのが大変だった。

connection.query("insert into round_info(race_id, place, round_no, day, temp, sky, wind, water_temp, wave, kimarite, return_money, 3tan_kumi, 3tan_money, 3tan_pop, 3puku_kumi, 3puku_money, 3puku_pop, 2tan_kumi, 2tan_money, 2tan_pop, 2puku_kumi, 2puku_money, 2puku_pop, kaku1_kumi, kaku1_money, kaku1_pop, kaku2_kumi, kaku2_money, kaku2_pop, kaku3_kumi, kaku3_money, kaku3_pop, tan_kumi, tan_money, fuku1_kumi, fuku1_money, fuku2_kumi, fuku2_money)  
values(\"#{query[1]+query[0]+query[2]}\", \"#{prace_name(query[1])}\", #{query[0].to_i}, \"#{query[2]}\", #{weather_s[0]}, \"#{weather_s[1]}\", #{weather_s[2]}, #{weather_s[3]}, #{weather_s[4]}, \"#{win_tec[0]}\", \"#{return_money[0]}\", \"#{p3tan[1]}\", #{p3tan[2].to_i}, #{p3tan[3].to_i}, \"#{p3puku[1]}\", #{p3puku[2].to_i}, #{p3puku[3].to_i}, \"#{p2tan[1]}\", #{p2tan[2].to_i}, #{p2tan[3].to_i}, \"#{p2puku[1]}\", #{p2puku[2].to_i}, #{p2puku[3].to_i}, \"#{pkaku[1]}\", #{pkaku[2].to_i}, #{pkaku[3].to_i}, \"#{pkaku[4]}\", #{pkaku[5].to_i}, #{pkaku[6].to_i}, \"#{pkaku[7]}\", #{pkaku[8].to_i}, #{pkaku[9].to_i}, \"#{ptan[1]}\", #{ptan[2].to_i}, \"#{ppuku[1]}\", #{ppuku[2].to_i}, \"#{ppuku[3]}\", #{ppuku[4].to_i} )")

*1:ボートレースの開催場には、電話投票用に番号が振られている。

ボートレース競走結果 収集クローラ作成③ ~スクレイピング~

概要

ここでは、RubyのNokogiriを用いたボートレース競走結果のスクレイピングについて説明する。
クローラの全体、開発環境について:

Nokogiriのインストール

Nokogiriのインストールは、別途ブログを書いているので、そちらを参照してほしい。

スクレイピングで得るデータ

最初に、どのwebページからどの情報を持ってくるかとその実装に手をつけた。
競走データと言ってもボートレースには、様々な情報があるが今回は、レースの結果に関係する情報を集めた。 レースの結果ページから

  • 開催情報(場所、ラウンド、日時)
  • 進入コース
  • 着順
  • 選手の登録番号
  • レースタイム
  • スタートタイミング
  • 気象水面状況
  • 払い戻し金額

以上の情報を

結果|BOAT RACE オフィシャルウェブサイト

のようなページから取得することにした。

ソースコード説明

XPathCSSセレクタで、指定した情報を取り出すことができる。
XPathは、少し触ったことがあったので、そっちでやった。
adjust_data は、XPathとdoc(Nokogiri::HTML::Document)から 取得した情報をString配列にして返す関数。 後は、適切なXPathを使って、必要なデータを取得する。

#スペース、改行、タブ、全角を半角にして返す。スペース改行、複数タブ区切りで配列にする
def mtrim(text)
        text.gsub!(/\\n|\\r|\\t/," ")
        text.gsub!(/[[:space:]]/," ")
        text.tr!(" "," ")
        text.tr!('0-9a-zA-Z', '0-9a-zA-Z')
        text.gsub!(/\s+/,SEPALATER)
        text.gsub!(/^\t/,"")
        text.gsub!("\"","\'")
        text = text.split(SEPALATER)
        return text
end

#データを整える
def adjust_data(xpath,doc) 
  boat = doc.xpath(xpath)
  if boat.text != "" then
    boat.each do |boat|
      xpath = mtrim(boat.text)
    end
  else
    xpath = Array.new
  end
  return xpath
end

boat1 = adjust_data("//html/body/main/div/div/div/div[2]/div[4]/div[1]/div/table/tbody[1]",doc)

今回は、tbodyタグがいい感じにあったので、それを使った。

.
.
.
<tbody>
    <tr>
        <td class="is-fs14"></td>
        <td class="is-fs14 is-fBold is-boatColor5">5</td>
        <td class="is-p20-0">
            <span class="is-fs12">4237</span> 
            <span class="is-fs18 is-fBold">大峯   豊</span>
        </td>
        <td>1&#39;50&quot;9</td>
    </tr>
</tbody>

<tbody>
    <tr>
        <td class="is-fs14"></td>
        <td class="is-fs14 is-fBold is-boatColor4">4</td>
        <td class="is-p20-0">
            <span class="is-fs12">4150</span> 
            <span class="is-fs18 is-fBold">山田  雄太</span>
        </td>
        <td>1&#39;52&quot;1</td>
    </tr>
</tbody>

.
.
.

また開催情報(日付、場所、ラウンド)は、URLのクエリから取得した。

require 'uri'
#urlから場、ラウンド、日時を抜き出す。
query = get_url.query #URI::Generic#query
query.tr!('a-z',"")
query.tr!("=","")
query = query.split("&")

#ラウンド数の先頭に0(ex.02,12,09)
query[0] = format("%02d", query[0])

はじめは、rubyからshellのコマンドを呼び出し、その日の日付をえていたが、それでは、shell依存になってしまうので、Dateクラスを用いて、その日の日付を取得するように改良した。

#シェルver
=begin
#今
date = `date "+%Y%m%d"`
#適当に時間いじる
date = `env TZ=JST-30 date "+%Y%m%d"`
#puts mdate.class
mdate = date.to_i
puts mdate
=end

#ruby_ver
today = Date.today
date =  today.iso8601
date.tr!("-","")
mdate = date.to_i
puts date

Rubyコーディング規約について

 今回、開発をすすめるなかで、友人からRubyに目安となる標準のコーディング規約があることを初めて聞いた。
 コーディング規約は、実際のプロジェクトごとに決められそのプロジェクト内で守られる物と考えていた私には衝撃だった。
 今後は、その標準的なコーディング規約を意識して、コーディングしていきたいと思う。

ボートレース競走結果 収集クローラ作成② ~webページ巡回~

概要

このページでは、Anemoneを用いたwebページ巡回について説明する。
クローラの全体像については、こちらを参照

実際のコード解説

Anemone.crawlにクロールの起点となるURLを指定、dateはクロールする日付を入れるようになっている。
:depth_limitはリンクをたどる階層の深さ :delayはクロールする間隔を秒単位で設定

facus_crawlでクロールするurlを指定する。
ここで指定されていないのは、読み込みもしない on_pages_likeで正規表現に一致するurlに対して処理をする。
get_resultはNokogiriで使える形式のdocとURLから必要なデータを取り出す処理を行う。
ここに関しては、

https://www.amazon.co.jp/dp/toc/4797380357/ref=dp_toc?_encoding=UTF8&n=465392

といったサイトや書籍を参考にして作成した。

ソースコード

Anemone.crawl("https://www.boatrace.jp/owpc/pc/race/index?" + "hd=" + date , :depth_limit => 2, :delay => 1) do |anemone|
  anemone.focus_crawl do |page|
    page.links.keep_if { |link|
      link.to_s.match(/(\/raceresult)(.)*hd=#{mdate}$/)#実行時の日時のデータを取得
    }
  end

  anemone.on_pages_like(/\/raceresult/) do |page|
    puts "\n\n-------------------------------------------------------------------\n\n" 
    puts page.url.to_s
    #Nokogiri形式にしてget_resultに渡す
    get_result(page.doc,page.url)
  end
end