AWS SDK for Androidを使ってDynamoDBを操作する
Android端末から直接AWSにアクセスできるAWS SDK for Androidを使ってみたのですがあまり情報がみつからなかったのでメモ。
なお今回は予めAWSの管理画面でDynamoDBのテーブルを作成しておき、そのテーブルにアクセスする手順を書きます。
まずSDKのjarファイルを自分のプロジェクトに取り入れます。
aws-android-sdk-***.jar
aws-android-sdk-***-debug.jar
aws-android-sdk-***-core.jar
など沢山のjarファイルがありますが
- 開発時にはaws-android-sdk-***-debug.jarを使用する(ログを沢山吐くので)
- 本番ではaws-android-sdk-***.jarを使用する
- もしS3など特定のサービスしか使わないのであればaws-android-sdk-***-core.jarとaws-android-sdk-***-s3.jarを使用する
と使い分けるらしいです。
DynamoDBClient作成
AWSCredentials credentials = new BasicAWSCredentials(ACCESS_KEY_ID, SECRET_KEY); AmazonDynamoDBClient dynamoDBClient = new AmazonDynamoDBClient(credentials);
ACCESS_KEY_ID, SECRET_KEYにはAWS管理画面で取得した値を入れます。
※上記方式ではSECRET_KEYをアプリに埋め込むのでセキュリティ的によろしくないです。公開するアプリではTVMを使用しましょう(参照:http://www.atmarkit.co.jp/ait/articles/1202/03/news132.html)
テーブルから値を取得
Map<String, AttributeValue> key = new HashMap<String, AttributeValue>(); key.put("hashtag", new AttributeValue().withS("aaa")); GetItemRequest getItemRequest = new GetItemRequest().withTableName(TABLE_NAME).withKey(key).withAttributesToGet(Arrays.asList("hashtag", "used")); GetItemResult result = dynamoDBClient.getItem(getItemRequest);
TABLE_NAMEにはDynamoDBで作成したテーブル名を入れてください。
上記は"TABLE_NAME"テーブルから"hashtag"項目が"aaa"というデータの"hashtag", "used"項目を取り出してます。
テーブルの値を更新
Map<String, AttributeValueUpdate> updateItems = new HashMap<String, AttributeValueUpdate>(); updateItems.put("used", new AttributeValueUpdate().withAction(AttributeAction.PUT).withValue(new AttributeValue().withN("1"))); UpdateItemRequest updateItemRequest = new UpdateItemRequest().withTableName(TABLE_NAME).withKey(key).withAttributeUpdates(updateItems); dynamoDBClient.updateItem(updateItemRequest);
※keyは「テーブルから値を取得」で作成したもの使用してます
上記では"TABLE_NAME"テーブルの"hashtag"項目が"aaa"というデータの"use"項目の値を1に変更してます。
Nakata Yasutaka Mix
久々に中田ヤスタカの曲onlyでmix作ってみました。
最後の繋ぎおもいっきりミスったなー
cocos2d-xでGoogle Analyticsを使う(iOS版)
現在開発しているアプリはcocos2d-xを使用しているのですがGoogle Analyticsに対応しようとしたところ、ちょっとつまずいたのでメモ。
基本的にはこちら(http://d.hatena.ne.jp/okahiro_p/20130111/1357903603)を参考にしたのですが
Google Analyticsのバージョンが上がりNativeCodeLauncher_objc.mにて
[[[GAI sharedInstance] defaultTracker] trackView:view];
のtrackViewが実装されてないと怒られちゃうのでこいつを
id<GAITracker> tracker = [[GAI sharedInstance] trackerWithTrackingId:@"UA-XXXXXXXX-X"]; [tracker set:kGAIScreenName value:@"Home Screen"]; [tracker send:[[GAIDictionaryBuilder createAppView] build]];
と書き換えます。
で「kGAIScreenNameが定義されない!」と言われたらヘッダーファイルで
#import "GAIDictionaryBuilder.h" #import "GAIFields.h"
こいつらをimportすればOK。
開発したアプリ紹介1
カウントアップメモ
https://itunes.apple.com/jp/app/kauntoappumemo/id660038932?mt=8&ign-mpt=uo%3D4
自分が開発したアプリの中で一番良く使ってるアプリ。
自分の写真を背景に設定できる所が気に入ってたりします。
自動並び替え機能を付けたいんですがUI的に良い案がないので(ボタンはあまり追加したくない)どうしようかなーと思ってます。