AWS SDK for Java のバージョン1.x系と2.x系

AWS SDK for Javaは1.x系と2.x系があるという話

もともと1.x系を利用していたら、気づいたら2.x系が出たのでバージョンアップの対応をしたりしていた。

1.x系:https://github.com/aws/aws-sdk-java

2.x系:https://github.com/aws/aws-sdk-java-v2

 

対応する際は、マイグレーションガイドがちゃんとあるので、それを読みながらやると良い。

https://docs.aws.amazon.com/ja_jp/sdk-for-java/v2/migration-guide/what-is-java-migration.html

Spring Boot + GraphQL その1

Spring Boot使ってGraphQLサーバを実装

GraphQLでJava向けのライブラリが公開されていて、それとSpring Bootを組み合わせて使えるようになっていた

https://graphql.org/code/#graphql-java-https-github-com-graphql-java-graphql-java

https://www.graphql-java.com/tutorials/getting-started-with-spring-boot/

 

作成するクラスについて簡単にまとめ(詳しくは↑)

  • スキーマを定義する
    • schema file用意
  • DataFetcher用意
  • RuntimeWiringを生成
    • 呼び出されたQueryに対して処理をここで設定している
    • 生成時にtype, fieldをセット、返却するfiledに対応するData Fecherをセット
  • GrraphQLをBeanに登録
    • schema fileを読み込んでインスタンス生成時にセット
    • RuntimeWiringもセットする

作りかけ

https://github.com/yito0000/graphql-java

 

今後

  • ドキュメントあんまり読めてないので、ちゃんと読む
  • mutation, subscription部分とかに触れたい

 

その他

Spring BootとGraphQL組み合わせて使いたいのであれば他にもライブラリは存在する

https://github.com/graphql-java-kickstart/graphql-spring-boot

 

Dockerについてざっくりとまとめ

Dockerとは

コンテナ技術の一つで、コンテナとは、アプリケーションに必要な環境、ライブラリ、アプリケーションなどをパッケージ化して、これらをホストOS上の用意された空間で実行する技術のこと。

メリット

  • アプリケーション開発時に、開発環境の用意などのめんどくさい作業がなくなる
  • 異なるOS環境が用意できる(Linuxであれば、UbuntuCentOSなど)
  • ホストOSから分離しているのでホストOSを意識せず容易にコンテナを変更・廃棄できる

 

(コンテナは軽量で用意と廃棄が容易なのが特徴。なのでアジャイルやDevOpsなどの開発で利用されることが多い印象...)

コンポーネント

  • Docker Engine:コア機能。イメージの生成やコンテナ起動などを行う
  • Dokcer Registry:Dockerイメージの公開・共有をするレジストリ
  • Docker Compose:複数コンテナの情報を定義・実行・管理する
  • Docker Machine:実行環境
  • Docker Swarm:クラスタ管理

 

 インストール手順

dockerインストール

Docker Community Editionをインストール。Dockerにはコミュニティ版(Docker Community Edition)と商用版(Docker Enterprise Edition)があり、今回は無償利用できるコミュニティ版を利用する。

https://docs.docker.com/install/

 

WindowsだとHyper-Vが必要となる

https://docs.docker.com/machine/get-started/ 

 

インストール後は状態を確認

$ docker info

 

Dockerコンテナの生成・起動

Dockerイメージについて

基本的にはDockerイメージを元にコンテナを生成・起動する。

Dockerイメージの用意の仕方は以下がある。

  • Dokcer HubからDockerイメージを取得
  • DockerfileからDockerイメージを作成

Dockerイメージを取得して実行

$ docker run -d -p 8080:80 nginx:latest

 docker runでDockerイメージからコンテナを生成して起動する

nginx:latestで最新バージョンのnginxのDockerイメージと指定している

localhost:8080を開いて「Welcome to nginx!」が表示されたら起動が成功

Windowsの場合おそらくlocalhostでは開かないので以下のコマンドでipアドレスを確認する

$ docker-machine ip

http://ipアドレス:8080で開ける

 

コンテナの停止・削除

起動中のコンテナを確認する

$ docker ps

以下のような結果が返ってくると思われる


CONTAINER ID        IMAGE                 COMMAND                  CREATED              STATUS              PORTS                    NAMES
ba567ab9ecf3        nginx:latest          "nginx -g 'daemon of…"   About a minute ago   Up About a minute   0.0.0.0:8080->80/tcp     cocky_jepsen

コンテナIDを指定して停止する

$ docker container stop ba567ab9ecf3

コンテナが不要であれば削除する

$ docker container rm ba567ab9ecf3




その他

Dockerイメージ/コンテナの管理はPortainer使うと便利。

気が向いたら他の観点で深掘りするか、Dockerfileとか、Docker Compose、Docker Swarmについて書く...

GraphQLさわってみた

GraphQLとは

Facebookが開発したAPIのためのクエリ言語。単一のエンドポイントを公開して、クエリを返す。

 https://graphql.org/

開発された経緯

Facebookのモバイル利用増加で、デバイスへのデータ量を減らして電力消費を低くしたかった。

 

メリット

  • 目的のデータ取得に、複数回APIを呼ぶことがなくなる
    • 取得データは関連データ含めて定義が可能なので、1回の呼び出しで必要なデータ全てを取得可能
  • APIのドキュメント作成が不要になる
    • 定義がそのままAPI仕様書の代わりとなる

特徴

以下を定義して使用する

  • schema
    • データ定義
  • query
    • データ取得
  • mutation
    • データ登録・更新
  • subscription
    • 登録・更新時に最新データ取得 

GraphQLが使えるサービス・プラットフォームとか

とりあえず使ってWebアプリ作ってみた

https://github.com/yito0000/chat-app

※後から諸々バグに気づく。まだ修正してない