まだプログラマーですが何か?

プログラマーネタとアスリートネタ中心。たまに作成したウェブサービス関連の話も http://twitter.com/dotnsf

(↓2015/Jan/26追記)
このブログエントリに書かれている内容は最新のものではありません。ご注意ください。
また、こちらの記事も参照ください:
Bluemix 内の MySQL データベースでサイズが選択可能になった
(↑2015/Jan/26追記)


IBM BlueMix からは数多くのデータストアサービスが提供されています。RDB(リレーショナルデータベース)だけでも4つあります(青っぽい背景のが IBM 提供サービス、白背景のがオープンソースベースのコミュニティ提供サービスです):

※2014年4月23日時点の情報を元に記述しています。詳しくは各リンク先を参照ください。
サービス価格最大サイズ説明
BLUEAccelerationベータ期間は無料標準で圧縮後1GB(最大10GBまで拡張可能)サイズは圧縮後のサイズなので、実際にはこれら以上のデータを格納可能
SQLDBベータ期間は無料1GB最大接続数は2(BlueMix環境からのみ)
MySQL無料10MB最大接続数は1000
PostgreSQL無料30MB最大接続数は1000

容量10MB のデータベースって・・・ (^^;

ちなみに RDB 以外のデータストアサービスについてはこんな感じです:

サービス価格最大サイズ説明
JSON DBベータ期間は無料1GBJSON ストア型
MongoDB無料250 MBJSON ストア型
Redis無料N/A (?)KEY-VALUE ストア型
Mobile Dataベータ期間は無料(?)ローカルネイティブのように使えるモバイル向けデータストア


それなりに実用的な量のデータを格納しようとすると、IBM 提供のデータストアサービスを選ぶことになるんでしょうかね。リレーションなしと割りきって JSON 型の MongoDB を選ぶという選択もあるけど。

この表だとわかりにくい差もあると思っています。例えば MySQL や MongoDB などは管理コンソールを別途 phpMyAdmin や phpMoAdmin などで用意する必要があります(参照)。一方、BLUAcceleration や SQLDB には標準で管理コンソール機能が付属していたりします。
2014042201


ちなみに BlueMix のサービスで MySQL を立ちあげた場合、BlueMix 内のアプリケーションサーバーからしか接続できません。ただし BlueMix の外で稼働している MySQL に BlueMix のアプリケーションサーバーから接続することは(パフォーマンスに目をつぶれば)可能でした。なので意地悪く特定のポートが閉じられている、とかいうことはなさそうです。どうしても MySQL で10MB以上のデータを使いたい、ということであればデータベースだけは外部接続にする、という選択肢もありますね(遅いし、PaaS のメリットも薄くなるのでオススメしませんけど)。



・・です。

IBM 開発コンテスト「IBM BlueMix Challenge」開催


詳細は5月21日~22日開催の「IBM Software XCITE Spring 2014」で発表されるらしいので、詳しい条件や規定、基準、そして気になる賞品(笑)については後日発表を待ちましょう。

まあ、でも、BlueMix のサーバーやサービスを使って面白いアプリを作りましょう、というものだとは思います。このブログでも紹介しているように、色んなプログラミング言語を選べるし、サーバー構築は簡単だし、敷居はそんなに高くないと思ってます。また以前に CloudFoundry 環境で作ったアプリがあれば、それを持ってきちゃえば動くかも(苦笑)しれないので、そういう手もあるのかな。

先日紹介した「Twilio を BlueMix で使う」の中で説明した実際に電話をかけるウェブアプリケーション、文章による説明文だけだと再現はちょっと難しいと思ったので、ダウンロード可能なサンプルを作ってみました:
Twilio サンプルアプリの Java プロジェクト

ダウンロードファイル名は twilio.zip です。


使うための前提として、事前に以下の準備が必要です:
(1) BlueMix のアカウント取得(参照)
(2) Twilio のアカウント取得(参照)
(3) Twilio の電話番号、SID、認証トークンの取得(参照)
(4) BlueMix 上に Twilio サービスを起動して、(3) で取得した SID と 認証トークンを設定しておく(参照)
(5) BlueMix 上で Liberty for JAVA アプリケーションサーバーを起動し、(4) で起動した Twilio サービスに紐付けておく(参照)

(6) cf が使える状態になっている(参照)


今から BlueMix を使いはじめる場合は準備項目が多くて大変かもしれませんが、ある程度 BlueMix を使いこなすためには cf ツールの環境設定は必須になると思うのでがんばってください。

ここまでできていれば、あとは上記のサンプルを少し改良するだけで試せるようになります。以下その説明です。

まずダウンロードした twilio.zip を cf が使えるシステム上で解凍・展開します。仮に展開先フォルダ名が c:\tmp だったとすると c:\tmp\twilio\ というサブフォルダ上にプロジェクトが展開されます。以下この前提で説明を続けます。

テキストエディタで c:\tmp\twilio\index.jsp を開いてください。なお、この中で (5) で紐付けられた Twilio サーバーから SID や認証トークンを取り出す作業もしているため、これらのプライバシー情報を Java のコーディング内に記述する必要はありません。

最後の方に以下のような3行がある箇所を見つけてください。この3行がカスタマイズ対象箇所です(余程のことがない限り、他は変更しないでください):
  :
params.put( "To", "+8180XXXXYYYY" ); //. 通話先電話番号
params.put( "From", "+8150AAAABBBB" ); //. 発信元電話番号
params.put( "Url", messageurl ); //. TwiMLのURL
  :

この中の一番上の通話先電話番号というコメントが書かれた箇所に電話をかける先の番号を指定します。注意点として日本の国際番号である +81 から始めて、局番の最初の0を取り除いて指定することです。例えば日本国内で使う時の電話番号が 080-1234-5678 だった場合、ここでは +818012345678 と指定します。自分が出ることのできる電話番号(携帯電話とか)に書き換えてください。

2番目は発信元電話番号を指定します。これは上記 (3) で取得した Twilio 電話番号のことで、おそらく 050 で始まる番号になっているはずです。これも同様のルールで、仮に 050-9876-5432 だったとしたら +815098765432 と書き換えてください。

3番目の TwiML の URL ですが、これは展開したプロジェクト内の同じフォルダにある message.xml というファイルを指すようにしています。ちなみに message.xml の内容はこんな感じにしています:
<?xml version="1.0" encoding="UTF-8"?>
<Response>
  <Say language="ja-JP" voice="alice">屋根より高いこいのぼり</Say>
  <Pause length="1"/>
  <Say language="ja-JP" voice="alice">大きいまごいはお父さん</Say>
  <Pause length="1"/>
  <Say language="ja-JP" voice="alice">小さいひごいは子供たち</Say>
  <Pause length="1"/>
  <Say language="ja-JP" voice="alice">面白そうに泳いでる</Say>
</Response>
これが Twilio に喋らせる内容になります。日本語の文章になっているのが、なんとなくわかりますかね。<Say>~</Say> 内がしゃべる内容です。経験上、簡単な漢字なら問題なさそうです。<Pause> 節は何もしない時間で1秒ずつ間をあけています。もちろんこのまま変更なしでも使えますし、異なる内容を喋らせたい場合は 必要に応じて message.xml の内容を書き換えてください。もし別の(外部の) TwiML を使いたい場合は messageurl の代わりにその URL をここで直接指定しても構いません。

上記例で書き換えた後の index.jsp はこんな感じになります:
  :
params.put( "To", "+818012345678" ); //. 通話先電話番号
params.put( "From", "+815098765432" ); //. 発信元電話番号
params.put( "Url", messageurl ); //. TwiML(message.xml)のURL
  :

この状態にカスタマイズできたら cf ツールを使って BlueMix のアプリケーションサーバーにデプロイします。コマンドラインプロンプトで c:\tmp\twilio(index.jsp があるフォルダ)に移り、以下のコマンドを実行します(Liberty for JAVA のアプリケーション名が APP1 である場合の例です。各自の環境に合わせてください):
> cf push APP1

これでカスタマイズした Twilio サンプルアプリがデプロイされました。デプロイ後はブラウザでこの Liberty for JAVA のアプリケーションサーバーにアクセスすると index.jsp が実行され、指定された番号に電話がかかってきて、着信すると message.xml に指定された内容を女性の声で話してくれます(Twilio アカウントがトライアルの場合は、最初にその旨のメッセージも流れます)。

一応、message.xml を書き換えるだけで話す内容をカスタマイズできるし、電話番号を変更するだけで各自の環境用のサーバーを作れるようにしたつもりです。 これが BlueMix と Twilio の連携サービス構築の参考になれば。


※このサンプルを用意する過程で知った余談ですが、童謡「こいのぼり」の著作権はちょっと複雑な背景があるんですね・・・
Wikipedia - こいのぼり


 

このページのトップヘ