エキサイト株式会社メディア事業部エンジニアの佐々木です。メディア事業部では、SpringBoot、Gradle、IntelliJでリビルド開発を日々行っています。Dockerを使ったローカル環境での開発を行っています。開発でのSpringBootの起動方法は複数ありますので、3つ…
エキサイト株式会社メディア事業部エンジニアの佐々木です。メディア事業部ではSpringBootで開発しています。SpringBootには標準でDockerFileなしでコンテナイメージを生成してくれる機能があるので、ご紹介します。 はじめに コンテナイメージ作成 まとめ …
結論 前提 設定方法 やってみて 最後に エキサイト株式会社エンジニアの佐々木です。立場上、複数のプロジェクトをIntelliJで立ち上げることが多く、Windowがバラバラになってしまい使いにくかったんで、技術ブログに書くほどではない小さなTipsですが、調べ…
エキサイト株式会社メディア事業部エンジニアの佐々木です。 メディア事業部では、最近JVMを利用した開発が増えてきており、プロジェクトやリポジトリごとにバージョンが変わったりが起きています。これをなるべく自動で切り替える方法をご紹介します。 前提…
エキサイト株式会社のエンジニアの佐々木です。SpringBootとThymeleafを使ってリビルドしていますが、既存テンプレートがモバイル用とデスクトップ用でわかれているので、Interceptorを使って対応します。 前提 SpringBoot x Gradleを使います。 build.gradl…
エキサイト株式会社メディア開発の佐々木です。build.gradle内でIntelliJのGroovyの補完を効かせる方法です。 Gradleとは Groovy製のビルドツールになります。Javaを始めAndroidやC/C++でも使えるようです。モジュールの依存関係の解決やちょっとした処理をG…
エキサイト株式会社エンジニアの佐々木です。Java17が昨年リリースされ、JEP378のテキストブロックがLTSとして入ったので改めてJEP378を読むとテキスト変換の方法がいくつか書いてあったので、復習がてらおさらいします。 openjdk.java.net テキストブロック…
エキサイト株式会社エンジニアの佐々木です。2021年エキサイトホールディングス アドベントカレンダー19日を担当させていただきます。 余談 エキサイトのメディア事業部では、SpringBootを使用して過去の技術的負債に立ち向かっております。私がジョインして…
エキサイト株式会社エンジニアの佐々木です。2021年Exciteホールディングスアドベントカレンダー17日目を担当させていただきます。 SpringBootでのイベントリスナーの実装についてです。 はじめに SpringBootでは、アノテーションを用いたイベントリスナーの…
エキサイト株式会社エンジニアの佐々木です。2021年エキサイトホーディングスアドベントカレンダー7日目を担当させていただきます。 以前、SpringBootで対話的インターフェースをSpring Shellで実装するで対話的なアプリケーションについては記載しており、…
エキサイト株式会社エンジニアの佐々木です。2021年アドベントカレンダー5日目を担当します。 サービスを開発している上で、データをなるべくイミュータブルにするというのは、バグを作り込まない上で重要だと思います。Java15でRecord型が導入されています…
エキサイト株式会社佐々木です。アドベントカレンダー2021の2ページ目の1日目になります。メディア事業部では、SpringBoot x Gradleマルチプロジェクトを使用して、モジュラーモノリスのような構成で各メディアのリビルドの開発を進めています。既存のリポジ…
エキサイト株式会社エンジニアの佐々木です。SpringBootは、Webアプリケーションフレームワークというのが一般的な認識可と思いますが、結構なんでもできたります。今回はマイナーな、インタラクティブなCUIアプリケーションを作る、SpringShellの機能につい…
エキサイト株式会社エンジニアの佐々木です。小ネタですが、画像を受け取ってそのまま表示する方法のメモです。 はじめに SpringBootで画像を受け取って表示する簡単なサンプルです。フォームでファイルをアップロードし、それをそのまま表示するだけのデモ…
エキサイト株式会社エンジニアの佐々木です。アプリケーションを開発していると設定が増えてくると思いますが、増えてくるとファイルが増えて大変です。また、モジュラーモノリスのような構成にすると設定を別々に管理した方が都合がいいことがでてきます。S…
エキサイト株式会社エンジニアの佐々木です。SpringBootでの設定ファイル(application.yaml)を一括で読む方法のメモになります。 前提 SpringBoot2.4以上で検証しています。 起動クラスの設定 ソースコードは下記になります。 起動クラスに@ConfigurationPro…
エキサイト株式会社エンジニアの佐々木です。古いシステムをSpringBootリビルドしており、リクエストパラメータの命名が統一されていないというのがあったので、対応方法の一例を紹介します。 @RequestParamで解決する @RequestParamのname属性で指定できま…
エキサイト株式会社 メディア開発の佐々木です。 現在、SpringBootで2つ以上のプロパティをチェックするカスタムバリデーションを共有します。 アノテーションの定義 下記のようにカスタムアノテーションを定義します。 (@Constraint(validatedBy = NotBlank…
エキサイト株式会社 メディア開発の佐々木です。 SpringBoot/AOPでメソッドの実行時間を計測します。計測は重要です。 依存関係の解消 Gradleで依存関係を解消します。 dependencies { ... implementation "org.springframework.boot:spring-boot-starter-ao…
エキサイト株式会社メディア開発佐々木です。Javaの列挙型であるenumの基本的な使い方を共有します。 enumとは 列挙型と言われます。Javaの列挙型はJava1.5の頃から使え、当時の他の言語の列挙型より強力だったという話があります。そして、Javaの列挙型は単…
エキサイト株式会社メディア開発佐々木です。 SpringBoot/Javaで既存システムのリビルド開発を行っていますが、ORマッピー(正確にはORマッパーではない)にはMyBatisを採用しています。テーブル構成はなかなか変えられない為、良くも悪くも自由度の高いMyBati…
エキサイト株式会社メディア開発の佐々木です。 Java15で入ったTextBlockでMyBatisのカスタムクエリがアノテーション内でできないかなと思い試してみました。 結果 できた。これは嬉しい。Javaのことだからアノテーションだけ使えないとかはさすがにないと思…
エキサイト株式会社メディア開発の佐々木です。 Javaには、JSR303 Bean Validationという私の好きなValidation仕様があります。@Validをつければ、クラスのフィールドに@Emptyや@Min(1)のようなアノテーションをつけるだけで、値のバリデーションが可能です…
エキサイト株式会社メディア開発の佐々木です。 メディア開発では、github.comを使ってソースコード管理を行っています。人数やプロジェクトが多くなってくるとPullRequestのコメントの書き方がバラバラになってくるので、生産性を確保する為に下記のような…
エキサイト株式会社 メディア開発の佐々木です。 SpringBootでは、日付処理をある程度アノテーションで処理できるので共有します。 @RestController @RequestMapping public class DemoController { @GetMapping("/date_format") public Form dateFormat(For…
エキサイト株式会社メディア開発の佐々木です。 Javaは、戻り値を1つしか返せない言語です。GoやPythonは複数返すことができますが、言語的にサポートされていないので、ライブラリを使って代用します。 設定 使うライブラリは、有名なcommons-lang3になりま…
エキサイト株式会社メディア開発の佐々木です。 メンバーもJavaの開発に慣れてきて、今まで触ってきた言語にはない機能だったり仕組みだったりに格闘している日々です。今日は、Optionalについてです。 Optionalとは Javaは、nullを許容しているレガシー言語…
エキサイト株式会社 メディア開発佐々木です。 現在Spring/Javaで開発するにあたって、関数型インターフェースを呼ぶときにラムダ式でもメソッド参照でも書ける場合があります。どちらを使った方が、継続的な開発にいいのかを簡単にですがまとめてみます。 …
エキサイト株式会社メディア開発の佐々木です。 以前、下記の記事でJavaのオブジェクトマッピングツールでModelMapperを紹介しました。 excitech.hatenablog.com ModelMapperは、とてもお手軽で大変便利なのですが、やや速度に問題があり大量のデータ処理等…
エキサイト株式会社 メディア開発 佐々木です。 SpringBootで開発をしているのですが、データの詰め替えとか割と頻繁にあり、データのマッピング処理が面倒になってきます。そこで、 ModelMapper というライブラリが便利です。(ただしパフォーマンス的には良…