サンプルアプリ
最終更新日 2015-7-17

パズルアプリ

パズルアプリ

お知らせ

「パズルアプリ」は最新 Appiaries SDK v.2.0 リリースにともない、全面的に修正いたしました。
現在 github から入手いただけるソースコードの “master” ブランチが v.2.0 に対応していますが、
古い v.1.4.0 に対応するソースコードについても “v1_4_0″ ブランチから入手いただけます。
ただし Appiaries SDK v.1.4.0 は本年2015年9月にサポート終了を予定しますことを
ご留意いただきますようお願いいたします。

アプリ概要

ユーザはメールアドレスで新規会員登録し、登録時に登録したログイン名とパスワードでログインします。
ログインすると、幾つかのステージに分かれたパズルゲームが用意されており、
それぞれのステージをクリアする毎に、そのクリア時間により、
ランキング一覧で自分のスコアを確認できます。
ランキングには「時間ランキング」と「先着ランキング」があります。
「先着ランキング」の順番についてはアピアリーズの「シーケンスAPI」を使用することとします。

使用するアピアリーズの機能

プロジェクトファイル

Github よりプロジェクトファイルをダウンロード可能です。

Android Studio を利用する場合の注意点:

本アプリのソースは、Eclipse ADT プロジェクトとして公開されているため、Android Studio をお使いになる場合は同IDEの [Import project (Eclipse ADT, Gradle, etc.)] メニューからプロジェクトを変換する必要があります。プロジェクトの変換処理自体は自動実行されるため特に問題となるポイントはありませんが、変換後のビルド実行時に、「Duplicate files copied in APK <ファイル名>」といったエラーによりビルドに失敗する場合があります。このエラーが発生した場合は、ビルドスクリプト(puzzle/build.gradle)に packageOptions { exclude '<ファイル名>' } を追記する必要があります。
多くの場合、ダウンロードページ からダウンロードできる androidstudio-BlankApp-*.zip 内の app/build.gradle と同様のオプション指定をすることでエラーを解消することができますので、お困りの場合はご参考ください。

画面

ログイン
新規登録
サービス説明
ホーム
ゲーム
見本
結果
時間ランキング
先着ランキング

サーバサイドで利用されるコレクション

Entity System Name Type Description Note
サービス説明文 Introductions JSON Collection 登録後に表示されるサービスの説明文。一つのオブジェクトで1ページを表す。
会員 (User) コレクションは作成せず、会員管理機能を利用する アプリを利用する会員の情報を格納する。クライアントアプリ側から登録される。カスタム属性として「ニックネーム(nickname)」を持つ。
ステージ Stages JSON Collection 全ステージの設定情報を保持する。
パズル画像 Images File Collection 各ステージに使用するパズル画像(非分割状態のオリジナル画像)を保持する。
タイムランキング TimeRanking JSON Collection ステージ毎の各プレイヤのタイム・ランキング。より短時間のスコアが高ランクとなる。
先着ランキング FirstComeRanking JSON Collection 提供問題を(時系列の意味で)より早くクリアしたプレイヤのランキング。 ※シーケンス機能を利用
先着ランキング・シーケンス FirstComeRankingSeq Sequence Collection ランキング(先着)集計時に使用するシーケンス。集計時に都度値をリセットする。

“Introductions” コレクション

(JSON Collection)

登録後に表示されるサービスの説明文です。一つのオブジェクトで1ページを表します。

例:

Object ID: 3dd923a7ffd965cde4

Object ID: 7fb6c160243e693ccf

Object ID: bff972861edee11faf

Object ID: a8981c169d1615f738

会員 (User)

コレクションを作成しません。会員管理機能を利用します。

これは JSON オブジェクトコレクションでもファイルコレクションでもありません。
新規ユーザはアピアリーズの「会員機能」を利用して登録されます。
各会員データは、任意で JSON データを持つことも可能であり、
このアプリはそこに “nickname” などのユーザの属性情報をセットしています。

会員のログインID認証 設定する
会員のメールアドレス認証 設定する
メールアドレスの登録 許可する
匿名認証 許可しない

会員は、クライアントアプリ側がアピアリーズの会員管理APIにリクエストすることにより、登録されます。
また登録時、“auto_login”“nickname” という属性データについても
クライアントアプリ側から登録します。

例:

Object ID: (アプリから作成されるのでランダムに生成されます)

“Stages” コレクション

(JSON Collection)

全ステージの設定情報を保持します。

例:

Object ID: ca010752678373e784

上記の例で “a3701e6613c731c1f4″ は相応のイメージオブジェクトを参照しています。

Object ID: 0345122c672e356813

上記の例で “a19613a99b3886c4f6″ は相応のイメージオブジェクトを参照しています。

パズルの画像をどのように分割したいかサーバデータを変更することで、その通りの結果が表示されます。





“Images” コレクション

(File Collection)

各ステージに使用するパズル画像(非分割状態のオリジナル画像)を保持します。

例:

Object ID: a3701e6613c731c1f4

「ステージ 1」のための画像です

Object ID: a19613a99b3886c4f6

「ステージ 2」のための画像です

“TimeRanking” コレクション

(JSON Collection)

ステージ毎の各プレイヤのタイム・ランキングです。
より短時間のスコアが高ランクとなる。クライアントアプリ側から生成されます。
ランキングデータは、コントロールパネルからではなく、クライアントアプリから登録されます。
したがって TimeRanking コレクションに属するオブジェクトのオブジェクトIDは
登録時にランダムに生成されます。

例:

Object ID: (アプリから作成されるのでランダムに生成されます)

Melissa が “ca010752678373e784″ (つまり「ステージ 1」) を 13 秒でクリアしたことを意味します

“FirstComeRanking” コレクション

(JSON Collection)

提供問題を(時系列の意味で)より早くクリアしたプレイヤのランキングです。
ランキングデータは、コントロールパネルからではなく、クライアントアプリから登録されます。
したがって FirstComeRanking コレクションに属するオブジェクトのオブジェクトIDは
登録時にランダムに生成されます。
※シーケンス機能を利用します。

例:

Object ID: (アプリから作成されるのでランダムに生成されます)

Rodrigo が “ca010752678373e784″ (つまり「ステージ 1」) を 2 秒でクリアして
先着ランキングで 1 位になっていることを意味します

FirstComeRankingSeq コレクション

(Sequence Collection)

ランキング(先着)集計時に使用するシーケンスです。
集計時に都度値をリセットします。

減算を利用 する
シーケンス初期値 1

その他のサーバサイド設定

アプリID

アピアリーズにアプリ作成時、アプリIDには “puzzle” を指定して下さい。
これは次の [アプリ設定] でも説明されますが、サンプルアプリのコードで
アプリIDの定数として “puzzle” を設定しているためです。
ご希望のアプリIDがある場合はそれを指定して問題ありません。
もし変更する場合は、[アプリ設定] で説明されている設定ファイルにて
そのアプリIDに変更することを忘れないようにして下さい。

アプリ側設定

最新 SDK v.2.0 対応バージョン

Android (Android SDK v.2.0)

定数は以下のファイルのみに定義されています:

res/values/strings.xml

一つひとつの定義をみていきます。

appiaries__datastore_id は「データストアID」です。
「アプリトークン」と同じように、アピアリーズのAPIにリクエストを送信するときは
必ず「データストアID」を指定する必要があります。
ダウンロードしたサンプルのコードには “appiaries_sample” が設定されています。
ご自身の契約されたデータストアIDを指定してください。
例えば sandbox 環境で開発する場合は “_sandbox” を設定します。

appiaries__application_id は「アプリID」です。
これはあなたのアプリを識別するためのものです。

appiaries__application_tokenは、アピアリーズと通信するときの認証に使われる「アプリトークン」です。
アピアリーズのAPIにリクエストを送信するときに、かならず必要なものです。
アピアリーズのデモ用のappiaries__application_tokenがデフォルトで指定されています。
(参考: “アプリトークンはどこにある?”)

iOS (iOS SDK v.2.0)

定数は以下のファイルのみに定義されています:

Puzzle/Library/Configurations.h

一つひとつの定義をみていきます。

kDatastoreID は「データストアID」です。
「アプリトークン」と同じように、アピアリーズのAPIにリクエストを送信するときは
必ず「データストアID」を指定する必要があります。
ダウンロードしたサンプルのコードには “appiaries_sample” が設定されています。
ご自身の契約されたデータストアIDを指定してください。
例えば sandbox 環境で開発する場合は “_sandbox” を設定します。

kApplicationID は「アプリID」です。
これはあなたのアプリを識別するためのものです。

kApplicationTokenは、アピアリーズと通信するときの認証に使われる「アプリトークン」です。
アピアリーズのAPIにリクエストを送信するときに、かならず必要なものです。
アピアリーズのデモ用のkApplicationTokenがデフォルトで指定されています。
(参考: “アプリトークンはどこにある?”)

以前の SDK v.1.4.0 対応バージョン

Android (Android SDK v.1.4.0)

定数は以下のファイルのみに定義されています:

com/appiaries/gallery/common/Constants.java

一つひとつの定義をみていきます。

APIS_APP_TOKENは、アピアリーズと通信するときの認証に使われる「アプリトークン」です。
アピアリーズのAPIにリクエストを送信するときに、かならず必要なものです。
アピアリーズのデモ用のAPIS_APP_TOKENがデフォルトで指定されています。
(参考: “アプリトークンはどこにある?”)

APIS_DATASTORE_ID は「データストアID」です。
「アプリトークン」と同じように、アピアリーズのAPIにリクエストを送信するときは
必ず「データストアID」を指定する必要があります。
ダウンロードしたサンプルのコードには “appiaries_sample” が設定されています。
ご自身の契約されたデータストアIDを指定してください。
例えば sandbox 環境で開発する場合は “_sandbox” を設定します。

APIS_APP_ID は「アプリID」です。
これはあなたのアプリを識別するためのものです。

iOS (iOS SDK v.1.4.0)

定数は以下のファイルのみに定義されています:

Puzzle/Library/PUZConfigurations.h

一つひとつの定義をみていきます。

PUZAPISAppTokenは、アピアリーズと通信するときの認証に使われる「アプリトークン」です。
アピアリーズのAPIにリクエストを送信するときに、かならず必要なものです。
アピアリーズのデモ用のPUZAPISAppTokenがデフォルトで指定されています。
(参考: “アプリトークンはどこにある?”)

PUZAPISDatastoreId は「データストアID」です。
「アプリトークン」と同じように、アピアリーズのAPIにリクエストを送信するときは
必ず「データストアID」を指定する必要があります。
ダウンロードしたサンプルのコードには “appiaries_sample” が設定されています。
ご自身の契約されたデータストアIDを指定してください。
例えば sandbox 環境で開発する場合は “_sandbox” を設定します。

PUZAPISAppId は「アプリID」です。
これはあなたのアプリを識別するためのものです。