JAVA関連のことを調べてみた

JAVA関連のことを調べてみた

【初心者向け】読みやすい単体テストを書くコツ

今回の記事では、読みやすい単体テストを書くコツ について書こうと思います。

# 対象読者層
– 単体テスト(テストコード)を書き始めたばかりの方
– 単体テストを何から書けばよいのかわからない方
– 単体テストのコードが複雑で可読性を上げる方法を模索している方

# 読みやすい単体テストを書くコツ
## AAAパターンを意識しよう

AAAパターンとは、単体テストの構造を意味しています。
それぞれの意味は以下。
– 準備(Arrange)
– 実行(Act)
– 検証(Assert)

つまり、すべての単体テストは、準備→実行→確認 の順にフェーズが進んでいきます。
BMIで肥満かどうかを診断するメソッドに対するテストコードを例にしてみましょう。
(BMIは[体重(kg)]÷[身長(m)の2乗]で求めることできます。)

**テスト対象コード**

“`java:BMICalculator.java
public class BMICalculator {
public static String diagnosisBMI(double weight, double hei

元記事を表示

SpringBoot SQLServer+JDBC @Transactional(readOnly=true)が効かない

# はじめに
SpringBoot SQLServer+JDBCにおいて、`@Transactional(readOnly=true)`の設定が効かずに、
普通にそのままUpdateされてしまった。

# 前提知識
Springトランザクションについては下記がすごい分かりやすい

`readOnly=true`について

https://docs.spring.io/spring-data/relational/reference/jdbc/transactions.html

javadoc
https://spring.pleiades.io/spring-framework/docs/current/javadoc-api/org/springframework/transaction/annotation/Transactional.html#readOnly()

# 先に結論

このメソッドは、SQL Server 用

元記事を表示

【SpringBoot】@Sqlをテストクラス初期化前の1回だけ実行する

# TL;DR
`executionPhase = Sql.ExecutionPhase.BEFORE_TEST_CLASS`を指定することで、`@Sql`をストクラス初期化前の1回だけ実行するように指定できます。

https://spring.pleiades.io/spring-framework/docs/current/javadoc-api/org/springframework/test/context/jdbc/Sql.html#executionPhase()

# 本文
`@Sql`(`org.springframework.test.context.jdbc.Sql`)は、デフォルトではテストメソッドそれぞれの実行直前に実行されます。
この挙動は`executionPhase`を指定することで変更できます。

## 指定可能なモード
テストメソッド実行前後とクラス実行前後の4つが選べます。

https://spring.pleiades.io/spring-framework/docs/current/javadoc-api/org/springframewor

元記事を表示

ラムダ式の練習でstreamAPIをちょっと再現する

## ラムダ式・streamAPIとの出会い
最近までは,大量のデータを成形するときは迷わずfor文,while文(もしくはIterator)で処理していました.
実際のコードではないですが,代わりに犬の名前のリストから10歳以上の犬の種類のリストを取得する処理を書いておきます.
“`java
List dogTypes = new ArrayList<>();
//dogNames:犬の名前が入った List
for(String dogName : dogNames){
Dog dog = //DBからdogエンティティの取得;
if(dog.getAge() >= 10){
dogTypes.add(dog.getDogType());
}
}
“`
~~SQLで対処できそうなのは置いといて,~~
こんなコードを書いて満足していましたが,友人からもっと格好良い処理があると言われ彼のコードを見ると…
“`java
List dogs = //DBから全てのdogエンティティの取得;
//do

元記事を表示

[Android その4] Androidのアプリケーションの基本開発

# Intentの実装
Intentは、Androidアプリケーション内で操作やデータを他のアプリケーションやアクティビティに送信するためのメカニズムです。Intentを使うことで、異なるコンポーネント(アクティビティ、サービス、ブロードキャストレシーバーなど)の間で情報をやり取りしたり、特定のアクションを開始したりすることができます。

__Intentには大きく2種類あります__ :
1\. 明示的Intent:
* 特定のアクティビティやコンポーネントを直接呼び出すために使用します。
* 例:現在のアクティビティから別のアクティビティを開始する。

2\. 暗黙的Intent:
* アクションの内容を指定し、それを実行できるコンポーネントをAndroidシステムが選択します。
* 例:写真を撮るアプリや、電話をかけるアプリを起動する。

# メモリアプリへのIntent追加
## 明示的Intent
例えば、メモアプリで新しいメモを追加する際に別のアクティビティを開く場合に、Intentを使用できます。これにより、メインアクティビティから新しいアクティビティへデータを渡すことがで

元記事を表示

10/3に『Javaエンジニアのためのソフトウェアテスト実践入門』を出版します(+同内容Udemyコースのお知らせ)

### 自己紹介

皆さん、こんにちは、Udemy講師の斉藤賢哉です。私はこれまで、25年以上に渡って企業システムの開発に携わってきました。特にアーキテクトとして、ミッションクリティカルなシステムの技術設計や、Javaフレームワーク開発などの豊富な経験を有しています。様々なセミナーでの登壇や雑誌への技術記事寄稿の実績があり、また[「アプリケーションアーキテクチャ設計パターン」](https://amzn.asia/d/9avaCyF)といった書籍も執筆しています。

### ソフトウェアテストに関する書籍を出版します

今般、技術評論社様から『Javaエンジニアのためのソフトウェアテスト実践入門』~自動化と生成AIによるモダンなテスト技法~を出版することとなりました。発売日は10/3ですが、Amazonでは先行予約が開始されています。

表紙は最終調整中ですが、こんな風になる見込みです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.ama

元記事を表示

IntelliJ IDEAでインポートをワイルドカードにまとめる設定を避けるべき理由とメリットについて

IntelliJ IDEAでは、インポートをワイルドカードにまとめる設定がある。

設定のやり方は
[IntelliJのリファレンスへGO](https://www.jetbrains.com/help/idea/creating-and-optimizing-imports.html)

先日、OSSのコミッターを行っている際にレビューで指摘されて、プライベートのPCでワイルドカードインポート設定になってしまっていたため、

下記にIntelliJ IDEAの
***【インポートをワイルドカードにまとめる設定】***
について、自分が思う避けるべき理由とメリットを記載しようと思う。

## ワイルドカードインポートを避けるべき理由

### 読みやすさの低下
ワイルドカードを使用すると、どのクラスが実際に使用されているのかが不明確になる。
特に大規模なコードベースでは、同じ名前のクラスが異なるパッケージに存在する場合があり、どのクラスがインポートされているのかがわからず、混乱を招く可能性がある。

### 静的解析やコード補完の問題
IDEの静的解析やコード補完の機能は、明示的なイン

元記事を表示

インポートされたjavax.servletは見つかりませんというエラー

EclipseでSpringBootでjavaファイルに以下をインポートしようとしてもうまくいきません
“`
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
“`

gradle.buildに、以下を追記して
“`
dependencies {
implementation ‘org.springframework.boot:spring-boot-starter-web’
// javax.servletの依存関係を追加
providedCompile ‘javax.servlet:javax.servlet-api:4.0.1’
}
“`
以下のコマンドで、gradleをリフレッシュしても解決しません
“`
./gradlew build –refresh-dependencies
“`

どのようにすればインポートできますか

元記事を表示

Webエンジニア「Kotlin」を学ぶ

現在Webエンジニアとして受託企業で働いているものです。
この度、転職を機にAndroidアプリエンジニアへキャリアチェンジをすることになったため、備忘録としてKotlinの学習記録を残すために投稿しています。
この記事ではKotlinとはどのような言語なのかということについてまとめています。

# Kotlinとは何か?
JetBrains社によって開発されたモダンなプログラミング言語。
2017年にGoogleからAndroid開発の公式言語として採用されており、Android開発において非常に人気が高い言語になっている。
また、マルチプラットフォームをサポートしており、JVM, Android, JavaScript, ネイティブ向けのコードをコンパイルすることができる。そのため、1つのコードベースから複数のプラットフォームに対応したアプリケーションを構築することができる。

# Kotlinの持つ特徴
### 静的型付け言語
– コンパイル時に型がチェックされるため、型安全性が高く、実行時のエラーリスクが減少し、信頼性の高いコードを書くことができる
– 型推論により、型を省略す

元記事を表示

Nothing Phoneの背面についてるライトをいじれるSDKが公開されてたので試す【Glyph Interface】Glyph Developer Kit

NothingPhoneの背面に無駄に搭載されているライト「Glyph Interface」をいじれるSDKが公開されていることを今日知りました

https://jp.nothing.tech/pages/glyph-developer-kit

https://github.com/Nothing-Developer-Programme/Glyph-Developer-Kit

Phone(2a)をメインで使用しているので試してみます

## 今回作ったもの

https://github.com/SousiOmine/GlyphInterfaceExample

## 環境
– Windows11 64bit 23H2
– Android Studio Koala Feature Drop 2024.1.2
– Nothing Phone(2a) 国内版
– Nothing OS 2.6

## セットアップ
プロジェクトはEmptyViewsActivityテンプレートから言語をJavaに、MinimumSDKはNothingPhone以外サポートする必要がないので、API31

元記事を表示

Javaのメモ(struts)

## はじめに
StrutsとSpringの連携とかがあるようです。

## struts-config.xml
“`struts-config.xml




“`
`struts-config.xml` ファイルの記載に関する説明をします。

まず、`struts-config.xml` は、Struts フレームワークの設定ファイルで、リクエストに対するアクションやビューへのフォワー

元記事を表示

Java Gold メソッド逆引き早見表 Stream型を返すメソッド

### Stream型を返すメソッド

| メソッド名 | 宣言されたクラス・インターフェイス | 戻り値の型(Stream) | メソッドの動作 | 引数 |
|————|—————————–|———————-|—————–|——|
| `Stream.of(T… values)` | `Stream` | `Stream` | 可変長引数で指定した要素を含む Stream を返す | `T… values` |
| `Arrays.stream(T[] array)` | `Arrays` | `Stream` | 配列から Stream を生成する | `T[] array` |
| `Collection.stream()` | `Collection` | `Stream` | コレクションから Stream を生成する | なし |
| `Collection.parallelStream()` | `Collection` |

元記事を表示

Java Gold メソッド逆引き早見表 Optional型を返すメソッド

Optional型を返すメソッド一覧

| メソッド名 | 宣言されたクラス・インターフェイス | 戻り値の型 | メソッドの動作 |
|————|—————————–|————–|—————–|
| `Optional.of(T value)` | `Optional` | `Optional` | 指定した非 `null` 値を持つ `Optional` を返す。`null` 値が指定されると `NullPointerException` がスローされる。 |
| `Optional.ofNullable(T value)` | `Optional` | `Optional` | 指定した値が `null` でない場合はその値を持つ `Optional` を返し、`null` の場合は空の `Optional` を返す。 |
| `Optional.empty()` | `Optional` | `Optional` | 空の `Optional` を返す。 |

元記事を表示

Java Gold 例題 比較演算

# 問1

次の配列を比較する式`insert code`に適切なコードを書いてください。
ただし、配列の要素が同じ場合、`true`を返してください。
“`java
int[] numA = {1, 2, 3};
int[] numB = {1, 2, 3};
boolean isSameArrays = /* insert code */
“`

解答

“`java
Arrays.equals(numA, numB);
“`
配列同士の比較で`==`または`numA.equals(numB)`の使用は、配列の中身ではなく参照の比較となり、`false`を返します。
予期せぬ結果を招く可能性があるので、あえて参照の等価性を比較する場合を除き、使うべきではありません。

:::note
[`JEXP02-J. 配列の中身を比較するには2引数の Arrays.equals() メソッドを使う`](https://www.jpcert.or.jp/java-rules/exp02-j.html)
:::

元記事を表示

Java Gold メソッド逆引き早見表 Collection Map 返し値

# 主要メソッド

| メソッド名 | 宣言されたインターフェイスおよびクラス名 | 引数の型 | 戻り値の型 | 要素が空の場合の動作 |
|—————————|——————————————|————————–|———————–|————————————–|
| `add(E e)` | `Collection` | `E` | `boolean` | `false`を返す(失敗時)、例外を投げる可能性あり |
| `remove(Object o)` | `Collection`

元記事を表示

Java Gold 例題集 ローカライズとフォーマット

次の問題の出力結果を答えてください

# 問題 Locale設定

“`java
import java.util.Locale;

public class Main {
public static void main(String[] args) {
Locale locale = new Locale(“ja”, “JP”);
System.out.println(locale.getDisplayCountry(Locale.US));
}
}
“`

解答
Japan

このコードは、`Locale`オブジェクトを使用して日本の国名を英語で表示します。`Locale.US`を指定することで、表示が英語になります。

# 問題 数値のフォーマット

“`java
import java.text.NumberFormat;
import java.util.Locale;

publ

元記事を表示

(調査中)Java。keytoolコマンド

#### キーストアの内容を確認

“`bash
keytool -list -v -keystore <キーストアファイル名>
““

#### -rfc オプションを使用する

“`bash
keytool -list -rfc -keystore <キーストアファイル名> -alias <エイリアス名>
“`

元記事を表示

Javaのstrutsメモ

## はじめに
Javaでの実装経験はありませんが、Javaの案件に入るとstrutsばかりに出くわします。
いいかげんにして欲しいのですが、メモとして記載します。

## jspでhtmlタグやlogicタグ、name、property
StrutsのJSPで使用される`html`タグや`logic`タグ、`name`や`property`属性は、Strutsフレームワークのタグライブラリを用いて、JSPで効率的にデータを扱うためのものです。これにより、JSPでビジネスロジックを直接書くのではなく、MVC(Model-View-Controller)の設計パターンに従って、コードを整理して記述することができます。

### 1. `html`タグ
`html`タグライブラリは、HTMLフォーム要素を簡単に生成するために使用されます。例えば、フォーム、テキストボックス、ラジオボタン、チェックボックスなどのフォーム入力要素を作成するのに使用されます。

– **例:**
“`jsp

元記事を表示

Java Gold 例題 ジェネリクス

次のコードについて、正しい選択肢を選んでください

“`java
HashSet set = new HashSet<>() {{
add((short)0);
add((short)1);
add((short)2);
}};

for(short i = 1; i <= 3; i++) { set.remove(i - 1); } System.out.println(set); ``` 1. [0, 1, 2]が出力される 1. 何も出力されない 1. []が出力される 1. コンパイルエラー 1. 実行時エラー

解答

正解: 1
“`
[0, 1, 2]
“`

{}の中はインスタンス初期化ブロックで、このブロック内でaddメソッドを使ってセットに要素を追加しています。
この時点で、setには`Short`型の0, 1, 2の3つの要素が含まれています。
`remove(i – 1)`では`short`と`int`の式なので`Intege

元記事を表示

SpringBoot 3.x 循環依存関係問題の概要と解決策

### 問題の説明
——————————
**SpringBoot** 3.x バージョンでは、**SpringBoot 2.6.x** 以降、数多くの変更が行われました。

**SpringBoot 2.7.5~x** バージョンを使用したことがある開発者は、**SpringBoot** プロジェクトに循環依存関係が存在すると、プロジェクト起動時に例外エラーが発生することに気付くでしょう。エラーメッセージの内容は、おおよそ「プロジェクトに循環依存関係があり、プロジェクトが正常に起動できない」といったものです。

**SpringBoot 2.7.5~x** バージョン以降から **SpringBoot 3.x** では、この問題が存在しています。Springは循環依存関係の問題を扱わなくなり、開発者が自分で解決するか、開発中に循環依存関係を避ける必要があります。

古いバージョンのプロジェクトをアップグレードする場合、循環依存関係のコードをすべて調整しなければならず、注意しないとコードが崩壊して動作しなくなる可能性があります。

### 循環依

元記事を表示

OTHERカテゴリの最新記事