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

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

静的コード分析ツールSonarQubeってこんなに簡単に使えるようになってたのか、の話

# はじめに

数年ぶりにSonarQubeを触ってみたくなり、試したところかなり簡単だったので、その感覚を残したく記事化してみました。

# SonarQubeとは

SonarSourceのプロダクトの一つであり、コード品質、コードセキュリティのチェックを実施するツールです。

https://www.sonarqube.org/

さまざまな使い方ができるのだと思いますが、簡単に使うためにはJenkinsなどのツールと同じようにSonarQube用のサーバーとして1プロセス立ち上げ、その中でチェックと、チェック結果を確認・参照することができます。

# 今回やりたいこと

MavenでビルドしているJavaプロジェクトに対して、ソースコードの品質が不安なので第三者チェックしてほしいと思うことがあると思います。その際に頼めるレビューアーがいないので最低限確認するためにツールにレビューをお任せしたい、ということがやりたいことです。
JenkinsのようなCI環境も手元にはありませんので、無しでいきます。

# 環境構成

ざっくりですが、以下の環境でやりました。

![image.p

元記事を表示

Spring boot_APIにてパラメータ名と変数名が異なる場合の実装方針

## 環境
– フレームワーク:Spring Boot 2.7.1
– Java 17

## 実装APIの種類
– HTTPメソッド=GET
– HTTPメソッド=POST(※ただし、Content-Typeが「application/x-www-form-urlencoded」であるもの

## やりたかったこと
実装上の変数名とAPIのIF上定義されているパラメータ名(リクエスト、レスポンス)を異なる名前にしたい。

本実装では、以下のように命名規則を違うものにしたい。
実装上の変数名:**キャメルケース**
APIのIF上定義されているパラメータ名:**スネークケース**

|種類|実装上の変数名 |APIのIFで定義されているパラメータ名 |
|———–|————|————|
| リクエストパラメータ | testId | test_id|
| レスポンスパラメータ | testName | test_name|

## 実装方法
### リクエストパラメータ
以下記事より、

元記事を表示

[Spring]ObjectProviderをコンストラクタインジェクションする

## ObjectProvider
`ObjectFactory`の拡張バリアントで、`ObjectProvider`を宣言することで、
`getIfAvailable`や`getIfUnique`を含むいくつかの追加のアクセスバリアントを提供できる。

cf. :
[ObjectProvider (Spring Framework API) – Javadoc](https://spring.pleiades.io/spring-framework/docs/current/javadoc-api/org/springframework/beans/factory/ObjectProvider.html)
[Using Spring’s ObjectProvider](http://rahulsh1.github.io/tech/2018/12/20/Using-Spring-ObjectProvider)

## ObjectFactory
`ObjectFactory`として宣言することで、`getObject()`呼び出しが必要になるたびに、
イン

元記事を表示

Java→Kotlin化メモ

# 起動時エラー

> kotlin_module is a duplicate but no duplicate handling strategy has been set. Please refer to https://docs.gradle.org/7.4/dsl/org.gradle.api.tasks.Copy.html#org.gradle.api.tasks.Copy:duplicatesStrategy for details.

## 対応
“`build.gradle.kts
jar {
duplicatesStrategy = DuplicatesStrategy.INCLUDE
}
“`

# gradle build error
> xecution failed for task ‘:compileJava’.
> java.lang.IllegalAccessError: class lombok.javac.apt.LombokProcessor (in unnamed module @0xa5488cf) cannot access c

元記事を表示

役立つlombok入門(java)

駆け出しITエンジニアあ~さんです。
lombokの機能に関して疑問持つ方が多いという認識から、サンプルを以下に掲載いたします。

論より証拠!!
<題材のソースコード掲載>
“`java:AccountBean.java
package com.lombok.sample.model;

import lombok.AllArgsConstructor;
import lombok.Data;

/** アカウントモデル */
@Data
@AllArgsConstructor
public class AccountBean {

/** ID */
private String id;

/** 名前 */
private String name;
}
“`

@Data → getter&setterを自動生成
@AllArgsConstructor → インスタンスに関するコンストラクター生成
※詳しくはググってね☆

<以上のソースコードがコンパイル時に自動生成される内容>
“`java:AccountBean.class
package com.lombok

元記事を表示

eclipseで作ったSpringBootアプリをAWSを使って公開する#1

# eclipseからGithubにpushする
かなり手間取ったのでメモしておく。
Githubでトークン取得、リポジトリ作成ののち、EclipseでプロジェクトをGitにより連携する。

## 1. Githubで個人アクセストークンによる認証準備
### 1.1 アクセストークン作成
「Setting」→「Developer settings」→「Personal access tokens」と進んで「Generate new token」をクリックします。(https://github.com/settings/tokens)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2781422/957e2141-fb25-e89d-9c3c-f7b6e47f8218.png)

ここで出てくるトークンをコピーして保存しておく。ページ遷移すると消えてしまうので注意。

### 1.2 リポジトリの作成
「Repositories」→「New」→名前を入力して「Create reposi

元記事を表示

Javaの学習 ~varによる型推論~

### varとは
変数宣言時のデータ型を推論する(ローカル変数の型推論)場合に、データ型の代わりにvarを使って変数を宣言します。
※型推論はコンパイル時に行われる。
※ローカル変数の宣言にしか使えない。

#### 推論できるパターン
例えば、下記の変数aには整数リテラルの10を代入しているので、データ型はint型になります。
“`java
var a = 10;
“`

また、以下のようにメソッドの戻り値を受け取るのにも使うことができる。(メソッドの定義から型が判別できる為)
“`java
var b = sample();
“`
###### ダイヤモンド演算子
ダイヤモンド演算子とは、下記コードに使用されている「<>」のこと。
“`java
ArrayList c = new ArrayList();
//右辺の<>の中身(String)を省略することができる。
ArrayList c = new ArrayList<>();
“`
型推論において、下記のようなコードを記述したとすると、
“`java
var d

元記事を表示

[Jython]SikuliXによるRPA開発 ~はじめの一歩~

[
![600×200.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2513692/17ca4477-a1cf-537b-871f-907fb01cb19e.png)](http://sikulix.com/)

GitHubで公開しているSikuliXのサンプルプログラムに関する解説です。

https://github.com/singularity-effect/TextHelper

これはRPAの基本とも言える、ユーザーの代わりに画面を識別し、マウスやキーボードを操作する機能を使っているデモプログラムです。この開発中にSikuliXの仕様について気付いた点を投稿していきたいと思います。

## Finderクラスの基本

SikuliXを使う最大のメリットはこの[`Finder`][Finder]ではないでしょうか? かなり手軽に画像のマッチング操作を利用できます。

[Finder]: https://sikulix-2014.readthedocs.io/en/latest/finder

元記事を表示

Javaの学習 ~識別子~

### 識別子とは
変数やメソッド、クラスなどの名前のことを識別子と呼びます。
識別子の命名規則は、以下の3つです。

①予約語を識別子として使うことはできない
②使える記号はアンダースコア「_」と通貨記号(主に「$」)のみ
③数字から始めてはいけない

##### 予約語
予約語(キーワードとも呼ばれる)とは、プログラムの文を表現するためにあらかじめ用途が決められている単語のことを言います。
例えば、データ型を表現する「int」や「char」、繰返し等の構文に使用する「for」や「if」は予約後にあたり、識別子として命名することができません。
ただし、予約語単体ではなく、「intA」のように別の文字と組み合わせたりすることで使用可能にはなりますが、推奨はされません。

元記事を表示

マージしたチャートデータからテクニカル指標を計算する(DMI編)

# はじめに

前記事
1. [auカブコム証券のkabuステーションREST APIをcurlで叩く](https://qiita.com/hiuchida/items/fcdd3d6ff921b386a37e)
2. [auカブコム証券のkabuステーションREST APIをjava(generated by the swagger code generator)で叩く](https://qiita.com/hiuchida/items/73b7fc846d4c9501ef2f)
3. [auカブコム証券のkabuステーションREST APIの残高照会をcurlとjavaで叩く](https://qiita.com/hiuchida/items/9eb5336755a3d1b1a3df)
4. [auカブコム証券のkabuステーションREST APIの残高照会から先物OPのdeltaを計算する](https://qiita.com/hiuchida/items/6e0d8d5114192bec1632)
5. [auカブコム証券のkabuステーションREST APIのテスト用モック

元記事を表示

Javaの学習 ~リテラル~

### リテラルとは
ソースコード中に記述する値のことです。
Javaには整数、浮動小数点数、真偽、文字の4つのリテラルがあります。
それぞれのデフォルトは、
整数→int
浮動小数点数→double
真偽→boolean
文字→char
となっています。

### 整数リテラル
##### long型
デフォルトの`int`ではなく`long`として扱いたい場合は、整数の末尾に「L」か「l」を付けます。
“`java
long l = 12345L;
“`
##### 2進数・8進数・16進数
10進数以外にも、2進数・8進数・16進数で記述することができます。

2進数・・・「0b」が接頭辞。
“`java
int a = 0b1000001011;
“`
8進数・・・「0」が接頭辞。
“`java
int b = 0413;
“`
16進数・・・「0x」が接頭辞。
“`java
int c = 0x10B;
“`
##### アンダースコア「_」
桁数の多い数値リテラルを見やすくするため、アンダースコアを使った表記がJava 7から導入されました。

アンダースコ

元記事を表示

Optionalについてメモ

## Optionalについて
java8で追加されたクラス。
値をラップしてくれて、nullチェックやnull制御をしてくれる。
これにより、`NullPointerException`の心配もなくなる。
## 使用できるメソッド
以下サイトを参照するのがおすすめ↓

[今更まとめるJava Optional](https://zenn.dev/ayumukob/articles/552d0c7b544838)
[クラス java.util.Optionalのおさらいメモ](https://qiita.com/rubytomato@github/items/92ac7944c830e54aa03d)
## まとめ
`Optional`は今後、使用する機会が増えるクラスではないかと思うので、より理解を深めていきたいです。

Optionalについて(基礎)の参考サイト
→[JavaのOptionaとは?使い方をパターン別にわかりやすく解説](https://www.sejuku.net/blog/60892)

元記事を表示

【SpringBoot】開発環境作成(Jenkins自動デプロイ)

SpringBootの開発環境作成4回目です。
今回はJenkins自動デプロイします。
Jenkinsデプロイ完了後記事書いてるので、もしかすると抜けている部分があるかもしれませんがご了承ください。

## 作成内容
[①Springプロジェクト作成](https://qiita.com/nmaolks/items/ac3860d78822d52bb81c)
[②BitBucketプッシュ](https://qiita.com/nmaolks/items/43dc670b6184d643c0b1)
③VPSにデプロイ
**④Jenkins自動デプロイ**

## 処理の流れ
①Jenkinsインストール
②Jenkins初期設定
③Jenkins SSH設定
④BitBucket設定
⑤Jenkinsジョブ作成

## Jenkinsインストール
前提としてJavaをインストール必要があります。
Javaのバージョン確認します。
`java -version`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amaz

元記事を表示

【Java】初心者による初心者のためのstaticのしくみ解説

# はじめに
こんにちは。
staticがよく分からない人です。なのでstaticの勉強をしました。
「staticってなにがどうなってるの!」と感じている方に向けて、そのしくみについて解説していこうと思います。
# 動作環境
OS:Windows10 バージョン20H2
言語:Java 8
使用エディタ:Spring Tool Suite 4

# 1. staticとは?
“`Main.java
public static void main(String[] args){}
“`
staticとは変数やメソッドにつける修飾子のことです。
Java使用者なら必ず見るであろう、処理を始めるためのエントリーポイントについている、**あれ**です。

staticを修飾した変数とメソッドは「**クラスのインスタンスを生成しなくても呼び出すことが出来る**」という特徴があります。

ホントかどうかは試してみないとわからないので試してみましょう。

“`Main.java
class Test {
static int staticNum = 0;
int num = 0;
}

元記事を表示

ByteBufferの単体試験で末尾の0Byte部分を無視する

## これは何?
* `java.nio.ByteBuffer`を用いてString生成する処理にて、部品化したクラスの単体テストで困ったことの解決

## 困りごと

“`NG.kt
@Test
fun hoge() {
val byteBuffer = ByteBuffer.allocate(5) //Byte範囲割り当て
byteBuffer.put(“あ”.toByteArray()) //ByteArray追加
byteBuffer.flip()
assertEquals(“あ”,String(byteBuffer.array())) //これでいけると思ったのだが…
}
“`

↓を参考に、ByteBuffer->ByteArray->Stringの順で変換すればassertできるのでは?と思って書いたところ、テスト失敗しました。

Java で ByteBuffer を String に変換する

![スクリーンショット 2022-08-11 0.18.32.png](ht

元記事を表示

Javaの学習 ~データ型~

Javaのデータ型には、プリミティブ型と参照型の2つがあります。
データ型・・・データの種類を表すもの。コンピュータにデータの扱い方を指定するために記述する。

### プリミティブ型
数値、真偽値、文字を扱うデータ型です。基本型とも呼ばれます。
| 整数型 | |
| —- | —- |
| byte | 8ビット整数(-128~127) |
| short | 16ビット整数(-32768~32767) |
| int | 32ビット整数(-2147483648~2147483647) |
| long | 64ビット整数(-9223372036854775808~9223372036854775807)

| 論理型 | |
| —- | —- |
| boolean | 真偽値(true/false) |

↑※C言語と違い、「bool」ではなく「boolean」であることに注意!

| 浮動小数点数型 | |
| —- | —- |
| float | 32ビット単精度浮動小数点

元記事を表示

多重ループからの脱出(continueとbreakの違い)

# はじめに
ネストされたfor文の中でcontinueとbreakの挙動の違いを整理しました。
JavaScriptで記載していますが、Javaでも同様に記載できます。

# 目次
[1. サンプル](#1-サンプル)
[2. continue](#2-continue)
[3. break](#3-break)
[4. さらに深いループ](#4-さらに深いループ)
[5. ラベルを使用したcontinue](#5-ラベルを使用したcontinue)
[6. ラベルを使用したbreak](#6-ラベルを使用したbreak)
[7. まとめ](#7-まとめ)

# 1. サンプル
次のような簡単な配列の多重ループを例にします。
“`js
const loopA = [1, 2];
const loopB = [1, 2, 3];

for (const a of loopA) {
for (const b of loopB) {
console.log(`A${a}-B${b}`);
}
}

// 出力結果↓↓
// A1-B1
// A1-B2
/

元記事を表示

マージしたチャートデータからテクニカル指標を計算する(Pivot編)

# はじめに

前記事
1. [auカブコム証券のkabuステーションREST APIをcurlで叩く](https://qiita.com/hiuchida/items/fcdd3d6ff921b386a37e)
2. [auカブコム証券のkabuステーションREST APIをjava(generated by the swagger code generator)で叩く](https://qiita.com/hiuchida/items/73b7fc846d4c9501ef2f)
3. [auカブコム証券のkabuステーションREST APIの残高照会をcurlとjavaで叩く](https://qiita.com/hiuchida/items/9eb5336755a3d1b1a3df)
4. [auカブコム証券のkabuステーションREST APIの残高照会から先物OPのdeltaを計算する](https://qiita.com/hiuchida/items/6e0d8d5114192bec1632)
5. [auカブコム証券のkabuステーションREST APIのテスト用モック

元記事を表示

Spring Boot REST Controller でNot Found 404エラーの対処

## 概要
何となくRest Controllerを実装したところ、思わぬところでエラーが発生した。アノテーションでパスの指定方法を誤っていたため、下記に記載するコードの通り修正を行った。

## エラー内容

**Whitelabel Error Page**
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Tue Aug 09 23:41:23 JST 2022
There was an unexpected error (type=Not Found, status=404).
No message available

## エラー発生時
“`java
package com.example.demo.app.api;
import com.example.demo.repository.ZooDao;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.f

元記事を表示

オセロをJavaで簡易的に記述した

## はじめに
超簡易的なので、プレイヤーは先攻のみです。
また、作ったNPCはweb上で無料でできるオセロの初級に負けます。クソ雑魚です。
何か間違っているんでしょうけどちょっと私にはわからなかったので、是非改良してください。

## ざっくりとした説明
まずは、作ったクラスについて説明していきます。

#### Othelloクラス
オセロの盤面の生成やひっくり返すメソッド、指定された場所に置けるか判定するメソッドなどをこのクラスに記述しました。
なお、Othelloクラスのmainメソッドに入力の受け取りなどを記述してあるので`java Othello`で実行ができます。

#### AIクラス
NPC用のクラスです。Othelloクラスから今の状況を表すオブジェクト(Othelloクラス)を渡して、それを元に置く場所を決めてOthelloクラスのメソッドを呼び出します。
今はランダムに選ぶNPC1、今置ける場所で一番ひっくり返せる手を選ぶNPC2、盤面に優先順位を付けてそれを元に選ぶNPC3、相手がNPC3だったときに一番最善手を選ぶNPC4を実装してあります。弱いのは多分盤面

元記事を表示

OTHERカテゴリの最新記事