Tagbangers Blog

Java

Spring + React の Web アプリを Kotlin のみで作成する

先月から Tagbangers にジョインした生粋のハマっ子こと JK です(元インターン生) 私の好きなプログラミング言語の1つは Kotlin です Kotlin は JetBrains 社が開発した言語で主に Android アプリ開発で使用できる言語として有名です JK ≒ JetBrains Kotlin 今回はそんな Kotlin を用いて簡単な Web アプリを1から作成していこうと思います! GitHub 今回作成するプロジェクトの完成形は下記のリポジトリにプッシュしています koyama-tagbangers/kotlin-react-spring-sample What's...

Keycloak と Spring Boot アプリケーションで OpenID Connect の Authorization Code Flow を確認する

はじめに 本日は、以下のようなシーケンスで OpenID Connect の Authorization Code Flow を確認していこうと思います。 開発済みのプロジェクトのいくつかで Keycloak,OpenID Connect, Spring Cloud Gateway が使われており順に理解していく必要を感じたため、今回は基本的な構成から学んでいきたいと思います。 UserInfo Endpoint(Spring Boot) および IdP(docker container として起動) のサンプルコードは以下のリポジトリに用意しました! https://github.com/k...

AWS Cloud9 が使えるものなのか試したい

なぜ Cloud IDE を使いたいのか。 コロナによる自粛のため、タグバンガーズでもリモートワークを行っています。 リモートワークでの問題の一つにコミュニケーションの取りづらさがあります。 隣にいるのとはやはり違いますよね。。 そこじゃなくて”ここ”みたいなことを画面越しにやるのは結構面倒です。 共同編集が出来る Cloud IDE であればその問題も多少軽減されるのでは? ということで触ってみて使えるのかどうか見てみましょう。 AWS Cloud9 Cloud9 は東京リージョンにも対応しています。 2019年4月には対応していたので1年以上前ですね。 Getting Started があ...

例外チェーンとその重要性について

この記事はBaeldungのChained Exceptions in Javaという記事を参考にし、一部翻訳したものです。 Exceptionとは? Exception(以下、例外)とは一言でいうと、プログラムの正常な流れを妨害するイベントのことです。 Chained Exceptionとは? Chained Exception(以下、例外チェーン)は、一つの例外が他の例外によって引き起こされているという状況を確認しやすくしてくれるものです。 例えば、0で割り算をしようとした関数からArithmeticExceptionが投げられたとします。しかし、実際の原因が別にあり、そもそも0が除数とし...

SpringアプリケーションでIPアドレスの検証がしたい!

オーストラリアからこんにちは! インターン生の古家です。 みなさんはSpringのアプリケーションでIPアドレスの検証がしたい!と思ったことはありますか? 例えば、アプリケーションにIPアドレスによってアクセス制限をかけたいときなどに、IPアドレスの検証が必要になります。 このサイトにあるように、configレベルで静的に制限をかけるのはSpring Securityの機能で簡単にできます。しかし、例えばユーザーごとに別々のIPアドレス制限をかけるなど、動的に制限をかけたい場合はどうでしょう? 実はSpring Securityには、IpAddressMatcherというクラスがあります。これ...

Hibernate Search で Elasticsearch を使用したらの bulk ではまった

なにが起きたのか? Hibernate Search は Elasticsearch にも対応しています。 今回、既存のアプリケーションで Elasticsearch に対応した際に、Hibernate Search の MassIndexer を使用して検索用インデックスを再生成を行いました。 その際、作成に失敗することがありましたので書きとめておきたいと思います。 結論 今回色々調べましたが、結論からいいますと。。 Elasticsearch がバッチで処理できるサイズを超えてしまい、Elasticsearch で生成に失敗、最終的に Hibernate Search の処理がエラーになる...

Spring Cloud Kubernetes を試してみる

はじめに Spring Cloud Kubernetes は Kubernetes ネイティブ API を使用した Spring Cloud の共通インターフェイスの実装で、次の 4 つの Spring Boot Starter がある。 spring-cloud-starter-kubernetes: Kubernetes Service からサービス名を解決する Discovery Client の実装。 spring-cloud-starter-kubernetes-config: Kubernetes ConfigMap と Secret から application properti...

Spring Bootがプロパティファイルを読み込む方法に一同驚愕!!

こんにちは、インターン生の古家です。 今回はSpring Bootのプロパティファイルの理解を深めるために調査を行い、まとめてみました。 プロパティとは? SpringBootではアプリケーションコードの外に設定値を持つことができます。 この設定値がプロパティと呼ばれています。 ファイル形式は.propertiesと.ymlを使用でき、その他にも環境変数やコマンドライン引数を用いて設定値を与えることができます。 プロパティ値を直接ぶっこむ2つの方法 以下のアノテーションを使うとBeanに対して直接プロパティ値を与えることができます。 @Value フィールドを@Valueアノテーションで装飾し...

Domain Event with Spring

Domain Event とは? 売上というドメインがある場合 、売上ドメインでは様々な出来事がおきます。 「売上ができた」「売上が変更された」「売上が削除された」 ここで、「売上ができた」という出来事は副作用があるかも知れません。 伝票ができるかもしれませんし、在庫が変動することもあるでしょう。 これらの副作用を売上ドメインだけで完結しようとすると、 伝票ドメインや在庫ドメインとの深い関係を持っている状態になります。 我々の世界ではこれを密結合と言ったりします。 疎結合と密結合であれば、疎結合がいいと言うのはなんとなくわかりますね。 マイクロサービスがもてはやされているのもこれが一つのキーワ...

Spring I/O 2019 Slides

Keynote Juergen Hoeller / Ben Hale / Violeta Georgieva and Sébastien Deleuze https://twitter.com/sdeleuze/status/1129017544013221888 Moving from Imperative to Reactive Paul Harris The State of Java Relational Persistence Maciej Walkowiak https://speakerdeck.com/maciejwalkowiak/the-state-of-java-rela...