コンテンツにスキップ

DynamoDB

DynamoDBのテーブル構造についてです。

user-table

ユーザー情報、認証情報、プッシュ通知用のトークンが格納されるテーブルです。

{
  "userID":"{UUID}",
  "authToken":"{UUID}",
  "iosVoIPPushTokens":{
    "token":"{iOSのVoIPプッシュ通知のトークン}",
    "snsEndpointArn":"{iOSのVoIPプッシュ通知のPlatformApplicationのエンドポイント}"
  },
  "iosPushTokens":{
    "token":"{iOSのVoIPプッシュ通知のトークン}",
    "snsEndpointArn":"{iOSのVoIPプッシュ通知のPlatformApplicationのエンドポイント}"
  }
}

alarm-table

アラームの情報が入るテーブルです。

{
  "alarmID":"{UUID}",
  "userID":"{UUID}",
  "alarmType":"{VOICE_CALL_ALARM or NEWS_CALL_ALARM or CALENDER_CALL_ALARM}",
  "alarmEnable":"{Bool}",
  "alarmName":"{String}",
  "alarmHour":"{Int}",
  "alarmMinute":"{Int}",
  "alarmTime":"{String}",
  "charaID":"{String}",
  "charaName":"{String}",
  "voiceFileURL":"{String}",  
  "sunday":"{Bool}",
  "monday":"{Bool}",
  "tuesday":"{Bool}",
  "wednesday":"{Bool}",
  "thursday":"{Bool}",
  "friday":"{Bool}",
  "saturday":"{Bool}"
}

alarmType

アラームの種類です。

  • VOICE_CALL_ALARM

キャラクターから電話がかかってきて、事前録音されたボイスを再生します。

  • NEWS_CALL_ALARM

キャラクターから電話がかかってきて、音声合成されたニュースを再生します。

  • CALENDER_CALL_ALARM

キャラクターから電話がかかってきて、音声合成された今日の予定を再生します。

alarmTime

インデックス用のフィールドです。 ("%02d-%02d", alarmHour, alarmMinute) が入ります。

charaID

キャラクターのIDです。 ランダムの場合は RANDOM が入ります。

charaName

キャラクター名です。 ランダムの場合は RANDOM が入ります。

voiceFileURL

ボイス用のURLが入ります。 ランダムの場合は RANDOM が入ります。

chara-table

キャラクターの情報が入るテーブルです。

{
  "charaID":"{String}",
  "enable":"{Bool}",
  "name":"{String}",
  "description":"{String}",
  "profiles":[
    {
      "title":{String},
      "name":{String},
      "url":{String}
    }
  ],
  "resources":{
    "images":[
      {String}
    ],
    "voices":[
      {String}
    ]
  },
  "expressions":{
    "{String}":{
      "images":[
        "{String}"
      ],
      "voices":[
        "{String}"
      ]
    }
  },
  "calls":{
    "voices":[
      "{String}"
    ]
  }
}

サンプル

{
  "charaID":"com.charalarm.yui",
  "enable":true,
  "name":"井上結衣",
  "description":"井上結衣です。プログラマーとして働いていてこのアプリを作っています。このアプリをたくさん使ってくれると嬉しいです、よろしくね!",
  "profiles":[
    {
      "title":"イラストレーター",
      "name":"さいもん",
      "url":"https://twitter.com/simon_ns"
    },
    {
      "title":"声優",
      "name":"Mai",
      "url":"https://twitter.com/mai_mizuiro"
    },
    {
      "title":"スクリプト",
      "name":"小旗ふたる!",
      "url":"https://twitter.com/Kass_kobataku"
    }
  ],
  "resources":{
    "images":[
      "thumbnail.png",
      "normal.png",
      "smile.png",
      "comfused.png"
    ],
    "voices":[
      "self-introduction.caf",
      "com-charalarm-yui-0.caf",
      "com-charalarm-yui-1.caf",
      "com-charalarm-yui-2.caf",
      "com-charalarm-yui-3.caf",
      "com-charalarm-yui-4.caf",
      "com-charalarm-yui-5.caf",
      "com-charalarm-yui-6.caf",
      "com-charalarm-yui-7.caf",
      "com-charalarm-yui-8.caf",
      "com-charalarm-yui-9.caf",
      "com-charalarm-yui-10.caf",
      "com-charalarm-yui-11.caf",
      "com-charalarm-yui-12.caf",
      "com-charalarm-yui-13.caf",
      "com-charalarm-yui-14.caf",
      "com-charalarm-yui-15.caf",
      "com-charalarm-yui-16.caf",
      "com-charalarm-yui-17.caf",
      "com-charalarm-yui-18.caf",
      "com-charalarm-yui-19.caf",
      "com-charalarm-yui-20.caf"
    ]
  },
  "expressions":{
    "normal":{
      "images":[
        "normal.png"
      ],
      "voices":[
        "com-charalarm-yui-1.caf",
        "com-charalarm-yui-4.caf",
        "com-charalarm-yui-5.caf"
      ]
    },
    "smile":{
      "images":[
        "smile.png"
      ],
      "voices":[
        "com-charalarm-yui-2.caf",
        "com-charalarm-yui-3.caf"
      ]
    },
    "comfused":{
      "images":[
        "comfused.png"
      ],
      "voices":[
        "com-charalarm-yui-5.caf",
        "com-charalarm-yui-12.caf",
        "com-charalarm-yui-13.caf",
        "com-charalarm-yui-14.caf"
      ]
    }
  },
  "calls":{
    "voices":[
      "com-charalarm-yui-15.caf",
      "com-charalarm-yui-16.caf",
      "com-charalarm-yui-17.caf",
      "com-charalarm-yui-18.caf",
      "com-charalarm-yui-19.caf",
      "com-charalarm-yui-20.caf"
    ]
  }
}

CharaID

ドメインを逆にしたものが入ります。ex. com.charalarm.yui

aws dynamodb put-item \
--table-name chara-table \
--item '{"charaID":{"S":"com.charalarm.yui"},"enable":{"BOOL":true},"name":{"S":"井上結衣"},"created_at":{"S":"2023-06-03"},"updated_at":{"S":"2023-06-14"},"description":{"S":"井上結衣です。プログラマーとして働いていてこのアプリを作っています。このアプリをたくさん使ってくれると嬉しいです、よろしくね!"},"profiles":{"L":[{"M":{"title":{"S":"イラストレーター"},"name":{"S":"さいもん"},"url":{"S":"https://twitter.com/simon_ns"}}},{"M":{"title":{"S":"声優"},"name":{"S":"Mai"},"url":{"S":"https://twitter.com/mai_mizuiro"}}},{"M":{"title":{"S":"スクリプト"},"name":{"S":"小旗ふたる!"},"url":{"S":"https://twitter.com/Kass_kobataku"}}}]},"calls":{"L":[{"M":{"message":{"S":"井上結衣さんのボイス15"},"voiceFileName":{"S":"com-charalarm-yui-15.caf"}}},{"M":{"message":{"S":"井上結衣さんのボイス16"},"voiceFileName":{"S":"com-charalarm-yui-16.caf"}}},{"M":{"message":{"S":"井上結衣さんのボイス17"},"voiceFileName":{"S":"com-charalarm-yui-17.caf"}}},{"M":{"message":{"S":"井上結衣さんのボイス18"},"voiceFileName":{"S":"com-charalarm-yui-18.caf"}}},{"M":{"message":{"S":"井上結衣さんのボイス19"},"voiceFileName":{"S":"com-charalarm-yui-19.caf"}}},{"M":{"message":{"S":"井上結衣さんのボイス20"},"voiceFileName":{"S":"com-charalarm-yui-20.caf"}}}]},"expressions":{"M":{"normal":{"M":{"imageFileNames":{"L":[{"S":"normal.png"}]},"voiceFileNames":{"L":[{"S":"com-charalarm-yui-1.caf"},{"S":"com-charalarm-yui-4.caf"},{"S":"com-charalarm-yui-5.caf"}]}}},"smile":{"M":{"imageFileNames":{"L":[{"S":"smile.png"}]},"voiceFileNames":{"L":[{"S":"com-charalarm-yui-2.caf"},{"S":"com-charalarm-yui-3.caf"}]}}},"confused":{"M":{"imageFileNames":{"L":[{"S":"confused.png"}]},"voiceFileNames":{"L":[{"S":"com-charalarm-yui-5.caf"},{"S":"com-charalarm-yui-12.caf"},{"S":"com-charalarm-yui-13.caf"},{"S":"com-charalarm-yui-14.caf"}]}}}}}}' \
--profile sandbox
aws dynamodb put-item \
--table-name chara-table \
--item '{"charaID":{"S":"com.senpu-ki-soft.momiji"},"enable":{"BOOL":true},"name":{"S":"紅葉"},"created_at":{"S":"2023-06-05"},"updated_at":{"S":"2023-06-14"},"description":{"S":"金髪紅眼の美少女。疲れ気味のあなたを心配して様々な癒しを、と考えている。その正体は幾百年を生きる鬼の末裔。あるいはあなたに恋慕を抱く彼女。ちょっと素直になりきれないものの、なんやかんやいってそばにいてくれる面倒見のいい少女。日々あなたの生活を見届けている。「わっち? 名は紅葉でありんす。主様の支えになれるよう、掃除でもみみかきでもなんでも言っておくんなんし。か、かわいい? い、いきなりそんなこと言わないでおくんなんし!」"},"calls":{"L":[{"M":{"message":{"S":"紅葉さんの天気だね。"},"voiceFileName":{"S":"call-on-weekday-morning.caf"}}},{"M":{"message":{"S":"紅葉さんの肩凝るねー"},"voiceFileName":{"S":"call-on-weekday-afternoon.caf"}}},{"M":{"message":{"S":"紅葉さんのボイス3"},"voiceFileName":{"S":"call-holiday-scheduled-alarm.caf"}}},{"M":{"message":{"S":"紅葉さんのボイス4"},"voiceFileName":{"S":"call-holiday-no-scheduled.caf"}}},{"M":{"message":{"S":"紅葉さんのボイス"},"voiceFileName":{"S":"call-small-talk.caf"}}}]},"expressions":{"M":{"normal":{"M":{"imageFileNames":{"L":[{"S":"normal.png"}]},"voiceFileNames":{"L":[{"S":"tap-general-1.caf"},{"S":"tap-general-2.caf"},{"S":"tap-general-3.caf"},{"S":"tap-general-4.caf"},{"S":"tap-general-5.caf"}]}}}}}}' \
--profile sandbox