こんにちは。 エキサイト株式会社の三浦です。 Spring BootでMySQLなどのDBを使う場合、MyBatisを使用すると便利です。 そしてMyBatisを使用する際は、IntelliJで開発しているのであれば、mybatis-logというプラグインを使用すると、MyBatisのログから実行SQ…
こんにちは。 エキサイト株式会社の三浦です。 M1 MacでSpring Bootを実行すると、Netty周りでエラーが起きる場合があります。 今回は、そのエラーを解消する方法を説明します。 M1 MacとSpring BootのNettyエラー エラーの解消方法 最後に M1 MacとSpring B…
こんにちは。 エキサイト株式会社の三浦です。 Spring Bootで test や production などのデプロイ環境ごとに異なるデータを定義したいときは、 application.yml ファイルに定義することが多いでしょう。 今回は、 application.yml から値を取得するシンプル…
こんにちは。 エキサイト株式会社の三浦です。 今回は、Spring Bootでほぼ初めてThymeleafを使ってみたので、使ってみた所感について書いていきます。 Thymeleafとは Thymeleafの使い方 使ってみた所感 Thymeleafとは Thymeleafは、Javaで使用するHTMLのテン…
こんにちは。 エキサイト株式会社の三浦です。 Javaで開発をする際、Spotlessを使用している方もいるのではないでしょうか。 このSpotlessですが、実は特定の状況下だとJava17で実行できない場合があります。 今回は、その状況と解決法について説明します。 …
こんにちは。 エキサイト株式会社の三浦です。 最近社用のPCをIntel MacからM1 Macに変えたのですが、その際にいくつか注意したこと・詰まったことがありました。 今回は、それらについて説明していきます。 M1 Macとは M1 Mac用のアプリケーションを使用す…
こんにちは。 エキサイト株式会社の三浦です。 Javaは現在も積極的にアップデートされている言語であるため、様々な理由からJavaで開発しているアプリケーションのJavaバージョンを上げる必要が出てくることがたまにあります。 今回は、IntelliJで開発してい…
こんにちは。 エキサイト株式会社の三浦です。 Javaの依存管理にGradleを使用する場合、build.gradleファイルを使うことになります。 ですがbuild.graldeでライブラリを管理する場合、 buildscript 、 plugins 、 dependencies といった複数の書き方がありま…
こんにちは。 エキサイト株式会社の三浦です。 Amazon ECS でFargateを使用する際、通常のFargateとは別にFargate Spotを選択することが出来ます。 Fargate Spotは通常のFargateに比べて非常に安く、ぜひとも使っていきたい一方で、AWS側の都合でコンテナが…
こんにちは。 エキサイト株式会社の三浦です。 Javaアプリケーションをコンテナとして動かしたいとき、jibを使うのは大きな選択肢の1つです。 jibを使えば非常に簡単にJavaアプリケーションをコンテナ化することが出来ますが、一方でカスタマイズしたい場合…
こんにちは。 エキサイト株式会社の三浦です。 ECSにAWS CLIを使ってデプロイするとき、皆さんはデプロイの完了をどうやって検知しますか? 今回は、デプロイ完了検知に aws ecs wait services-stable を使用したときの問題点について説明します。 AWS CLIと…
こんにちは。 エキサイト株式会社の三浦です。 AWSにはECSという、コンテナをデプロイ・運用できるサービスがあります。 このECSにはALBを接続することもでき、それによってURLからのアクセスをECSのコンテナに流すことができます。 今回は、一度ECSにALBを…
こんにちは。 エキサイト株式会社の三浦です。 AWS OpenSearch Serviceではたまにソフトウェアアップデートが来ることがありますが、「バージョン自体をアップデートするわけではないからそこまで大きな変化はない」と考えていると、驚くような事態が起きる…
こんにちは。 エキサイト株式会社の三浦です。 2022年6月27日、エキサイト主催で行った「外部勉強会 リビルドへの道」にて発表させていただきました! 今回は、簡単に振り返りたいと思います。 「外部勉強会 リビルドへの道」とは 「外部勉強会 リビルドへの…
こんにちは。 エキサイト株式会社の三浦です。 AWSで開発を行う場合、多くのアプリケーション用サーバはプライベートサブネットに設置することになるでしょう。 つまり、もしWebアプリケーションの開発環境がサーバ上に存在する場合、本来インターネットから…
こんにちは。 エキサイト株式会社の三浦です。 JavaのアプリケーションでDBを扱っている場合、DBのマイグレーションのためにFlywayを使っている方も多いのではないでしょうか。 今回は、マイグレーションに使用するSQLファイルについて、ローカルではなくS3…
こんにちは。 エキサイト株式会社の三浦です。 Amazonが提供しているAWSでは、サーバやDBなどを配置する箱として「サブネット」と呼ばれるものがあります。 そしてサブネットは、「プライベートサブネット」と「パブリックサブネット」の2種類が存在します。…
こんにちは。 エキサイト株式会社の三浦です。 前回、ECS FargateとGraceful Shutdownに関する記事を書きました。 tech.excite.co.jp 今回はこの調査をしている時に直面した、Docker Composeで実行したコンテナの終了時、Graceful Shutdownが完了する前に強…
こんにちは。 エキサイト株式会社の三浦です。 今回は、ECS Fargate SpotでGraceful Shutdownをしたい時に引っかかる可能性のある、STOPSIGNALに関する注意点を説明します。 ECS Fargate Spotとは ECS Fargateは、AWSの提供するマネージドなコンテナ実行サー…
こんにちは。 エキサイト株式会社の三浦です。 2022年5月13日に、第二回目となる「テクデザ総会」を開催しました! 第二回テクデザ総会 ちなみに、第一回目の様子はこちらになります。 tech.excite.co.jp テクデザ総会 テクデザ総会は、事業部間など、普段は…
こんにちは。 エキサイト株式会社の三浦です。 Javaで日付形式の文字列を受け取る場合、 DateTimeFormat を使うことが多いと思います。 ですが実は、JSONで日付を受け取ろうとするとうまく行かない場合があります。 今回は、JSONで日付を受け取るにはどうす…
こんにちは。 エキサイト株式会社の三浦です。 以前こちらの記事で、Spring BootのRedisキャッシュで List.of などを使う方法について説明しました。 tech.excite.co.jp 今回はそれも含んだ、Redisキャッシュのおすすめ設定方法を紹介します。 なお実は、弊…
こんにちは。 エキサイト株式会社の三浦です。 Spring Boot には様々な機能が用意されており、その一つに Redis へのキャッシュ機能があります。 非常に便利なのですが、少なくとも Spring Boot の ver.2.6.6 では、 List.of (正確には、 List.of などによ…
こんにちは。 エキサイト株式会社の三浦です。 今回は、Spring Bootのアップデートによって、DB設定がちょっと簡単になった話をします。 Spring BootとDB設定 Spring BootでDBと接続したい場合、 application.yml ファイルに以下のように設定します。 spring…
こんにちは。 エキサイト株式会社の三浦です。 皆さんは、Checkstyleを使っていますか? Javaのコードが指定したコード規約に即しているかをチェックしてくれるツールで、これによってコードの品質を保つことができます。 Gradleからタスクを実行したりして…
こんにちは。 エキサイト株式会社の三浦です。 JavaのSpring Bootでは、OpenAPIのライブラリを使用することでAPIのリクエストモデルを簡単にドキュメント化することができます。 ただ、リクエスト用のモデルで ConstructorProperties を使っていると、うまい…
こんにちは。 エキサイト株式会社の三浦です。 皆さんは、GitHubでIssueを使っているでしょうか? 今回は、Issueを使う場合、併せてMilestoneを使うのがオススメ、という話をします。 GitHubのIssue GitHubには、Issueという機能があります。 コードを書いて…
こんにちは。 エキサイト株式会社の三浦です。 コードを書いていると、たまに環境ごとに異なる値を使いたくなるときがあります。 例えば、開発環境と本番環境で使用するDBが異なる場合は、DBのURLは環境ごとに異なるはずです。 今回は、Spring Bootでそのよ…
こんにちは。 エキサイト株式会社の三浦です。 AWSには、サーバーレスで処理を実行できる「AWS Lambda」というサービス(以降Lambda)があります。 Lambdaでは、実行の起点となるメソッド(handler)を指定することで、Lambdaの実行イベントが走ったときにそ…
こんにちは。 エキサイト株式会社の三浦です。 先日、弊社内で Excite × iXIT TechCon というカンファレンスが行われました! tech.excite.co.jp 私は「Spring Bootという強すぎるフレームワークについて」というタイトルで発表させていただきました。 Sprin…