JAVA関連のことを調べてみた2021年10月04日

JAVA関連のことを調べてみた2021年10月04日

続・GradleでCodeArtifact自動化

結論だけ読みたい人は[こっち](#利用例)

## はじめに
一応、[前回](https://qiita.com/TAC_yacht/items/eb4ca035491dc9a2b77f)それなりにコピペで済むようにはしたものの、冗長であると言わざるを得ない。
そこでプラグインにした。

## プラグインの設定

“`groovy:build.gradle
plugins {
id “io.github.tac-yacht.codeartifact-repository” version “0.1”
}
“`
ほかのプラグインも使ってるときは真ん中の行だけ追加
※“`settings.gradle“`で“`pluginManagement.repositories“`を設定してる時は“`gradlePluginPortal()“`の追加を忘れずに

ポータルで各種プラグインごとに例示されてるのと同じではある

## レポジトリの設定
3種類から選べる。

### style A
“`aws codeartifact get-repository-endpoint`

元記事を表示

【初見者向け】Javaのリファクタリングツール OpenRewriteを少し検証

# はじめに
こんにちは。
少し前に、「OpenRewrite」というJavaのリファクタリングで使える?ツールの存在を知って
どのようなものか興味を持ったので、簡単に検証してみた記録です。

# OpenRewriteとは
### OpenRewriteの概要
>OpenRewriteは、Java言語に早期に焦点を当てて、フレームワークの移行、脆弱性のパッチ、およびAPIの移行のための大規模な分散ソースコードのリファクタリングを可能にします。

### OpenRewriteは何をしますか?
>OpenRewriteは、ソースコードを表す抽象構文木(AST)に変更を加え、変更されたツリーをソースコードに出力することで機能します。その後、コードの変更を確認してコミットできます。ASTの変更はビジターで実行され、ビジターはレシピに集約されます。OpenRewriteレシピは、元のフォーマットを尊重する最小限の侵襲的な変更をソースコードに加えます。

>たとえば、手動で行うのではなく、すべてのテストファイルで静的インポートを一貫して使用する場合は、OpenRewriteが提供するUseSt

元記事を表示

エンドロールムービーをprocessingで作る #2 【文字スクロール・画像表示】

**Processing**と**ffmpeg**を用いた結婚式風エンドロールムービー作成方法紹介の**2回目**です。
今回は**文字のスクロール**と**画像表示**について紹介します。
1回目に紹介した**連番画像作成・アニメーション**については[こちらをご覧ください](https://qiita.com/takenoko300/items/538f5c3a3fb94758ba03)。

https://qiita.com/takenoko300/items/538f5c3a3fb94758ba03

# 今回作成した動画
![out3.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1873853/19af64dd-e7ad-fcdc-809a-148644b749b2.gif)

## プログラミング内容説明

### 文字のスクロール
文字のスクロールはループごとにY座標の位置を少しづつ変化させていくことで実現します。
そのため、ループごとにカウントアップされるグローバル変数(下記プログラム

元記事を表示

Javaでファイルから設定値を読み込む(簡易的な方法)

今回ご紹介するのはファイルから設定値を読み込む方法です。
XMLを使ったりいろいろ方法はあると思いますが、
今回は比較的簡易な方法をご紹介します。

#今回読み取りたいファイルの形式
例えば以下のようなファイルを読み取りたいとします。

“`:mysettings.env
#読み取りたいファイルです
UserID = 1234
Gender = Male
“`

\#から行末まではコメントとみなされます。
=の左が設定名、右が設定値となっており、一行一つ設定が書かれます。
=の前後に空白が入っている場合は、それらを取り除いて読み取ります。
つまり、設定名や設定値が「UserID 」、「 1234」などにはならないということです。

#使用するメソッド
今回使用するのはjava.util.Properties.loadです。
このメソッドを用いるとwindowsのiniファイルのような
key=value型の書き方をするファイルから設定値を読み取れます。
また、今回はご紹介しませんが、Propertiesクラスにはxmlからファイルを読み取るメソッドもあります。

[公式のリファレン

元記事を表示

toStringメソッドの実装がToStringBuilderクラスを使えば楽になる

# はじめに

クラスのメンバ変数の値をログに出力する際に、toStringメソッドを実装して各メンバ変数の値を含めてString型の値を返すような実装をしていると思う。
メンバ変数が少ないと楽だが、メンバ変数が多い場合は実装するにも手間がかかる。
そのような場合、ToSTringBuilderクラスを使用するとtoStringメソッドの実装が楽になるのでどのように出力されるのか簡単に試してみる。

https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/builder/ToStringBuilder.html

# ToStringBuilderを試してみる

## プリミティブ型のメンバ変数を持つクラス

プリミティブ型のメンバ変数を持つクラスを用意してToStringBuilderを実行してみる。

“`java
public class Student {

int student_number = 0;

String firstName = null;

元記事を表示

XSSF(xlsx)を扱う3種類の方法とメモリ消費量について

注意: 基本的にはこのあたりのドキュメントを読めばよい話ですが、自分用に簡単にまとめておきますね(´・ω・`)

– https://poi.apache.org/components/spreadsheet/
– http://poi.apache.org/components/spreadsheet/how-to.html#xssf_sax_api

JavaでExcelを操作するライブラリであるApache POIでは、HSSFとXSSFという2種類に対応しています。ざっくりいうとHSSFは拡張子がxlsのファイル、XSSFは拡張子がxlsxを扱います。Excel 2007以降はxlsxが標準となっているので、ここではXSSF/xlsxについて記述します (新規システム構築でHSSF/xls対応が必要なことはない…よね?)。

さて、XSSF/xlsxの読み書きに際して、Apache POIは大きく分けて3種類のAPIを用意しています。

① User API

読み書き両方が可能。Google検索でよく引っかかるのは大体これ。いかにもJavaらしいオブジェクト指向的なAPIで

元記事を表示

javaで2つのSetの要素を足したい時の書き方あれこれ

2つのSetの要素を足したい時があり、その時に実装悩んだので共有です。
オススメ度順に上から並べています。

## GuavaのIterablesを使う

一番スッキリしてる気がする

“`java
return Sets.newHashSet(Iterables.concat(hashSet1, hashSet2));
“`

https://guava.dev/releases/21.0/api/docs/com/google/common/collect/Iterables.html#concat-java.lang.Iterable-java.lang.Iterable-

## それぞれStreamにしてからStream.concat()でつなげる

王道な気がする

“`java
return Stream.concat(
hashSet1.stream(),
hashSet2.stream())
.collect(Collectors.toSet());
“`

## SetのStreamをflatMapでStreamをつくる

ちょっとぱ

元記事を表示

WindowsのXAMPPでTOMCATを起動する方法

## 1. 事前準備
– [【初心者でもできる‼】Windows10にJava環境を作る方法(JDK14.0.1)](https://qiita.com/ryome/items/30135570954e36196821)
– 環境変数に `JAVA_HOME` が存在すること

事前準備として、上記リンクの内容が必要です。

## 2. 環境変数設定
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449867/55033dea-262a-99fb-3d4a-2add6a764075.png)

– windowsボタンを押して、`システム環境変数の編集` を検索
![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449867/5229790f-24b8-011d-d68a-ab6e9c8a1086.png)

– `環境変数(N)…` をクリック
![03.png](https://qiita

元記事を表示

【Java】Stringクラスでの文字列結合にStringBuilder使わなくてもいいと思う

`+`演算子による`String`の結合が遅いのは、Javaを少しでもかじったことある方であれば皆さんご存知でしょう。
では、次のコードはどちらの方が実行速度が速いと思いますか?

1. `String s = “a” + “b” + “c”`
1. `String s = new StringBuilder(“a”).append(“b”).append(“c”).toString()`

答えば1であり、`StringBuilder`が`+`よりも遅くなる数少ない例です。

# 結論から
大抵の場合はどっち使ってもいいけど、個人的には迷ったら`+`がおすすめです。

# `StringBuilder`と`+`を選択するときの観点
`+`を`StringBuilder`に置き換えたくなったときは、次の観点から考えてみて下さい。

## 可読性
これが一番の理由になってくると思います。
可読性自体は極めて主観的なものであり、人によって見解はどうしても割れてきます。
それでも、`+`よりも`StringBuilder`の方が文字数が多く、多くの場面で可読性は`+`が優位と思います。

#

元記事を表示

Java データ型

#データ型

データ型とは、変数に入れるデータの集類のことです。

データ型は、4つに分かれます。

* 整数
* 小数
* 文字
* ブール型(真偽値型)

#整数系のデータ
整数系のデータ型は,byte,short,int,longの4つ。
__数値の範囲が異なる__

| 型名 | 扱える整数値の範囲 |
| :—: | :—:|
| byte | -256~255 |
| short | -32768~+32767 |
| int | -約20億~+約20億 |
| long | 「京」の桁以上 |

__※longの場合、最後に小文字か大文字の「L」をつける必要がある。__

“`java:
public class Lesson07_01 {
public static void main(String[] args) {
byte var01 = 1;
short var02 = 12345;
int var03 = 1234567890;
long var04 = 123456789000

元記事を表示

様々な言語での日時表記

#背景
日時表現は割とよく使うけど、言語で書き方統一されてなくて正直やり辛いな~~
似てるけどちょっと違う、が多くてよくミスってしまうな〜〜
と思ったので覚書程度にまとめます。

というわけで、いろんな言語で現在の年月日・時刻を「2021年10月02日 23時00分00秒」の形式で出力します。
とりあえずはJava, Ruby, Python3, Go, php。適宜更新します

#Java(8以上)
SE8から加わったDate and Time APIのおかげで実装がぐっと楽になりました。

“`Java:Main.java
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class Main {
public static void main(String[] args) {
// SE8から加わったクラス。現在の日時を取得
LocalDateTime dateTime = LocalDateTime.now();

// 独自のフォーマットを準

元記事を表示

【Java】継承したクラスをインスタンス化した時のイメージ

##はじめに
Javasilver勉強中に????になったことを自分に刻むためのメモ

##今回の????となった問題
※著作権とかあるかわからないですが、怖いのでそのままではないです。

パッケージ構成
test1
┗Human.java
test2
┗Engineer.java
┗Main.java

“`java:Human.java
package test1;

public class Human {
private String name;

protected String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
}
“`

“`java:Engineer.java
package test2;

import test1.Human;

public class Engineer extends Human {
}
“`

“`java:Main.java
package test2;

publi

元記事を表示

Java基本的なまとめ

#クラス
クラスを組み合わせて一つのプログラムを作るイメージ。
クラスが集合体になってJavaの土台となっていくイメージ

![10285001417.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1572216/d299cde8-3c2e-a472-77cf-ac9e7fbfa142.jpeg)

__クラスを定義する__

“`java:Greeting.java
class Greeting{
public static void main(String args[]){

}
}
“`

①class Greetingと定義する。クラスを定義する際、最初にclassと記述しなければならない。

②classの次は、どんな名前のクラスを決定する。クラスの名前のことを「クラス名」という。

__※ファイル名とクラス名は同じにする必要がある。__
__※クラス名の最初は大文字にするのが鉄則。__

③クラス名の後は波括弧を記述する。波括弧で囲まれた部分をブロックと呼ぶ。
波括弧の中に、プロ

元記事を表示

Beanstalk+Docker+JavaアプリでタイムゾーンをJSTに変更したかった日

微妙に嵌ったのでメモ

* AWS Elastic Beanstalk web applications
* Multicontainer Docker
* Java8 Spring Boot

# .ebextensions で設定する方法

“`yml:.ebextensions/timezone.config
# Dockerホスト(EC2インスタンス)のタイムゾーンを変更
commands:
timezone:
command: ln -f -s /usr/share/zoneinfo/Japan /etc/localtime
“`
– EC2インスタンスのタイムゾーン: 変更される
– Dockerコンテナのタイムゾーン: 変更されない
– Javaアプリのタイムゾーン: 変更されない

# Dockerfile に RUN を記述する方法

“`dockerfile:Dockerfile
# ゲストOSのタイムゾーンを変更
RUN ln -f -s /usr/share/zoneinfo/Japan /etc/localtime
ENTRYPOINT [“

元記事を表示

【Unity、AWS】実践!構築から開発をしてウェブアプリを公開する!

#はじめに

 ローカルで作成したアプリをサーバで公開し、外部から閲覧できるようにするまでの流れを実践を通してまとめました。また、GUIの操作で実装できる部分をコードで行い、実装方法の比較をしました。
 アプリはUnity、サーバミドルウェアはSpringBoot、サーバはAWSを使用しました。

#設計

 今回、作りたいものの設計図です。経験少ないまま作成したものですので、ご容赦ください。

(1)構成図
 AWSの構成と使用するファイルをまとめます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1474054/e0ff1cfe-9969-ba55-2108-6cdb51ff3e8f.png)

(2)ユースケース図
 今回の記事で私が行ったタスクをまとめます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1474054/eb36280e-b037-17b9-9c8a-eb70

元記事を表示

JUnitでthrows Exceptionしないのは人道に反する

こういうのやめてほしいんです。疲れました。

“`java:
@Test
public void testMethod_001 () {
try {
Foo foo = new Foo();
Object result = foo.method();
assertEquals(0, result);
} catch (Exception e) {
// ★☆★なんでこういうことするの★☆★
e.printStackTrace();
fail(“テスト実行時に例外が発生しました”);
}
}
“`

単体テストがどうあるべきかとか、日常生活の中で考えたりしないんですかね?
メンテナンス不能です。こんなの。

コンソール出力を見ないとどこで例外が起きたかわかりません。
どこの現場に行っても、何回指導しても直らなくてうんざりしています。誰かがそういう風に教育しているなら改めてほしいです。

そもそも、単体テストの結果って3通りあると思うんです。

* 成功 … 正しく動

元記事を表示

【Java】ポリモーフィズムについて復習していく

#目的

* ポリモーフィズムの理解を深める

#実際の手順と実例
###1.ポリモーフィズムとは

同じクラスを継承した別々のクラスのオブジェクトの同じメソッドを呼び出した時に、それぞれのオブジェクトの振る舞い(処理)を変えることです。

下記の例をもとに見ていきます。

###2.例題

サンプルを作成しました。

まずは親クラスの作成をします。

“`Jump.java
package practice.jump;

public class Jump {
// フィールドメソッドを定義
private String name;
protected String dream;

// コンストラクタを作成
public Jump(String name, String dream) {
this.name = name;
this.dream = dream;
}

// final修飾子をつけることで他で使えなくする(オーバーライド禁止)
final public String getName() {
return this.name;
}

/

元記事を表示

M1 MacにJavaの環境構築

#はじめに
OracleのサイトからJDKインストールしていたが、中々インストールまで辿り着けなかったので今回、azulのサイトからJDKダウンロードした流れをまとめていきたいと思います。

#$ java -versionのメッセージ

“`
The operation couldn’t be completed. Unable to locate a Java Runtime.
Please visit http://www.java.com for information on installing Java.
“`

JDK未インストール状態にて、$ java -versionのコマンドを打つと上記のメッセージが表示。
単純にJDK未インストールであるのでインストールを催促されるメッセージが表示される。

#Eclipseを使うべきではない理由

Javaの開発環境といえば、IDE(統合開発環境)であるEclipseは初学者には難しいのでおすすめはできない。
理由が以下の通り。

* Eclipseは高機能すぎて動きが遅い
* 高いPCスペックを要求する
* 初学者は挫折し

元記事を表示

Java 11 to 17

# 概要

JavaのLTSバージョンの「17」がリリースされていたので、Java 11から新しく使えるようになった機能をメインにまとめます!

> こんな機能あるよ!の紹介にとどめ、詳細は追いません。
「触ってみよう」「調べてみよう」のきっかけになればと!

# Switch Expressions

http://openjdk.java.net/jeps/361

switch文を式の中で使用できるようになりました!

“`java
jshell> var a = 1
a ==> 1

jshell> var b = switch (a) {
…> case 1 -> “one”;
…> case 2, 3 -> “two or three”;
…> default -> “other”;
…> }
b ==> “one”

jshell>
“`

ポイント

– `->`と記載することで`break`を書かなくてよくなる
– break実装漏れによるバグが減る!
– `,`でつなげることで複数項目ぬも対

元記事を表示

ポケモンの対戦シュミレータを作ってる話

# はじめに
こんにちは、4月から都内のSES企業で働いてる佐々木と申します。
先月ぐらいから勉強がてら毎日少しずつ作ってるポケモン対戦シミュレータが少しぐらい形になってきたので今日はそちらを紹介していきたいと思います。

# 概要
https://github.com/sasakirione/PokemonClone
・仕事ではそこまでコーディングする機会がないので[^1]実際にガッツリコーディングする経験を積みたい
・TDDをやってみたい
・単純にポケモンが好き
・オブジェクト指向的な設計の勉強をはじめて試してみたくなった
・とりあえず研修で勉強してある程度基礎ができてるであろうJavaをある程度のレベルまで持っていきたい

以上の理由からJavaとなんちゃってTDDでポケモンの対戦シミュレータを作ってみました。

# 使い方
もちろんGUIアプリケーションではないのでわざわざ使う人も少ないと思いますが一応簡単な使い方を解説していきたいと思います。テストコード見て貰えばなんとなく分かると思いますが、一応まとめておきます。
まず使用するポケモンのオブジェクトを作ります。

“`Ja

元記事を表示

OTHERカテゴリの最新記事