AWS AppSyncについて勉強してみた

こんにちは、弥生の八木です。

この記事は、Misoca+弥生+ALTOA Advent Calendar 2018の 22日目の記事です。

記事を書くにあたって、せっかくなので業務とは関係なく、気になる技術を勉強しようと思ったので、 今回は、AWS AppSyncとそのバックグラウンドの技術であるGraphQLを勉強したことや簡単に作ってみたものについて書きます。

AWS AppSyncとは

GraphQLベースのAPIを作成でき、APIに合わせてDynamoDBを自動で作成できる「フルマネージドGraphQLサービス」です。 AWSのコンソール画面からDBを設計、設定をするだけで簡単にAPIとDBを作成できます。

GraphQLとは

GraphQLは、Facebookにより開発されたオープンソースのクエリ言語のことです。 クエリ言語とは「問い合わせ言語」といい、コンピュータのデータに対して問い合わせるための言語で、代表的なクエリ言語だと、SQLが当てはまります。

以下のようなリクエスト、レスポンスになります。

リクエストサンプル

query list {
  listHoge {
    items {
      id  hoge
    }
  }
}

レスポンスサンプル

{
  "data": {
    listHoge": {
      "items": [
        {
          "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
          "hoge": "hogehoge"
        }
      ]
    }
  }
}

実際に動かしてみた

やること

AWS AppSyncでAPIを作成し、クライアントからAPIにリクエストして、なんでもいいから結果を受け取って「AppSync使ってるぜ」感を味わう!

やったこと

  1. WebクライアントからAWS AppSyncにアクセスできるようにする
  2. AWS AppSyncでAPIとDBを作る
  3. 作成したAPIのエンドポイントなど設定する
  4. WebクライアントからAPIにアクセスし、レスポンス結果を画面に表示する

APIとDBの作り方

  1. AWSコンソールにログインし、「Create API」ボタンをクリックする f:id:ym_AdventC:20181218183733p:plain

  2. 「Create with wizard」にチェックを入れ、「Start」ボタンをクリックする f:id:ym_AdventC:20181218183842p:plain

  3. 「Model Name」に任意にDBの名称を付けて、「Configure model fields」でDBのカラムの設定をする、完了したら「Create」ボタンをクリックする f:id:ym_AdventC:20181218184133p:plain

  4. 「API Name」に任意にAPIの名称を付けて、「Create」ボタンをクリックして完了です f:id:ym_AdventC:20181218184716p:plain

作成したAPIは、AWSコンソール上でも動作させることができます

登録のクエリ f:id:ym_AdventC:20181218192142p:plain

取得のクエリ f:id:ym_AdventC:20181218192344p:plain

APIにアクセスして結果を取得

簡単にReactのサンプルプロジェクトをいじって取得した内容を表示させます。

Reactプロジェクト内のApp.jsの設定にGraphQLのクエリを記述し、レスポンス結果を取得する関数を作成

~~略~~

const ListTodos = `
query list{
  listTodos{
    items{
      id name description
    }
  }
}
`;

class App extends Component {
  state = {todos: []}
  async componentDidMount() {

    const todos = await API.graphql(graphqlOperation(ListTodos))
    console.log('todos:', todos)
    this.setState({todos: todos.data.listTodos.items})
  }

~~略~~

実際にWebブラウザからAPIにアクセス f:id:ym_AdventC:20181219180840p:plain

GraphQL APIでDynamoDBにアクセスして取得したデータを表示しています。 (画面下部のWebブラウザの開発ツールのコンソールに表示しているのが、レスポンス結果です。)

まとめ

AWS AppSyncについて触ってみてわかったこと

  • とても簡単にAPI(GraphQLベース)とDB(DynamoDB)を作成できる
  • APIアプリケーションを作成する必要なし
  • APIサーバーを用意する必要なし
  • DBサーバーを用意する必要なし
  • 簡単なWebアプリやスマホアプリ作成に便利

おわりに

AWS AppSyncで作成したAPIレスポンスを検証するために、React+AWS Amplifyを使用しましたが、環境構築やReactのJSXでWebブラウザ画面に表示するほうが大変でした。。 当たり前ですが、継続的に勉強しなきゃいけませんね!

Misoca+弥生+ALTOA Advent Calendar 2018 、次は@s_nogawaさんの「実践!オブジェクト指向 文系出身ひよっこエンジニアの勉強記」です!お楽しみに!