読者です 読者をやめる 読者になる 読者になる

器用貧乏です。はげたかです。日記です。

どうも、はげたかです。今まで器用貧乏に生きてきました。ジェネラリスト・フルスタックエンジニアを目指しています。

今日の一言:カテゴリ分けをしっかりしたらPVあがるかな?

大学図書館のリクエストシステムを考案中

はじめに

昨日、何を思ったのか大学図書館のリクエストシステムをつくろう!と思った。

現状では、紙に「タイトル」「出版社」「価格」「著者名」「備考」「氏名・学籍番号・メールアドレス」などを記入しないといけないのだが、自分はかなり読みたい本があるので、手書きは辛い。

先日、備考欄にISBNだけでリクエストしたところ、届いたは届いたけど、司書さん「ISBNだけだと、これがあっているかわからないから...大変だった」と言われたので、なら、全てを出力させたものにしよう!ということで、このシステムを考えた。

システム概要

現在はロジックの部分は既に完成している。私が考案しているシステムの概要は以下の通りだ。

  • ユーザ:欲しい本のISBN、または、欲しい本のタイトル名(一部で可)を入力
  • それらの情報を元に、AmazonECSで書籍を検索(最大10)
  • 大学図書館の蔵書検索にかけ、あればその旨を伝え、なければリクエストが出来るフォーマットを出力
  • 印刷(メール)、リクエストする

今のところ

今はターミナル上だが、以下の動作を行う

% ruby amazon_ecs.rb "ゲーム理論"
*** *** ***

◆ title: はじめてのゲーム理論 (ブルーバックス)
--- 大学図書館にありません、以下の情報を元にリクエストをして下さい。
title: はじめてのゲーム理論 (ブルーバックス)
author: 川越 敏司
ISBN: 4062577828

<img src="http://www.kinokuniya.co.jp/images/goods/ar2/web/imgdata2/45321/4532133467.jpg" alt="bookweb">
◆ title: ゼミナール ゲーム理論入門
+++ 大学図書館にあります。

◆ title: ゲーム理論の思考法
--- 大学図書館にありません、以下の情報を元にリクエストをして下さい。
title: ゲーム理論の思考法
author: 川西 諭
ISBN: 

◆ title: ゲーム理論の思考法 (中経の文庫)
--- 大学図書館にありません、以下の情報を元にリクエストをして下さい。
title: ゲーム理論の思考法 (中経の文庫)
author: 川西 諭
ISBN: 4806146544

◆ title: 高校生からのゲーム理論 (ちくまプリマー新書)
--- 大学図書館にありません、以下の情報を元にリクエストをして下さい。
title: 高校生からのゲーム理論 (ちくまプリマー新書)
author: 松井 彰彦
ISBN: 4480688382

◆ title: マンガでわかるゲーム理論 なぜ上司は仕事をサボるのか? 近所トラブルはどうして悪化するのか? (サイエンス・アイ新書)
--- 大学図書館にありません、以下の情報を元にリクエストをして下さい。
title: マンガでわかるゲーム理論 なぜ上司は仕事をサボるのか? 近所トラブルはどうして悪化するのか? (サイエンス・アイ新書)
author: ポーポー・ポロダクション
ISBN: 4797370173

◆ title: ゲーム理論 新版
--- 大学図書館にありません、以下の情報を元にリクエストをして下さい。
title: ゲーム理論 新版
author: 岡田 章
ISBN: 4641163820

◆ title: はじめてのゲーム理論 2つのキーワードで本質がわかる (ブルーバックス)
--- 大学図書館にありません、以下の情報を元にリクエストをして下さい。
title: はじめてのゲーム理論 2つのキーワードで本質がわかる (ブルーバックス)
author: 川越敏司
ISBN: 

◆ title: ゲーム理論・入門 新版--人間社会の理解のために (有斐閣アルマ)
--- 大学図書館にありません、以下の情報を元にリクエストをして下さい。
title: ゲーム理論・入門 新版--人間社会の理解のために (有斐閣アルマ)
author: 岡田 章
ISBN: 464122028X

◆ title: ゲーム理論入門 (日経文庫―経済学入門シリーズ)
--- 大学図書館にありません、以下の情報を元にリクエストをして下さい。
title: ゲーム理論入門 (日経文庫―経済学入門シリーズ)
author: 武藤 滋夫
ISBN: 4532108292

入力、検索、出力は完成している。これらをHTML上に出力させることを現在は行なっている。フォーマットは既に出来ていて、sinatraを使って後は連携させるだけ。

sinatraをなぜ選んだかというと、わざわざ小規模システムにrailsは重すぎると思ったため、軽量フレームワークsinatraを選んだ。

一つだけ難しかった(?)点があり、それは、蔵書検索システムがちょっとあれで、

検索 -> javascriptを動かす -> 検索した結果の画像を画面に表示

ッて感じだったため、簡単なスクレイピングではno-imageになってしまった。で、これを解決するために、capybaraを用い、URLへ飛ぶ -> javascriptを動かす -> 画像の取得をした。

この画像がとても重要なキーで、画像URL(4888484848.jpg)がISBNだったので、ここからISBNコードを取得し、AmazonのISBNコードと認証した。

正規表現の勉強するべきだったが、今回は面倒なプログラムを書いた。

### input ' <img src="images/isbn/4999/499999999.jpg" alt="hogehgeo">
### output 499999999.jpg
def get_src_image(str)
    i = str.length
    src_isbn = []
    while i > 0
        if(".jpg" == str[i.. i+3])
            i = i - 1
            while str[i] != '/'
                src_isbn << str[i]
                i = i - 1
            end
            break
        end
        i = i - 1
    end
    return src_isbn.reverse().join().to_i()
end

これは、おしりから三文字ずつ見ていき、".jpg"にぶつかったら、"/"まで取得するというモノだ。 正規表現でこれらを取得できるとは思わなかったので、今回はこれで対処した。

さいごに

資格での単位申請書も紙で記入させられていたが、自分でもらった紙と同様なワードレイアウトを作ってしまって、教務課へ提出したら怒られた。勝手にそういうことしては、困るとのことで...

図書館とは仲良く、図書館で行われていたイベントの主催側についていたので、出来上がったら司書さんに連絡をとってみたいと思う。

また、HTML上に出力させるのも少し面倒なため、メールで送れないかも確認したい。こっちのほうが断然楽だろう。

自分から◯◯を作りたい -> 作るって流れはすごく楽しい。でも、人に頼まれてやるのもすごく楽しい。要するに、プログラミングが好きだ。がんばろう!

Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例

Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例

Ruby on Rails 4 アプリケーションプログラミング

Ruby on Rails 4 アプリケーションプログラミング