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

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

Eclipseの動的プロジェクトの作成について

Eclipseで開発の勉強をしていくうちに、動的Webプロジェクトの開発でハマってしまいましたので備忘録として記述します。
立ち上げ方は調べると出てくるのですが、どれもEclipseのバージョンが古くてよく理解できなかったんですよね。
最新のバージョンでは表示や進め方が少し異なるようです。
この記事では、Tomcat v9.0をインストールした前提でお話を進めます。

まず動的プロジェクトの作成からです。
ファイル→新規→その他 でウィザードの選択画面に入りますので、「動的Webプロジェクト」を選択します。
![スクリーンショット 2024-04-15 142840.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3697057/9bddff7e-270e-ab37-80a2-a681f67be9b0.png)

その後プロジェクト名のみ記入します。
それ以外は特に何もせず、「次へ」をクリックします。
![スクリーンショット 2024-04-15 145253.png](https://qiita-ima

元記事を表示

【コツコツ学習】インターフェースと抽象クラスの使い分け

## オブジェクト指向プログラミングの以下の3つの主要な機能

### 1.カプセル化(Encapsulation)
データとそれに関連する操作を一つのオブジェクトにまとめ、外部からの直接のアクセスを制御します。オブジェクトは自身の内部状態を保持し、外部からは公開されたインターフェースを通じてアクセスされます。

### 2.継承(Inheritance)
クラス間の階層関係を作成し、親クラス(スーパークラス)の属性やメソッドを子クラス(サブクラス)に引き継ぎます。これにより、コードの再利用性と階層的な関係の表現が可能となります。

### 3.ポリモーフィズム(Polymorphism)
同じ型やインターフェースを持つオブジェクトが、異なる形で振る舞うことを意味します。異なるクラスが同じメソッド名を持ち、そのメソッドを使うコードがクラスの実際のタイプによらずに書けるため、柔軟性や拡張性が向上します。

## 個人的に分からなくなったのが以下
– 継承
– ポリモーフィズム(インターフェースの実装)

## 継承とは
過去に利用したクラスを流用して新しいクラスを簡単に造れる機能の

元記事を表示

[Google Slides API(V1)] Javaでプレゼンテーション内のページ情報を取得する

Google Slides API V1(Java)を使用して、
プレゼンテーション内のページ情報を取得する方法
についてご紹介します。

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

|No|||目次|
|—|—|—|—|
|1|||[ページを取得](#1-ページを取得)|
||1||[スコープ](#11-スコープ)|
||2||[実行](#12-実行)|
||3||[レスポンスの内容](#13-レスポンスの内容)|
|||1|[シェイプ](#131-シェイプ)|
|||2|[ライン](#132-ライン)|
|||3|[画像](#133-画像)|
|||4|[動画](#134-動画)|
|||5|[テーブル](#135-テーブル)|
|||6|[グラフ](#136-グラフ)|
|||7|[テキスト](

元記事を表示

java メソッド 配列

引数に配列を用いる、
値渡しと参照渡しがるというが厳密には参照の値渡しというみたい:sweat_smile:
#### 違い
引数の渡し方の違い

## 値渡し(一部訂正)

“`
public class Sample {
public static void main(String[] args) {
int num = 5;
samlpe(num);
System.out.println(num);

}

public static void sample(int num) {
int += 5;
System.out.println(num);
}
}

出力結果
10
5
“`

変数の値を直接コピーするので変数は変化しない
呼び出し元のアドレスの情報のみが渡される(値そのものが渡される)

## 参照の値渡し

“`
public class Sample {
public static void main(String[] args) {
int[] num = {5};
sample(num);
S

元記事を表示

JavaGoldを未経験から3ヶ月で合格した時を振り返る

前回、Java Silverの取得した過去を振り返りましたが、今回は、続けて受験したJava SE 8 Goldを取得した時の勉強方法を振り返えろうと思います。

# 当時のスペック
– progateを少し触ったことがある程度
– 前職時代の時
– JavaSilverをとって間もない状態

なので、JavaSilverの勉強で得た知見はある程度です。

# 勉強期間

– 開始日:2019年10月

– 試験日:2020年2月1日

約4ヶ月で、全くの実務経験ない状態から合格することができました。

# 参考書

– 徹底攻略 Java SE 8 Gold 問題集
– 黒本とよく言われるものです。(Goldはぶっちゃけ、これだけでは厳しいです。)
– 現時点の最新だと、[徹底攻略Java SE 11 Gold問題集[1Z0-816]対応](https://hb.afl.rakuten.co.jp/ichiba/1d5aa798.217b1dd2.1d5aa799.01b58bc8/?pc=https%3A%2F%2Fitem.rakuten.co.jp%2Fbook

元記事を表示

古い azure-storage-blob を利用した Spring Boot のプロジェクトがビルドできなくなった問題への対応メモ

# 背景
– 数年前の azure-storage-blob を利用している Spring Boot プロジェクトをビルドする必要があった
– もろもろハマったのでメモとして残しておく

# 対応一覧
## azure-storage-blob 12.0.0 が参照できなくなった
– mavenCentral から参照できなくなった
– バージョンを上げる
– 単純に上げるだけだと他ライブラリのバージョンと競合するので合わせて対応していく
– azure-sdk-bom を利用してバージョンを上げる
– https://learn.microsoft.com/ja-jp/azure/developer/java/sdk/get-started-gradle
“`groovy:build.gradle
implementation platform(‘com.azure:azure-sdk-bom:1.2.22’)
implementation ‘com.azure:azure-storage-blob’
“`
– 他ライブラリは別途調

元記事を表示

Java ZonedDateTimeの注意点

Javaランタイムには [IANA Time Zone Database](https://www.iana.org/time-zones) (以下tzdata)が組み込まれており、標準APIの`ZonedDateTime` を使えば、tzdataを用いたタイムゾーンの取り扱いが便利にできる。

タイムゾーンは相応に複雑なものであり、気軽に`ZonedDateTime`を使うと怪我をする。[java.timeパッケージJavaDocのDesign notes](https://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html#package.description)でも、可能であれば `ZonedDateTime`の使用を避けて、`LocalDateTime` 等のタイムゾーンの複雑さを回避できるオブジェクトの使用を推奨している。

しかし、サマータイムや複数の地域ベースタイムゾーンを扱わなければならないなど、`ZonedDateTime`を避けられないケースも多々ある。本稿では`ZonedDateTime

元記事を表示

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

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

***Google Slides APIとは***
Googleが提供しているAPIで、Googleスライドに関する操作ができます。

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

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

|No|||目次|
|—|—|—|—|
|1|||[Google Slides APIを使用するための準備](#1-google-slides-apiを使用するため

元記事を表示

JavaのPriorityQueueではまった(間違った順序で要素を返すように見えた)話

# 結論:優先度が適用された順序で取得するには、poll()やpeek()を使いましょう

それ以外のメソッドを使うと、順序が保証されません。
* iterator() →×
* toArray() →×
* toString() →×

* poll() →○
* peek() →○

参考:[https://docs.oracle.com/javase/jp/8/docs/api/java/util/PriorityQueue.html](https://docs.oracle.com/javase/jp/8/docs/api/java/util/PriorityQueue.html)

## 悪い例
“`java:bad_example1.java
import java.util.*;

int[] data = new int[]{10,1,1000,100,10000};
PriorityQueue pq = new PriorityQueue<>();
for(int i = 0; i < data.length; i++) { pq.add(d

元記事を表示

Java+SpringBootでWebAPI作るよ

# なにこれ?
IntelliJでJava+SpringBootを使ってWebAPIを作るよ。
リクエストボディにJSONで値を渡して、API側で受け取るところまで作るよ。
# 環境構築
## 前提環境
Windows11 64bitだよ。
## Java開発に必要なJDKをインストールするよ。
1. https://jdk.java.net/21/
から、Windows向けのzipファイルをダウンロードするよ。
SpringBootだったかIntelliJだったかが最新のバージョン22に対応していなかった気がするから21にするよ。
1. ダウンロード出来たら、適当に解凍して適当なフォルダに配置するよ。
多分パスに日本語が入らないパスがいいよ。
とりあえず`C:¥Java¥jdk-21.0.2`に配置したよ。
1. パスを通す
Windowsの環境変数に以下の通り設定するよ。

||名称|値|
|–|–|–|
|新規|JAVA_HOME|C:¥Java¥jdk-21.0.2|
|追加|PATH|%JAVA_HOME%\bin|

これでコマンドプロンプトで以下のようにJavaが動

元記事を表示

JavaSilverを未経験から3ヶ月で合格した時を振り返る

Java Silverを取得しようと、勉強方法を悩んでいる知り合いがいたので、私が以前、Java SE 8 Silverを取得した時の勉強方法振り返ろうと思います。

# 当時のスペック
– progateを少し触ったことがある程度
– 前職時代の時

なので、能力は0と言っても良いでしょう。

# 勉強期間

– 開始日:2019年7月

– 試験日:2019年9月28日

約3ヶ月で、全くの未経験から合格することができました。

# 参考書

– 徹底攻略 Java SE 8 Silver 問題集
– 黒本とよく言われるものです。(ぶっちゃけ、これのみです。)
– 現時点の最新だと、[徹底攻略Java SE 11 Silver問題集 [1Z0-815]対応](https://hb.afl.rakuten.co.jp/ichiba/1d5aa798.217b1dd2.1d5aa799.01b58bc8/?pc=https%3A%2F%2Fitem.rakuten.co.jp%2Fbook%2F16069799%2F&link_type=hybrid_url&ut=ey

元記事を表示

ジュニアが知っておくべき、いい例外の処理方法

# はじめに

良い例外処理はソフトウェアの安定性を高め、ユーザーエクスペリエンス(UX)を向上させるために重要です。
例外で、アプリがクラッシュするのを防止し、ユーザーは発生した問題に対して、その問題の原因を把握できます。
また、その問題が解決できる意味のあるエラーメッセージを受け取ります。
それだけではなく、明確な例外処理を作成しておくことで、エンジニアは例外を把握しやすくなり、迅速な対処が可能となります。

特に、複雑なシステムで色んな層のプロセスがある場合、各層にふさわしい例外処理をすることで、プロジェクトを管理の利便性が向上させるはずです。

一方、プロジェクトの色んな所で例外処理を過度に使うと、ビジネスロジックを把握しずらいほど、例外が増えることもあるでしょう。

この記事では、良いコードの書き方をするために、必要な例外処理について説明します。

> 例のコードはJavaとSpringで実装されています。

# 回復可能なエラーと回復不可能なエラーを区別する

エラーが発生した際、一番最初にすべきことは**回復可能なエラーと回復不可能なエラーを区別**することです。
すべて

元記事を表示

SpringBootでシステム起動時に独自処理を追加(ログ出力など)

# この記事はこれの続きです

https://qiita.com/waokitsune/items/a6b2f281b99135cbc5b8

# ApplicationRunnerクラスの実装

SpringBootにはApplicationRunnerという名前の抽象クラスが用意されています。
これを実装するとシステム起動時に独自処理を追加できます。

“`java:NekoApplicationRunner.java
package com.example.demo;

import java.net.InetAddress;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;

@Component
p

元記事を表示

Javaおすすめの書籍(2024)

## 概要
私がこれまでに読んだJava関連書籍からおすすめのものを抜粋して分類・評価しました。
> **抜粋2冊**

## 本ページの見方
点数は、下記の基準で5段階に★を付けました。
(抽象的で平易な場合)
> **具体的 ★★★★★ 抽象的**

> **平易 ★☆☆☆☆ 難解**

# おすすめの書籍一覧
## 文法解説書
[『Javaプログラマ Silver SE11 スピードマスター問題集』](https://www.amazon.co.jp/%E3%82%AA%E3%83%A9%E3%82%AF%E3%83%AB%E8%AA%8D%E5%AE%9A%E8%B3%87%E6%A0%BC%E6%95%99%E7%A7%91%E6%9B%B8-Java%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E-Silver-%E3%82%B9%E3%83%94%E3%83%BC%E3%83%89%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%BC%E5%95%8F%E9%A1%8C%E9%9B%86-%E8%A9%A6%

元記事を表示

Caused by: org.gradle.workers.internal.DefaultWorkerExecutor$WorkExecutionExceptionの解決方法

### はじめに
AndroidStudioで開発しているとたまに以下のようなエラーが発生してビルドが通らなくなったりします。

“`
Caused by: org.gradle.workers.internal.DefaultWorkerExecutor$WorkExecutionException: A failure occurred while executing com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable
“`
そんな時に僕が試している解決方法を備忘録として残しておきます。

### キャッシュの削除

File → nvalidate Cashesを選択。
![スクリーンショット 2024-04-14 15.56.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3113615/1b0a2008-7d1a-aa35-e5b2-12ab2e5a5deb.png)

キャッシュをクリアする項目を選択してから

元記事を表示

【ChatGPT】30分でAndroidアプリ作ってみた

## はじめに
はじめまして、記事主は2023年8月からAndroidエンジニアとして働いています。
最近個人開発を始めようと思い、Androidの開発環境を整えてみたのですが、ふとChatGPTに作成依頼したらどこまでのものができるのか興味が湧いたので、試してみたいと思います。
使用する言語はKotlinになります。
また、今回作成するアプリは簡単な**ToDoアプリ**です。
それではいきましょう。

## まずは雑に依頼してみる
まず依頼した内容がこちら

![スクリーンショット 2024-04-13 15.03.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3113615/cb7fe4b9-a970-420f-81c2-bcb2a5582141.png)

なんとも雑ですね。回答がこちら

### MainActivity

“`kotlin
import android.os.Bundle
import android.widget.ArrayAdapter
import androi

元記事を表示

ジェネリクスのワイルドカード

## ジェネリクスとは
異なるデータ型に対して同じ処理を行うための仕組み。
→データ型ごとにメソッドを作る必要がなくなる

## ワイルドカードとは
より柔軟に扱うための構文。
IntegerはNumberのサブクラスなので
“` java
Number num = Integer.valueOf(10);
“`
↑はOK
“` java
List list = new ArrayList();
List integerList = new ArrayList();
list = integerList;
“`
↑はNG

変数には親クラス型で宣言したものに、サブクラスのインスタンスを格納することができる。
ジェネリクスを使ったものについては、サブクラスのインスタンスを格納することはできない。

### 非境界ワイルドカード型
あらゆる型のオブジェクトを受け入れる型。
``と記載する。
“` java
List myList = new ArrayList<>();
List

元記事を表示

SpringBootでApachePOIを使ったxlsxに印刷設定

# この記事はこれの続きです

https://qiita.com/waokitsune/items/be5f171ed781dfc3980e

# 概要

xlsxの生成とダウンロードは以前の記事でやってるので説明は省略。
印刷設定がメインです。

『全ての列を1ページに印刷』は試行錯誤して、想定通りになるまでけっこう時間かかったので、そのノウハウも書いてます。

# Controllerクラス

“`java:DemoController.java
package com.example.demo;

import java.io.IOException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.PageMargin;
import org.apache.poi.ss.usermodel.PrintSetup;
import o

元記事を表示

SpringBootでApachePOIを使ったxlsxに列幅と行高さ設定

# この記事はこれの続きです

https://qiita.com/waokitsune/items/4bb38434e398dde52e7b

# 概要

xlsxの生成とダウンロードは以前の記事でやってるので説明は省略。
列幅と行高さの設定がメインです。

# Controllerクラス

“`java:DemoController.java
package com.example.demo;

import java.io.IOException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.util

元記事を表示

SpringBootでApachePOIを使ったxlsxにセル書式設定

# この記事はこれの続きです

https://qiita.com/waokitsune/items/6f7d8c87e330c3c4f054

# 概要

xlsxの生成とダウンロードは前回の記事でやってるので説明は省略。
枠線、背景色、フォント、文字揃え位置などの書式設定についてがメインです。

# Controllerクラス

“`java:DemoController.java
package com.example.demo;

import java.io.IOException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;

import org.apache.poi.ss.usermodel.BorderStyle;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.FillPat

元記事を表示

OTHERカテゴリの最新記事