カテゴリー別アーカイブ: 未分類

iPhone6発表

昨日は錦織圭くんのテニスの話題でもちきりでしたが、日本時間の2014/9/10 午前2時を心待ちにしていた人も多いのではないでしょうか。

ずいぶん前から、iPhoneの新型「iPhone6」が発表されるという噂が流れていました。それがこの日時です。

結果的に「iPhone6」は発表され、腕時計型の「AppleWatch」も発表されました。

個人的には、噂通りで期待はずれ、と言う感想です。

もちろん素晴らしい技術が盛り込まれているのはわかるので、Apple社を否定するものではないんです。でも、発表前からの情報漏れがあまりにも多く、その殆どが発表内容と一致する点が面白く無いなあと思わせる要因だと思っています。

新製品発表に向けて期待感を煽るのはよく有るやり方だと思うのですが、もう少し神秘性が有ったほうが受け手は楽しめるように思います。

ナビアプリ

通勤のために毎日のように車を使っています。
また、プライベートでは知らない土地に出かけることが多いため、事前のルート調査は欠かせません。私の車にはナビが付いていないので、以前は事前に紙の地図を印刷しておき大体のルートを記憶した上で運転に入っていました。

ところが、ここ数年でこのルート調査にかかる負担が大きく減少しました。スマートフォンで地図の検索とナビのサービスが手軽に利用できるようになったからです。もちろん以前からも同種のサービスは有りましたが、通信速度の向上や電池のもちが激変したことで、サービスの質が向上したと思います。また、アプリに内蔵される地図情報も充実しているため、おかしなルートを案内されることも少なくなりました。

つい2週間ほど前なのですが、新しいアプリをスマートフォンにインストールしました。「Yahoo!カーナビ」と言います。それまではAndroidスマートフォンに搭載されているGoogle標準のナビアプリを使っていたのですが、ネットでの評判が良かったのでこのYahooのナビに変更してみました。実は、Googleのナビほど高性能ではないな、と私は感じています。例えばYahooのナビは「出発地と目的地」のみ指定可能です。Googleのナビはこれに加えて「経由地」も設定できるんです。

では、なぜ機能的に劣ると思われるYahooのナビを私が気に入ったのか、それは「VICS」の情報を受信し音声で伝えてくれるからなんです。
「VICS」と言うのは、道路の渋滞情報や交通規制情報などをリアルタイムに伝えてくれる仕組みのことです。
先日長い渋滞につかまったことが有りました。どこまで先を眺めてみても渋滞の原因がわかりません。たまたま知っている道だったためナビを使っていなかったのですが、試しにナビを起動してみました。すると「1km先で事故」と言う情報が飛び込んできました。渋滞の原因が事故によるものであること、あと1kmで解放されるという目処がついたことで、少しほっとしました。

ファビコンって初めて聞いた

ファビコンとは、、、

1

 

これですね。サイト毎に表示される小さなアイコンのことです。

必要に迫られないと、調べもしないものですね、、、

 

HTMLに組み込む場合、

<head>

<title>ファビコンってこんな感じで指定するらしいよ</title>

<link rel=”shortcut icon” href=”favicon.ico”>

</head>

みたいに、head タグ内にlinkで指定します。

 

指定する画像は16×16で「.ico」というファイル形式がいいようです。

既存の画像をicoファイルに変換してくれるサイトもありますね。

 

知らないことばっかりです。

こつこつ頑張ります。

家計簿アプリ

みなさん、自分の財布の中に入っているお金、全部でいくらか言えますか?
私は言えませんでした。
財布の中身を聞かれて答えられない人は、お金が貯まらないらしいです。心当たりの有る人は注意しましょう。
他にも、レシートとポイントカードばかり詰まった「ブタさん財布」もお金が貯まらない人の特徴らしいですよ。

ところで、家計簿アプリって知っていますか?
これを使い始めてから、財布の中身が少しずつ把握できる様になってきました。

要するに家計簿をスマホのアプリにしたものなのですが、紙には無い便利な点が有ります。これが気に入って私も家計簿アプリを使うはじめ、三日坊主にならないどころか一年以上継続して家計簿をつけられるようになりました。

私が使っているアプリは「Zaim」という名前です。AndroidでもiPhoneでも使えるのでオススメなのですが、私が推すのはiPhone版Zaimです。
なぜかと言うとiPhone版の方が機能が充実しているからです。

では、何が気に入ってZaimを使い始めたのか、なぜiPhone版を推すのか、その辺りについて書いていきたいと思います。

まず気に入った点ですが、「レシートが読める」です。皆さんのスマホにはほぼ例外無くカメラが搭載されていると思います。このカメラをアプリ側から操作してレシートを撮影することが出来ます。
あれ?レシートを撮影するだけなら、あまり意味はないですよね?むしろ、紙に書く方が手早いような・・・
ところが、Zaimのような家計簿アプリは、レシートを撮影した後でそこに書かれた文字をデータに変換してくれるのです。
つまり、牛乳が198円だった事や、何月何日にどの店で購入したのかという事まで、スマホ上に記録することが出来ます。そして、このスマホ上に記録した情報は回線を通じてインターネット上のZaimが管理するサーバに保存することが出来ます。万が一スマホが壊れた時や買い替えた時でも 、この保存機能を活用すれば簡単に復元できます。

さて、次にiPhone版を推す理由ですが、それは振替機能にあります。
振替と言うのは、財布の中の現金を銀行に預けた場合に使います。つまり、現金から銀行預かりのお金に変化したものの自分の持ち金合計が変化しない場合などを指します。
Android版の機能は、支出・収入のみなのですが、iPhone版には支出・収入・振替の機能が有ります。Android版の場合は上に書いたサーバの機能を使う事で記録することが出来るのですが、パソコンを持っていない人は使えないのでちょっと不便ですね。

これまで数多く家計簿アプリを試して来ましたが、三日坊主の私が一年以上も使い続けられるなんて、とてもいいアプリだと思います。アプリを使って大事なお金をを自己管理、そしてブタさん財布とさよならしましょう。

PHPでカラーヒストグラム

あるお仕事で類似画像検索を行うことになりました。

こちらがとても参考になりました。

が、PHPじゃなかったので、PHPで書いてみました。

 

類似画像検索のために、

画像からカラーヒストグラム(64色)を作成して、

DB(MySQL)に登録することにしました。

 

まずは、関数を作っておいて

 

// オリジナル画像のRGBからヒストグラムのビン番号を計算

function rgb2bin($red, $green, $blue) {

$redNo = (int)($red / 64);

$greenNo = (int)($green / 64);

$blueNo = (int)($blue / 64);

return 16 * $redNo + 4 * $greenNo + $blueNo;

}

 

以下、メイン処理

 

// 画像ファイルを読込み&画像サイズ取得

$filepath = ‘img/hoge.jpg';

$img = imagecreatefromjpeg($filepath);

$width= imagesx($img);

$height= imagesy($img);

 

// カラーヒストグラムを生成

$histogram = array();

for ($i = 0; $i < 64; $i++) {

$histogram[$i] = 0;

}

 

for($y = 0; $y < $width; $y++){

for($x = 0; $x < $height; $x++){

$rgb = imagecolorat($img, $x, $y);

$r = ($rgb >> 16) & 0xFF;

$g = ($rgb >> 8 ) & 0xFF;

$b = $rgb & 0xFF;

$bin = rgb2bin($r, $g, $b);

$histogram[$bin] += 1;

}

}

imagedestroy($img);

 

// ヒストグラムを全体を1になるように正規化

for ($i = 0; $i < 64; $i++) {

$histogram[$i] = $histogram[$i] / ($width* $height);

}

 

これで $histogram 配列にヒストグラムが入ったので、

後は、それら 64 つの値を、そのままDBに登録するだけです。

(登録処理は省略)

 

DBに入ったら、やっと類似検索ができます。

以下のSQLでは、検索元となる画像のヒストグラムと

その画像も含めた全てのヒストグラムをクロスジョインして

類似度(Histogram Intersection)を計算し、

類似度の降順で結果を返しています。

 

select a.id as a_id, b.id as b_id,

truncate(LEAST(a.bin_00, b.bin_00) + LEAST(a.bin_01, b.bin_01) + LEAST(a.bin_02, b.bin_02) + LEAST(a.bin_03, b.bin_03) + LEAST(a.bin_04, b.bin_04) + LEAST(a.bin_05, b.bin_05) + LEAST(a.bin_06, b.bin_06) + LEAST(a.bin_07, b.bin_07) + LEAST(a.bin_08, b.bin_08) + LEAST(a.bin_09, b.bin_09) + LEAST(a.bin_10, b.bin_10) + LEAST(a.bin_11, b.bin_11) + LEAST(a.bin_12, b.bin_12) + LEAST(a.bin_13, b.bin_13) + LEAST(a.bin_14, b.bin_14) + LEAST(a.bin_15, b.bin_15) + LEAST(a.bin_16, b.bin_16) + LEAST(a.bin_17, b.bin_17) + LEAST(a.bin_18, b.bin_18) + LEAST(a.bin_19, b.bin_19) + LEAST(a.bin_20, b.bin_20) + LEAST(a.bin_21, b.bin_21) + LEAST(a.bin_22, b.bin_22) + LEAST(a.bin_23, b.bin_23) + LEAST(a.bin_24, b.bin_24) + LEAST(a.bin_25, b.bin_25) + LEAST(a.bin_26, b.bin_26) + LEAST(a.bin_27, b.bin_27) + LEAST(a.bin_28, b.bin_28) + LEAST(a.bin_29, b.bin_29) + LEAST(a.bin_30, b.bin_30) + LEAST(a.bin_31, b.bin_31) + LEAST(a.bin_32, b.bin_32) + LEAST(a.bin_33, b.bin_33) + LEAST(a.bin_34, b.bin_34) + LEAST(a.bin_35, b.bin_35) + LEAST(a.bin_36, b.bin_36) + LEAST(a.bin_37, b.bin_37) + LEAST(a.bin_38, b.bin_38) + LEAST(a.bin_39, b.bin_39) + LEAST(a.bin_40, b.bin_40) + LEAST(a.bin_41, b.bin_41) + LEAST(a.bin_42, b.bin_42) + LEAST(a.bin_43, b.bin_43) + LEAST(a.bin_44, b.bin_44) + LEAST(a.bin_45, b.bin_45) + LEAST(a.bin_46, b.bin_46) + LEAST(a.bin_47, b.bin_47) + LEAST(a.bin_48, b.bin_48) + LEAST(a.bin_49, b.bin_49) + LEAST(a.bin_50, b.bin_50) + LEAST(a.bin_51, b.bin_51) + LEAST(a.bin_52, b.bin_52) + LEAST(a.bin_53, b.bin_53) + LEAST(a.bin_54, b.bin_54) + LEAST(a.bin_55, b.bin_55) + LEAST(a.bin_56, b.bin_56) + LEAST(a.bin_57, b.bin_57) + LEAST(a.bin_58, b.bin_58) + LEAST(a.bin_59, b.bin_59) + LEAST(a.bin_60, b.bin_60) + LEAST(a.bin_61, b.bin_61) + LEAST(a.bin_62, b.bin_62) + LEAST(a.bin_63, b.bin_63) + 0.005, 2) as intersection

from color_histogram as a

cross join color_histogram as b

where (a.id = ‘hogehoge’) order by intersection desc;

 

同じ画像の場合は類似度は1になります。

1に近いほど似ていて、0に近いほど似ていません。

このSQLで類似度が出せるのは、

事前にヒストグラムの合計値が1になるように正規化しているためです。

 

まだまだ、試作段階で、

件数が多くなったときの速度が非常に心配ですが、

今のところはこんな感じです。