SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

池澤あやかさんにお願い! AWS Summit Tokyo 2015「デベロッパーカンファレンス」を盛り上げるアプリを一緒につくってください!

【制作1日目】 池澤あやかさん、イベント会場がヒートアップ間違いなしのアプリを制作、まずはクライアント側処理です ~ Amazon S3 / Cognito / Kinesis / DynamoDB 登場

池澤あやかさんにお願い! AWS Summit Tokyo 2015「デベロッパーカンファレンス」を盛り上げるアプリを一緒につくってください! 第1回


  • X ポスト
  • このエントリーをはてなブックマークに追加

スマホからアクセスして言語を選択する

西谷:

これで、スマホからアプリにアクセスし、応援したいプログラミング言語を選択できるようになったはずです。アクセスしてみてください。

池澤:

おお~、プログラミング言語を選択できました!

スマホからアクセスして応援したいプログラミング言語を選択する
スマホからアクセスして応援したいプログラミング言語を選択する

 

西谷:

Amazon DynamoDBで言語を追加すると、Webサイトに反映されます。また、Flagの値を0に変更すると、その言語は表示されなくなります。

Amazon Kinesisに送られたデータを確認する

西谷:

スマホを振ったときのセンサーのデータがAmazon Kinesisに送られているはずです。確認してみましょう。ここでは、AWS CLIを使います。

まず、次のコマンドでシャードを確認します。

$ aws kinesis describe-stream --stream-name <Kinesisのストリーム名>
{
    "StreamDescription": {
        "StreamStatus": "ACTIVE",
        "StreamName": "<ストリーム名>",
        "StreamARN": "arn:aws:kinesis:us-east-1:<アカウントID>:stream/<ストリーム名>",
        "Shards": [
        {
            "ShardId": "shardId-000000000000",
            "HashKeyRange": {
                "EndingHashKey": "340282366920938463463374607431768211455",
                "StartingHashKey": "0"
                },
                "SequenceNumberRange": {
                    "StartingSequenceNumber": "49549492284611166925788240077307163096708794633016049666"
                }
            }
            ]
        }
    }

続いて、次のコマンドでシャードイテレータ[6]を取得します。シャードイテレータの種類を指定するオプション--shard-iterator-typeには、常に最新のデータを取得することを示すLATESTを指定します。

$ aws kinesis get-shard-iterator --stream-name <ストリーム名> --shard-id <シャードID> --shard-iterator-type LATEST
{
    "ShardIterator": "AAAAAAAAAAGATgf0ciKvM2NNWRsLaq36R0GJct1MPTl1tE2FDxvOVBUZZBr9cy9NrXuFsmNst+6XuM59INEhKiiHXbL4BEvhsXgKk1Pvtp6/+lozNUu51vobJydf7GHXlGXYm55zpThQ6ad4bSaFU9zXgGa2erCVxNFjebZGSHu9auV/NClGxpCEGElK3x1AZmoozCbZ+YP/8uBcOF3pgJVloLhbWuRS"
}

取得したシャードイテレータに対し、次のコマンドを実行することでAmazon Kinesisが受け取ったデータを確認できます。

$ aws kinesis get-records --shard-iterator <シャードイテレータ>
{
    "PartitionKey": "0.2878744287882",
    "Data": "eyJNb3Rpb24iOnsiUHJldmlvdXNlIjp7IngiOi00LjIzNTAyNTkyNTk1MjE5NiwieSI6MzUuMDcyNDE5Mjk2NjEwMzU2LCJ6IjotMi44MjI4ODk3MjE3OTE0NDZ9LCJDdXJyZW50Ijp7IngiOjMyLjA0ODcwMzkyNzg3NDU2LCJ5IjoxLjc3MjQ5OTIwOTg0OTUzNjIsInoiOi00LjM4ODgwNTQ1MTgyMjI4MDV9fSwiTGFuZyI6IkdvIiwiQWN0aW9uIjoiQWRkIn0=",
    "SequenceNumber": "49549492284611166925788287125226818618407088413709697026"
}

実行結果のDataが送られてきたデータになりますが、Base64エンコーディングされているため、デコードして確認します。

$ echo "eyJNb3Rpb24iOnsiUHJldmlvdXNlIjp7IngiOi00LjIzNTAyNTkyNTk1MjE5NiwieSI6MzUuMDcyNDE5Mjk2NjEwMzU2LCJ6IjotMi44MjI4ODk3MjE3OTE0NDZ9LCJDdXJyZW50Ijp7IngiOjMyLjA0ODcwMzkyNzg3NDU2LCJ5IjoxLjc3MjQ5OTIwOTg0OTUzNjIsInoiOi00LjM4ODgwNTQ1MTgyMjI4MDV9fSwiTGFuZyI6IkdvIiwiQWN0aW9uIjoiQWRkIn0=" | base64 -D
{"Motion":{"Previouse":{"x":-4.235025925952196,"y":35.072419296610356,"z":-2.822889721791446},"Current":{"x":32.04870392787456,"y":1.7724992098495362,"z":-4.3888054518222805}},"Lang":"Go","Action":"Add"}

このように送ったJSON形式のデータが確認できました。

池澤:

Amazon Kinesisの中身は、コマンドラインで確認しなければならないんですね。

西谷:

APIがあるので、簡単なプログラムを作って確認することもできますよ。

[6] シャードイテレータとはシャード内のポジションを示すもので、4種類のデータ取得方式があります。このシャードイテレータを指定してget_recordsすることで実際にデータが取得できます。

制作1日目は無事終了

 制作1日目はここまでで終了しました。クライアント側の処理に必要な準備として、Amazon S3、Amazon Cognito、Amazon Kinesis、Amazon DynamoDBを設定しました。クライアント側の処理をJavaScriptで作成し、スマホからアクセスして応援する言語を選択できること、スマホを振ったときのセンサーデータがAmazon Kinesisに送られていることを確認しました。

 それにしても、受託開発も請け負っているというだけあって、池澤さんはさすがでした。AWSで本格的なアプリ開発は初めてだというのに、西谷さん、榎並さんの説明をすらすらと理解し、作業を進めていました。

 次回は制作2日目。Amazon Kinesisのデータを読み取って集計する処理を、AWS Lambdaを使って実装します。お楽しみに!

まとめ:スマホフレーフレー言語応援アプリで使用するAWSサービスとその機能

AWSサービス名 機能
Amazon S3 クラウドストレージサービス。今回はここにアプリを置く
Amazon Cognito ユーザーの認証やデータの同期のための機能を提供する。今回はスマホ(JavaScript)とAmazon Kinesis、Amazon DynamoDBがやり取りするときに必要な認証情報を安全に扱うために使用する
Amazon Kinesis 大規模データストリームのリアルタイム処理を可能にするサービス。今回はスマホの加速度センサーデータの収集に使用する
Amazon DynamoDB NoSQLデータベースサービス。今回は選択する言語のマスター情報や加速度センサーデータの集計値を格納する
AWS Lambda イベントドリブン処理を簡単に実現するコンピューティングサービス。2014年11月の発表とともに、ベータ版でありながら注目を集めている。Amazon Kinesisから渡された加速度センサーデータの集計処理に使用する
まとめ:スマホフレーフレー言語応援アプリのアーキテクチャ

 

池澤さんも登場するデベロッパーカンファレンスに、ぜひご参加ください!

参加したい方、ご興味のある方はデベロッパーカンファレンスのWebサイトへ!

次のページ
Appendix:アプリの開発環境づくりと事前準備

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
池澤あやかさんにお願い! AWS Summit Tokyo 2015「デベロッパーカンファレンス」を盛り上げるアプリを一緒につくってください!連載記事一覧

もっと読む

この記事の著者

坂井 直美(サカイ ナオミ)

SE、通信教育講座の編集、IT系出版社の書籍編集を経てフリーランスへ。IT分野で原稿を書いたり編集したり翻訳したり。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/8642 2015/07/13 22:09

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング