Qiita

ひさびさにBlog更新

めっきりと投稿がなくなりましたが、その原因として最近はQiitaへの投稿が増えてきました
http://qiita.com/Sam

今後はQiitaへ投稿したら、こっちにリンクを張りますか
本当ははてなに記事を投稿してもよいのですが、ダイアリーはMarkdown使えないし、ブログのMarkdownはへんてこな感じだし...

Ruby Sequel Oracle Sequence Literal

INSERT文を実行する場合にOracleのSequenceを利用してプライマリキーを自動でインクリメントしていくようなパターンのときに、なぜかリテラルがうまいこと動かなかったのでメモ。

シーケンスを取得する際に、次の通りbindを使って文字列として設定してしまうと、バインド変数使用時の ORA-01722 エラーが発生します

DB[:items].insert(:a => 1, :b => "user_seq.nextval")
# INSERT INTO items (a, b) VALUES ("1", "user_seq.nextval")

また、Sequel::Dataset クラスにある literal を使っても、同様にORA-01722 エラーが発生します

DB[:items].insert(:a => 1, :b => DB[:items].literal('users_seq.nextval'))
# INSERT INTO items (a, b) VALUES ("1", '"user_seq"."nextval"')

そこで、リテラルには、シンボルを使ってデータ型で対応します
その際、シーケンス名と次の値を取得する nextval の間を __ (アンダースコアx2)で繋げます

DB[:items].insert(:a => 1, :b => :users_seq__nextval)
# INSERT INTO items (a, b) VALUES ("1", "user_seq"."nextval")

"user_seq"."nextval"のような形にすることで、Oracleが代入時に実行する暗黙変換がうまいこと比較されます。

http://www.st-hatena.com/users/sa/samril/user_p.gifガチで悩んだ

(今さら!?)iPhoneアプリ MH4「俺適スキルシミュレータ」

モンハン Advent Calendar 2013 - Adventar 22日目です。

まずは、私のモンハン歴ですが

MH ふつう
MHG ふつう
MHP めちゃやった
MH2 めちゃやった
MHP2 発売日に学校休んでやった
MHF しらんぷり
MHP2G 友達と遊ぶ = オンラインであおうぜ!
MH3 wiiと一緒に購入したあとも、唯一持っているwiiのソフト
MHP3 廃人ぎりぎり
MHP3HD PS3持ってない
MH3G 親指が悲鳴をあげたのでリタイア
MH3GHD 親指の治療中
MH4 HR130、まだまだ上昇中

メイン武器:基本全部(今作は弓が使いづらいのでやってない...
http://uploda.cc/img/img52b6dce6ebda1.jpg
青春ぶっちぎりの中でのハンター生活です。


話を戻し、予定とおり、スキルシミュレータについてです。

モンハンになれてくると、その次はスキル設定にたどり着くと思います。
しかし防具だけで1500以上の数という上に、お守り、装飾品など、すべてのパターンを網羅すると、その数は計り知れません!
そこで使われるのが「スキルシミュレータ」です

モンハンにもスキルシミュレータがあり、その中でも一番有名なのは頑張って作ったモンハンシミュレータになります。
こちらは私も常に愛用させてもらっており、使いやすさ、速度、ともに申し分なしです!

しかし、こちらはPCがメインなため、スマートフォンでは使うことができません
もちろんスマートフォンのスキルシミュレータアプリやモバイルサイトもあります。

私もいくつか試しに使ってみましたが、どうもしっくりこない...
広告つくととたんに見づらいし、そもそもスキルシミュレータにネットワーク通信いるのかよ!
いや、なにより使いづらい...頑シミュがいかにいいのかよく分かる。
けどね、通勤時間とか会社のトイレの個室で調べたいのですよ。


なら作ればいいじゃん」(11月終わり


ということで、今更感はハイパーありますが、現在開発中の「俺適スキルシミュレータ」です!!!

まさに 俺の俺による俺のためのスキルシミュレータ なのです!!!
よりシンプルなUIですが、必要な機能はすべて揃っているはず
なにより使いやすさ(俺目線限定)を重視しました。
※現在、鋭意開発中のため、今後内容が変わる可能性大です

たぶん、これを見た皆さんは「いつ出るの?」と思ったはず(訳:思ってくれるとうれしい
しかし肝心なスキルシミュレート機能が未実装なのです...
なので、明日の kudzu さんの「スキルシミュレータのアルゴリズムについて」には、誰よりも楽しみにしているのです(ハードルよいしょ

もしくは「私で良ければアルゴリズムを提供します!」という人募ります!
自分でも考えてもいいのですが、最初に作ったものは、なんかものすごい時間かかる処理になってしまった...どうやったらあんだけ早くなるの?
ご協力いただける方は、コメントかTwitterまでお願いします(切実


最終的にステマ乙の記事でしたが、読んで下さってありがとうございました。

リリースまで持ち込めるといいが...

http://www.st-hatena.com/users/sa/samril/user_p.gifけど広告ださないとアプリの運用できないのも事実...

Google Analytics 3.0.2 for iOS のビルド時に "_OBJC_CLASS_$_ASIdentifierManager" が発生する場合の対処法

Google Analytics Services SDK 3.0.2 for iOS を実装した際にエラーが出ました。
その対処法?をメモ

iOS Getting Started Guide.に従って進む。

1. ダウンロードしたSDKのZIPを解答して次のファイルをXcodeプロジェクトに組み込む

GAI.h
GAITracker.h
GAITrackedViewController.h
GAIDictionaryBuilder.h
GAIFields.h
GAILogger.h
libGoogleAnalyticsServices.a

2. 次のフレームワークを追加します

libGoogleAnalyticsServices.a
CoreData.framework
SystemConfiguration.framework
libz.dylib

3. ビルドすると次のようなエラー

Undefined symbols for architecture i386:
"_OBJC_CLASS_$_ASIdentifierManager", referenced from:
objc-class-ref in libGoogleAnalyticsServices.a(TAGAdvertiserId.o)
objc-class-ref in libGoogleAnalyticsServices.a(TAGAdvertisingTrackingEnabledMacro.o)
objc-class-ref in libGoogleAnalyticsServices.a(TAGMobileAdwordsUniqueIdMacro.o)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

対処法

次のフレームワークを追加します
AdSupport.framework

原因



http://www.st-hatena.com/users/sa/samril/user_p.gifなんでだ?

Beacon端末を比較してみる Estimote & StickNFind & BM1

iBeacon Advent Calendar 2013の12日目になります。
今回はビーコン端末について書きます。


iBeaconを使ったサービスを作成するには、ビーコンの受信と発信の2つが必要になりますよね。
主にビーコンの受信は対応しているiOSバイスAndroidバイスを使う人が多いと思います。

では「ビーコン(発信)側」はどうするのでしょう?

受信側と同じiOSバイスを使う?もちろんiOSもビーコン発信器として使うことができます
けれども、ビーコンは設置空間に対して1〜複数の端末が必要になります
そんな高価なデバイスを複数台用意し、設置しっぱなしにするなんてブルジョア過ぎますよ!

では、現実的に考えるとサードパーティー製のビーコン発信機を使うことになりますよね
iBeacoに対応している発信機は「Bluetooth LE」が搭載されている端末です
対応している端末は複数存在しますが、代表的なのが次の3つになります

  • Estimote Beacon(Estimote, Inc.)
  • StickNFind(Sticknfind Technologies.)
  • Beaconモジュール「BM1」(Aplix)

今回はこれらビーコン端末の比較を行います

Estimote Beacon StickNFind Beaconモジュール「BM1」
site link link link
SDK for iOS ×
SDK for Android ×
値段 3つで$99 2つで\6,800 1つ\300(ロット数制限あり)
技適 ×
UUIDなどの変更
動作時間 ボタン電池で約2年 ボタン電池で約1年 キットにより異なる
乾電池で約10年、ボタン電池で約1年
電池交換 ×

赤字は訂正しました。「わふう>ω<のひと」さん、ありがとうございます。

私的なメリットデメリットです

Estimote Beacon StickNFind Beaconモジュール「BM1」
メリット おしゃれ、SDKもあり開発者にもやさしい 省スペース、日本代理店もあるので日本語でのやり取りも可能 端末価格としては最安値、ハードメーカなのでサポートも充実
デメリット まず技適通ってないので、日本では使えない BLE端末としては電池の寿命が短い 初期ロット数があり個人では難しい

ほかにもいくつかあげるとキリがありませんが、こんな感じでしょう

Estimote BeaconStickNFindの端末自体については、以前記事にもあげました。
次に、それぞれのSDKについて書いていきます。

Estimote SDK

iOS SDKはこちらから入手することができます => https://github.com/Estimote/iOS-SDK
かなりの頻度でpushされています

Estimote SDK のドキュメントを簡単に日本語にしてみました => https://github.com/Samril/EstimoteSDK-for-Japanese-Reference
※先ほど確認したら sdk version 1.0 -> 1.1 になってた。後日差分をpushします

StickNFind

SDKはこちらからライセンス認証をおこなったのち、メールで送られてきます => https://www.sticknfind.com/SDK/
だいたい4〜5営業日くらいかかりました
また、Android版のSDKに関しては、NDAを別途結ぶ必要があります

Beaconモジュール「BM1」

Android版しかありませんが、SDKはこちらから => http://www.aplix.co.jp/beacon/public/index.html

これからもどんどんビーコン端末が増えていくと思います。
もし、良さそうなビーコンがありましたら、ご一報ください。


本日行われる【iOS勉強会】iBeaconでできること - Developers.IO Meetup 02に、私も参加させていただきます。
その際、Estimote BeaconとStickNFindは持っていきますので、ぜひ実物を見てみたい方は、お声掛けください!

http://www.st-hatena.com/users/sa/samril/user_p.gif一緒にBeaconを日本でも流行らせよう!

stick-N-Find が届いたよ!

前回の記事「Estimote Beaconが届いたよ!」でビーコン端末の1つを紹介しました。
今回も同様にビーコン端末の1つである「stick-N-Find」を手に入れたので紹介します。

stick-N-Find(ステッカー・ファインド)は、CAMP FIREでもあがっていました。

こちらが届いた商品です。2つ入りで6000円ちょいでした。

箱を開けると、ビーコンとキーチェーン用の2セットが入っています。

iPhone 4と大きさ比較です。

実に小さい

また厚みも同様に、iPhoneの半分くらいでした。

iOSアプリでも専用アプリ StickNFind がリリースされていますので、コチラを使ってみます。

はじめにビーコンとペアリングを行い、必要であればビーコンにアラームの指示を出すこともできます。

体感で5mくらいからペアリングを開始しているので、部屋の中でものを探す目的は達成できると思います。

http://www.st-hatena.com/users/sa/samril/user_p.gifこちらは技適が通っていますので日本でもお使い頂けます

Estimote Beaconが届いたよ!

iOS 7 の注目されている機能の1つとして「iBeacon」があります。
まず、iBeaconとは

「iBeacon location and proximity detection technology」
AppleiOS 7に統合した位置および近接検出技術のことで、Bluetooth LEを用います。

そして、iBeaconでできることは

  1. CoreLocationフレームワークを使いビーコンの検出
  2. CoreBluetoothフレームワークを使いビーコン・アプリケーションを作る
  3. Passbookとの連携

ビーコンの送信側は、CoreBluetoothフレームワークを使うことでiOS端末でも作成することができます
けれども、iOS端末をビーコン端末として用いた場合は、つねにビーコンアプリをフロントに起動し続ける必要があります。
単純なやり取りなら良いですが、ビーコンの性質上あまりiOS端末をビーコンとして用いるのはよくありません。

AppleiOSビーコン端末を出すことは予想できますが、それは少なくとも数か月〜数年以上先になります。
そこで、サードパーティー製のビーコン端末を用いることが想定されてきます。

ビーコン端末は数ある中で、もっとも有名なのが Estimote inc. の Estimote Beacon はのではないでしょうか?
今回は、こちらを輸入できたので、簡単にご紹介します。


こちらが届いた Estimote Beacon です。

外箱は段ボールのような素材でできています。

箱を開けます。

ビーコンは3つ入っています。
特に取扱い説明書などは入っておりません。

ビーコンの大きさの比較です、比較には4インチのiPhone 4を用いました。

縦サイズはiPhoneの半分以下ですが

幅は2.5倍くらいあります。
手乗りな感じです、思った以上に大きい印象でした。

ビーコンの裏面は、粘着性の高いシールのようなものが張り付いていました。

平面であれば、素材に限らず簡単に取り付けが可能だと思います。

また、取り外しの簡単です。

次に実際にビーコンを受信してみます。
ビーコンの受信には、せっかくなので Estimote Virtual Beacon を使います。

3つのビーコン端末、すべてが認識されました。

また、ビーコンをタップすると、その詳細を確認することができます。

精度はそんなに悪くないとおもいます。
こちらについては、もう少し調査したのち、ご報告できれば良いと思います。


このように、いくつものビーコンが日に日に作成され、使われていくケースが増えていくと思います。
日本では実用例はまだ少ないものの、新しいサービスの第一歩にはなると思います。

http://www.st-hatena.com/users/sa/samril/user_p.gifEstimote Beaconは技適に通っていないので、日本では使えないので注意