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

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

Spring Boot 2.6.6 から 3.1.2 へのバージョンアップ対応

# 背景
BIPROGY では Spring Boot ベースのサンプルアプリケーション「Dressca」を作成し、様々な案件で雛形として使っています。
この Doressca は Spring Boot のバージョン 2.6 系で作られていたのですが、サポート期限が 2022/11/24 、有償サポートも 2024/02/24 となっていることから、 3.1 系へとバージョンアップする必要がありました。
最近の OSS は破壊的な変更は少なくなりつつあるものの、 Spring Boot 2 系から 3 系へのメジャーバージョンアップであることや Jakarta EE9 への対応などがあるため、それなりの非互換が予想されました。
本記事は、バージョンアップ作業で(予想通り)様々な非互換、非推奨に直面し、試行錯誤しながら対応した記録です。
これから Spring Boot 3 系にバージョンアップしようとしている誰かの支えになれると幸いです。

# バージョンアップの詳細
Spring Bootのバージョン 2.6 系から 3.1 系へとバージョンアップすることで、 Java や Gr

元記事を表示

Javeとシェルスクリプトでセルフメディケーション税制合計額を算出する。

# はじめに

皆さんは確定申告をされたことはあるでしょうか?

今回はセルフメディケーション税制の合計額をいくら使ったかを見ていきたいと思います。

確定申告されたいる方なら知っていると思いますが、セルフメディケーション税制とは年間12000円以上第2類医薬品を買うと、確定申告の時に控除されるというものです。

ドラッグストアで該当医薬品(風邪薬や頭痛薬など対象)を買うとレシートの商品名の横辺りに◆マークがついていると思います。

レシートをファイルに見立てて、購入日付、商品名、税抜き額をJavaでファイルを作成し、軽減税率を加味して、税率と税込額をシェルスクリプトで算出します。
そして最後にセルフメディケーション税制の合計額を算出したいと思います。

セルフメディケーション税制対象は商品名の頭に◆、軽減税率では消費税8%対象が商品名の頭に*を付けます。

因みに、今回の購入商品はあくまでも一例であり、設定はフィクションです。

## Javaのプログラムから見ていきましょう。
“`Java:Medicine.java

import java.io.*;

class Recei

元記事を表示

eclipse で Tomcat始動時に「ポートが無効」と表示されたら

# もし以下のような事象に遭遇したら…
~~~
1つ以上のポートが無効なため、サーバーを始動できません。
サーバー・エディタを開き、無効なポートを訂正してください。
~~~
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3658170/560f851e-001f-25a4-4151-05a64e616cfd.png)

# Tomcat管理ポートを設定しよう
こんな感じ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3658170/6de7a9d7-583e-ce44-a54d-f152ba604888.png)

以上

元記事を表示

なんとなくで触れてきた「pom,maven,jar」について

## やること
Javaのアプリを作るにあたってなんとなくで触れてきたファイルについて整理する。

## 選ばれし、ものたち
– pomファイル
– maven
– jarファイル

### chatgptに聞いてみた
MavenはPOMを使用してJavaプロジェクトを管理し、プロジェクトのビルドと依存関係の解決を自動化します。そして、その結果としてJARファイルが生成され、他のプロジェクトで利用できるようになります。

### それぞれ
・pomファイル
プロジェクトのメタデータ(名前、Ver、依存関係、プラグイン)を記述
・maven
Javaプロジェクトのビルドを実行する。このとき、pomファイルから情報を得る
・jarファイル
Javaのプログラムやリソースをまとめたもの。pomをmavenでビルドした時に生成される。デプロイの時に使用される*

*Webアプリの時にはWARファイルも必要となる

### まとめ
pomファイルに依存関係やプラグインを記載し、 mavenでpomをインプットにして、ビルドし、jarファイルを生成する。jarファイルにはプログラムやリソースをまと

元記事を表示

[Google Forms API(V1)] JavaでGoolgeフォームの変更監視中リストを取得する

Gmail API v1(Java)を使用して、
Goolgeフォームの変更監視中のリストを取得する方法
についてご紹介します。

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

|No||目次|
|—|—|—|
|1||[監視中リストの取得](#1-監視中リストの取得)|
||1|[スコープ](#11-スコープ)|
||2|[実行](#12-実行)|
||3|[レスポンスの内容](#13-レスポンスの内容)|

## 1. 監視中リストの取得
監視中のリストを取得します。

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

元記事を表示

[Google Forms API(V1)] JavaでGoogleフォームの情報を取得する

Google Forms API V1(Java)を使用して、
Googleフォームの情報を取得する方法
についてご紹介します。

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

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

## 1. フォームを取得
指定したGoogleフォームの情報を取得します。

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

“`
FormsScopes.DRIVE
FormsScopes.DRIVE_FILE
FormsScopes.DRIVE_RE

元記事を表示

[Google Forms API(V1)] JavaでGoogleフォームの回答を取得する

Google Forms API V1(Java)を使用して、
Googleフォームの回答を取得する方法
についてご紹介します。

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

|No||目次|
|—|—|—|
|1||[回答一覧を取得](#1-回答一覧を取得)|
||1|[スコープ](#11-スコープ)|
||2|[実行](#12-実行)|
||3|[レスポンスの内容](#13-レスポンスの内容)|
|2||[回答を取得](#2-回答を取得)|
||1|[スコープ](#21-スコープ)|
||2|[実行](#22-実行)|
||3|[レスポンスの内容](#23-レスポンスの内容)|

## 1. 回答一覧を取得
指定したGoogleフォームの回答一覧を取得します。

### 1.1. スコープ
このAPIを実

元記事を表示

JavaのStreamAPIの「中間操作」について

Streamインスタンスを作成したら、次は任意の中間操作ができます。
Streamインスタンスの作成方法については、以下の記事を参照してください。
[JavaのStreamインスタンスを作成する](https://qiita.com/nakajima417/items/f80701b51dca680b719e)

## JavaのStream APIにおける中間操作
JavaのStream APIにおける中間操作は、ストリームの各要素に対して何らかの処理を行い、その結果を新しいストリームとして返す操作です。中間操作は遅延実行され、終端操作が呼び出されるまで実際の処理は行われません。以下に、よく使われる中間操作のいくつかを紹介します。

## filter
__条件に合う要素だけを取り出します。__
filter 操作は、ストリームの各要素に対して条件をテストし、その条件を満たす要素のみを含む新しいストリームを生成します。条件はラムダ式で指定します。
この操作をすることで要素の数は減りますが、要素の型自体は変わりません。

例えば、次のコードでは、名前が “A” で始まる要素のみをフィ

元記事を表示

Spring bootの構築ツール(Spring Initializr)

## Spring Initializr
Spring Bootを使った簡単なウェブアプリケーション、Spring Initializrを使用してプロジェクトを生成し、簡単なRESTfulウェブサービスを作成できる。
https://start.spring.io/

## 構築(Hello World)
### プロジェクトのセットアップ
Spring Initializr(https://start.spring.io/) にアクセスします。
以下の設定を行います:
– Project: Maven Project
– Language: Java
– Spring Boot: 最新バージョンを選択
– Project Metadataを入力(Group, Artifactなど)
– Dependenciesに「Spring Web」を追加
– 「Generate」ボタンをクリックして、プロジェクトを生成し、ダウンロード
![截屏2024-03-26 19.50.09.png](https://qiita-image-store.s3.ap-northeast-1.

元記事を表示

[Google Forms API(V1)] JavaでGoogleフォームを生成・更新する

Google Forms API V1(Java)を使用して、
Googleフォームを生成・更新する方法
についてご紹介します。

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

|No||目次|
|—|—|—|
|1||[フォームを生成](#1-フォームを生成)|
||1|[スコープ](#11-スコープ)|
||2|[実行](#12-実行)|
||3|[レスポンスの内容](#13-レスポンスの内容)|
|2||[フォームの更新](#2-フォームの更新)|
||1|[スコープ](#21-スコープ)|
||2|[実行](#22-実行)|
||3|[レスポンスの内容](#23-レスポンスの内容)|

## 1. フォームを生成
新しく空のGoogleフォームを作成します。

生成時にフォームの内容は設定できません。

元記事を表示

Maven が取得するライブラリの確認環境を作る

# 1. はじめに

Maven プロジェクトを新規に作成する際や、既存の Maven プロジェクトのライブラリをバージョンアップする際に、「取得されるライブラリのファイル(JAR ファイル)を事前に確認したい」ということはないでしょうか(私はあります)。
pom.xml の依存関係定義(dependency)のバージョン値や並び順を変更しただけで予想外の JAR ファイルも更新されてしまうことは珍しくないですが、その調査や対処を実際の開発プロジェクトの中で行うのはなかなか骨が折れる作業です(ビルドに時間がかかるとか、余計な確認対象が多すぎるとか、面倒なことが多いです)。

そこで私の場合は、Maven が取得するライブラリのファイルを確認するためだけのシンプルな Maven プロジェクトを使っています。そして、その環境で確認がとれた依存関係定義を開発プロジェクトに反映しています [^1]。

# 2. 環境

Windows 10 Home
Java 17.0.7
Maven 3.8.8

# 3. プロジェクト構成

![mvntest-app-tree3.png](https:/

元記事を表示

[Google Forms API(V1)] GoogleフォームとFormクラス

Googleフォームを生成したり、情報を取得する際に使用する
com.google.api.services.forms.v1.model.Formクラス
と実際のGoogleフォームのUIを関連づけました。

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

|No||目次|
|—|—|—|
|1||[フォーム](#1-フォーム)|
||1|[フォームのタイトルと説明](#11-フォームのタイトルと説明)|
|2||[質問](#2-質問)|
||1|[質問を追加、質問をインポート](#21-質問を追加質問をインポート)|
||2|[ユーザーへ複数の質問](#22-ユーザーへ複数の質問)|
||3|[タイトルと説明を追加](#23-タイトルと説明を追加)|
||4|[画像を追加](#24-画像を追加)|
||5|[

元記事を表示

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

Googleが提供しているGoogle Forms API(V1)をJavaで使ってみました。

***Google Forms APIとは***
Googleが提供しているAPIで、Googleフォームに関する操作ができます。

Google Forms APIの利用料金は無料です。
ただし、1日あたりの利用制限はありませんが、分単位での利用制限があります。

|リクエスト||プロジェクト単位|ユーザー、プロジェクト単位|
|—|—|—|—|
|読込み系|回答一覧の取得以外|975回/分|390回/分|
||回答一覧の取得|450回/分|180回/分|
|書込み系||375回/分|150回/分|

詳細はGoogleの公式ドキュメントをご覧ください。
[⧉使用量上限](https://developers.g

元記事を表示

JavaのStreamインスタンスを作成する

Java8で導入されたStreamAPIの具体的な使い方を使い方を説明していきます。
まずそのStreamインスタンスの作成方法から見ていきましょう。
## ListやSetからStreamを作成する場合
Collection インターフェース(List や Set など)の stream() メソッドを使用して、ストリームを作成します。

“` java
import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;

public class StreamExample {
public static void main(String[] args) {
List list = Arrays.asList(“Apple”, “Banana”, “Cherry”);
Stream stream = list.stream();
stream.forEach(System.out::println);

元記事を表示

#9【勉強メモ】エヴァンス本からざっくり理解するDDD

## 目標
・ふわっとした理解のDDDについて[エヴァンス本](https://www.amazon.co.jp/%E3%82%A8%E3%83%AA%E3%83%83%E3%82%AF%E3%83%BB%E3%82%A8%E3%83%B4%E3%82%A1%E3%83%B3%E3%82%B9%E3%81%AE%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E9%A7%86%E5%8B%95%E8%A8%AD%E8%A8%88-Architects%E2%80%99Archive-%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E9%96%8B%E7%99%BA%E3%81%AE%E5%AE%9F%E8%B7%B5-%E3%82%A8%E3%83%AA%E3%83%83%E3%82%AF%E3%83%BB%E3%82%A8%E3%83%B4%E3%82%A1%E3%83%B3%E3%82%B9/dp/4798121967/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%B

元記事を表示

[Gmail API] Javaで送信者エイリアス宛に確認メールを送る

Gmail API v1(Java)を使用して、
Gmailの送信者エイリアス宛に確認メールを送る方法
についてご紹介します。

**送信者エイリアスとは**
メールを送信する時、送信者エイリアスからメールを送信しているように見せることができる機能です。
最初に、メール転送を設定してアクティブにしておきます。
Gmailでは、「設定」 -> 「アカウントとインポート」 -> 名前:「他のメールアドレスを追加」
から設定できます。

このAPIは、ドメイン全体の権限を委任されたサービスアカウントを
使用しての発行のみ利用可能です。OAuth 2.0では利用できません。

:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Gmail API] JavaでGmail APIを使う]

元記事を表示

【Java】Mac で Java を利用するときに注意すべきエラーと対処法

※間違って「Q&A」に投稿してしまったので、「記事」に再掲します🙇‍♂️

## 概要
macOS で、PC ゲームの「Minecraft(マイクラ)」の Java版に Mod を導入しようと思って、使用 PC で初めて Java を利用した際に発生したエラーに対する対処法の備忘録。

### 前提
OS: macOS 13.3.1 (Ventura)
CPU: 3.2GHz 8コア Intel Xeon W

## 発生した事象
Mod を導入するための前提 Mod **「Minecraft Forge」** を導入するため、そのインストーラ(**forge-1.20.2-48.0.37-installer.jar**)をダウンロードしてダブルクリックで実行したら、以下のエラーメッセージが発生。

:::note info
「Mod」とは、一般には、ゲームを拡張・変更する非公式のプログラムやソフトウェアのこと。
:::

“`
操作を完了できませんでした。
Unable to locate a Java Runtime.
Please visit http://www.java.c

元記事を表示

ChatGPTでJava+XML-RPCでのWordpressへの投稿方法を調べた話

## はじめに

こんにちは。いりくら@アノードです。
完全自動運用のニュースメディア「[BizAIdea](https://bizaidea.com/ “BizAIdea Home”)」 を開発/運用しているのですが、Wordpressへの記事投稿の自動化に JavaからXML-RPC を利用した際、ChatGPTに大いに助けてもらったので、その流れをご紹介します。

## なぜ WordPressの投稿にXML-RPC を使ったか?
本来、Wordpressへのプログラムによる投稿は標準のAPIを利用するのが本筋かと思いますが、Wordpressを立てているレンタルサーバーのConohaWingではAPIの利用制限されているようで、利用できませんでした。
(私の調べ方が不足していたらすみません。)

API以外でもXML-RPCを利用することでプログラムからの記事投稿ができるようだったので、今回はXML-RPCを利用することとしました。

ちなみにJavaを利用したのは、クローラー等の関連するプログラムがJavaだった都合によるもので、もちろんPythonやPHPなどでも同様のこと

元記事を表示

[Gmail API] Javaでメールボックスのプッシュ通知を開始・更新・停止する

Gmail API v1(Java)を使用して、
Gmailメールボックスのプッシュ通知を開始・更新・停止する方法
についてご紹介します。

Gmailのプッシュ通知はPub/SubというGCPのサービスを利用します。

:::note info
Pub/Sub、Cloud Functionsの準備や設定に関してましては、
[⧉[Pub/Sub – Cloud Functions] Google Cloud APIからの通知を受け取る](https://qiita.com/doran/items/343dac28c46143d61917)
を参照ください。
:::
:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Gmail API] JavaでGmail APIを使う](https://qiita.com/doran/items/a078e966bfd93c4b19c2)
を参照ください。
:::

本文中の引数にある「メールアドレス」の指定は、
OAuth 2.0使用の場合は「me」(自身)と指定してください。
「me」は認証され

元記事を表示

Javaを基本からまとめてみた【オブジェクト指向】

## オブジェクト指向

(1)システムとは?

– 個々の様相が相互に影響し合いながら、全体として機能するまとまりや仕組みのこと。
– ITの分野では、個々の電子部品や機器で構成され、全体として何らかの情報処理機能を持つ装置のことやハードウェアやソフトウェア、ネットワークなどの要素を組み合わせ、全体として何らかの機能を発揮するひとまとまりの仕組み(情報システム、ITシステム)のことを指す

(2)オブジェクト指向とは?

“`
1つ1つのクラス、役割を持ったモノ(object)として扱う = オブジェクト指向
“`
– 『ある役割を持ったモノ』事にクラス分割し、モノとモノとの関係性を定義していくことでシステムを作り上げようとするシステム構成の考え方

- モノを表現するためには2つの情報『属性(どのようなものか)』『機能(何ができるか)』が必要

(3)インスタンスとは?

クラスをもとに生成された個々のオブジェクトのことを指す

(4)コンストラクタとは?

インスタンス化されると同時に自動で動き出す特殊なメソッド。
フィールドに実体を定義する上で必要な初期値を代入する役割を

元記事を表示

OTHERカテゴリの最新記事