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に格納するとおっしゃってましたが、そもそもDynamoDBってどういうデータベースなんですか?

西谷:

Amazon DynamoDBはNoSQLデータベースのフルマネージドサービスです。

池澤:

NoSQLデータベースなら、MongoDBを使ったことがあります。DynamoDBは、MongoDBとはどう違うんでしょうか?

西谷:

Amazon DynamoDBもMongoDB同様にNoSQLと呼ばれるタイプのデータベースです。特徴としては管理不要で信頼性が高く、高速です。またストレージ容量の制限もありません。とてもクラウドっぽいデータベースと言えます。

池澤さんのMacBook。キーボードは英語配列です。研究室で叩いていたキーボードが英語配列だったので、英語配列に馴染んでしまったとのこと
池澤さんのMacBook。キーボードは英語配列です。研究室で叩いていたキーボードが英語配列だったので、英語配列に馴染んでしまったとのこと

 

言語マスターテーブルを作成する

西谷:

Amazon DynamoDBには、スマホから送信されてくる加速度センサーデータだけでなく、応援対象となるプログラミング言語のリストも格納します。スマホでアクセスするWebページで表示する言語名のリストは、Amazon DynamoDB上の言語マスターテーブルの情報から作成することにします。また、Amazon Kinesisで取得したセンサーデータの集計値もAmazon DynamoDBに保存します。

ところで、通常データベースを利用する場合、データベースを作成するところから始めるのが一般的ですがAmazon DynamoDBではそれがないんですよ。テーブル単位でデータを管理します。テーブルには項目が格納されています。項目というのはRDBで言うところのレコードに相当するものです。また、属性という概念があり、これがRDBで言うところのカラムに近いものです。

池澤:

データベースなのにデータベースを作らないって、何だか不思議です。

西谷:

まったくです。それだけシンプルなデータベースだと言えるかもしれませんね。

では、マネージメントコンソールで「Database」の「Amazon DynamoDB」を選択し、[Create Table]をクリックしてください。

池澤:

はい、クリックしました。

西谷:

最初に、言語マスターテーブルを作成します。

[Table Name]に「lang」と入力します。続いて、[Primary Key Type]を「Hash」にし、[Hash Attribute Name]に「Lang」と入力します。これで、プライマリキーとしてLangという属性を指定したことになります。

池澤:

そして、[Continue]をクリックですね。

言語マスターテーブルの作成

 

Amazon DynamoDBのプライマリキーとグローバルセカンダリインデックス

榎並:

Amazon DynamoDBでは、プライマリキーの種類として「Hash」または「Hash and Range」を選択します。「Hash」の場合には[Hash Attribute Name]で指定した属性、「Hash and Range」の場合には[Hash Attribute Name]で指定する属性と[Range Attribute Name]で指定する属性の値の組み合わせでデータの取得や検索をすることができます。

今回は、ハッシュキーとしてLangを指定しているので、「Ruby」や「JavaScript」といった言語名で項目のデータ取得ができます。プライマリキー以外の属性で検索を行うには、検索条件として使用したい属性にインデックスを作成する必要があります。

西谷:

今回は、Flagで検索ができるようにグローバルセカンダリインデックスを用意します。

[Index Type]を「Global Secondary Index」にし、[Index Hash Key]に「Flag」と入力してください。[Index Range Key]は使いません。他はそのままで、[Add Index To Table]をクリックしてください。

池澤:

よし、インデックスが作成されました。

西谷:

そうしたら、[Continue]をクリックしてください。

インデックスの作成

 

スループットを設定する

西谷:

Amazon DynamoDBでは、スループットとして読み取りと書き込みのキャパシティユニットというものを指定します。1ユニットは、読み取りと書き込みで異なり、読み取りではサイズが4KBの項目、書き込みでは1KBの項目を1秒間に1回処理できることを意味します。今回はひとまずデフォルトのままとします。

スループットの設定

 

次は、監視の設定ですが今回はひとまず設定をしないで先に進みます。したがってって[Use Basic Alarms]のチェックを外して[Continue]をクリックしてください。

最後にテーブルの概要が表示されたら、[Create]をクリックしてください。

池澤:

langテーブルが作成されました。

テーブルに項目を追加する

西谷:

テーブルが作成されると[Status]が「ACTIVE」になります。そうしたら[Explore Table]をクリックして、テーブルに項目を追加していきます。

[Create Item]をクリックすると、先ほど指定したLangとFlagが表示されます。LangにRuby、Flagに1を入力して、[Save]をクリックします。

Flagは画面への表示/非表示を示すために使い、1の場合にその項目を画面に表示することにします。

テーブルへの項目追加

 

池澤:

「Item Added Successfully」と表示されました。

西谷:

じゃあ、好きな言語をいくつか追加していきましょう。追加したら[Browse Items]タブを選択し、[Scan]を選択して[Go]をクリックすると、テーブルの全項目が表示されます。

池澤:

はい! 最初はもちろん「Ruby」っと。「JavaScript」も人気だから外せない。あと、あれとこれと……。

テーブルへ入力した項目の一覧

 

集計値テーブルを作成する

池澤:

そういえば、プログラミング言語ごとのセンサーデータの集計値は、どのAttiributeに保存するんですか?

西谷:

それは言語マスターテーブルではなく、集計値テーブルに保存します。集計値テーブルを作成しましょう。

[List Tables]タブで[Create Table]をクリックしてください。

[Table Name]を「counter」、[Primary Key Type]を「Hash」、[Hash Attribute Name]を「Event_Id」にして[Continue]をクリック。

セカンダリインデックスは使わないので、そのまま[Continue]をクリック。あとの手順はlangテーブルと同じです。最後に[Create]でテーブルを作成してください。

池澤:

忘れてましたけど、そもそも集計はどこでやるんですか? Amazon DynamoDBじゃないんですよね!?

西谷:

AWS Lambdaという、イベントドリブン処理を簡単に実現するサービスを使って行います。これは制作2日目のお楽しみです。

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

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

次のページ
お待ちかね! JavaScriptでアプリのコーディング

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

  • 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」など、さまざまなカンファレンスを企画・運営しています。

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

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

メールバックナンバー

アクセスランキング

アクセスランキング