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

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

流れる美:ReactFlowを使ったジョブ実行グラフの表示

# はじめに
今回は、React Flowを使用してバックエンドシステムのジョブの実行状態を表示します。
![flow.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3554924/53ee5f44-bd17-782a-ee55-ef26ef51bd8c.png)

# ReactFlow
React Flowは、ノードベースのアプリケーションを構築するためのライブラリです。これには、シンプルな静的なダイアグラムからデータの視覚化、複雑なビジュアルエディタまで、さまざまなものが含まれます。

# Job
銀行や保険のITシステムでは、バッチジョブの実行が一般的です。ジョブ同士には、実行順序や依存関係があります。このような複雑な関連性を表現するために、DAG(有向非巡回グラフ)を使用できます。

# DAG
DAG(Directed Acyclic Graph)は、ノードとエッジから構成されるデータ構造です。DAGは、ノードが順方向に結ばれた非循環グラフであり、ノード間には一方向の関係があります。これによ

元記事を表示

エンジニアに転職して3年目の今の気持ち

## はじめに
どうもこんちは!
現在フリーランスとして開発系のエンジニアをやらせてもらってます。

久しぶりに記事でも書くかぁ~と思いましたが
まぁ技術的な記事を書く意欲はもちろん起こらないので、
日常というか今までの振り返りを書いていこうと思います。

エンジニアに転職して、2年半くらいになります。
今までの経歴や、どんな気持ちで仕事をしていたかなどを徒然なるままに書いていきます。

暇な人は見てやってください~

## 1年目
当時27歳になるタイミングで転職しました。
前職はコールセンターや通信系の営業をしており、IT系というかパソコンは苦手でしたw

転職のきっかけは親しい友人がエンジニアに転職して1年くらいたって、
まぁなんか良い感じで仕事していたんで、転職の1つの候補くらいでエンジニアを考えてました。

そんで未経験でもOKな会社に応募して、面接が通りました。
当時はよっしゃー!合格したぞー!とか思ってましたが、今思えば誰でも採用しているような感じでしたw

最初の1カ月は座学で勉強して、毎週テストがありました。
最初の2週間後のテストで不合格の人は不採用で去っていきまし

元記事を表示

[Google Docs API(V1)] Javaでドキュメントの情報を取得する

Google Docs API V1(Java)を使用して、
Googleドキュメントの情報を取得する方法
についてご紹介します。

:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Google Docs API(V1)] JavaでDocs APIを使う](https://qiita.com/doran/items/a612deb0709cfd4656a4)
を参照ください。
:::

|No|||目次|
|—|—|—|—|
|1|||[ドキュメントを取得](#1-ドキュメントを取得)|
||1||[スコープ](#11-スコープ)|
||2||[実行](#12-実行)|
||3||[レスポンスの内容](#13-レスポンスの内容)|

## 1. ドキュメントを取得
ドキュメントの情報を取得します。

### 1.1. スコープ
このAPIを実行するには、以下のいずれかのスコープを指定してください。
“`
DocsScopes.DOCUMENTS
DocsScopes.DOCUMENTS_READONLY
DocsS

元記事を表示

Spring + Authlete で OAuth / API サーバーを超速で構築する

# 概要
[Spring Boot](https://spring.io/projects/spring-boot) + [Authlete](https://www.authlete.com) を利用して、OAuth 2.0 / API サーバーを超速で構築する方法を解説します。

# アーキテクチャ

![](https://storage.googleapis.com/zenn-user-upload/865ecde5ad81-20240422.png)

# 手順

## 1. Authlete にサインアップ

[サインアップページ](https://so.authlete.com/accounts/signup)から、Authlete にサインアップします。

サインアップが成功すると、サービスオーナーコンソールに自動ログインされます。

## 2. サービス作成&設定

サービ

元記事を表示

単体テストでstatic変数いじったのに初期化しないのは時限爆弾を仕込むようなものだよ、というお話

# まず言いたいこと

単体テストの中で静的(`static`)なフィールド変数に変更を加える必要がある場合は、そのクラスでのテスト終了時に初期化しましょう。

# はじめに

本記事のタイトルは以下記事をオマージュしてます。読み物としても面白くてオススメなのでぜひ読んでみてください。

https://qiita.com/moromi25/items/61a8ae8750bec3078c10

で、本記事で伝えたいのは、`Mockito.mockStatic` と同様に **静的(`static`)なフィールド変数も時限爆弾化する** ということです。

※ 正しくは `static` なフィールドが時限爆弾化するんだから `mockStatic` も同様に…のロジックだけど上記の記事ありきの本記事だから許せサスケ(デコトン)

開発者のローカル環境やテストを差分実行しているCI上でテストが通ったとしても、日次のテスト全件実行で落ちることがあります(実行順とかがうまくかみ合えば落ちないんだけどね)

`static` なんだから当たり前でしょ、はそうなのですが意外とわかってない

元記事を表示

[Google Docs API(V1)] JavaでDocs APIを使う

Googleが提供しているGoogle Docs APIをJavaで使ってみました。

***Google Docs APIとは***
Googleが提供しているAPIで、Googleドキュメントに関する操作ができます。

Google Docs APIの利用料金は無料です。
ただし下記の利用制限があります。
|リクエスト|単位|1分単位の上限|
|—|—|—|
|読み取りリクエスト|プロジェクト単位|3000回/分|
||ユーザー単位|600回/分|
|書き込みリクエスト|プロジェクト単位|600回/分|
||ユーザー単位|60回/分|

詳細は[公式ドキュメント](https://developers.google.com/docs/api/limits?hl=ja)を参照ください。

|No|||目次|
|—|—|—|—|
|1|||[Google Docs APIを使用するための準備](#1-google-docs-apiを使用するための準備)|
||1||[プロジェクトの作成](#11-プロジェクトの作成)|
||2||[Google Docs A

元記事を表示

EclipseでSpring スターター・プロジェクトが出たり出なかったりする

# 1.はじめに
EclipseでSpring Bootアプリケーションを作成しようとした際に新規プロジェクトの
ウィザードがEclipseのバージョンやJDKの違い?によって出たり出なかったりしたので
調査結果を備忘録として結果を残していきます。

# 先に結論(追記)
どうして新規プロジェクトのウィザードが出たり出なかったりするの?
→各Eclipseが要求しているJDKの最低バージョンをこちらが守らなかったから

完全に自業自得でした。

# 2.実行環境、使用したソフト・JDKのバージョン

### 実行環境
Windows11
java version “1.8.0_291”

### 使用ソフト・JDK
Eclipse-2020-12-20201222
Eclipse-2021-12-20220106
Eclipse-2022-12-20230212
いずれもPleiades All in One のStandard Editionです

JDKは11及び17を使用して確認した
(Eclipse2022のFull Editionに付属していたものを使用しており環境変数には設

元記事を表示

Spring BootでWebアプリケーションを作ろう!

Spring Boot、PostgreSQLを使ってWebアプリケーションの作り方を解説しています

~ 新着情報一覧機能編~ 

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3680113/45c9454c-9cf0-cfaf-4ae7-ecf07c06bab4.png)

〜新着情報登録機能編〜

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3680113/21dd810c-462c-f13c-b425-68e8923cc4a1.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3680113/1a18c10b-1af4-9ca7-d3e6-9425c593e2

元記事を表示

Todoアプリ(Java)

chatGPTにJavaで作らせたTodoアプリです。以下の3つのソースファイルを作ります。

~~~java:TodoItem.java
public class TodoItem {
private String task;
private boolean completed;

public TodoItem(String task) {
this.task = task;
this.completed = false;
}

public void complete() {
this.completed = true;
}

public boolean isCompleted() {
return completed;
}

@Override
public String toString() {
return (completed ? “[完了] ” : “[未完了] “) + task;
}
}
~~~

元記事を表示

【Maven】プロジェクト作成からビルドまで

## はじめに
Mavenプロジェクトの作成からビルドまでの概要をサクッと知りたい方向けの記事です。
初めてMavenに触れる方への参考になれば幸いです。

Mavenは、Javaでソフトウェア開発を行うためのプロジェクト管理ツールです。
プロジェクトをビルドしたり、Javadocやプロジェクトサイトを生成することができます。
ビルド手順を書かないため、シンプルで高度な自動化が実現できます。

## 0.実行環境
vscode
Java 17
apache-maven-3.9.6

## 1.プロジェクト構成
以下のような、Maven標準のフォルダ構造を作成します。
“`:maven-sample-project
│ pom.xml

└─src
├─main
│ ├─java
│ └─resources
└─test
├─java
└─resources
“`

## 2.pom.xml(構成ファイル)の作成
pom.xmlは、プロジェクトの設定を記述したファイルです。
ビルド内容や、依存するライブラリの情報

元記事を表示

Interfaceを使用してSwitch文の保守性を上げる

interfaceを使用して、Switch文を多用したコードの可読性を上げる方法を記載します。

### サンプルコード

ワンちゃんの種類に応じて、可愛さ、攻撃力、知名度を返す関数を考えます。
ワンちゃんの種類は`DogType`のEnumに定義し、`Dog`クラスの各関数がそれぞれ値を返します。

“`DogType.java
package org.example.interfaceExample;

public enum DogType {
kyabaria,
tiwawa,
doberman
}
“`

“`Dog.java

package org.example.interfaceExample;

public class Dog {
public int cutePoint(DogType dogType) {
switch (dogType) {
case tiwawa -> {
return 5;
}
ca

元記事を表示

UT カバレッジ率100%にする

## UTとは
1つのプログラムが期待通りに確認する作業のことです。
## カバレッジ率とは
プログラムの処理の網羅率を言っています。すべての処理をカバーしている場合は100%になります。
## カバレッジ率を100%にするには 条件分岐をすべてカバーする
if文の条件式に対して真のケースと偽のケースを用意する必要があります。
下記プログラムの①の条件式を全て満たすには、resultが100のケース(真)と100以外のケース(偽)が必要です。
②の条件式を全て満たすには、rseultが300または200のケース(真)と300と200以外のケース(偽)が必要です。
③には上記以外のケースが必要です。

“`java
int result = 100;
①if (result == 100) {
特定の処理を実行;
} ②else if(result == 300 || result ==200){
特定の処理を実行;
}③else {
特定の処理を実行;
}
“`

条件式を満たすことができない場合があります。それは条件式が100と100以外の場合で以外がelseではなく、else

元記事を表示

COBOL→Javaマイグレーションへの布石

## COBOLをJavaに変換する
COBOLからJavaへのプログラム変換を具体例を挙げながら
変換して行こうと思います。

今回は秀和システムの「開発で役立つCOBOLプログラミング入門」の確認問題のプログラムをカスタマイズしたものを、Javaに変換するとどうなるか見ていこうと思います。

まずはCOBOLプログラムの方、実際に本に掲載されているプログラムを一部カスタマイズして変更しています。
“`Main03.cbl

IDENTIFICATION DIVISION.
PROGRAM-ID. Main03.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 カウンタ PIC 9(2).
01 年齢 PIC 9(2).
PROCEDURE DIVISION.
対象抽出

元記事を表示

Scannerを用いた標準入力まとめ

個人的な備忘録も含めてScannerを用いた様々な標準入力をまとめてみた。

# Scaneerクラスの基本的な使い方
1.「java.util.scanner」をimportする
2. Scannerクラスのインスタンスを作成(引数にはSystem.inを指定)

## 主な入力メソッド
|メソッド|内容|
|——-|—-|
|next()|空白までの文字列を取得|
|nextLine()|1行分の文字列を取得|
|nextInt()|入力した文字を整数型に変換。※整数以外を入力するとエラー|

### 1. 基本的な使用
“`Java
import java.util.Scanner;

public class Main{
public static void main(String[] args){
//Scannerクラスのインスタンス作成
Scanner scanner = new Scanner(System.in);

//入力内容を取得
String text = scanner.next();

//入力

元記事を表示

Spring Bootを使ってWebアプリケーションを作成する方法(開発環境準備編)

# はじめに
 今回は、Spring Bootを使ってWebアプリケーションを作成する際の開発環境の準備について説明します。

# 開発環境の準備
### Spring Initializr
 Spring Initializrを使って、プロジェクトの雛形を作成します。これはSpring Bootでプロジェクトを始める際、ビルドツールや開発言語、依存性の設定などをGUIで設定できるサービスです。作成されたフォルダをIDEで開けばすぐに開発を始められるので便利ですね。

![スクリーンショット (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774406/c5cef2c8-a89a-22cc-5df4-0d676321a516.png)

https://start.spring.io/

 ビルドツールはMaven、Javaは最新の22を使用します。Javaのインストールについては割愛します。
 また、今回は簡易的な家計簿アプリを作成します。

 依存性は右上のDependenciesで設定しま

元記事を表示

[社内LT用]値オブジェクトに関して例を用いながら説明

良いコードに関しての本を最近読んでいました。その中から普段の仕事に生かしていきたいなと思った内容を例を使用しながらまとめます。

#### 使用するサンプル

良くあるお金計算のロジックを例にして、お話しします。

“`Main.java
package org.example;

import java.util.List;

public class Main {
public static void main(String[] args) {
// 注文一覧 (値段, 量)
List> orders = List.of(
List.of(500,5),
List.of(200,6),
List.of(100,4)
);
// 合計金額計算
int sum = 0;
for (List order : orders) {

元記事を表示

[Google Photos Library API] JavaでGoogleフォトのアルバムにメディアアイテム(写真や動画)を追加する

Google Photos Library API(Java)を使用して、
Googleフォトのアルバムにメディアアイテム(写真や動画)を追加する方法
についてご紹介します。

アルバムに追加するメディアアイテムは、Photos Library APIで
アップロードしたメディアアイテムのみになります。

メディアアイテムの追加方法は
[⧉[Google Photos Library API] JavaでGoogleフォトのメディアアイテム(写真や動画)を追加・更新する](https://qiita.com/doran/items/fd6ea924f8ce8071ce8c)
を参照ください。

:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Google Photos Library API(V1)] JavaでPhotos Library APIを使う](https://qiita.com/doran/items/8695e6007765ab5b382c)
を参照ください。
:::

|No||目次|
|—|—|—|
|

元記事を表示

Webアプリの開発環境からデータベースに接続できるようにする

# 前書き

https://qiita.com/gengen0719/items/bcdda4b8571f5e687051

この記事はこちらの記事の続き。
せっかくなのでデータベースを利用できるようにする。

# データベースの準備

## Dockerデスクトップのインストール

Docker Desktop for Windowsを押してインストーラーをダウンロードしてインストール。

https://docs.docker.com/desktop/install/windows-install/

## MySQLのDocker imageを取得する
“`
docker pull mysql
“`

## Docker Imageの起動
“`
docker run –name testdb -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=testdb -P –expose=3306 -p 3306:3306 -d mysql:latest
“`
– データベースの名前は `testdb`
– データベースのrootユーザ

元記事を表示

[Google Photos Library API] JavaでGoogleフォトのアルバムにエンリッチメントを追加する

Google Photos Library APIを使用して、
Googleフォトのアルバムにエンリッチメントを追加する方法
についてご紹介します。

**Googleフォトのエンリッチメントとは**
アルバムにいろいろな情報を紐づけることでアルバムのグルーピングが行えます。

Googleフォトのエンリッチメントは、テキスト、位置情報、地図の 3種類に対応しています。
|エンリッチメント|内容|UIの場所|
|—|—|—|
|テキスト|アルバムにアノテーションを付けるために挿入できる書式なしテキストの文字列||
|位置情報|場所にアノテーションを付けるために挿入できる場所の名前|DB操作を行う機能で「Bad value for type long」が出た際の原因と解決策

# 事象
Webアプリケーションのある機能で例外が発生し、ログを確認すると「**Bad value for type long**」と出力されている。
この機能はDB操作を伴う機能であるため、発行したSQLをデバッグしてみたところ正常に動作し、SQL自体は間違ってなさそうなことが分かっている。
# 解決策
DBにTimestampで定義されているカラムをUNIX秒(Long型)で取得したい場合
SQL発行後にまずは`java.sql.ResultSet.getTimestamp()`で値を取得する。
その後、`java.sql.Timestamp.getTime()`を呼び出して、java.sql.Timestamp型からLong型のUNIX秒に変換することができる。
“`java:修正後
Long lUnixTime = resultSet.getTimestamp(“DATETIME”).getTime();
“`
# 原因
アプリケーション内でDBへのSELECT文発行結果を取得する部分のコードに問題があった。
DB内にTimestamp型で格納されているカラムに対して`r

元記事を表示

OTHERカテゴリの最新記事