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であれば、Ubuntu、CentOSなど)
- ホスト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/
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を呼ぶことがなくなる
- 取得データは関連データ含めて定義が可能なので、1回の呼び出しで必要なデータ全てを取得可能
- APIのドキュメント作成が不要になる
- 定義がそのままAPI仕様書の代わりとなる
特徴
以下を定義して使用する
- schema
- データ定義
- query
- データ取得
- mutation
- データ登録・更新
- subscription
- 登録・更新時に最新データ取得
GraphQLが使えるサービス・プラットフォームとか
- appSync(AWS):https://aws.amazon.com/jp/appsync/
- Apollo:https://www.apollographql.com/
- HASURA:https://hasura.io/
- prisma.io:https://www.prisma.io/
とりあえず使ってWebアプリ作ってみた
https://github.com/yito0000/chat-app
※後から諸々バグに気づく。まだ修正してない