プログラミング

【Java】Spring bootでシングルトンを利用し、簡易的にTBLデータをキャッシュ

今回はSpring Boot開発の現場で役立つTipsとして、シングルトンパターンとキャッシュを組み合わせたTBLデータのキャッシュ実装についてご紹介します。長い期間不変なマスタテーブルの値とかを保持できるので、毎回クエリを発行せずに済む、というメリットがあります。 シングルトンとキャッシュで実現する高速化 アプリケーションにおけるパフォーマンスの重要性 Webアプリケーションにおいて、パフォーマンスはユーザーエクスペリエンスを大きく左右する重要な要素であり、表示速度が遅いと、ユーザーの離脱率増加やコンバージョン率低下につながる可能性があります。特に、近年ではモバイル端末からのアクセス増加や、ユーザーの応答速度に対する期待値向上など、パフォーマンスの重要性はますます高まっています。特にWebだと「ターンアラウンドタイム(TAT)3秒以内」なんて目標設定されたりするので、ボトルネックは少ないほうがいいです。 TBLデータのキャッシュとは? TBLデータのキャッシュとは、データベースから取得したデータをアプリケーションサーバーの
やまぐろ

【Java】Spring Bootのインターセプターで、スレッドローカルに値をセットして使い回す

ちょっと限定的な使い方かも知れませんが「仕様変更とかで、全てのコントローラークラスに同じ処理を追加したい。でも、既存モジュールへの改修はコスト的に厳しい」って時に役立つのが、インターセプター。これとスレッドローカルを組み合わせて、なるべく改修範囲を抑えてやりたい事を実現しようと言うのが、今回のコンセプトです。 インターセプターとは インターセプターは、Spring Bootアプリケーションにおいてリクエストの前後に特定の処理を挿入するための仕組みです。例えば、「ある機能を実行する前に特定の処理を実行したい」場合などに活用されます。また、共通の処理を一箇所で管理することができるため、効率的な開発が可能となります。 スレッドローカルとは スレッドローカルとは、各スレッドごとに値を保持する仕組みです。これにより、特定のスレッド内で共有するデータを簡単に管理できます。特に、マルチスレッド環境において、スレッドごとに異なる値を保持する必要がある場合に有用です。 サンプルコード Spring Bootのインターセプターを使用し
やまぐろ

【PLSQL】大量のテストデータをダイレクトパスインサートする方法

開発現場において、必ずどこかのタイミングで実施することになるのが性能試験。今回は性能試験時に便利な、大量のテストデータをクエリ一発で準備する方法をご紹介。 PLSQLとは? PLSQL(Procedural Language/Structured Query Language)はOracleデータベースで使用されるプログラミング言語。SQLに手続き型言語要素を追加しており、複雑な処理や繰り返し処理を行うことが可能となっている。大規模なデータ処理を行う場合に特に便利な言語であり、現場でもテストデータの準備をするときによく使われる。というか、今のところテストデータ登録以外で利用されているのは見たことがない。自分だけ? ダイレクトパスインサートの必要性 テストデータを大量に準備する際、通常のINSERT文では処理時間がかかってしまうという問題が発生する。まあ本番性能に関わる部分じゃないし、気長に待っても良いんだけど、100万件をINSERTするのに20分かかるのと、1分で終わるのでは流石にだいぶストレスが違う。実際の肌感でそのくらいの差は出る
やまぐろ

【PowerShell】特定ディレクトリのファイルを再帰的に削除する

あんまり使うことは無いかもだけど、個人的に使いたい場面があったのでメモ。 ローカルのディレクトリでごにょごにょ作業してて、その構成が案外良く、テンプレートとして別の場所で使いたい、でも既に置かれているファイルは消してきれいにしたい。みたいな限定的な使い方ができるはず。 このPowerShellを配置して実行すると、同じ階層にあるファイル、同階層のディレクトリ配下のファイルを全て消し飛ばす事ができる。もちろんだけど、実行する場合は注意が必要。必要なものも消えちゃうから。そう、思い出とか。 # このスクリプトを配置したディレクトリのパスを取得 $scriptDirectory = Split-Path -Parent $MyInvocation.MyCommand.Path # 自ファイル名を取得 $scriptName = $MyInvocation.MyCommand.Name # 削除対象のファイルパスを再帰的に取得 $files = Get-ChildItem -Path $scriptDirectory -File -Recurse | W
やまぐろ

【Java】DTO項目の要素をComparatorでリストソート

SQLでなく、JavaでDTOリストをソートしたい時のサンプルコードです。たまに利用したくなる時があるので、備忘録としてここに残しておきます。Arrays.aslistを用いてリスト生成したものについてはエラーとなるので注意。 Java8から利用できるComparatorでソートするので、それより前の環境ではこの方法は利用できません。とはいえ、あんまりそういった環境で動いてるシステムはないかも知れません。 https://docs.oracle.com/javase/jp/8/docs/api/java/util/Comparator.html サンプルコード DTOクラスと、実際に動かすテストクラスをそれぞれ用意しました。 DTOクラスは社員番号と年齢を保持するシンプルなものにしています。テストクラスにはそのDTOに値をセットして、実際にソートする処理を書いています。 テストソースにも記載していますが、compareToする時に引数に渡すオブジェクトによって、昇順にするか降順にするかを変更することができます。また
やまぐろ

【Java】Kaptchaライブラリを利用したCAPTCHA認証の方法

誤字っぽいけど誤字じゃない、とても昔からあるJAVA用のCAPTCHA認証ライブラリが「Kaptcha」です。 現代ではあまり利用されることはないかも知れませんが、限られた環境下ではもしかしたら採用される可能性があるかも、と思ったので備忘録としてここに残しておくことにしました。 「Kaptcha」とは 「Kaptcha」は、Javaプログラミング言語用のCAPTCHA(Completely Automated Public Turing test to tell Computers and Humans Apart)生成ライブラリです。ユーザーが人間であることを証明するためにテキストを読み取ったり、画像内の特定のパターンを識別したりすることを要求することで、一般的なユーザID+パスワードの組み合わせに追加する形で用いられます。 Kaptchaライブラリは、これらのCAPTCHAを生成するためのJavaライブラリであり、簡単に使用することができます。また、カスタマイズも比較的容易に実施できます。ただまあ、UI的にはちょっと古さを感じるかも。
やまぐろ

楽天ブックスAPIを使って、書籍情報を表示する方法【WordPress用のサンプルコード付き】

当サイトでは、一応読んだ本の感想をメインコンテンツっぽい感じで紹介しており、その中で書籍情報を表示するようにしています。 今回はこの書籍情報をどうやって表示してるのってのを紹介しようと思います。 利用するもの 楽天ブックスAPI タイトルの通り、このサイトでは楽天ブックスAPIを利用しています。ドキュメントは以下↓ https://webservice.rakuten.co.jp/documentation/books-book-search 英語ページなので若干読みづらさがあるかもですが、リクエストとレスポンスが分かれば充分かと思います。 プログラムを実行する環境 今回はWordPressサイトに置く前提で進めます。なので、サンプルコードはPHPがベースになります。ただ、それにこだわる必要もないので、ローカルでもサクッと動くJavaScriptのコードも紹介します。 WordPressの記事ページに書籍情報を表示する手順 今回は当サイトと同様に、記事ページに書籍情報を表示
やまぐろ