Tagbangers Blog

Blog

Terraform の RDS のブルー/グリーンデプロイを試してみました

TLDR Terraform でやるとブルー/グリーンデプロイのためのインスタンスの作成や古いインスタンスの削除までやってくれます! 背景 RDS の更新でダウンタイムを最初限にしたかったので、ブルー/グリーンデプロイを検討しました。 ただし、AWS のコンソールでポチポチする作業は怖いので Terraform でできないのかなって調べたらまさか対応してくれます! https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/db_instance#blue_green_update blue_green...

Springの学習日記Part2: デザインパターン

もう春の兆し 最近暖かくなってきたのものあって朝は清々しくて気持ちいいですね(夜は寒いけど)。こういう日はランニングとかしたら気持ちいいだろうなーなんて思いながらいつもゴロゴロしてます笑。 とはいえ運動不足も嫌なのでスクワッドは毎日欠かさずやるようにしてます。なんかふくらはぎが第二の心臓らしい?(のでちょっと調べてみた) ふくらはぎの筋肉を動かすことで、足に滞っている血液を心臓の方へ押し戻すことができます。 このことから、ふくらはぎは別名「第二の心臓」 と呼ばれており、とても大切な働きをしているのです。 なるほど、血液を心臓に押し戻さないといけないとどうなる?・・・って想像したらなんとなく茶番...

Springの学習日記Part1: DIについて

この記事を書き始めようと思ったきっかけ 普段の業務でバックエンドをSpring Bootで開発しているのですが、どうも自分が書いているとSpringについて基礎を知らないことがわかり、また何がわからないのかをうまく言語化した上で相手に伝えられない事態になっていました。 また上司に言語化する練習をすることを勧められた経緯もあって、自身の過去をよくよく振り返ってみた結果、コードを書いていく中で湧いてきた疑問や、自身の考えについてよく整理できていないまま(最適なワードが見つからないまま)相手に伝えていたことがしばしばありました。 当然その状態では、自分が求めている情報について検索したり相手から情報を...

Netadashi Meetup #12 で話しました

NRIさん主催の勉強会 Netadashi Meetup で LT をしてきました。 今回は「フロントエンド関連技術」がテーマだったので、「OCaml/Reasonで始めるフロントエンド開発」をお題にしました。 スライドはこちら BuckleScript が ReScript にリブランドされて以来、勢いのなくなってしまった感のある Reason でしたが、Melange という新しい OCaml to JS コンパイラが登場したことで Reason が再始動している感があります。 静的な型システムと型推論、Variant、Option / Result 型、Pipe 演算子、パターンマッチン...

asdf + Poetry + IntelliJ で Python 開発環境を作る

asdf のインストール タグバンガーズではツールのバージョン管理として asdf を使っています。 brew などさまざまな方法でインストールできます。 https://asdf-vm.com/guide/getting-started.html Python のインストール asdf plugin-add python asdf install python 3.11.7 asdf local python 3.11.7 Poetry のインストール asdf plugin-add poetry asdf install poetry latest asdf global poet...

[型パズル] Q. TypeScript の型定義でジェネリクスのパラメータが配列かどうかで型の形式を変えたい!

結論: T extends Array を用いる あけましておめでとうございます(半年遅れ) 最近業務で Headless CMS を触ったのですが、技術調査の際に候補に上がった Strapi がずっと気になって最近ので最近遊んでいるのですが、その際に API レスポンスの型を TypeScript で表現するときに利用した手法が面白かったので共有します REST API Strapi の公式ドキュメントを例にとると、扱う entry(ドメイン・データ)は下記の interface で表現できます interface Restaurant { title: string descr...

Paketo Buildpacks で作成する Spring Boot App on Docker で FFmpeg を扱えるようにする

Cloud Native Buildpacks は Docker 上でアプリケーションを稼働させるにあたり非常に強力なソリューションです Tagbangers では Spring Boot と Next.js で作成したアプリを AWS EKS / AWS ECR にデプロイして Docker Container 上で稼働させているプロダクトがいくつかあります それらは Buildpacks を利用してほぼゼロコンフィグでイメージを作成しているものが多いです 過去にも Buildpacks に関連した記事をいくつか随筆しているのでよろしければご覧ください Next.js による Docker ...

Spring Cloud Gateway の CORS 設定を Vercel の自動生成 URL に対応させる

下記の環境に対応させるために Spring Cloud Gateway の設定の調整をした時のメモです フロントエンドアプリケーションは Vercel にデプロイ API サーバの前段に CORS が有効な Gateway サーバがいる フロントエンドアプリケーションと Gateway サーバのドメインが異なる CORS の設定は application.yml で指定することが可能です Spring Cloud Gateway のドキュメントとしてはサンプルとして下記の書き方が紹介されています CORS Configuration - Spring Cloud Gateway spring:...

Contentful App Framework を用いて RichText を拡張する

Tagbangers では新しい取り組みとして Web アプリケーションの構築の際に Headless CMS を用いたサイトデータ構築を行っています デザインとデータを分けることで責務を分散させる他に開発者以外にもお客様が文言を直したり新しい項目を増やすことが可能になるので運用上のメリットを得られることができます Headless CMS のサービスの中で弊社では Contentful を利用しており、現在も目下使い方や運用を考えながらアプリケーションの開発に携わっています 今回は Contentful で利用できる Rich Text とその拡張方法を試してみました Contenful の...

Spring + Testcontainers によるテストと ContextCustomizerFactory による効率化

参考記事 Faster tests by reusing Testcontainers in Spring Boot Testcontainers の活用 Testcontainers は Java (JUnit) でテストを書く際に Docker コンテナを用いて実際の環境に近い Integration Tests を実現することのできる強力なソリューションです タグバンガーズでも以下の事例で実際に Testcontainers を利用してテストを作成しているプロジェクトがあります AWS S3 に対して操作を行うプロジェクトで LocalStack Module を用いて AWS SDK ...