目次
はじめに
近年、多種多様なデータから構成される膨大なデータの集合体であるビッグデータを分析することで、事業に役立つ価値が生み出されると考えられるようになりました。
ローコード開発基盤「OutSystems」で構築したアプリケーションにより蓄積されたデータも、ビッグデータのデータ群の一つとなる可能性もあります。例えば、ECサイトを顧客が操作した検索履歴や、購入情報を蓄積・分析することにより、エンドユーザの傾向を知ることができます。
今回の記事では、ビッグデータを蓄積することに適したNoSQLデータベースの一つであるDynamoDBとOutSystemsの連携方法についてご紹介いたします。
DynamoDBとは
DynamoDB(正式名称:Amazon DynamoDB)は、AWSで利用可能なサービスの一つで、フルマネージド型のNoSQLデータベースクラウドサービスです。データの格納と取得に特化しており、自動的にスケールアップ・スケールダウンされ、常に処理が高速で、ストレージに上限がないため実質無限に使うことができます。
DynamoDBについての詳細は以下URLにてご確認ください。
OutSystemsとDynamoDBを連携してみた
OutSystemsでは、Forgeと呼ばれるアプリケーションの構築期間を短縮することを目的に、再利用可能なオープンソースのモジュール、コネクター、UIコンポーネントのリポジトリが技術者向けに提供されています。今回の連携では、Forgeで提供されている「Amazon DynamoDB Connector」を使用しDynamoDBを外部のデータベースとして利用できるようにします。
公開されている記事の中にOutSystemsのForgeについての紹介があります。詳しくは以下の記事からご覧ください。
超高速開発基盤「OutSystems」のForgeの使い方
では、Forge「Amazon DynamoDB Connector」を使用してOutSystemsとDynamoDBを連携する手順についてご紹介いたします。今回の手順は、連携手順にフォーカスし、DynamoDBの構築手順については省略しています。
作成の手順は、Forge「Amazon DynamoDB Connector」を使用し、DynamoDBのデータ操作を行うロジックを持つライブラリーモジュール「DynamoDB_Lib」を作成します。次に、作成したライブラリーモジュールをアプリケーションモジュールで利用し、OutSystemsのアプリケーションとDynamoDBの連携を実現します。
-
Amazon DynamoDB Connector を利用するための事前準備
-
「Amazon DynamoDB Connector」のインストール
OutSystemsのServiceStudioのForgeから「Amazon DynamoDB Connector」を検索し、インストールをします。
-
DynamoDBの操作権限を持つIAMユーザの用意
OutSystems側でDynamoDBを操作するためにはDynamoDBのアクセス権限を持ったIAMユーザが必要となります。そのため、条件を満たす既存のIAMユーザを用意するか、DynamoDB Connector用に新しくIAMユーザを作成する必要があります。
■今回使用するIAMユーザの条件
・対象のIAMユーザーに対して、アクセスキーが作成されている必要があります。アクセスキーが存在しない場合は、作成する必要があります。
・対象のIAMユーザーに対して、「AmazonDynamoDBFullAccess」のアクセス権限がアタッチされている必要があります。アクセス権限がアタッチされていない場合は、アクセス権限を追加する必要があります。
■IAMユーザの新規作成手順
・AWSマネジメントコンソールにログインし、IAM → ユーザー → ユーザーを追加 の順に選択します。
・任意のユーザー名を記載し、「アクセスキー・プログラムによるアクセス」をチェックし、次のステップへ進みます。
・「既存のポリシーを直接アタッチ」を選択肢、「AmazonDynamoDBFullAccess」を検索・チェックし、次のステップに進みます。・任意でタグを追加し、次のステップに進みます。下図は例としてNameタグをつけております。
・最後に設定内容を確認し、「ユーザーの作成」を選択します。
・以上の作業でIAMユーザが新規作成されました。
-
「Amazon DynamoDB Connector」の設定
ServiceCenterにアクセスし、モジュール「AmazonDynamoDB」を検索し、選択します。
選択後に画面が遷移するので、画面下部にあるSitePropatiesタブを選択します。
選択後に表示される項目を設定します。
・Amazon_AccessKeyId
→前述の手順で用意したIAMユーザのアクセスキーIDを設定します。
・AmazonDynamoDB
→連携対象となるDynamoDBが存在するリージョンを指定します。
指定する値はRegionEndpointのField値になります。
・Amazon_SecretAccessKey
→前述の手順で用意したIAMユーザのシークレットアクセスキーを設定します。
-
アプリ用のテーブルをDynamoDB内に作成(AWS作業)
連携対象のDynamoDBに、OutSystemsで使用するテーブルを作成している必要があります。
この手順紹介では、以下のような「User」・「Hobby」・「Prefectures」を列として持つ簡単なテーブルを作成しています。
※画像ではレコードが追加されておりますが、レコードの追加は不要です。
-
-
DynamoDB と連携するライブラリーモジュールの作成
-
作成したテーブルと連携するライブラリーモジュールの作成
DynamoDB のテーブルと連携するために、新しくライブラリーモジュールを作成します。
モジュール名は任意で問題ありませんが、OutSystemsではライブラリーとして使用するモジュールの末尾に「_Lib」を付けることが推奨されております。モジュール名に「_Lib」を付けることで、ライブラリーを取り扱うモジュールであることが明確になるため、開発者間の可読性が向上します。今回の手順紹介では、以下のようにモジュールを作成しています。
-
Manage Dependenciesで依存関係を結ぶ
作成したモジュールを開き、Manage Dependencies にて、Amazon DynamoDB Connector のモジュールである”AmazonDynamoDB”と依存関係を結びます。
Forge「Amazon DynamoDB Connector」で利用できるDynamoDBとの操作アクションが以下の7種類あるので、その中から必要なアクションを選びます。
また、DynamoDBのデータ型を扱えるように、Structuresの配下をすべて選択します。
例えば、データを登録するロジックを作成する必要があれば下図のように「Item_Put」をチェックし、データを取得するロジックを作成する必要があれば、下図のように「Scan」をチェックします。
-
DynamoDB のテーブルに対応するStructureを作成
連携対象のDynamoDBのテーブルに対応するStructureを作成します。名前は任意で問題ありません。
テーブルのカラムに対応するアトリビュートを追加し、AmazonDynamoDB のフォルダ「DataType_Helpers」の中のStructureを設定します。
用意されているStructureは以下の4種類あるので、対応するStructureを設定します。
-
-
ライブラリーモジュールのアクション作成
ライブラリーモジュールに対してDynamoDBとデータのやり取りを行うためのアクションを作成していきます。今回は例として、対象テーブルに対してレコードを登録するアクションの作成をご紹介いたします。
Logicタブのフォルダ「ServerAction」内にアクションを作成します。
他のモジュールで参照できるようにするためにPublic を”Yes”にし、DynamoDBに登録したいデータをこのロジックで受け取るために対応する入力パラメータを追加します。DynamoDBに対して受け取ったデータを登録するために、登録先であるDynamoDBのテーブルに沿った型を持つローカル変数を作成します。前述の手順でテーブルに沿ったStructure型を作成しているので、ローカル変数を新規作成し、データ型に対して対象のStructure型を設定します。
アクションフローに対して、入力パラメータで受け取った値をローカル変数に代入する処理、ローカル変数をDynamoDBに登録するためにJSONデータ形式に変換(シリアル化)する処理を設定します。
※Forge「Amazon DynamoDB Connector」のアクションはAmazon Dynamo DB .NET SDKを利用して作成されているため、JSON 形式でデータを渡す必要があります。最後に、DynamoDB の対象のテーブルにレコードを追加するため、アクション「Item_Put」をフローに追加し、項目「TableName」に対しては、DynamoDB の対象テーブル名を設定し、項目「Item」に対しては、上記手順でシリアル化したデータを設定します。
アクションが作成できたので、1-ClickPublishを行います。以上でライブラリーモジュールの作成が完了しました。
-
ライブラリーモジュールのアクションの使用手順
作成したライブラリーモジュールを別のモジュールで使用できるように設定します。ライブラリーモジュールを使用したい別のモジュールを開き、Manage Dependencies にて、ライブラリーモジュールと依存関係を結びます。
Amazon DynamoDB Connector のモジュールである”AmazonDynamoDB”のStructuresの中から、ライブラリーモジュール使用する際に必要なデータ型と依存関係を結びます。
ライブラリーモジュールのアクションが使用できるようになったので、任意の実装を行います。
以上でOutSystemsとDynamoDBが連携することができました。
おわりに
いかがでしたでしょうか。この記事でOutSystemsとDynamoDBが連携方法についてお判りいただけたかと思います。今回は、OutSystemsでDynamoDBを外部DBとして連携する方法についてご紹介しましたが、OutSystemsは他にも様々なNoSQLと連携することができます。OutSystemsの環境やビッグデータを蓄積する目的などにより、最適なNoSQL選択し、ビッグデータを活用していきましょう。
執筆者プロフィール
-
以前から最新の技術に興味があり、独学でOutSystemsを勉強しておりました。
2021年からOutSystemsを専門に扱う部署に配属となり、日々奮闘中!