ラベル BARCOTTER の投稿を表示しています。 すべての投稿を表示
ラベル BARCOTTER の投稿を表示しています。 すべての投稿を表示

2017-10-07

awsのlambdaとAPI Gatewayを使って、ちょっとはまったこと

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
ほとんど使っている人はいないのですが、
barcotterというバーコードから、そのバーコードに対応するamazonのリンクを作成するandroidアプリを作っています。
これのバーコードからamazonのリンクを生成する部分は、サーバを用意して、このサーバ側で行っています。

最初は、サーバは
Google App Engine(python)
で作っていたのですが、なんかのサポートが切れることをきっかけに
Open Shift(Ruby on Rails)
に乗り換えたのですが、こちらも最近サポートが切れる部分があったので、これをきっかけに、今回サーバ側を
aws lambda(python)
に乗り換えてみました。

今回、lambdaに乗り換えて、いざアプリを利用してみると
type java.lang.String cannot be converted to JSONObject
というエラーが出てjsonのパースができない状態になりました。

原因は、すごく些細でlamdbaでjsonを返すには
handler内で辞書オブジェクトをreturnしてやればよかったのに、
わざわざ辞書オブジェクトをjson.dumpsして文字列にしたものをreturnしてしまって、
これが原因でパースできなかったというものでした。

普通に辞書オブジェクトでreturnすると、ちゃんとbodyに以下のようにjsonが
{ 'aaa': 'bbb', 'ccc': 'ddd'}
となるのですが、文字列で返すとbodyに
"{ 'aaa': 'bbb', 'ccc': 'ddd'}"
とダブルコーテーションがついてしまって、これのせいでパースに失敗していました。

これに気づくまで、無駄に時間がかかってしまいました。

あと、結果的には関係ないのかもしれませんが
パースできないのが、文字コードがうまく処理できないのかと思い、
API Gatewayのメソッドレスポンスの
HTTP のステータス200 の
レスポンス本文のコンテンツタイプが
application/json
だったものを
application/json;charset=UTF-8
とcharsetを追加しました。

とりあえず無事に移行できました。

2012-10-22

twitterを利用した簡易読書録を作る方法

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
twitterを利用して私がやっている簡易な読書録の作り方をまとめてみます。

簡単に言ってしまえば、ツィートに「#読んだ」とハッシュタグをつけるだけです。

さらに自分のつけた「#読んだ」のツィートを見れるようにするために
を利用します。

これで以下のような感じの簡易な読書録ができあがります。

私の場合は、書名とamazonへのリンク(詳しい情報はamazonさんにおまかせ)を入れています。

この書名とamazonへのリンクを入れるために私が作ったandroidアプリ
を利用しています。

BARCOTTERは、バーコード情報をカメラで読み取るか入力することでamazonで検索を行い書名などの情報を取得してtwitterなどに取得した情報を渡すアプリです。
詳しくは、以下をご覧ください。


実際の読書録を作る際の流れは以下のような感じです。

BARCOTTERを立ち上げます。

②カメラがついていれば読取を押してカメラを起動してバーコードを読み取ります。バーコードが読み取りにくいときはフラッシュをつけたりすると読み込みやすくなるようです。
カメラがない場合は、「BARCODE or ISBN」の欄に直接バーコードを入力します。
また、「後にテキストを追加の部分」に「#読んだ」と入れておきます。


③共有を押します。(設定で読み取り後自動で共有を実行できます。)共有すると共有するアプリを選択できるのでtiwtterを選択して、適当にメモを追加してツィートします。

これでOKです。

ちゃんとした読書録を作りたい場合は、以下にいろいろな読書記録のサイトが紹介されているので参考になります。
http://matome.naver.jp/odai/2129578537652781601


ちなみにBARCOTTERで判別できるのは、本だけではなくCDやDVDなども判別できます。
なので読書録だけでなく音楽録や映画録などに応用もできたりもしますよ。

2011-12-14

バーコードからtwitできるBARCOTTERをバージョンアップしました

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
バーコードを読み取って、本のタイトルなどを判別してtwitができるBARCOTTERをバージョンアップしました。

BARCOTTERに関して詳しいことは、
http://kingyo-bachi.blogspot.com/2011/11/barcotter.html
をご覧ください。

バージョンアップ内容としては、バグフィックスです。

たまに
java.lang.IllegalArgumentException: View not attached to window manager
という感じのエラーが発生していたのですが、
どうもProgressDialogが表示されている最中に画面を回転させると出るようです。

対処としては、ProgressDialogを利用するのをやめました。
ProgressDialogを利用したかったのは、バーコード読取後にそれが何かを通信して確認しているのですが、その間に他の作業をしてもらいたくないなぁということでした。
BARCOTTERには、そんなにボタンがないのですべてのボタンを通信中は利用不可にすることでProgressDialogと同じように通信中に作業できない感じにしてみました。

他の変更点として、AmazonアソシエイトIDを設定できるようにしてみました。

今回、修正の際にAndroidでの非同期処理には、AsyncTaskというのがあるということを知ったのでこれを使うようにもしてみました。
今までは、
http://magpad.jugem.jp/?eid=109
で紹介されているような方法でやっていたりしました。
置き換えは、
Runnable
に書いていたことを
doInBackground
に移して
Handler
に書いていたことを
onPostExecute
に移した感じです。


追記 2011/12/24
上記変更で落ちることはなくなったのですが、画面を回転させるとdisableにしたはずのボタンがenableになってしまう状態でした。
以下のサイトで紹介されていた
http://d.hatena.ne.jp/hyoromo/20090712/1247385249
AndroidManifest.xml ファイルに android:configChanges 属性を追記すると問題なくなりました。
紹介されているように
 orientation|keyboardHidden
と設定するとよい感じでした。
keyboardHidden
があった方がよさげな動作をしました。理由はよくわからないのですけどね。

2011-11-01

BARCOTTERの説明

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
バーコードを商品名に変換して、お手軽にtwitterやevernoteに共有できるアプリBARCOTTERの説明です。

以下はBARCOTTERを起動すると以下の画面になります。

基本的な動作は、バーコードの値を入力または読取して共有を実行します。

それぞれの説明です。


①JANコードまたはISBNの値を入力します。共有を実行すると変換された商品名などが表示されます。JANコードと認識できない数値を入力すると共有の歳にエラーになります。JANコード以外に普通に文字を入力すると何も変換せずにその文字の共有を行います。

②共有を実行する際に変換した商品名の前に追加する文字列を指定します。一例としてその商品の評価などを入力するのもよいと思います。起動時には前回利用した値がセットされます。

③今まで利用した②で記載した内容を多い順に10件表示します。


④共有を実行する際に変換した商品名の後に追加する文字列を指定します。一例としてハッシュタグなどを入力するのもよいと思います。起動時には前回利用した値がセットされます。

⑤今まで利用した④で記載した内容を多い順に10件表示します。

QRコードスキャナーがインストールされていると利用可能になります。①でJANコードを入力する代わりにカメラでバーコードを入力することができます。読取を実行するとデフォルトでは自動的に共有を実行します。

⑦ バーコード記入後に押すと商品名の変換を行い他のインストールされているtwitterクライアントやEvernoteなどのアプリにデータを渡します。共有を行うメッセージは「②のメッセージ + ①から変換された商品名など + ④のメッセージ」になります。

⑧①に入力されている内容を消去します。


twitterクライアントに共有を実行すると以下のようになります。
この例では、バーコードから「1Q84 BOOK 1」に変換を行い、商品名の前に「★5」を追加して、商品名の後に「#読んだ」を追加しています。



メニューボタンを押すと以下のように設定メニューが表示されます。

設定画面では、以下の項目が設定可能です。

URLを追加:バーコードから商品名に変換した際にAmazonへのURLをあわせて追加します。ここのチェックをはずすと商品名だけが追加されます。

読取後すぐ共有:QRコードスキャナーでバーコードの読取を実行したら、自動的に共有を実行します。チェックをはずすと読取後に自分で共有を実行する必要があります。

前にテキストを追加:共有の際にバーコードから変換した商品名などの前にテキストを追加して共有を行います。チェックをはずすと入力欄自体表示されなくなります。

後にテキストを追加:共有の際にバーコードから変換した商品名などの後にテキストを追加して共有を行います。チェックをはずすと入力欄自体表示されなくなります。

AmazonアソシエイトID:AmazonへのURLにここで指定したAmazonアソシエイトIDを設定することができます。



以下のように前にテキストを追加、後にテキストテキストを追加のチェックをはずすと入力欄自体表示されなくなります。



twitterを利用している方は、
後にテキストを追加する際にハッシュタグを利用して、さらに
twilog
をあわせて利用するとtwitterで読書録をお手軽に作成できます。

以下は読書録の例です。
http://twilog.org/vivahiraj/hashtags-%E8%AA%AD%E3%82%93%E3%81%A0

はじめてのAndroidアプリBarcotterを公開してみました

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
はじめてのAndroidアプリ「BARCOTTER」を公開してみました。

BARCOTTERでは、JANコードもしくはISBNを入力すると、その商品名とamazonへのurlを取得します。
取得した商品名をtwitterなどにお手軽に共有することができます。

JANコードは、QRコードスキャナーがインストールされていればカメラで取得することもできます。

利用イメージは、以下のような感じです。



赤で囲まれたテキストボックスにJANコードまたはISBNを記入するか、読取ボタンをクリックしてバーコードを読み込んで共有を実行すると以下のような感じでバーコードから商品名を変換して共有することができます。以下は、twitterクライアントに共有した例です。


ハッシュタグをつけてtwitlogを利用するとお手軽に読書録などを作成することができます。

以下は、私の読書録です。
http://twilog.org/vivahiraj/hashtags-%E8%AA%AD%E3%82%93%E3%81%A0

BARCOTTERに関するもうちょっと詳細な説明は以下をご覧ください。
http://kingyo-bachi.blogspot.com/2011/11/barcotter.html