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

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

【個人開発】SpringBootでGoogleMapsAPIを利用したwebアプリケーションを作成しました(まだ未公開)

## はじめに
今回eclipseでwebアプリケーションを作成しました。
まだAWSなどについて勉強不足で公開できていないのですが、webアプリケーションの開発手順やEclipse、SpringBoot、GoogleMapsAPI、MySQLについて知りたいという方達の役に立ちたいと思ったので、開発のことについてお話ししようと思います。
[GitHub URL]
[https://github.com/HagisawaYuki/GachaMap.git](https://github.com/HagisawaYuki/GachaMap.git)

## 開発したwebアプリについて
今回私が開発したwebアプリは『ガチャマップ』というものです。
![スクリーンショット 2024-04-25 14.25.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3758008/aa8d71b8-7370-d0eb-e45f-fbfcb5bbf4ac.png)
画像としてはこのようなものです。
この赤いピンはガ

元記事を表示

🔰一か月でWebアプリを作成した

[作成したWEBアプリリンク](https://hello-4m00.onrender.com/)
*無料プランのため、初期サイト表示に時間がかかります。
## 目次
1. はじめに
1. 概要
1. ツール・技術・環境
4. 詳細
5. 開発の進め方
7. やってみての感想
8. さいご
8. 参考

## 1. はじめに
一個くらいWEBアプリを作っておきたいよなという思いと、勉強になるかなという考えで実行に至った。

意識したこととしては、別記事に書いたが 参考:[作成前に書いた記事](https://qiita.com/ssatoshi_117117/items/9677c4e248a387c57ef7)
「形にする、突き詰める、あきらめない」

## 2. アプリ概要
大喜利投稿サイトを作成 //当初、投稿サイト(某X)みたいなのを考えたが、ありきたりと思い変えた
できることは以下
– ユーザ管理(登録、ログイン)
– お題の一覧表示、登録
– 回答の一覧表示、登録、投票
– 回答の集計

## 3. ツール・技術・環境
### 使用ツール
– A5m2:DB表示
– VS

元記事を表示

Java レコード・クラス

# はじめに
先日、[Java22](https://openjdk.org/projects/jdk/22/)がリリースされました。
新機能のサンプルの記事を書こうとしたら、原文のサンプルが読めない。。。改めて私の知識がアップデートされていないことに気づいてしまった。。。。

「レコード・クラス」ってなんだ??
## レコード・クラス実装の動機

[ここ](https://www.infoq.com/jp/news/2018/03/data-classes-for-java/) から抜粋

Javaクラスは今まで大量のボイラープレートコードを必要とした。クラスが単純か複雑かどうかにかかわらずだ。このことでJavaは”冗長すぎる”という評価であった。

オラクルのJava言語アーキテクトであるBrian Goetz氏はこう説明しています。

> ごく普通のデータキャリアクラスを責任を持って書くにあたり、価値の低い、退屈なコードを大量に書かなければならない。コンストラクタ、アクセサ、equals()、hashCode()、toString()などだ。そして開発者はこうした重要なメソッドを

元記事を表示

[Cloud Storage API(V2)] Javaでバケットのアクセス権限をテストする

Cloud Storage API V2(Java)を使用して、
Cloud Storageのバケットのアクセス権限をテストする方法
についてご紹介します。

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

|No|||目次|
|—|—|—|—|
|1|||[アクセス権限をテスト](#1-アクセス権限をテスト)|
||1||[スコープ](#11-スコープ)|
||2||[実行](#12-実行)|
||3||[レスポンスの内容](#13-レスポンスの内容)|

## 1. アクセス権限をテスト
指定したバケットのアクセス権限をテストします。

指定したIAMアクセス権限がない場合は、例外が発生します。

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

元記事を表示

データ型

## JavaSilverでメモしたところ備忘録として残しておこうと思います。

# 配列の宣言・初期化について

### 配列の宣言
“`java
//データ型[] 配列変数名
int[] num;

//もしくは、データ型 配列変数名[]
int num[];
“`
### 配列の作成
“`java
//配列変数名 = new データ型[要素数]
num = new int[3];

//初期化
int[] num = new int[3];
“`

#### []の位置は変数名の後ろでもコンパイル可
“`java
int[] num; //もしくは
int num[];

//二次元でも三次元でも同じ

int[][] num;
int num[][];

int[][][] num;
int num[][][];
“`
#### []は分けて書いてもコンパイル可
“`java
int[] num[];
int[] num[][]
“`
#### 変数とインスタンスの次元は一致させる
“`java
int[] array = new int[2][2]; //

元記事を表示

[Cloud Storage API(V2)] Javaでバケットを取得する

Cloud Storage API V2(Java)を使用して、
Cloud Storageのバケットのメタデータを取得する方法
についてご紹介します。

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

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

## 1. バケット一覧を取得
指定したプロジェク

元記事を表示

Javaで「クラス、メソッド、フィールドとは」の動作を確認してみた

# 概要

Javaで「クラス、メソッド、フィールドとは」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/start/const/index2.html

# 実装

以下のファイルを作成しました。
“`Robot.java
class Robot{
int currentPosition = 0;

public static void main(String[] args){
Robot robot = new Robot();
robot.report();
robot.moveForward();
robot.report();
}

void report(){
System.out.println(“Current Position = ” + currentPosition);
}

void moveForward(){
currentPosition = currentPosition + 1;
}
}
“`

以下のコマンド

元記事を表示

SpringBootで独自ログイン画面や認証除外ページ設定

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

https://qiita.com/waokitsune/items/5e2e071687f8ca354805

# 概要

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/1391a2ca-bfde-0e55-2235-32283bd1610e.png)

# WebScurityConfigクラス新規作成

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

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.spri

元記事を表示

[Cloud Storage API(V2)] JavaでバケットのIAMポリシーを取得する

Cloud Storage API V2(Java)を使用して、
Cloud StorageのバケットのIAMポリシーを取得する方法
についてご紹介します。

**IAM**
Identity and Access Managementの略で
リソースへのアクセス制御を管理する機能のことです。
リソースに対し、どのユーザーがどうアクセスするか等の
ルールのことをIAMポリシーと呼びます。

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

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

## 1.

元記事を表示

JavaScript vs TypeScript: Detailed Comparison

JavaScript vs TypeScript: Choosing the right programming language for web development is pivotal to its success. While JavaScript has been in the market for a long time, TypeScript has emerged as an advanced feature-rich alternative to JS.

![banner_webp_362e6798-c6a3-4476-9f44-8e5875dc8ef4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352567/8505fc61-5cb2-00fe-3663-5899c1fbe7e5.jpeg)

If you are also

元記事を表示

[java備忘]switchの文に使用できるデータ型を語呂合わせで覚える

## switchの文に使用できるデータ型を語呂合わせで覚えたい

switch分の式に使用できるデータ型は以下の型である
byte、char、short、int、およびそのラッパークラス、enum、String

## 語呂合わせ

Switch
を買いに来た
ストリート(String)ラッパー(ラッパークラス)
のエミネム(enum)
ショー(short)ウィンド(int)ウに蹴飛ばし
バイちゃ(byte char)

## chatgptでイラスト生成

ラッパーのエミネムがswitchの飾ってあるショーウィンドウに激突する簡易なイラストを生成してください

結果はこちら
![エミネム.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2759654/8ef65a51-5047-5860-8993-6552bd10a3e2.png)
エミネム….?

## まとめ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.

元記事を表示

コマンドクエリ分離の原則とは

# コマンドクエリ分離の原則とは

メソッドでコマンド(副作用)とクエリ(主作用)を分離することが大事という原則です。

値を変えない作用が主作用で値を変える作用が副作用みたいな認識で大丈夫です。
– クエリ(主作用)…値を取得する操作
– コマンド(副作用)…値を変更する操作

以下のように例を見てみましょうー

## コマンドの例(値を変更する)

“`
public class CommandExample {
public static int increaseNumber(int number) {
this.number = this.number+1;
return this;
}
}
“`

## クエリの例(値を取得する等)
“`
public class QueryExample {

public int getNumber() {
return this.number;
}
}
“`

## コマンドとクエリが分離していない場合の例
“`
public class Co

元記事を表示

[Cloud Storage API(V2)] JavaでCloud Storageを使う

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

***Cloud Storage APIとは***
Googleが提供しているAPIで、Cloud Storageに関する操作ができます。

下記にCloud Storageで出現する用語について簡単にまとめました。
|用語|概要|
|—|—|
|バケット|データを格納する基本的なコンテナ|
|オブジェクト|Cloud Storage内に保存する個々のデータ|
|アクセス制御リスト(ACL)|アクセスのレベルを定義するために使用できるメカニズム|
|HMACキー|アカウントに関連付けられた認証情報の一種|

料金は、Cloud Storage APIの実行するAPIによって異なります。
当然ですが、ストレージへの保存容量によっても料金が発生します。

詳細は[公式ドキュメントの「Cloud Storage の料金」](https://cloud.google.com/storage/pricing?hl=ja)を参照ください。

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

元記事を表示

結合度とは

# 結合度とは
結合度とは「モジュール間の依存度の高さを示すもの」です

凝集度に関してはモジュール内の評価に使われるのに対して 結合度はモジュール間の相互依存性(依存度)の程度を示します。

凝集度は以下を読んでください

https://qiita.com/kotukotukun/items/0c2c2bbaf451a47ddfcb

# 依存とは

依存関係は、一つのオブジェクトが他のオブジェクトに対して依存している状態を表します。この関係には「使う側(使用側)」と「使われる側(被使用側)」があります。

# 依存の例

– ユーザークラス(使われる側)
ユーザーは名前やメールアドレスなどの情報を持ちます。 通知クラス…通知は送信先ユーザーやメッセージなどの情報を持ちます。

– 通知クラス(使う側)
ユーザークラス(使われる側)に依存しています。 通知クラスで特定のユーザーに通知を送信するために、ユーザーの情報(名前やメールアドレスなど)にアクセスする必要があります。 つまり、通知を送信するためにはユーザークラスに依存しており、ユーザーの情報を使って通知の処理を行います。

元記事を表示

凝集度とは

# 凝集度とは
「モジュール内の要素同士がどれだけ関連しているかを示す指標」です。

簡単に言うと「クラスの責務とクラスメソッドとデータの関連の強さ」を凝集度といいます。

参考

https://little-hand-s.notion.site/10-d85b38b1846048cea37a015a52636d53

# 責務とメソッドとデータ関連の強さとは?
「クラスの責務とクラスメソッドとデータの関連の強さ」とは?

クラスの責務とは「そのクラスは何をするクラスか?」という問いへの答えです。

クラスは何をするクラスか明確に定義されており、
そのクラスに適したメソッドやデータが関連して存在しているかが凝集度ということが分かります。

以下の観点で凝集度を見たりします。
・クラスの責務が明確か
・責務に応じたメソッドが配置されているか

# 凝集度が高い例

クラスの責務がハンバーガーを提供するとしましょう
その場合にハンバーガーを作る・ハンバーガーを提供するメソッドがそのクラスにある場合は責務に応じたメソッドが存在するので凝集度は高いと判断できます

![image.png](

元記事を表示

共通化の罠とは

# DRY原則とは

以下を読んでください

https://qiita.com/kotukotukun/items/6163429d8ef0824b45e5

# DRY原則を学んだ私

DRY原則を理解した私です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3766869/a4f68456-c2a7-6a5c-a7e0-d78302a227be.png)

同じような考えになったエンジニアの皆さん以下の動画を見てみてください
(はっとします)

# 共通化の罠とは

共通化の罠は同じ意味を持たないものを共通化してしまった場合に発生する問題です

ここでいう問題は
変更容易性/理解容易性/テスト容易性を下げてしまいます

# 共通化の罠の例

例えば、以下コードを共通化してしまうと想定しましょう。

1.CalenderAクラスで定義され利用されているaddメソッ

元記事を表示

[Cloud Translation Basic API(V2)] Javaでテキストに使用されている言語を検出する

Cloud Translation Basic API V2(Java)を使用して、
テキストに使用されている言語を検出する方法
についてご紹介します。

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

|No||目次|
|—|—|—|
|1||[言語を検出](#1-言語を検出)|
||1|[スコープ](#11-スコープ)|
||2|[実行](#12-実行)|
||3|[レスポンスの内容](#13-レスポンスの内容)|

## 1. 言語を検出
指定したテキストに使用されている言語を検出します。

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

元記事を表示

Javaで「プログラムをコンパイルしてクラスファイルを作成する」の動作を確認してみた

# 概要

Javaで「プログラムをコンパイルしてクラスファイルを作成する」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/start/before/index3.html

# 実装
“`JSample3_1.java
class JSample3_1{
public static void main(String[] args){
System.out.println(“Hello”);
}
}
“`

以下のコマンドを実行しました。
“`
$ javac JSample3_1.java
$ java JSample3_1
Hello
“`

# まとめ

何かの役に立てばと。

元記事を表示

SpringBootでとにかく最低限のログイン機能追加

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

https://qiita.com/waokitsune/items/0b8ebb2c851a0562b924

# 概要

とにかく最小限のコーディング。
ユーザーIDとパスワードはSpringBootが用意した固定値。
ユーザーIDとパスワード入力画面も自作しない。

という最低限のログインができることろまでの内容です。

# build.gradle

“`dependencies“` セクションに下記を追記します。

“`
implementation ‘org.springframework.boot:spring-boot-starter-security’
“`

build.gradleを変更したら下記を忘れずに。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/7ecf36ce-cb16-7a8e-fd28-f3f75344ddc4.png)

これだけでSpringBootがいろいろ用意してくれます。

# 動作確

元記事を表示

プロゲート学んだこと

◆学んだこと
Java 
1.基本 変数定義、型定義
2.IF、for、配列
3.メソッド(オバロ)、クラス定義、スキャナー
4.オブジェクト指向、this、フィールド、コンストラクタ、インスタンスメソッド、ゲッター、セッター
5.未実施

Git
概要(コード変更、共有準備、共有)
init、add、pull、commit、push、status

◆Progateを使用しての感想
良い点
基本は網羅できていること。
気軽にできる。
何をするべきか目標がある。

悪い点
具体的に使う場面が分からない。
普段からコードを書かないと頭に入らない。⇒this何?ってなった
目的がない

◆勉強のきっかけになったか
Javaはなっていない。
Reactに関しては、きっかけになった。

◆今後
学ぶ必要性のあるものは、繰り返し学んで実施していく。
学習のスタンス:基本 ⇒ 抑えるべきところ(順次、選択、繰り返し) ⇒ プログラムの全体像を把握

◆提案
入社の3か月間のうちでプロゲートを組み込むことが非常にありだと思う。
その後、自身で設計したプログラム作成など

元記事を表示

OTHERカテゴリの最新記事