JAVA関連のことを調べてみた2022年12月29日

JAVA関連のことを調べてみた2022年12月29日

Word文書で表を作成または読み取る方法【Java】

Microsoft Wordの表は、データを表示するための便利なツールです。大量のデータを行と列のグリッドを使って並べることができるので、読者はより簡単に読み、分析することができます。この記事では、[Free Spire.Doc for Java](https://jp.e-iceblue.com/introduce/free-spire-doc-for-java.html)ライブラリを使用して、Javaで**Word文書内の表を作成したり、読んだりする方法**を紹介します。
– **[Word文書に表を作成する](#word文書に表を作成する)**
– **[Word文書内の表を読み込む](#word文書内の表を読み込む)**
## 【依存関係の追加】
この方法は、無料のFree Spire.PDF for Javaが必要ですので、先にjarファイルをインポートしてください。
### 1. Maven
Maven を使用している場合、プロジェクトの pom.xml ファイルに以下のコードを追加することで、簡単にアプリケーションに JAR ファイルをインポートすることができます。

元記事を表示

Behavioral Design Pattern in Java

Recently, we have covered Creational Patterns in our Design Patterns series. Today, we are going to cover behavioral design patterns and their types.

If you want to get an overview of design patterns before getting started with behavioral patterns, then check out our previously written blog: Design Patterns in Java.

For al

元記事を表示

javaでStringとintを文字列結合する場合は、nullチェックを必ずしましょう

仕事をしていた時に、バグとして出ていた現象です。

NULLチェックをしていないのが悪い、テストしてないのが悪い
という結論なのですが、意識はしておかないと気付きにくいなと思って、備忘録として保存します。

## javaではStringとintをそのまま結合した場合、文字列扱いで結合する。
以下のように、文字型と数値をそのまま結合した場合、文字列扱いで結合してしまう。
intの場合などはプリミティブなので、nullは入れることができません。
そのため、特に型変換などをしなくてもまぁなんとかなってしまったりします(;^ω^)。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/565426/521e496f-ec47-7ffc-6c46-5a8e0cfb5f35.png)

## ただし参照型(Integer)などでnullを入れた場合はどうなってしまうのか?
Integerの場合は、数値型ですからもちろん**そのまま結合します**。
つまり、nullという文字列を結合します(´・ω・)。

元記事を表示

ModiTect Maven Plugin で非モジュールなライブラリをオレオレモジュールにしてみる

[Java Platform Module System](https://en.wikipedia.org/wiki/Java_Platform_Module_System) は Java SE 9 以降で導入された仕様であり、いわゆるクラスパス地獄だとか JAR 地獄といわれる問題を回避するために提案されました。

モジュールの定義情報は `module-info.class` (ソースとしては `module-info.java` ) に格納されています:

“`java:module-info.java
module モジュール名 {
requires 依存するモジュール;
exports 公開するパッケージ;
}
“`

モジュールシステムにより、依存関係が明確になったり、呼び出されたくないクラスを非公開にできたりします。実行時のオプションも変化しており、モジュールの場所を示す `–module-path` と、実行するモジュール・クラスを示す `–module` を指定します:

“`powershell
java –module-path “<

元記事を表示

Javaのメソッドで返り値を複数にする方法

Javaのメソッドは(2022年12月現在)一つの返り値しか返せませんが、以下の方法で擬似的に複数の値を返すことができます(他の方法もありますが一番シンプルでバグが発生する可能性が低いもののみ紹介します)。
## 型が同じ場合
返り値がすべて文字列など同じ型の場合は配列を使うといいでしょう。
“`java
public String[] retunMultipleStrings(String str) {
return str.split(“,”);
}
“`

## 様々な型の返り値を返したい場合
Javaはバージョン14から`record`というものが追加され、メソッドがなく複数のデータをまとめて保持したいだけの場合は`class`よりもシンプルに書けます。

“`java:MultipleValues.java
public record MultipleValues(String str, double probability, int point) {}
“`
使い方は以下の様になります。
“`java:Main.java
public static

元記事を表示

[Java]FTPs通信のアイドルタイムアウト回避

## 起きた問題

`spring-integration` のFTPSアダプター(`MessageSource` および `OutboundGateway`)を利用したFTPs通信を行うバッチ処理で、巨大なファイルの送受信を行うと **送受信完了後に例外が発生** して異常終了した。

## 直接原因

FTPsの **制御チャネルのアイドル状態が長時間化** し、通信経路中にある **ロードバランサのアイドルタイムアウトに抵触** したため。

## 根本原因

`DefaultFtpsSessionFactory#createClientInstance()` で生成される `FTPSClient` のインスタンスには、*controlKeepAliveTimeout* (※)が設定されていないため。

※ controlKeepAliveTimeout を設定すると、一定間隔で制御チャネルから無害なコマンド(NOOP)を送信するようになり、通信経路中にあるネットワーク機器のアイドルタイマーをリセットする効果がある

## 回避方法

`DefaultFtpsSessionFac

元記事を表示

Spring Bootプロジェクトの開始(VSCode)

## はじめに
今回はVSCodeでのSpring Bootプロジェクトの開始方法を書いていきます。
Macで作成しています。

最初に、表示からコマンドパレッドをクリック
![スクリーンショット 2022-12-26 16.37.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2613586/7523af8d-efb3-d3c8-8095-13b14dea1b59.png)

そうすると以下のような表示になります。
Spring Bootのプロジェクトには主に、「Gradle」と「Maven」がありますが、今回は「Gradle」で作成していきます。
![スクリーンショット 2022-12-26 16.37.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2613586/9d79972a-4e16-18e0-ce46-097376af79df.png)

次は、Spring Bootのバージョンを指定します。

元記事を表示

[Java] SerialVerisonIDの自動生成

たぶん適当でもいいんだけど、せっかく機能があるので紹介。
環境はIntelliJ IDEA。Kotlinでも使えた。

# 方法
`Ctrl + Shift + A`でアクションの検索画面を開き、`Serial`と入力。
`”JVM言語: ‘SerialVersionID’のないクラス”(Serializable class without ‘serialVersionUID’)`とあったらそれを選ぶ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883146/59f58a41-810a-a258-0ada-d4998d4b3937.png)

選択肢右側のトグルが`ON`になっていることを確認。なってなかったら再度クリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883146/a5c0efd6-d9f0-8bec-01c7-cb82fd5c1ef8.png)

`Seria

元記事を表示

Javaのラムダ式の例外ハンドリング(検査例外)に悩んだら。

### 悩んだこと

“`java
hogeSupplier.get(() -> {
try {
fugafuga();
} catch(Exception e) {
// Runtimeで投げる?何もしない?
// 【問題】考えたり定義するのがメンドクサーーーーーーーイ
}
});
“`

### 原因

* 原因はラムダ式ではなく、Java8 時点の `Supplier` が `throws Exception` になっていないから。
* 😥 <ラムダ式は検査例外扱えない~! * とか勘違いしていた。 * あくまでもFunctionalInterfaceのシグニチャの問題だった。 ### 解決した方法 * ならば `throws Exception` な `Supplier` を作ればいいじゃないのよ。 ```java:ThrowableSupplier.java @FunctionalInterface public inter

元記事を表示

職務経歴書

# 直近のプロジェクト
## 某省庁業務支援サービス開発(改修)プロジェクト (R.4.3/1 ~ 現在)
### 使用技術
Java(Spring)、Typescript、SQL(RDBMSはOracle)、ListCreator(富士通製ミドルウェア、帳票出力で用いる)、doma
### 役割
主に帳票出力機能のbackend(Java、SQL)を担当。
現時点では、Typescriptを用いたフロントエンドの開発にも従事している。
### 取り組んだこと
既存システムのJavaソースを流用することは可能であったが、フレームワークのリニューアルや帳票出力用の部品が既存システムと異なっていたので、先行して帳票出力機能を作成していた担当者との関係構築に注力し、問い合わせができる環境づくりに注力した。
また、ListCreatorを使用するのが初めてであったため、ゴールである帳票出力から逆算し、現在の自身に足りていない知識を紙に書き出し、その点について前述の担当者に教えを乞うた。成果として、3000人が使用する(試算)機能を開発することができた。
また、総合試験仕様書作成工程においては、

元記事を表示

JUnit5のParameterizedTestで網羅的なテストをする

# はじめに

JUnit4では、テストクラス単位でパラメータ化テストできましたが、JUnit5から、テストメソッド単位でできるようになりました。パラメタの提供方法も柔軟になり、パラメタのとりうるパターンを網羅するテストコードが書きやすくなっています。(JUnit4とJUnit5との比較は[こちら](https://parasoft.techmatrix.jp/how-to-expedite-the-creation-of-junit-parameterized-tests)の記事が参考になります。)
この記事では、JUnit5での異常値、境界値などの網羅性テストを書くためのサンプルコードを紹介していきます。

# パラメタがひとつのとき

## EnumSource

ステータスをEnumで実装している場合、EnumSourceをつかえば、Enumの全要素をテストすることができます。

“`java
public enum UserStatus {
ACTIVE,
PENDING,
INACTIVE;
}

public class UserService {

元記事を表示

Integer.decode を検証

“`java
public static void main(String[] args) {
Integer i = Integer.decode(“1”); //Decimal
System.out.println(i);
i = Integer.decode(“0xA”); //Hex
System.out.println(i);
i = Integer.decode(“#A”); //Hex
System.out.println(i);
i = Integer.decode(“011”); //Octal
System.out.println(i);
}
“`
“`
1
10
10
9
“`

元記事を表示

JavaでPDF内のテキストを検索、ハイライト表示、置換する方法

時には、特定のテキストを取得するために、PDFファイルを検索する必要がありますが、多くの同じ検索結果があるかもしれません。より便利にその位置を確認するために、背景色で検索されたテキストを強調する必要があります。無料の[Free Spire.PDF for Java](https://jp.e-iceblue.com/introduce/free-spire-pdf-for-java.html)はまた、PDFファイル内で一つずつ新しいテキストで検索されたテキストを交換するためにサポートしています。この資料では、**PDFファイル内のテキストを検索し、強調表示し、置換する方法**を示しています。
– **[PDFファイルのすべてのページでテキストを検索してハイライト表示する](#pdfファイルのすべてのページでテキストを検索してハイライト表示する)**
– **[新しいテキストでPDF文書内のテキストを検索し、置換する](#新しいテキストでpdf文書内のテキストを検索し置換する)**
## 【依存関係の追加】
この方法は、無料のFree Spire.PDF for Javaが必要ですので、

元記事を表示

某ゲームでわかる!オブジェクト指向(ざっくり分かりたい人向け)

その昔、文系からシステム会社に就職したものの、基本情報試験合格という課題を課せられました。
午後の基本情報試験は選択問題があり、Javaで戦うことを決意し猛勉強を始めました。

ところが、全くabstractやclassの概念が頭に入らず、頭の良い人に泣きつくことにしました。

**※大まかな枠を掴むレベルなので詳しく知りたい方は別の記事をご覧ください**

## オブジェクト指向が分からない・・・
対策本とか読んでいると下記の3原則が出てきます。
・継承
・カプセル化
・ポリモーフィズム
これらを理解することでオブジェクト指向の理解度が大きく変わります。(個人的感想)

## Fateに置き換えて考えよう
私は特別Fateが好きとかではないのですが、ちょうどそのスマホゲームをやっていたので題材にしてくれました。
設計によって作り方は変わってきますのであくまで一例として認識いただければと思います。

## オブジェクト
英霊たちがオブジェクトにあたります。器を求めて攻撃したり、呪いをかけられたり、必殺技(メソッド)を使ったりします。
このクラスがわちゃわちゃすることで物語(システム

元記事を表示

Map・ハッシュ操作 【Java】【Kotlin】【Ruby】

# 概要
自主学習のアウトプットです。

現場でJavaのMapを操作していた時に、自分の書いたコードがまわりくどいやり方かなと思って調べたらいい方法を見つけたので備忘録です。(実際は周辺のコードと合わなくて使えませんでしたが。。)

学習中のKotlinとRubyで同じことするには?と調べたものも共有します。

# まわりくどいやり方
コードを書いてふと思いました。

「なんやこれ、まわりくど」

思わず声に出てしまったコードがこちら

“`Java:Java
Map pokemons = new HashMap();
pokemons.put(“Pikachu”, “ピカチュウ”);
pokemons.put(“Lapras”, “ラプラス”);
pokemons.put(“Snorlax”, “カビゴン”);
pokemons.put(“Venusaur”, “フシギバナ”);
pokemons.put(“Charizard”, “リザードン”);
pokemons.put(“Blastoise”, “カメックス”

元記事を表示

現場で活きる!Java Gold SE11

最近、わさびと山椒にはまっているアラサーです:metal_tone1:
今回はSE歴3年目の私が **Java Gold** を取得した経緯と現場で活かせた点について伝えたいと思います。

資格取得は、SE経験年数が浅い人ほど大切だと思っています。
その理由は主に3つ!
:apple:自身が理解できてない範囲を芋づる式に具体的に把握できるから
:apple:実践に必要な知識を体系的に取得できるから
:apple:現場の生産性がぐっと上がるから

これから**Java Gold**の取得を考えている人は、
既にJava Silver を取得しているため、製造の中で進行の妨げになるような困難にぶつかることは少ないと思います。

ただ、バグの少ないシステムを製造するにあたり、**Java Gold**の内容を取得しておくことは
実務で頻繁に利用する機能や技術もあれば、フレームワーク等が代わりにやってくれるために直接利用することがない機能、さらにそれを支える基盤的技術に至るまでの多様な知識を習得することになります。

全てを理解してこその製造であり、
バグのでないプログラムになると思います

元記事を表示

JavaエンジニアがRubyを使ってみて思ったこと

# 前説
– 株式会社SUPER STUDIOの2022年Adventarの記事です。
– 7年ぐらいJava(Spring)を使っていたエンジニアが初めてRuby(Rails)を使ってみた所感のまとめです。
– JavaもRubyもどちらもまだまだ未熟者が書いた記事です。
– Javaの最新のバージョンもキャッチアップできてないのでちょっと知識が古いです。
– Javaの方がいいとか、Rubyの方がいいとか、対立煽りを助長するつもりはありません。
– 自分と同じでJavaばかり使ってきて、Rubyとかどんな感じなんかなあって思ってる人に読んでもらえたら幸いです。

# Ruby(Rails)を使い始めて思ったことまとめ
– 型宣言が必要ない
– メソッドの引数にデフォルト値を設定できる
– メソッドの戻り値の型の定義が必要ない
– 最終行の結果がreturnされる
– 後置ifが使える
– if文の戻り値が設定できる
– ActiveRecordが便利

1個ずつ見ていきます。

## 型宣言が必要ない
これは解説不要かと思いますが、Rubyは動的型付け言語ですので、Javaのような

元記事を表示

【Java + localstack】DynamoDBトランザクションの実装(AWS SDK 1)

# Amazon DynamoDB Transactions
公式サイトのsampleソースを整理してみた。
[DynamoDB トランザクションの例](https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/transaction-example.html)
いつもなら公式Githubへのリンクとか記載あるのですが、これ検索してもコードが見当たらなかったのがキッカケです。。

# 準備
localstackを使ってローカル環境で動作確認します。
localstack環境については過去記事を参考にしてください。
[LocalStack導入の準備](https://qiita.com/tmmii/items/49991365c247e612d178#localstack%E5%B0%8E%E5%85%A5%E3%81%AE%E6%BA%96%E5%82%99)
dynamodb-adminを利用してローカル環境でもDynamoDBにアクセスできるようにします。ブラウザからGUI操作が可能になるので便利で

元記事を表示

Springの@Autowiredの方式

# @Autowiredとは

SpringのDIコンテナから、インスタンスを注入するための指定のこと。
まずDIコンテナとSpringフレームワークの仕組みを知る必要がある。

## DIコンテナとは

アプリ起動時にSpringフレームワークが特定のオブジェクトをインスタンス化しており、そのインスタンスを保管してある場所。
次のアノテーションを付けたクラスがインスタンス化の対象。

– @Component
– @Controller
– @Service
– @Repository
– @RestController
– @ControllAdvice
– ManagedBean
– @Named

これらのアノテーションがついたクラスはコードのなかでnew()でインスタンス化することはなく、DIの仕組みによって呼び出し元クラスへ注入される。
それが@Autowiredアノテーションを目印にして行われる。

## 注入する方法

指定の場所により3種類の方法がある。

|種類|場所|備考|
|:-|:-|:-|
|コンストラクタインジェクション|コンストラ

元記事を表示

アルゴリズム クイックソート(昇順)






説明

配列の基準値(ピボット)より大きいものと小さいものとのグループに分け、それぞれの中でも新しい基準値を使って同様の作業を行うという手順を再帰的に繰り返し、並び替える。

“`java
public class Main {
public static void quickSort(int[]a,int left,int right) {

if (left>=right) {
return;
}

int p = a[(left+right)/2];
int l = left;
int r = right;
int tmp;

while(l<=r) { while(a[l] < p) { l++; } while(a[r] >

元記事を表示

OTHERカテゴリの最新記事