JAVA関連のことを調べてみた2020年11月22日

JAVA関連のことを調べてみた2020年11月22日

【Java】変更に強いコード追加編 – Validation 機能

#もっと!変更に強いコードを目指す
* 前回の
[【Java】変更に強いコード実践編 – 値オブジェクト2(Value Object)](https://qiita.com/suema0331/items/4ea28b7dde8d736c0c2e)
では、
**Valueオブジェクトを使ってタイポがない、凡ミスがないコードにしよう**o(^^)o
* ということで、建物の緯度経度を表すBuildeingクラスを作りました
* Valueオブジェクトで型を指定することで、Buildingに渡す引数の順番間違え(Latitude、Longitudeの順番)を防止できました?

##Validation機能追加
* さらに堅牢なコードを目指し、LatitudeにLongitudeの値(139.761102f)を入れてしまうことを防ぎたい。。。
* 値オブジェクトの初期化時に間違った実値を渡してしまう事を抑止するのは**Validation機能**で行うことができます

“`java
new Latitude(139.761102f),
new Longitude(35.663114

元記事を表示

minecraft1.7.10左右を入れ替えたときに別のアイテムを出すクラフトレシピを登録したい

# 環境

minecraft 1.7.10

多分他のバージョンでも同じ。~~それこそ1.2.5とかでも~~

# 背景

例えばしたの2つの例を見てほしい。このように左右逆に並べた時に別々のアイテムを作るレシピを登録したいとする。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94177/b9f8e37a-8d67-9374-064e-d863b59abc2c.png) ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94177/add56b2e-291c-a432-dd6c-21d3a08b3d4e.png)

何も考えずに
[1.7のレシピ追加 – Minecraft Modding Wiki](https://mcmodding.jp/modding/index.php/1.7%E3%81%AE%E3%83%AC%E3%82%B7%E3%83%94%E8%BF%BD%E5%8A%

元記事を表示

Java SE の基礎を IT 講師ががんばって親切に解説する連載の目次

皆さんはじめまして。ひろきです。ふだんは SIer 向けの新人研修講師をしたり、教材開発をしたり、ときどき開発をしたり講師育成をしたりしています。

このたび Qiita で、Java SE 基礎の解説を連載形式で掲載します。ぜひご活用ください!!!

# ひとことで

**最短路を、一歩ずつ進む** ことを目標に作った、 Java SE 基礎の無料オンライン教材です。

# 想定している利用者&利用シーン

この連載は、学習の副教材として使われることを念頭に作っています。具体的な連載の対象者&利用シーンは、以下の2者です。

| 対象者 | 利用シーン |
|—-|—-|
| Java初学者 | 〇〇で Java を学び始めたもののなかなかしっくりこなくて悩んでいる |
| 担当者(講師・メンター)| 質問対応等で紹介できる、解説の厚いサイトを探している |

※ 著作権は放棄していませんので、ご注意願います。

# ゴール・ゴールじゃないこと

この連載では **最短路を、一歩ずつ進む** ことを念頭に学習を進めます。学習した結果、何を目指し、何は目指さないのかを明確にして

元記事を表示

JShell でプログラミングへの第一歩を始めよう!(JShell, REPL)

[(この記事は連載の一部です)](https://qiita.com/HrkPPOI/items/98707436c5bfea3c74e2)

この項目では、何がなんだか分からなりに、ひとまず **Java プログラムを実行** してみます。

これから私たちは Java プログラムを書いては動かし、書いては動かしして学んでいきます。
ゆくゆくは何千行何万行という巨大なプログラムを書くことになり、そのころには「プログラムとはこういうもの」というおおよそのイメージが付いているでしょう。

しかし学び始めたいまの時点では、「そもそもプログラムを動かすってなんやねん」という状態かと思います。そこでまずは、いくつか例を挙げながら「プログラムを動かすってなんやねん」に答えたいと思います。そして、もっとも簡単な方法として **JShell** でのプログラム実行をやってみます。

# はじめに

– 必要な前提知識
– キーボード入力
– ブラウザ操作
– これを読んで分かること
– プログラムとは何か?
– コンピュータ・プログラムとは何か?
– Java とは何か?

元記事を表示

【Java】ファイルを削除する(Fileクラスのdeleteメソッドで消えないときの解決策)

#プログラミング勉強日記
2020年11月21日
Javaでコードを書いているときに、ファイルの削除がうまくできなかったのでその解決策とFileクラスのdeleteメソッドの使い方をまとめる。

#deleteメソッドの使い方
 Fileクラスのdeleteメソッドは指定したファイルを削除うすることができ、Boolean型の値を返す。※一度実行すると取り消しができないので注意する。
 Fileクラスを使用するためには`java.io.File`をインポートする。

“`java:ファイルの削除
import java.io.File;
import java.io.IOException;

public class Main {
public static void main(String[] args) {
File file = new File(“text.txt”);

// deleteメソッドを使用してファイルを削除
file.delete();
}

}
`

元記事を表示

ブルジョワが考えたドメイン駆動設計をソ連が考案した作戦術で☆粉砕☆

今回の記事では、以下の記事に掲載されている**5層アーキテクチャモデル**を下地として、ソ連が考案した作戦術の概念を再現できるアーキテクチャモデルを目的としています。

記事タイトル:ドメイン駆動設計における5層アーキテクチャの全体図とソースの実装例
記事URL:https://qiita.com/aLtrh3IpQEnXKN7/items/33b0a748dec34a301b37

#作戦術
##作戦術とは
ソ連軍人スヴェーチンが提唱した概念です。
ロシアの広大な領土で軍隊を効率的に運用する術です。
作戦術は、時間、空間、手段、目的という4つの重要な要素で構成されています。
作戦術は、抽象的な戦略的ゴールを、作戦次元で目的別に分類し、戦術的次元で具体的な手段を定義します。

##作戦術の思考スタイル
**1.基礎となるドメインの洗い出し
2.ドメインを使用する戦術の考案
3.戦術の体系化
4.戦術を使用するユニットの編成
5.戦術を使用する空間の特定
6.戦術を組み合わせて作戦を実行し、中間ゴールとなる目的を達成
7.目的を組み合わせて最終的なゴールである目標を達成**

##なぜ作

元記事を表示

Doma入門 – ログライブラリにSLF4Jを使う

## はじめに

DomaはJavaの標準ライブラリ以外に依存しないことをコンセプトに謳っているので、デフォルトのログライブラリとしてJUL(java.util.logging)を使っています。ただ残念なことにJULは使いにくいということでとても不人気ですね。

この記事では、ログライブラリをJULから[SLF4J](http://www.slf4j.org/)に切り替える方法を説明します。

Domaのバージョンは現時点で最新の2.44.3を想定して説明します。
Domaの他の機能については、[Doma入門](https://qiita.com/nakamura-to/items/deaff05ba530317f3cf8)もお読みください。

## Domaのログの仕組み

Domaの実行時のログ出力は、`org.seasar.doma.jdbc.JdbcLogger`インタフェースを介して行われます。

doma-core.jarには、`org.seasar.doma.jdbc.UtilLoggingJdbcLogger`というJULを利用する実装クラスが含まれており、Domaを単

元記事を表示

【Java】コンストラクタ・getter・setter

# コンストラクタ
この記事は私のJavaの学習なメモです。
Javaのコンストラクタ、getter、setterについて学んだ内容を書いています。

## コンストラクタとは
コンストラクタ は、**インスタンスを生成するタイミングで呼び出される、 特別なメソッドです。**
普通のメソッドとそっくりですが、名前には「クラス名と同じ名前」をつかい、戻り地がないので戻り地の型を指定しないところが違います。

コンストラクタは **引数 を持ことができ**、呼び出されたコンストラクタ内では、**それを用いた処理など**さまざまなことを行うことができます。

通常はコンストラクタ内で、**フィールド変数などに 初期化処理 を記述** することが多いです。

また、**クラスを使用する際に 習慣化したい処理がある場合** などにも利用します。

### 使用例

#### 引数なしの場合

“`java
//ConstructorPractice.java(引数なし)
public class ConstructorPractice {
String str = “引数なしの場合

元記事を表示

【Java】Javaで作れるもの

#プログラミング勉強日記
2020年11月20日
最近はずっとJavaを勉強しているが、Javaで作れるものを調べてみた。

#Javaの特徴

– プラットフォームに依存しない
– 開発効率と保守性が高い
– ライブラリが充実している

 Javaは動く環境を気にしない言語で、Javaでコードを書けばJVM(Java Virtual Machine:Java仮想マシン)が入っていればWindowsでもLinuxでもMac上でも動く。また、動作が早く、動作速度が要求されるような場合でも用いられる。

#Javaで作れるもの
 Javaは「なんでもできる」言語であり、TwitterやEvemoteといったWebサービスはもちろん、三菱UFJ銀行でも採用されるような大規模金融システム、Androidアプリといった幅広くいろいろなものを作れる。具体的に紹介する。

##1. Webサービス
 Javaはインターネットと相性が良く、私たちの想像できるWebサービスは大体Javaを使えば作れる。TwitterはJavaを利用している。(以前はRubyを使っていたが、動作が早いということでJava

元記事を表示

【Java】this について

# this
Java(というよりプログラミングにおいて)の **this** について学んだことのアウトプットです。

## thisとは

**「this」** とはクラスの中(メソッド内)でインスタンスを扱うための特殊な変数です。

## なぜ、thisをつかうのか
結論からいうと理由は

– **「ローカル変数とフィールド変数を明確に区別するため」**。

**ローカル変数とフィールド変数は別々のものなので、同じ名前でも作ることが可能**なため、同じ名前で使われたときに**どっちなのかわからなくなってしまいます。**そのために、
**「フィールド変数にはthisをつける」** という書き方がよく使われます。

## どこに、 thisをつかうのか
上にも書きましたが、使う場所は

– **フィールド変数名の頭です「例:this.フィールド名」**。

また、this は **クラス内のメソッドの定義の中でのみ使用できます。**
thisはメソッドが呼ばれた時に、そのメソッドを呼び出しているインスタンスに置き換えられます。

## thisを使ってみる
ポケモン図鑑をプログラム

元記事を表示

Google Photos APIsでフォトアルバム

私は普段Android端末を使っており、奥さんと旅行などに行った際よく写真を撮ります。
アカウントの同期を行っている方は、Android端末で撮った写真が自動でGoogleのPhotosサーバにバックアップされると思います。
[Google Photos APIs](https://developers.google.com/photos)が公開され、Google Photosサーバから直接画像を取得出来るようになったため、これを利用してフォトアルバムを作ろうと思ったのが本記事のきっかけです。

##はじめに
本記事では、[Google Photos APIs](https://developers.google.com/photos)を用いフォトアルバムを表示するWebアプリ(Spring-boot)を作成します。
ソースは、[Git](https://github.com/RioAkiyama/KarionPhoto) にあげております。
下図の様に指定期間範囲内に撮った画像を、指定の間隔で再生するよう実装しております。
![sample1.png](https://qiita-i

元記事を表示

【Java】変更に強いコード – 値オブジェクト1(Value Object)

変更に強いコードを書くための考え方を学びます

#変更に強いコードの5つのポイント
* **1. 変数名は説明になるようにつけよう**
* 入力、処理、出力の役割ごとに変数名を使う(説明用の変数を導入)
* **2. 目的ごとに変数を用意しよう**
* 計算した結果に対して変数を用意して、**使いまわさない**
* **3. コードは意味のある段落に分けよう**
* 入力、処理、出力に分ける
* **4. コードのまとまり(段落)をメソッドとして独立**させよう
* 異なるクラスでの重複コードはなくそう
* **5. 狭い関心ごとに特化したクラス(ドメインオブジェクト)にしよう**
* 凝集度up = あるクラスはある目的にのみ存在する
* ex: 送料クラスの関心事は送料のみ

#小さなクラスでわかりやすく安全に
* 5つのポイントをおさえ、**特定の関心に特化した小さなクラス**を作る
* メソッドは短く、クラスは小さく
* クラスの可読性up、変更が簡単になる
* 継承で共通機能は親クラスへ
* 派生クラス

元記事を表示

【Java】初心者のためのConcurrentModificationExceptionについて【Java Silver対策】

#はじめに

– この記事は駆け出しエンジニアが書いています。間違いがありましたら遠慮なくご指摘いただけると幸いです。
– この記事はJavaのArrayListにおけるConcurrentModificationExceptionについて超ざっくりと解説します

#この記事の対象者について
– Java Silver勉強中で、どういう場合に発生するのか確認したい方
– Javaでシングルスレッドのコードを書いていたらConcurrentModificationExceptionが出たのでとりあえず解決したい方。

*詳しい解説はすべて省いて、初心者の方でも分かりやすいように書いています。

#ConcurrentModificationExceptionについて
まだまだ駆け出しの筆者であるが、Java Se8 Silverの問題集をやっているとこんな問題が出た

*例

“`java.

//配列を宣言し「ABCDE」を要素として配列に格納
List list = new ArrayList();
list.add(“A”);
l

元記事を表示

JSP + Apache FOP で動的に PDF を作成して Web サイトに表示してみるサンプル

JSP サイトを管理している知り合いが「PDF を動的に作成して表示したい」と言っていたので、ちょっと試してみました。

# Apache FOP

PDF を動的に生成するライブラリは多くあります。有料のものですと [iText](https://www.xlsoft.com/jp/products/itext/) とか、複雑な帳票に向いていそうな [SVF](https://www.wingarc.com/cloud/svfc/) とか。

でも今回はあまり複雑でない PDF を作成するようですし、OSS での実装を検討してみました。コスト削減できますし、何かあったらソースコード読んで確認できるのは嬉しいものです。

まずチェックしたのが [Apache PDFBox](https://pdfbox.apache.org/) なのですが、あまりにプリミティブといいますか、そのまま作りこんでしまうとデザインの更新が難しくなりそうなので、パス。上にもうひとつコンテンツ作成レイヤが必要な印象です。

そして見つけたのが XSL ベースでコンテンツを作成する [Apache FOP](ht

元記事を表示

【Java】クラス・フィールド変数

#クラス・フィールド変数
Javaの勉強で、クラス・フィールド変数 について学んだことをアウトプットしていきます。

##クラス
クラスとは、「 データ 」と「 処理 」の集まりです。
Javaのプログラムは、クラスを複数組み合わせてプログラミングしていく。
Javaのプログラミングは **`クラスのプログラミング` と、`呼び出し側のプログラミング`**の2つの作業に分かれる。

###クラスのプログラミング
クラスには、**そのクラスが持つ特徴や情報などの`データ`**と、そのクラスで行いたいタスク、TODO、ふるまいなどの**`処理`**を書きます。

###呼び出し側のプログラミング
クラスが完成したらクラスのインスタンスを生成し、メソッドの呼び出しを記述する。

クラスのプログラミングの注意点は

– 必ず**`public class クラス `**と記述すること。
– **{ }の中に`データ`と`処理`を記述**すること。

この囲まれたコードのまとまりを**ブロック**という。

“`java

// ここからブロック範囲======================

元記事を表示

Google App Engine Java 8 から Java11 移行対策

この記事では、Google App Engine for JavaのJava8からJava11への移行方法について考えてみる
## Google App Engineとは
Google App Engine(GAE)は、Google謹製のPaaSサービスであり、Google Cloud Platformの中でも最古参級の古株である。
Go, Python, .NETなど様々な言語に対応しており、もちろんJavaにも対応している(GAE/J)。
## GAE Java11 からサーブレットコンテナではなくなった
2019年10月にこれまでのGAE Java 8版に加えて、GAE Java11版が正式リリースされた[^1]
だが、Java 11版のGAE/Jはこれまでのバージョンとは大きな違いがある。
[Google App Engine Java 11 ドキュメント – Java 11 ランタイム環境 – フレームワークの互換性](https://cloud.google.com/appengine/docs/standard/java11/runtime?hl=ja#framewor

元記事を表示

入力フォームの情報+複数枚の画像をバイト配列に変換する方法【Servlet/JSP】【MySQL】

#1.前提知識・条件
本記事では、Java、Servlet/JSP、MySQLなどの環境構築について、構築できている前提とするので省略します。
Java、Servlet,JSP、MySQLに関する基礎知識を前提としています。
必要となる知識
Java : リスト, イテレータ など
Servlet/JSP : GET/POST, データベースとの通信 など
MySQL : Javaのソース上でクエリを実行する方法 など

注意事項:冗長的なコードになっている可能性があるのでご了承ください。

#2.投稿のきっかけ
研修でServlet/JSP、MySQLを使ってWebアプリを構築することになり画像の処理が必要でした。
MySQLの方をMediumBLOB型にして、一枚の画像のみを格納・表示させる所までは、それなりに情報が載っており、比較的容易でした。
ですが、入力フォームのテキスト情報と一緒になった場合、画像を複数枚にした場合に情報が少なく行き着くまでにかなり苦労しました。
自分の備忘録としても、他の方の参考になれば良いかと思います(需要があるかは不明)。

#3.画像の保存
大まかな

元記事を表示

【Java】ループ文

#ループ文
##ループ文とは
ループ処理の主な機能は、 指定された回数分や特定の条件下にある間、処理を実行し続けること です。

Javaにおいては、for文、while文という繰り返し文の構文が用意されていて、Javaに携わる上では頻繁に使用する機能になります。

## for文
ループカウンタなどを使用して、**定められた回数だけ同じ処理を繰り返したいとき**に使用します。
ループカウンタと、添え字による配列要素へのアクセスは非常に相性がいいため、**配列の中身を単純に1つ1つ参照する場合などによく使用されます。**

###for文の書き方
書き方はこちらです。

“`
for (ループカウンタ初期化; 継続条件; ループカウンタ更新) {
繰り返し行う処理
}
“`
よく使われる内容として、配列の中を全部表示する方法があります。
下記の場合、**配列の番号**と**配列の値**をそれぞれ出力する方法です。

“`java
String[] type = { “ほのお”, “みず”, “くさ”, “いわ”, “でんき”, “どく”, “エスパー”,

元記事を表示

悲報 SpringBootは二度はまる。。

Spring Bootで久しぶりにREST APIを書いてみようとして「はまった」話。おそらくまたはまるので備忘

# はまりポイントの経緯
## Spring Bootをどれぐらい使ったことあるの?
キックオフミーティング用の簡単APIを作成するに1度使って。「お手軽」のイメージをもっていました。
今回OAuthの認証サンプル作ろうと、受け側のダミーサイトとして利用するつもりだったのですが。あっさりとはまりました。

## なにをやらかしたの?
Servlet Container が期待通り起動せず。エラーも出ないので途方に暮れた。

### まずはプロジェクトの作成
[SpringBoot Initializer](https://start.spring.io/)を使ってサンプルプロジェクトの作成しました。

### 実行してみましょう。
“`
> gradle bootRun
“`
と。。さて、Tomcat 起動してくれるよね。。。

“`
> Task :bootRun

. ____ _ __ _ _
/\\ / __

元記事を表示

空の ArrayList を新規生成するラムダ式

# Want
ファクトリメソッドとして空のArrayListを新規作成する Lambda 式を渡したいとき、次のようなラムダを渡すと Sonarqube や IntelliJ 等に “Replace this lambda with a method reference.”や”Lambda can be replaced with method reference.” というように直接実装を書くんじゃなくてメソッド参照にしろと怒られる。

“`
() -> new ArrayList()
“`

# Do
次を渡せばOK。

“`java
ArrayList::new
“`

# Don’t
空のArrayListを用意したあとでそのインスタンスに要素を追加していく場合、次はアウト。

“`java
Collections.emptyList()
“`

## Why
Collections.emptyList() で生成したリストは、基本的に操作できません。
add メソッドなどを呼び出すと `UnsupportedOperationException` が発生します。

元記事を表示

OTHERカテゴリの最新記事