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

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

Todoアプリ(Java)

chatGPTにJavaで作らせたTodoアプリです。以下の3つのソースファイルを作ります。

~~~java:TodoItem.java
public class TodoItem {
private String task;
private boolean completed;

public TodoItem(String task) {
this.task = task;
this.completed = false;
}

public void complete() {
this.completed = true;
}

public boolean isCompleted() {
return completed;
}

@Override
public String toString() {
return (completed ? “[完了] ” : “[未完了] “) + task;
}
}
~~~

元記事を表示

【Maven】プロジェクト作成からビルドまで

## はじめに
Mavenプロジェクトの作成からビルドまでの概要をサクッと知りたい方向けの記事です。
初めてMavenに触れる方への参考になれば幸いです。

Mavenは、Javaでソフトウェア開発を行うためのプロジェクト管理ツールです。
プロジェクトをビルドしたり、Javadocやプロジェクトサイトを生成することができます。
ビルド手順を書かないため、シンプルで高度な自動化が実現できます。

## 0.実行環境
vscode
Java 17
apache-maven-3.9.6

## 1.プロジェクト構成
以下のような、Maven標準のフォルダ構造を作成します。
“`:maven-sample-project
│ pom.xml

└─src
├─main
│ ├─java
│ └─resources
└─test
├─java
└─resources
“`

## 2.pom.xml(構成ファイル)の作成
pom.xmlは、プロジェクトの設定を記述したファイルです。
ビルド内容や、依存するライブラリの情報

元記事を表示

Interfaceを使用してSwitch文の保守性を上げる

interfaceを使用して、Switch文を多用したコードの可読性を上げる方法を記載します。

### サンプルコード

ワンちゃんの種類に応じて、可愛さ、攻撃力、知名度を返す関数を考えます。
ワンちゃんの種類は`DogType`のEnumに定義し、`Dog`クラスの各関数がそれぞれ値を返します。

“`DogType.java
package org.example.interfaceExample;

public enum DogType {
kyabaria,
tiwawa,
doberman
}
“`

“`Dog.java

package org.example.interfaceExample;

public class Dog {
public int cutePoint(DogType dogType) {
switch (dogType) {
case tiwawa -> {
return 5;
}
ca

元記事を表示

UT カバレッジ率100%にする

## UTとは
1つのプログラムが期待通りに確認する作業のことです。
## カバレッジ率とは
プログラムの処理の網羅率を言っています。すべての処理をカバーしている場合は100%になります。
## カバレッジ率を100%にするには 条件分岐をすべてカバーする
if文の条件式に対して真のケースと偽のケースを用意する必要があります。
下記プログラムの①の条件式を全て満たすには、resultが100のケース(真)と100以外のケース(偽)が必要です。
②の条件式を全て満たすには、rseultが300または200のケース(真)と300と200以外のケース(偽)が必要です。
③には上記以外のケースが必要です。

“`java
int result = 100;
①if (result == 100) {
特定の処理を実行;
} ②else if(result == 300 || result ==200){
特定の処理を実行;
}③else {
特定の処理を実行;
}
“`

条件式を満たすことができない場合があります。それは条件式が100と100以外の場合で以外がelseではなく、else

元記事を表示

COBOL→Javaマイグレーションへの布石

## COBOLをJavaに変換する
COBOLからJavaへのプログラム変換を具体例を挙げながら
変換して行こうと思います。

今回は秀和システムの「開発で役立つCOBOLプログラミング入門」の確認問題のプログラムをカスタマイズしたものを、Javaに変換するとどうなるか見ていこうと思います。

まずはCOBOLプログラムの方、実際に本に掲載されているプログラムを一部カスタマイズして変更しています。
“`Main03.cbl

IDENTIFICATION DIVISION.
PROGRAM-ID. Main03.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 カウンタ PIC 9(2).
01 年齢 PIC 9(2).
PROCEDURE DIVISION.
対象抽出

元記事を表示

Scannerを用いた標準入力まとめ

個人的な備忘録も含めてScannerを用いた様々な標準入力をまとめてみた。

# Scaneerクラスの基本的な使い方
1.「java.util.scanner」をimportする
2. Scannerクラスのインスタンスを作成(引数にはSystem.inを指定)

## 主な入力メソッド
|メソッド|内容|
|——-|—-|
|next()|空白までの文字列を取得|
|nextLine()|1行分の文字列を取得|
|nextInt()|入力した文字を整数型に変換。※整数以外を入力するとエラー|

### 1. 基本的な使用
“`Java
import java.util.Scanner;

public class Main{
public static void main(String[] args){
//Scannerクラスのインスタンス作成
Scanner scanner = new Scanner(System.in);

//入力内容を取得
String text = scanner.next();

//入力

元記事を表示

Spring Bootを使ってWebアプリケーションを作成する方法(開発環境準備編)

# はじめに
 今回は、Spring Bootを使ってWebアプリケーションを作成する際の開発環境の準備について説明します。

# 開発環境の準備
### Spring Initializr
 Spring Initializrを使って、プロジェクトの雛形を作成します。これはSpring Bootでプロジェクトを始める際、ビルドツールや開発言語、依存性の設定などをGUIで設定できるサービスです。作成されたフォルダをIDEで開けばすぐに開発を始められるので便利ですね。

![スクリーンショット (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3774406/c5cef2c8-a89a-22cc-5df4-0d676321a516.png)

https://start.spring.io/

 ビルドツールはMaven、Javaは最新の22を使用します。Javaのインストールについては割愛します。
 また、今回は簡易的な家計簿アプリを作成します。

 依存性は右上のDependenciesで設定しま

元記事を表示

[社内LT用]値オブジェクトに関して例を用いながら説明

良いコードに関しての本を最近読んでいました。その中から普段の仕事に生かしていきたいなと思った内容を例を使用しながらまとめます。

#### 使用するサンプル

良くあるお金計算のロジックを例にして、お話しします。

“`Main.java
package org.example;

import java.util.List;

public class Main {
public static void main(String[] args) {
// 注文一覧 (値段, 量)
List> orders = List.of(
List.of(500,5),
List.of(200,6),
List.of(100,4)
);
// 合計金額計算
int sum = 0;
for (List order : orders) {

元記事を表示

[Google Photos Library API] JavaでGoogleフォトのアルバムにメディアアイテム(写真や動画)を追加する

Google Photos Library API(Java)を使用して、
Googleフォトのアルバムにメディアアイテム(写真や動画)を追加する方法
についてご紹介します。

アルバムに追加するメディアアイテムは、Photos Library APIで
アップロードしたメディアアイテムのみになります。

メディアアイテムの追加方法は
[⧉[Google Photos Library API] JavaでGoogleフォトのメディアアイテム(写真や動画)を追加・更新する](https://qiita.com/doran/items/fd6ea924f8ce8071ce8c)
を参照ください。

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

|No||目次|
|—|—|—|
|

元記事を表示

Webアプリの開発環境からデータベースに接続できるようにする

# 前書き

https://qiita.com/gengen0719/items/bcdda4b8571f5e687051

この記事はこちらの記事の続き。
せっかくなのでデータベースを利用できるようにする。

# データベースの準備

## Dockerデスクトップのインストール

Docker Desktop for Windowsを押してインストーラーをダウンロードしてインストール。

https://docs.docker.com/desktop/install/windows-install/

## MySQLのDocker imageを取得する
“`
docker pull mysql
“`

## Docker Imageの起動
“`
docker run –name testdb -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=testdb -P –expose=3306 -p 3306:3306 -d mysql:latest
“`
– データベースの名前は `testdb`
– データベースのrootユーザ

元記事を表示

[Google Photos Library API] JavaでGoogleフォトのアルバムにエンリッチメントを追加する

Google Photos Library APIを使用して、
Googleフォトのアルバムにエンリッチメントを追加する方法
についてご紹介します。

**Googleフォトのエンリッチメントとは**
アルバムにいろいろな情報を紐づけることでアルバムのグルーピングが行えます。

Googleフォトのエンリッチメントは、テキスト、位置情報、地図の 3種類に対応しています。
|エンリッチメント|内容|UIの場所|
|—|—|—|
|テキスト|アルバムにアノテーションを付けるために挿入できる書式なしテキストの文字列||
|位置情報|場所にアノテーションを付けるために挿入できる場所の名前|DB操作を行う機能で「Bad value for type long」が出た際の原因と解決策

# 事象
Webアプリケーションのある機能で例外が発生し、ログを確認すると「**Bad value for type long**」と出力されている。
この機能はDB操作を伴う機能であるため、発行したSQLをデバッグしてみたところ正常に動作し、SQL自体は間違ってなさそうなことが分かっている。
# 解決策
DBにTimestampで定義されているカラムをUNIX秒(Long型)で取得したい場合
SQL発行後にまずは`java.sql.ResultSet.getTimestamp()`で値を取得する。
その後、`java.sql.Timestamp.getTime()`を呼び出して、java.sql.Timestamp型からLong型のUNIX秒に変換することができる。
“`java:修正後
Long lUnixTime = resultSet.getTimestamp(“DATETIME”).getTime();
“`
# 原因
アプリケーション内でDBへのSELECT文発行結果を取得する部分のコードに問題があった。
DB内にTimestamp型で格納されているカラムに対して`r

元記事を表示

JavaのOptionalをgolangにportする

# はじめに

Java さわってますか?私は10年近くさわってません。[JDK 8 Release Notes](https://www.oracle.com/java/technologies/javase/8all-relnotes.html#JSERN108)を見ると2014年5月15日にリリースされているので大体10年です。

この10年位は golang をさわってます。

Javaの勉強もしなければなと思いつつも、作りたいアプリケーションも特にありません。ドキュメントを読んでるだけというのも長続きしないかなと思ってます。そんな時に以下の2つのブログを読みました。

* [Goのヌル安全について](https://zenn.dev/nobonobo/articles/f49dd93073fdd3c6c663)
* [元JavaエンジニアがGoに感じた「表現力の低さ」と「開発生産性」の話](https://inside.dmm.com/articles/ex-java-engineer-thoughts-about-go/)

これらを読んで「 Java の Optional

元記事を表示

[Google Photos Library API] JavaでGoogleフォトの共有アルバムに参加・退出する

Google Photos Library APIを使用して、
Googleフォトの共有アルバムに参加・退出する方法
についてご紹介します。

共有アルバムへの参加・退出は、共有済みのアルバムで
同じGCP認証、かつPhotos Library APIで作成したアルバムのみになります。

アルバムの作成方法は
[⧉[Google Photos Library API] JavaでGoogleフォトのアルバムを作成・更新する](https://qiita.com/doran/items/b5ecc7005f19fbf0a35a)
を参照ください。

作成したアルバムの共有方法は
[⧉[Google Photos Library API] JavaでGoogleフォトのアルバムを共有・共有解除する](https://qiita.com/doran/items/b15fe890e79d9b0d9d18)
を参照ください。

:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Google Photos Library API(V1)] Java

元記事を表示

No.6【フローチャート(流れ図) 順次処理】

**【動画URL】** https://youtu.be/_fyVr5NOlGw

仕事の流れ・手順や処理などを示す図
決まった図を使うので、だれもがある程度同じものさしで見ることが出来る
正解はない

**【順次処理】朝起きてから家を出るまで**
![test.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3680113/bc3f6714-6e65-577a-fcb8-7c611ae65d5e.png)

まとめてご覧になりたいあなたは
https://zenn.dev/codek2/books/63c880c460c21e

Twitterもよろしければどうぞ!
[https://twitter.com/kunchan2_](https://twitter.com/kunchan2_)

詳しく学びたいあなたは
https://zenn.dev/codek2/articles/e9e44f3e0023fb

元記事を表示

No.5【コンピュータの3大考え方】プログラミングは一部の方だけのものではない!はじめてのプログラミング入門講座(アルゴリズムとJava基礎)動画付き

**【動画URL】** https://youtu.be/CfU-z__0GtU

プログラミングをする時は、以下のどれかが使えないか考えて作ると良い

**順次構造**
上から順番に実行される

**分岐構造**
天気が雨の時は傘を持って行く、晴れの時は持っていかないなど条件によりやることが変わる
![](https://storage.googleapis.com/zenn-user-upload/57796d987536-20231009.png)

**繰り返し(反復)構造**
陸上トラックをぐるぐる回る様に、同じことを何回も繰り返す
![](https://storage.googleapis.com/zenn-user-upload/a46035309038-20231009.png)

まとめてご覧になりたいあなたは
https://zenn.dev/codek2/books/63c880c460c21e

Twitterもよろしければどうぞ!
[https://twitter.com/kunchan2_](https://twitter.com/kunc

元記事を表示

357日目「よく使うプログラム言語」について紹介する社畜M

## はじめに
社畜Mです。今回私はSEの人たちが使用するプログラム言語の中で最も使われているであろう5つの簡単な特徴と、それぞれの使いどころと使うときの注意点について紹介していこうと思います。予習や復習だと思ってみてみましょう!
デュエル!!

### 1.Python
行くぜ!まず一つ目はこいつだ!ドロー!
Pythonはシンプルで読みやすい構文が特徴のプログラミング言語で、初心者にとって扱いやすく、さまざまな用途に使われています。Web開発からデータ分析、AIの開発まで幅広い領域で利用されていて、特にデータ処理や科学技術計算において強力なライブラリが揃っており、簡潔なコードで高度な処理が可能です。
– **注意点**
– 実行速度がほかの言語に比べて遅い
– Pythonは動的型付け言語であり、実行時に型の解決が行われるため、コードの実行に余分なオーバヘッドが生じることがあります。
– Pythonのインタプリタは動的な型変換やガベージコレクションなどのオーバーヘッドがあり、これが実行速度に影響を与えることがあります。

元記事を表示

Springを使っている時に静的メソッドじゃなくてDIを使うようにした

状態を持たないロジックを実装したいとき、以前は以下のように書いていました。
静的なクラスメソッドを使って、判定するみたいな。

“`kotlin
class Validator private constructor() {
companion object {
fun validate(foo: String){
if foo == “NG”{
throw Exception(“validation error”)
}
}
}
}
“`

呼び出し元イメージ
“`kotlin
@RestController
class Controller(service: Service){
fun bar(@GetMapping String foo) {
Validator.validate(foo)
service.someMethod(foo)
}
}
“`

ただ、現在はSpringを使って開発しており、D

元記事を表示

[Google Photos Library API] JavaでGoogleフォトのメディアアイテム(写真や動画)を追加・更新する

Google Photos Library API(Java)を使用して、
Googleフォトのメディアアイテム(写真や動画)を追加・更新する方法
についてご紹介します。

メディアアイテムを追加できるアルバムはPhotos Library APIで作成したアルバムのみになります。
アルバムの作成方法は
[⧉[Google Photos Library API] JavaでGoogleフォトのアルバムを作成・更新する](https://qiita.com/doran/items/b5ecc7005f19fbf0a35a)
を参照ください。

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

|No|||目次|
|—|—|—|—|
|1|||[メディアアイテムを追加](#1-メ

元記事を表示

【Flutter】Javaのバージョンを上げるのにハマった

# はじめに
### Javaのバージョンを上げることになった経緯
[package_info_plus](https://pub.dev/packages/package_info_plus)のバージョンを上げると、下記のようなエラーが出ました。
“`
Execution failed for task ‘:package_info_plus:compileDebugJavaWithJavac’. > エラー: 17は無効なソース・リリースです
“`

調べたところ、下記のIssueがヒットし、どうやら、[package_info_plus](https://pub.dev/packages/package_info_plus)の`6.0.0`以降では、Javaのバージョン17が必要みたいです。
https://github.com/fluttercommunity/plus_plugins/issues/2809

パッケージのCHANGELOGにも書いてありました。

https://pub.dev/packages/package_info_plus/changelog#6

元記事を表示

OTHERカテゴリの最新記事