ホーム

aguuu

本を管理したかったのでbookshelfを作った

  • 投稿者: tochi
  • 2010/3/9 火曜日 7:09:46
  • ウェブ

技術書やら小説やら色々と本を読むわけですが、昨年本屋でこんな事がありました。

tochi「この本面白そうだな。」
(少し立ち読み)
tochi「なかなかの良書」
(もう少し読んでみる)
tochi「ん?この本すでに持ってたわ。w」

こんな感じで記憶力が無い僕は既に自分の本を管理できない状態でした。
本屋で自分が持っている本が一目でわかると幸せになれるな〜。
買う前に本屋で中身をチラ見してから購入を決断できると幸せになれるな〜。

そんな時にTwitterでhirasanが、本を管理するアプリ無いね〜。
みたいな発言を見つけまして。ある程度需要がありそうなので自分で作るかと。

そこで去年から「自分による自分の為のアプリ」を作り始めました。
英吉さんにBookManagerで先を越され。Androidで大成功を納め。
悶々としながらやっとこさ出来たのがコレ。

bookshelf

主な機能はAmazonからの本の検索と登録。本へのタグ付けなど。
正直いうと、amazonのカートの方が今は便利です。このアプリを使うメリットは今のところ全くありません。(苦笑
今後は、iPhone対応したりと自分が使い易いように改修していこうかと。

最後に謝辞
トップページの写真を快く撮影させてくれたlibrary Cafe
ロゴのフォントを公開してくださったマニアッカーズ・デザイン
モチベーションが上がらない僕に叱咤激励を飛ばしてくれら英吉さん
アイデアのヒントをくれたhirasan

皆様に「ありがとうとう。」

お!なんか最後だけ本っぽい

ZBar bar code readerを使って画像からバーコードを読み取ってPHPで表示してみるまで

  • 投稿者: tochi
  • 2009/12/3 木曜日 7:06:16
  • PHP

「JPEGやGIF画像内のバーコードを読み取ってISBN情報を取得したい!」衝動にかられたので試してみました。
まずは画像からバーコードを取得する方法を探していると下記の物がヒットしました。

ZBar bar code reader

最近までZebra Barcode Readerという名称で愛されて来た様ですが名称が変わった様です。
バーコードスキャンの方法としてはかなり有名らしい。

まずは、上記のサイトにある「Download Now!」をクリックしてダウンロードします。

2009120101

ダウンロードしたファイルを解凍します。
今ダウンロードしたのはZBarを動作させる為のプログラムソースファイルです。
これをゴニュゴニュして使える状態(Windowsで言う所のexeファイルを作成?)にします。

2009120102

ソースファイルから作るのは初めてなのでもの凄くハマりました。
実際にはもっとスマートな方法があると思うのですが、初めてと言う事で大目に見てやってください。

言い訳はこのくらいにして、まずは「アプリケーション>ユーティリティ>ターミナル」を起動します。
実は、ZbarはImageMagickという他のライブラリが必要?なのでこれをインストールします。
ターミナルからMacPort経由でImageMagickをインストールします。
MacPortのインストールはここらへんを参考にしてセットアップしてください。
まずは、ImageMagickを下記のコマンドで検索します。

1
port search ImageMagick

検索結果からImageMagickを探します。2009/11/27現在のバージョンは@6.5.7-0となっているのでこれをインストールします。
パスワードを入力するとインストールが始まるので少し待ちます。

1
sudo port install ImageMagick @6.5.7-0

次に先ほど解凍したzbarフォルダに下記のコマンドで移動します。

1
cd ~/Downloads/zbar-0.10

Zbarのインストールに必要なMakeFileを作ります。なんでもコンパイルやインストールをするにはmakeというコマンドを使用する様ですが、その為に依存関係やルールなどが記述されたMakeFileが必要です。で、そのMakeFileを作る前に正常にコンパイルできるかチェックする為のコマンド「configure」を実行しないといけないらしい。。。

今回は下記のコマンドでconfigureを実行しました。ZbarはWebCamなどからバーコードを読み込む事も出来る様ですが、今回は静的画像からのみに限定して、各種必要の無い物?をcofigureのオプション設定で外しています。
全部インストールしても良いのですが、色々と足りない(依存関係にあるライブラリ?)と怒られるのでそれらを全部外しました。大丈夫か???
configureがウマくできない場合にはerrorなどのメッセージが表示されるのでそれらを確認しつつオプションを変更するか足りないものを先にインストールする事になります。

1
./configure --with-x=no --without-gtk --without-qt --disable-video --without-python --without-xshm --without-xv

そして、ソースファイルをコンパイルする為にmakeコマンドを実行します。
コンパイルが終わるまでしばらく待ちます。

1
make

次にインストールする為にmake installのコマンドを実行します。
管理者権限で実行するとパスワード入力を求められるので、入力してインストールを開始します。

1
sudo make install

これでターミナルからZbarが使用できるようになったはずです。
Zbarのzbarimgというコマンドで画像からバーコードを読み込んでみます。
Googleの画像検索などで、「ISBN」などで検索して適当なバーコード画像をローカルにダウンロードします。
ターミナルから「zbarimg バーコード画像」という風にコマンドを入力して実行します。

1
zbarimg ISBN.gif

コマンドの実行結果としてターミナルにバーコードの数字が表示されたらZbar bar code readerのインストールは成功です。

1
EAN-13:9780747595823

次にPHPに読み込んだバーコードを表示します。
PHPのソースファイルは下記の用に記述しました。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<?php
echo "ISBNコードを出力する";
$jan = null;
$command = "/usr/local/bin/zbarimg -q ISBN.gif";
exec($command, $jan);
echo "<p>".$jan[0]."</p>\n";
?>
</body>

読み込む画像はPHPファイルと同一の階層に配置しました。
zbarimgをコマンドから使うときはフルパスではなくても実行できましたが、PHPから実行するときにはフルパスで指定しないと動作しませんでした。きっとPHPから実行する時にはターミナルとは異なるユーザーから。。。また調べておきます。
また、初めてexecなるPHPのコマンドを使用しましたが、実際に使う場面を想定すると画像ファイル名は動的に生成する事となります。その場合にファイル名を「escapeshellcmd」でエスケープ処理をしないとコマンドが乗っ取られるらしい。気をつけよう。

という事でかなりはまりましたが、少しだけ成長できたのでした。
特に今回は下記のサイトを参考にさせていただきました。感謝感謝。勿論、Zbar bar code readerというライブラリを提供してくれている開発者にも感謝しつつ終わりにしたいと思います。

参考サイト
PHPでバーコード解析

VirtualBoxを使ってMac OSX上に仮想環境を作る(5) ~共有フォルダを設定する~

VirtualBox上のWindowsとMacの間でファイルの受け渡しを行いたい事は多々あると思います。
そんな時に両者間でファイルをやり取りする為の共有フォルダを設定してみます。

まずは、VirtualBoxを起動して仮想マシン環境上のWindowsを起動します。
起動した仮想マシンの右下にある、小さなフォルダマークの共有フォルダをクリックします。

2009081101

共有フォルダのダイアログが表示されるので、右端にあるフォルダにプラスが付いたアイコンの共有フォルダ追加をクリックします。

2009081102

共有フォルダの追加のダイアログで「フォルダのパス」のドロップダウンを選択すると「その他」という項目が表示されるので選択します。

2009081103

Mac側のディレクトリが表示されるので、共有したフォルダを選び、「選択」ボタンをクリックします。今回は、ユーザーフォルダの直下にある「パブリック」を共有フォルダに設定します。

2009081105

選択した共有フォルダのパスとフォルダ名が自動的に挿入されます。このフォルダを常に共有フォルダとして使用したい場合には「永続化する」にチェックを入れます。また、ここで設定されている「フォルダ名」は後ほど必要になるので控えておきます。問題なければ「OK」をクリックします。

2009081106

設定した共有フォルダが一覧に表示されます。そのまま「OK」をクリックします。

2009081107

先ほど設定した共有フォルダを仮想マシンのWindows側から閲覧出来る様に設定します。
まずは、「アクセサリ>コマンドプロンプト」を起動します。

2009081108

表示された「コマンドプロンプト」に「net use 【ドライブ名】 \\vboxsvr\【共有フォルダ名】」を入力してください。ドライブ名はWindows側で共有フォルダに設定したいドライブ名を設定します。共有フォルダ名は先ほど控えたフォルダ名です。例えば僕の場合なら「net use E: \\vboxsvr\Public」と入力してエンターを押すと「コマンドは正常に終了しました。」と表示されます。これで設定は完了です。
※ \は¥マークと同じです。

2009081109

マイコンピューターを開くと先ほどのドライブ名でMacのフォルダが共有されています。

2009081110

これで、VirtualBox上のWindowsとMac間でファイルの受け渡しを行える様になりました。

ホーム

検索
フィード
メタ情報

ページの上部に戻る