Profile

横浜@神奈川県在住。法人の看板しょったSEとして働いています。

大学卒業後2年半SEやった後会社飛び出しました。

現在はWebアプリ(on GAE)とAndroidアプリの開発といったGoogleに嫌われたら終了な仕事やってます。

gcm-logo簡単に言うとGoogleが提供する対Android向けプッシュ通知サービスです。
http://developer.android.com/google/gcm/index.html

今回私はGAE(Google App Engine for Java)サーバで使用してみました。
検索してみると結構PHPとかGAE以外でやっている方が多かったのでメモしておきます。


■実装の手順
流れとしては
1.プロジェクトを用意する
2.API(Google Cloud Messaging)をONにする
3.API Keyを取得(メモ)する
4.Androidアプリにjarの組込やプログラムをセッティングする
5.サーバ(GAE)にPushする機能をプログラムする。

GAEではないですが、全体の流れとしてはこちらが参考になります。
今回は他サイトとの差分ではないですが、5番のGAEの部分だけ取り上げます。


■ライブラリの取得
実はGAE上で簡単にGCMを使うためにライブラリが用意されています。
ゼロベースで作っても良いかもしれませんが、あるものは使いましょう。

Android SDK ManagerでGoogle Cloud Messaging for Androidを取得していない場合はExtrasから取得して下さい。
取得すると
[Android SDKパス]\extras\google\gcm\gcm-server\dist\
にgcm-server.jarが入っているのでGAEプロジェクトのWEB-INF/libとかに追加。

次にWEB-INF/libにjson_simple-x.x.jarが無い場合は
[Android SDKパス]\extras\google\gcm\gcm-server\lib\
のjson_simple-x.x.jarを同様に追加して下さい。

gcm-server.jarはただのライブラリ、json_simple-x.x.jarは追加しないと
java.lang.NoClassDefFoundError: org/json/simple/parser/ParseException
が発生するので、それ対策です。


■ライブラリの改変
んで、後はプログラムだけと言いたいところなんですがごめんなさい。
最新版はどうか分かりませんが、2013/02の時点ではgcm-server.jarに問題があって
一部改変しないと日本語を通知した場合文字化けが起こります。

ということで改変しましょう。
gcm-server.jarを展開してSender.javaというクラスを開きます。
改変するのはその中のpostメソッド

byte[] bytes = body.getBytes();

という処理ですが、
私の場合は484行目にありました。こいつを

byte[] bytes = body.getBytes("utf-8");

としてやります。
それが出来たら改変は終わりなのでjarに戻してあげましょう。
(WEB-INF/libに設定も忘れずに)


■Push通知のプログラミング!
後はPush通知のプログラムだけです。

Sender sender = new Sender(gcmApiKey);
Message.Builder builder = new Message.Builder();
builder.collapseKey(collapse_key);
builder.timeToLive(time_to_live);
builder.addData("message", data);
Message message = builder.build();
try {
    MulticastResult result = sender.send(message, registrationIds, 5);
} catch (IOException e) {
    e.printStackTrace();
}

gcmApiKeyはGCMで取得したAPIKey
collapse_keyは通知グループ名(String) いくつか送った時に同じ通知グループ名は一つにまとめられるようです
time_to_liveは通知メッセージが送れない時にどのくらいの時間(intで秒指定)キープするか
dataは通知するメッセージ(String)
registrationIdsはregistrationIdのString型のListです。

なので、上記を実装して、registrationIdはアプリとかで事前に取得してDB化しておき、
必要に応じて通知したい端末のregistrationId向けに上記処理を行うという感じになるかと思います。

registrationIdってどうやって取得するの?っていうのは前述のこちらが参考になります
Activityの実装で説明されています。

指文字トレーナー指文字トレーナー

https://play.google.com/store/apps/details?id=net.jp.found.fingerspellingtrainer

2013年3月5日、手話の一部である指文字が練習できるアプリ「指文字トレーナー」を公開しました。
“生きた指文字”をシンプルかつ軽量なアプリで実現しています。

アプリは一問一答のミニゲーム形式となっており、手話の初心者にもやさしいスピードのものから、
手話の上級者でも難しい?スピードまで3段階の早さで遊ぶ事が出来ます。
またアメリカの指文字も収録されているので、アメリカの手話に興味がある人にもオススメです。

手話を勉強してみたいけど、何からやったらいいかわからない。
指文字は覚えたけど、いざ使って見ると早すぎて読みとれない。

そんな時はこのアプリで練習してみてください。
手話が使える開発者により作られたので、実際に手話で話している時に使う指文字と遜色なくリアリティな表現を実現しています。


アプリの主な特徴
・動く指文字にも関わらず、5Mbyteを切る小容量(インストール前)
・気軽に出来る一問一答形式(選択式)
・日本とアメリカ、2カ国分の指文字を収録

お問い合わせ等ありましたらこちらまたはコメント欄からお願い致します。

wordpress当サイトが出来ました。
難易度は小、手間も小。但しJavaプログラムと比較してということ。
普通にHPを作るくらいの心意気は必要です。

1、2時間で終わるというものではありません。
ただ、WordPress自体の設置だけであればとても簡単。
一番時間を要するのはページのデザイン(HTML)とテンプレート作成(PHP)。
こればっかりは通常のHPのデザインと同じだけかかります。

作業時間は
デザイン>>テンプレート作成>>>>>>>>WordPressの設置
という感じ。

手順としてはPHPとMySQLが使えるサーバを探して、WordPressをダウンロード。
展開してアップロードしてアクセスするとCUIでの設定ページとなる。

例えばさくらインターネットのサーバであれば
このようにインストール手順をとても分かり易く解説してくれている。
SQL文を使う必要もなく終わってしまう。

インストールが終わったら、テンプレートの設定を行う。
当サイトを作る時に参考にさせていただいたのはこちら

必要な部分だけをかいつまんでやれば出来てしまいます。
PHPの関数とか出てきますが、覚える必要はないと思います。
テンプレート方式なので一度やったらしばらく触りません。

つまり覚えても忘れてしまうと思います。