個人開発のアプリでAWSクラウドを利用してみて

こんにちは、Johnです。桜の季節がやってまいりました!
実はSTUDIO WAKABAのロゴは桜がモチーフだったりします。
今回は、サーバーサイド環境としてAWS(アマゾンウェブサービス)を利用してみて
感じた事を書いてみます。あと、個人開発としていますが、実際は2人で作っています。

個人開発のアプリでサーバーは必要か?

サーバーがなくても面白いアプリは作れます!実際そういうアプリはたくさんあります。
ただ、サーバーを使うことで出来る事の幅が広がります。

なぜ、「爆・ロボ」はサーバーが必要になったのか?

「爆・ロボ」はアプリ内課金で「コイン」という消耗型のアイテムを販売しています。
そのため、ユーザーからの「コイン買ったのにコインが増えない」みたいな問い合わせに対応するためにユーザーデータをサーバーに保存しています。
あと余談ですが、仮想通貨に該当するはずなので、資金決済法の対策として無料取得分と購入分を分けて保存しています。

※資金決済法で、アプリの仮想通貨に対しても返金義務、供託金、表示義務が必要になりました。
ただし、以下のいずれかに該当する場合は対象外です。
・仮想通貨の有効期限が180日以内
・3月末および9月末の未利用残高が1000万円以内

補足:アプリ内課金について

アプリ内課金には、非消耗型というのがあります。
追加ステージ購入のような無制限で利用出来る権利みたいなものです。
こちらの購入情報はapple ID、Google IDに紐付けられapple、Googleのサーバーに購入情報が保存されます。
そのため、アプリを再インストールした場合でも購入情報の復元がapple、Googleのサーバーから行えるので自前のサーバーが必要ありません。
アプリ内課金を実装する場合は、非消耗型を利用することをお勧めします。

なぜ、AWSクラウドを利用したのか?

1.海外サーバーが選べる

世界にリリースする場合、サーバーの場所と速さが重要になってくると思います。
AWSは世界10箇所から好きな場所を選べました。
「爆・ロボ」は米国西部(オレゴン)を使っています。
実際にランキングを表示して速さを体感してみて下さい。

2.無料利用枠で使える

AWSは従量課金で使った分だけ支払いますが、サービスごとに無料利用枠というのがあり、その範囲内で利用する分には無料のまま使えます。
「爆・ロボ」は、DynamoDBというデータベースサービスを利用しています。
そのサービスの無料枠が 25GB/ストレージ、25ユニット/書き込み容量、25ユニット/読み込み容量になります。
25ユニット/書き込み容量とは、1回のデータサイズが1KB以下で1秒間に25回までの書き込みなら無料になり、25ユニット/読み込み容量とは、1回のデータサイズが4KB以下で1秒間に25回までの読み込みなら無料という事です。
これだけだといつの間にか制限を超えて有料になると思うかもしれませんが、データベースごとに使用するユニットを指定する必要があります。
そのため、指定したユニットを超えて使用される事はないため合計で25ユニット以下なら無料のまま利用出来ます。
また、こちらのユニット数はwebの管理画面からいつでも変更出来るため、リリース直後はユニットを多めにしておいて、徐々に減らしていくといった事も出来ます。

3.実際に実装した機能

・ユーザーデータの保存
・ランキング機能
・メッセージ送信機能
・機種変更などで使用するデータ引継ぎ機能
・キャンペーンコード入力機能 ← appleさんにリジェクトされたので削除

最後に

AWSを導入するに当たり、約1週間ほど英語のドキュメントと格闘するなどかなり苦労しました。
ただ、1回動けばあとは様々な機能をすんなり実装出来ました。今では大概のものは作れる気がします。
mBaaSだと使えるサービスが決まっていたりするのですが、AWSだともっと自由にいろいろ作れると思います。

最初にも書きましたがサーバーを利用する事で出来ることの幅が広がります。
アイデアしだいで面白いものが作れるはずです!
ただ、かならず必要とも思いません。まだまだ通信環境の整っていない場所も国もあります。
今はまだ、ネット接続が当たり前のデザインにするより、ネットに繋がってるとちょっと面白いぐらいで充分な気がしています。