Spring Bootで、独自アノテーションを目印にAOPを行う方法

こんにちは。 エキサイト株式会社の三浦です。 こちらは、エキサイトホールディングス Advent Calendar 2023の6日目の記事になります。 qiita.com 良ければ他の記事もどうぞ! さて、コーディングをしている時、「このメソッドが実行される際はログを取りた…

JavaのSpringBootでMyBatisを利用して複数のデータソースに接続する方法

こんにちは、エキサイト株式会社の平石です。エキサイトホールディングス Advent Calendar 2023の5日目を担当いたします。 今回はJavaのSpringBootでMyBatisを利用して、複数のデータソースに接続する方法をご紹介します。 はじめに 前提条件 問題設定 appli…

SpringBootとキャッシュライブラリCaffeineでローカルキャッシュサーバを作成する

エキサイト株式会社メディア事業部エンジニアの佐々木です。2024年アドベントカレンダー2日目を担当させていただきます。 サーバーローカルでのキャッシュはHashMap等で自作してもいいのですが、キャッシュ期限を自作するのは結構面倒なので、Caffeineを使用…

Javaで、文字列内に文字列変数を挿入する方法

こんにちは。 エキサイト株式会社の三浦です。 本記事は、エキサイトホールディングス Advent Calendar 2023の4日目のものになります。 qiita.com 良ければ他の記事もどうぞ! さて、コーディングをしていると、文字列の中に変数で定義してある文字列を挿入…

GitHub Actionsでデプロイした時に、自動的にCSSファイルをS3にアップロードする

はじめに こんにちは、新卒1年目の岡崎です。エキサイトホールディングス Advent Calendar 2023の4日目を担当します。 今回はGitHub Actionsを使って、Amazon ECSにアプリケーションをデプロイした時に、自動的にCSSファイルをS3にアップロードする実装を行…

RiverpodのStreamProviderを使ってPushNotificationを実装してみた

はじめに エキサイト株式会社の高野です。エキサイトホールディングス Advent Calendar 2023の3日目を担当させていただきます。 今回はFlutterにおけるRiverpodのStreamProviderを使ってPushNotificationを実装した話です。 動作環境 Flutter: 3.13.4 hooks_…

MySQL5.7から8.0へAmazon RDS ブルー/グリーンデプロイを使って移行する

こんにちは。エキサイトでエンジニアをしている吉川です。 エキサイトホールディングス Advent Calendar 2日目の記事になります。 私が担当しているサービスで使用しているMySQL DBについて、先日5.7系から8.0系にバージョンアップを行いましたので、ご紹介…

SpringBootとInfinispanの組み込みモードでローカルなキャッシュ機構を作る

エキサイト株式会社エンジニアの佐々木です。エキサイトホールディングス 2023 advent calendar 1日目を担当させていただきます。 qiita.com 今回は、SpringBoot/Javaで、サーバローカルなキャッシュをRedHatが開発しているInfinispanの組み込みモードを使用…

BEAR.Saturdayで画面を作るために必要な三つのコンポーネントの概要

はじめに こんにちは。新卒1年目の岡崎です。エキサイトホールディングス 2023 advent calendar 1日目を担当させていただきます。 qiita.com BEAR.Saturdayでの開発で苦戦しました。 今回の備忘録では、BEAR.Saturdayで画面を作るために必要な三つのコンポー…

Next.jsのLayoutにpropsを渡したい

はじめに BB.excite事業部でエンジニアをしている小川です。 はじめに注意書きですが、本記事ではNext.js 12.x の Layouts機能を取り扱います。 Next.jsのPages Routerには同じ要素を再利用するための機能としてLayoutパターンが用意されています。 また、La…

初めてのオフライン展示会からデザイナーが学んだこと

こんにちは! SaaS・DX事業部デザイナーの鍜治本です! 技術ブログとは毛色が少し異なりますが、エキサイトのSaaS事業部としてオフラインの展示会に出展し、デザイナーとして体験したことをさっくり書き起こします! 出展したイベント概要 展示したもの ブー…

新しく環境を作るために必要なざっくりとしたAWSの知識

はじめに こんにちは。新卒1年目の岡崎です。 今回、初めて内部用のAPIのための環境を作成しました。その時に必要だった知識も分からずに始めたので、その備忘録として記事にまとめます。初めてAWSで環境を作るよ!という人や、まず何から初めて見ればいいの…

デザインのクオリティを上げる一手間!デザインTips集第二弾

はじめに こんにちは、エキサイト株式会社3年目デザイナーの山﨑です。 今回は、デザインのクオリティを上げる一手間!デザインTips集第二弾を紹介したいと思います! ▼前回の記事はこちら▼ tech.excite.co.jp 意外と簡単にできるものばかりなので、ぜひ実践…

Spring Securityで、同一ドメインにて別セッションでログイン管理をする方法

こんにちは。 エキサイト株式会社の三浦です。 Spring Securityでセッションを使ってログイン管理をする場合、基本的にはドメイン単位でセッションが分かれます。 今回は、同一ドメインにて別セッションでログイン管理する方法を説明します。 1. プロジェク…

タスクランナーをgo-taskにする

エキサイト株式会社メディア事業部エンジニア佐々木です。開発で使用するタスクランナーは、一般的にMakefileを使うものが多いかと思います。より簡単なgo-taskを紹介いたします。 インストール タスクファイル 実行 タスク一覧 まとめ 最後に インストール …

FlutterKaigi 2023に参加してきました。

はじめに エキサイト株式会社の高野です。 今回はFlutterKaigi 2023に参加してきましたのでその感想及びレポートになります。 聴講したセッション一覧 Flutterアプリにおけるテスト戦略の見直しと自動テストの導入 出前館におけるFlutterの現在とこれから Ma…

FlutterKaigi 2023 参加レポート

エキサイト株式会社の@mthiroshiです。 FlutterKaigi 2023に参加してきましたので、その内容をレポートします。 FlutterKaigi 2023の概要 聴講したセッション 基調講演「Flutter's 8 years journey」 「Flutter アプリにおけるテスト戦略の見直しと自動テス…

Spring Securityで、独自ユーザ情報を簡単にHTML上に表示する方法

こんにちは。 エキサイト株式会社の三浦です。 Spring Securityを使えば、Spring Bootで簡単にログイン機構を作ることができます。 今回はSpring Securityの一部機能を拡張し、独自のユーザ情報を簡単にHTML上に表示する方法を紹介します。 Spring Security…

FlutterKaigi 2023 - Flutterで構築する漫画ビューア 補足

こんにちは。エキサイト株式会社 モバイルアプリエンジニアの克です。 このたび、FlutterKaigi 2023に登壇しました。 fortee.jp speakerdeck.com 今回は、当日お話しできなかった内容をいくつか補足したいと思います。 画像の保存場所 発表では画像の保存場…

MermaidでER図を書く

はじめに こんにちは。新卒1年目の岡崎です。 今回はテーブル定義をする時に、使うと便利かもしれないMermaidの紹介をしていきます。 はじめに Mermaidとは 使い方 VSCode IntelliJ IDEA Notion GitHub Mermaidの記法 テーブル定義 リレーション定義 最後に …

エキサイトブログにおけるPostgreSQLのイベントトリガの活用例

はじめに エキサイト株式会社 バックエンドエンジニアの山縣(@zsp2088dev)です。 エキサイトブログでは、DBコスト削減に取り組んでおり、これまでにいくつかの改善を行ってきました。 取り組んだこととその効果については、下記記事をご参照ください。 tec…

Spring Securityで、Controller以外で現在ログイン中のユーザ情報を取得する方法

こんにちは。 エキサイト株式会社の三浦です。 Spring Securityを使えば、Spring Bootで簡単にログイン機構を作ることができます。 当然ログイン中のユーザ情報も取得することができます。 Controllerのメソッドの引数から取得する方法が一般的な方法の1つか…

MySQLで複合indexのexplainを見る時、key_lenも確認する必要があった話

はじめに こんにちは。新卒1年目の岡崎です。 MySQLで複合indexを貼るか、単体のindexを貼るのか業務で検討しました。この時は普段確認していること以外に、key_lenも確認する必要があったので、その備忘録として紹介します。また、今回の記事は、初学者向け…

【Flutter】Androidの課金APIを操作する前に利用可能判定を行う【in_app_purchase】

エキサイト株式会社の@mthiroshiです。 Flutterのアプリ内課金の実装には、 in_app_purchase パッケージを使います。 Androidで実装する際に、少し躓いた問題があったのでご紹介します。 動作環境は、下記のpubspec.ymlの内容です。 dependencies: in_app_pu…

BB.excite事業部で約1ヶ月間インターンシップに参加して...

はじめに はじめまして!エキサイト株式会社で約1ヶ月間就業型インターンシップ(Booost!!! Excite Internship 2023)に参加させて頂きました大澤と申します。 今回は、私のインターンシップでの取り組みやインターンシップを通じて得た知識や学びについて紹介…

就業型インターンでフロントエンドエンジニアとして学んだこと

はじめに エキサイト株式会社で一ヶ月間、就業型インターンシップ Booost!!!に参加した浅野です。 インターンシップで、取り組んだことや学んだことをまとめていきます。 info.excite.co.jp 自己紹介 私は、修士1年の大学院生です。 GPTを用いてエージェント…

htmxで、親タグではないformのデータを送信する方法

こんにちは。 エキサイト株式会社の三浦です。 以前、「htmxでデータを送信する際、送信の設定をしたタグの親にformタグがある場合は、そのformタグに含まれるすべてのデータが送信される」ということを説明しました。 tech.excite.co.jp 今回は、親以外のfo…

RETURNING INTO句を使って更新結果を出力する in Oracle

サムネイル こんにちは。エキサイト株式会社のあはれんです。 今回は、OracleのRETURNING INTO句について紹介します。 環境情報 データベース:Oracle Database 19c データベースツール:PhpStorm Database Tool はじめに OracleでUpdate文を実行すると、3 r…

【インターン】デザイナーインターンで学んだこと

こんにちは! エキサイトでインターンをさせて頂いている戸嶋です! 大学ではメディア社会の分野を勉強しています。大学とは別でWebデザインのスクールに通い、デザインとプログラミングの勉強を行いました。そこでデザインに興味を持ち、実際のデザイナーの…

htmxでデータ送信時、親form内のすべてのデータが送信される

こんにちは。 エキサイト株式会社の三浦です。 皆さんは、htmxをご存知でしょうか?(HTMLのtypoではありません!) htmx.org htmxはHTML用のライブラリの一つで、HTMLページ上での動的なデータ通信やそれによる表示の置き換えなどを簡単に行えるようにして…