クラウド」タグアーカイブ

docomo.ne.jpの「ドコモメール」、ついにPCやメールソフトから利用可能に


「ドコモメール」の機能拡充について (docomo)

image

明日12/17から、NTTドコモのスマートフォンに提供されているいわゆるキャリアメール「ドコモメール」のアドレスが、PCのWebブラウザやメールソフトから利用可能になります。メールソフトでのアクセスには一般的なIMAPを使うということで、下手をすれば他社のスマートフォンからdocomo.ne.jpが利用可能ということになります。

IMAP IDLEによるプッシュ配信など対応しくれていたら最高なんですけどね……まあ期待できないですよね。

【12/17追記】IMAP IDLE対応しています! Thunderbirdでリアルタイム着信を確認しました。

Amazonのプッシュ通知サービス「Amazon SNS」をちょっとだけ使ってみた


AWS、iOS・Android・Kindle Fireユーザー向けプッシュ通知機能「Mobile Push」を発表 (ITmedia)
Amazon Simple Notification Service (Amazon)

iOSやAndroidで提供されているいわゆるプッシュ通知サービス。AppleやGoogleのサーバーと通信する機能を直接作りこむ手間を軽減して使いやすくするためのサービスが世の中に複数存在しますが、クラウドサービス「Amazon Web Services」(AWS)を提供しているAmazonもこのジャンルに参戦してきました。「Amazon Simple Notification Service」(Amazon SNS)は、もともとはメールやSMSなどを用いて通知を行うサービスしたが、通知手段の1つとしてiOSやAppleのプッシュ通知が追加された格好です。

今回はAndroidで試してみます。まずAndroidのプッシュ通知であるGCMを実装したサンプルアプリをちゃちゃっと作ります。詳細はこちらで。

Google Cloud Messaging for Android (Google)

プッシュ通知においては、送信先を識別する符号(GCMの場合「Registration ID」)をアプリが取得してサーバー側に引き渡す処理が必要になりますが、今回は試すだけなのでサクッとログに出力させてコピペします。

次にAmazon SNSにアプリの情報を登録していきます。まずアプリを登録します。API Keyは「Google APIs Console」であらかじめ取得しておきます(アプリを作った段階で取得済みのはず)。

image

次に「Endpoint」を登録します。超ざっくり言ってしまえば、1つのRegistration IDが1つのEndpointに対応します。「User Data」は今回は特に何も入れなくても問題ありません。

image

ここまで登録が終われば送信準備完了。登録したEndpointを選択して「Publish」を選択し、文言を入力します。MessageにはプレーンテキストまたはGCMの仕様にのっとったJSON形式の入力を選択できます。プレーンテキストを選択した場合、メッセージ文言はIntentのExtra内に「default」というキーで格納され端末に送信されます。

image

このように端末にプッシュ通知が送信されます。

amazon_sns

細かいところでいうと、端末からアプリを削除した段階でプッシュ通知を送信すると該当Endpointが無効状態になります。Googleサーバーからの返り値をきちんと見ているようです。ただし無効になったEndpointは自動で削除されず、削除するとすると実装側で対応する必要があります。

実用的に使うためにはRegistration IDをいかにしてAmazon SNSに反映させるかがポイントになりそうです。とりあえず直近では開発時のテスト用に便利に使えそう。

より詳細な解説はこちらをどうぞ。

[AWS] Amazon SNS の新機能「Mobile Push」を Android で使ってみた (Developers.IO)

IPv6対応VPS「ConoHa」デビュー、メールサーバーとしては使えない!? →無料トライアル期間中の制限でした


ConoHa

image

「ConoHa」は、GMOインターネットが提供するVPS(仮想プライベートサーバー)サービスです。Webページを見るとイメージキャラクターの印象が圧倒的に強いのですが、複数VPSのローカルネットワーク接続などクラウド的な利用も意識されており、IPv6に標準対応(IPv4アドレス1個、IPv6アドレス17個が標準で利用可能)するなど、単純に技術的にも見どころが多いサービスとなっています。

自分は当ブログも含めて複数のブログ・Webサイトを「GMOクラウド VPS」で運用しているのですが、IPv6対応に惹かれてConoHaへの移行を検討。実際に全データをConoHaに移して運用テストも行ったのですが、どうも(少なくともGMOクラウド VPSと同じ設定だと)サーバーからメール送信ができないようです。

ファイアウォールの設定もGMOクラウド VPSと突き合わせましたが特に違いはないようで、ポート25のOutboundが塞がれている様子はありませんでした。そもそもtelnetでメールサーバーにポート25で接続しようとしてもつながらないため、メールサーバー(Postfix)の問題ではないと判断しています。もしかしてOutbound Port 25 Blocking(いわゆる「OP25B」)ではないかということでConoHaサポートに問合せ中です。

同じCentOSだから移行は楽勝だろうと思っていたのですが…。ConoHaに限った話ではありませんが、運用環境が変わるときは一通りテストが必要ですね。

【7/6 21:50追記】この挙動(OP25B)は「15日間無料トライアル」期間中の制限だそうです。VPS追加画面にきちんと表示してありました。

image

ConoHa関係者の皆様には深くお詫びいたします。

VPSを借りてブログを引っ越してみた


VPS(Virtual Private Server)は、仮想化技術を利用した管理自由(root権限付与)のサーバーを提供するサービス。いわゆるレンタルサーバーと異なり自分でなんでも設定しなければなりませんが、逆にそれができるならばサーバー設定の自由度は比べ物になりません。

個人的に今までVPSにはあまり魅力を感じていなかったのは、「運用の素人が色々いじって不安定にするくらいだったら、プロが管理してくれるレンタルサーバーの方が安心」と思っていたからです。

ところがこの前のファーストサーバの事件があり、プロの管理も必ずしもあてにならないということで、うちのブログもバックアップの体制をいままで以上にしっかり作らなければなと思った次第です。そこでWordPressプラグイン「BackWPup」で定期的にブログ全体のバックアップを取ろうと考えましたが、今ホストしているレンタルサーバー(CORESERVER)ではPHPセーフモードの関係でBackWPupがうまく機能しません。

一方でAmazon AWSの無料期間(アカウントを作ってから1年)が切れてしまい、今までなんとなく運用していたサーバーに料金がかかってしまっていたので、これを機会にVPSを借りてサーバーを1箇所にまとめようと思い立ちました。

今回チョイスしたのはGMOクラウドのVPS。GMOクラウド自体も業務で使い慣れているのでそちらでも良かったのですが、コスト面(VPSの方が同じスペックを安く使える)のと、当面1台しか使う予定がないということでVPSの方を選択しました。すでに今ご覧になっているこのブログはVPSで動いています。

また今回の目的であるバックアップはBackWPupを用いてAmazon S3にバックアップを取るようにしてみました。バックアップ先はコストを見ながら今後検討していきます。

今のところ問題なく動作している様子です。CORESERVERの方ももう少し残しておきつつ移行を進めていこうかと。

【Tips】Google Cloud Messagingのサーバー側JavaライブラリをGoogle App Engine for Javaで使うと日本語が文字化けする事象への対応


Google Cloud Messaging for Android (Google)

「Google Cloud Messaging (GCM)」は、サーバーから端末にプッシュ通知を送信するための仕組みで、「Cloud to Device Messaging (C2DM)」と呼ばれていた技術の後継、iOS端末の「Apple Push Notification Service (APNS)」に相当する技術です。C2DMの時は実装に苦労したものですが、GCMではAPIが整理されるとともに、アプリ側・サーバー側ともにJavaのライブラリが用意され、非常に簡単に使用できるようになりました。

ただサーバー側のライブラリ(gcm-server.jar)をそのまま使うと、手元の環境では全く問題なく通知されるのですが、Google App Engine Java (GAE/J) にデプロイして通知を送信しようとすると、通知に含まれるマルチバイト文字がことごとく文字化けします。

Servlet特有の文字コード問題や、GAE/J特有のURLフェッチの癖など色々と疑ったのですが、どうもライブラリ自体に潜在的な問題があったようです。

gcm-server.jarは元となるソースコードも配布されているので、その中のSender.java、postメソッドを修正します。

    logger.fine("Sending POST to " + url);
    logger.finest("POST body: " + body);
    byte[] bytes = body.getBytes();
    HttpURLConnection conn = getConnection(url);
    conn.setDoOutput(true);

こうなっている箇所を

    logger.fine("Sending POST to " + url);
    logger.finest("POST body: " + body);
    byte[] bytes = body.getBytes("utf-8");
    HttpURLConnection conn = getConnection(url);
    conn.setDoOutput(true);

このように修正します。String#getBytesメソッドに文字コードが指定されていなかったため、環境によって文字化けしていたということですね。この修正を施したライブラリにさしかえてからは、GAE/J上でもマルチバイト文字列が化けずにプッシュ通知が送信できるようになりました。

C2DMが使いづらかった分だけ、GCMは非常に使いやすく感じます。GAE/Jで使用できるということで、色々なことができそうな予感。