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

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

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か月間のうちでプロゲートを組み込むことが非常にありだと思う。
その後、自身で設計したプログラム作成など

元記事を表示

[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_TRANSLATION
TranslateSc

元記事を表示

Javaをvscodeで使う(macOS)

## 初めに
javaの環境構築をvscodeで行った際に詰まったので、自分用の忘備録として残します。
初学者のため、至らない点も多いかと思います。明らかな誤りがある際にはコメントいただけますと幸いです。

## 環境構築

### 私の環境
– macOS M2
– 2024/04現在最新verのJDK

### 手順

1. JDKのインストーラをダウンロード
1. ダウンロードしたファイルを開いて、インストール
1. システム設定にJavaが表示されているか確認
1. `java -version`でインストールを再度確認
1. vscode拡張機能のExtension Pack for Javaをインストール
1. vscodeを再起動し、先ほどのプラグインを有効化する
1. vscodeを開き、`Hello.java`ファイルを作成
1. クラス名の下に表示されるRunをクリックすると、実行結果がコンソールに表示されます

以下にそれぞれの工程の詳細を記します。

### JDKのインストーラをダウンロード
以下のサイトからダウンロードしてください。

https://www

元記事を表示

Java SE Bronzeの範囲における矛盾点(主観)

# はじめに
 Java Bronze SEを受験しまして、一応合格しました。ただ得点率が100%ではなかったので、ちょっと悔しいです。
 そこでこの記事では、Java SE Bronzeの試験範囲内で、私がよく理解できなかった点を整理します。また、(勉強に行き詰っている誰かのために)一応の解説もつけておきます。(でも、間違っているかもしれません。一応、参考文献は明記します)

# 1. 用語の定義の混乱
 Java SE Bronzeという試験では、「Javaに関する用語の意味」が問われることがあるそうです。いわゆる専門用語というやつですね。しかし現状、この専門用語の定義は、あまり統一されていません。

## 1-1. カプセル化
 例えば、「カプセル化」という言葉の定義を見てみましょう。さて、「カプセル化」とはなんでしょうか。「カプセル化」という言葉はどのように定義されているのでしょう。3つの書籍を比較してみます。

### 1-1-1.『徹底攻略 Java SE Bronze問題集[1Z0-818]対応』

 まずは、いわゆる黒本と呼ばれている、志賀澄人, 山岡敏夫『徹底攻略

元記事を表示

No.7【フローチャート(流れ図) 分岐処理&練習問題】プログラミングは一部の方だけのものではない!はじめてのプログラミング入門講座(アルゴリズムとJava基礎)動画付き

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

**【分岐処理】:天気を確認する**
![](https://storage.googleapis.com/zenn-user-upload/e1ec06f5afb9-20231009.png)

**【練習問題】**
バスに乗車した時に大人なら大人料金、子供なら子供料金を支払う様子をフローチャートにしてみよう
※解答例はあくまでも例で、これが正しい!という唯一の正解はありませんのでご了承下さい

<解答例>
![](https://storage.googleapis.com/zenn-user-upload/53c931a91517-20231009.png)

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

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

Youtube
https://youtube.com/@co

元記事を表示

[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

元記事を表示

[Android] Arm64でAnti-Disassembly/Decompile

昨日、このような素晴らしい記事を見かけました

こちらの記事ではPLDという命令を使用してアンチディスアセンブルを施していましたが、こちらでも言及されている通り、Arm64では存在しない命令です。

そこで、Arm64ではアンチディスアセンブルを施すことはできないのかと気になったので自分なりに調べてまとめてみました。

# 初めに

ArmにはDCBディレクティブという1バイト以上のメモリを割り当て、メモリの実行時の初期内容を定義するものがあります。

https://developer.arm.com/documentation/dui0473/m/directives-reference/dcb?lang=en

> The DCB directive allocates one or more bytes of memory, and defines the initial runtime contents of the memory.

そのほかにも種類があり、

元記事を表示

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

Googleが提供しているCloud Translation APIをJavaで使ってみました。
APIには、BasicとAdvancedがありますが、こちらの記事は**Basic**の方を扱います。

**Cloud Translation APIとは**
テキストを翻訳するAPIです。
翻訳には、Googleの事前トレーニング済みカスタムモデル、
または翻訳に特化した大規模言語モデル(LLM)が使用されます。

APIには、「Basic」と「Advanced」の2つのエディションがあります。
Basicでも翻訳は可能ですが、Advancedではさらに機能の追加がされています。
機能の違いは公式ドキュメントの[⧉Basic と Advanced の比較](https://cloud.google.com/translate/docs/editions?hl=ja)をご覧ください。

APIの利用料金は、どちらも 500,000文字/月まで無料です。
料金の詳細は公式ドキュメントの
[⧉Google AI でドキュメント、音声、動画をリアルタイムで翻訳できます](https://clo

元記事を表示

Javaで「Javaを使ったプログラムの作成と保存」の動作を確認してみた

# 概要

Javaで「Javaを使ったプログラムの作成と保存」の動作を確認してみました。
以下のページを参考にしました。

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

# 実装

以下のファイルを作成しました。
“`Hello.java
class Hello{
public static void main(String[] args){
System.out.println(“Hello”);
}
}
“`

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

# まとめ

何かの役に立てばと。

元記事を表示

苦手なラムダ式を克服する

## はじめに
今までラムダ式は**コードを簡潔に書ける便利なもの**くらいの理解でしかなかったので、今回はラムダ式を分解しながら克服していこうと思います。

## ラムダ式とは
> ラムダ式(lambda expression)とは、プログラミング言語に用意された記法の一つで、名前の無い無名関数(匿名関数)を簡潔に定義するもの。

よくわかりません。実際にコードで理解していきます。

## 前提知識
ラムダ式は**ローカルクラス**と**無名クラス**という仕組みを利用しています。

### ローカルクラスとは
ローカルクラスは**メソッド内で宣言するクラス**のことです。
インターフェースを実装したローカルクラスも定義できます。
“`java
public static void main(String[] args) {

class Local implements Runnable {
@Override
public void run() {
System.out.println(“Hello Lambda!”);
}
}

元記事を表示

OTHERカテゴリの最新記事