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

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

[Gmail API] Javaでメールボックス内のラベルを取得する

Gmail API v1(Java)を使用して、
Gmailのメールボックス内のラベルを取得する方法
についてご紹介します。

**ラベルとは**
メールにつける印みたいなものです。
ラベルを作ることでラベル毎に整理、管理することができます。

Gmailの「設定」 -> 「ラベル」 から確認・設定できます。
作成可能なラベルは10,000個までです。

ラベルにはシステムが用意したsystemとユーザーが作成したuserが存在します。
systemのラベルは作成したり削除することはできません。([3. システムラベル](#3-システムラベル))

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

元記事を表示

ローカル変数とフィールドの違いについて

ローカル変数とフィールド(クラス変数とも呼ばれる)は、Javaにおける変数のスコープと寿命に基づいて異なります。以下に主な違いをまとめました。

1.スコープ(Scope):
・ローカル変数: メソッド内で宣言され、そのメソッド内でのみアクセス可能です。
・フィールド: クラス内で宣言され、クラスの全てのメソッドからアクセス可能です。また、アクセス修飾子によってはクラス外からもアクセスできます。

2.寿命(Lifetime):
・ローカル変数: メソッドが実行されている間のみ存在し、メソッドの実行が終了すると消滅します。
・フィールド: オブジェクトが存在する限り、つまりオブジェクトがガベージコレクションによって破棄されるまで存在します。

3.初期化(Initialization):
・ローカル変数: 自動的に初期化されません。使用する前に明示的に初期化する必要があります。
・フィールド: 自動的にデフォルト値で初期化されます(例:int型の場合は0、オブジェクト型の場合はnull)。

4.アクセス修飾子(Access Modifiers):
・ローカル変数: アクセス修飾子を持

元記事を表示

ブロックをスポーンさせるスポナーを作成する

# 環境
PaperAPI : `1.20.4-R0.1`

# 完成物イメージ

# 手順
## CreatureSpawner を取得する
まず、全ての設定をのせるスポナーを座標などから取得します。
スポナーは、機能的ブロックのインタフェースである `BlockState` の実装クラスである `CreatureSpawner` クラスなのでキャスト等を用いて取得します。
“`java
// World型 world: スポナ

元記事を表示

[Gmail API] JavaでGmail APIを使う

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

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

Gmail APIの利用料金は無料です。
ただし、1秒あたり250クォータの制限があります。
クォータの単位は、実行するGmailAPIの種類により決められます。
詳細はGoogleの公式ドキュメントをご覧ください。
[⧉APIの使用制限](https://developers.google.com/gmail/api/reference/quota)

|No|||目次|
|—|—|—|—|
|1|||[Gmail APIを使用するための準備](#1-gmail-apiを使用するための準備)|
||1||[プロジェクトの作成](#11-プロジェクトの作成)|
||2||[Gmail APIの設定](#12-gmail-apiの設定)|
||3||[APIを使用するためのキー取得](#13-apiを使用するためのキー取得)|
|2|||[Gmail APIを使ってみる](#2-gmail

元記事を表示

Java Goldの黒本に対する批判

## 初めに

この記事は志賀澄人氏の著書「徹底攻略Java SE 11 Gold問題集」に対する批判記事です。
2022年6月11日 第1版第2刷発行のものを引用しています。
この記事を書いた私自身は別に卓越したプログラマでもなんでもないので、誤りがあれば訂正をお願いします。

## 第1章

### staticで修飾されたネストしたクラス

黒本の29ページには

> クラス内に定義したクラスのことを総称して「ネストしたクラス」と呼びますが、正確にはネストしたクラスにはいくつかの種類があり、それぞれ次のような名称が異なります。

と書かれており、「ネストしたクラス」として以下の4つの種類が紹介されています。

– インナークラス
– staticインナークラス
– ローカルクラス
– 匿名クラス

これ以降、なんの断りもなく「staticインナークラス」という用語が黒本を通して使用されていますが、staticで修飾されたクラスはインナークラスではありません。
以下の通りオラクルの文書で明言されています。

> An inner class is a nested class th

元記事を表示

UnityでAndroid端末の回転ベクトルを取得する

## 概要

Android端末の複数センサを用いて算出された回転ベクトルをUnityから取得する方法についてまとめます.

## やりたいこと

Android OS は複数センサの情報を複合した回転ベクトルを算出できるので,Unityからその情報を取得したい.

## 解決手法
UnityからAndroidの回転ベクトルを取得するAndroid Pluginを作成.
## 環境
– Unity 2022.3.4f1
– Windows 11
– Google Pixel 3a
– Android バージョン12

## 実装
Androidプラグインの作成にはいくつかの方法がありますが,今回はJavaファイルをUnityのプロジェクト内に配置してプラグインとして読み込ませる方法をとることにしました.

プラグインの再利用や配布を考えるなら,直接Javaファイルを配置するのではなく,[Android Libraries や Android Archives (AAR) を利用した方法](https://docs.unity3d.com/ja/2022.3/Manual/android

元記事を表示

#3【勉強メモ】エヴァンス本からざっくり理解する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

元記事を表示

Spring Boot で作ったアプリをフリー枠で Web に公開(Render利用)

Spring Boot で作ったアプリをフリー枠で Web に公開したいと思い調べてみた
Render ( https://render.com/ )というクラウドサービスが見つかったので簡易的にやった時のメモを記載する
Heroku の無料枠がなくなってからなかなか見つからなかったので代替になるかも...
やったことの大枠は以下の感じ

– SpringBoot の簡易アプリを Github にリポジトリ登録
– Dockerfile を直下におく
– Render から Github 連携して公開

# SpringBoot の簡易アプリを Github にリポジトリ登録
作成したアプリは本当に簡易なやつです...
https://github.com/sueasen/springboot-demo2

Render でデプロイした時に動くように Dockerfile をプロジェクト直下に置いてます

“`Dockerfile:Dockerfile
FROM maven:3-eclipse-temurin-17 AS build
COPY ./ /home/app
RUN

元記事を表示

#2【勉強メモ】エヴァンス本からざっくり理解する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

元記事を表示

[Google Drive API v3] Javaでファイル、ユーザー情報の変更通知(サブスクライブ)を受信・停止する

Google Drive API v3(Java)を使用して、
ファイル、ユーザー情報の変更通知(サブスクライブ)を受信・停止する方法
についてご紹介します。

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

|No||目次|
|—|—|—|
|1||[ファイルの変更を受信](#1-ファイルの変更を受信)|
||1|[スコープ](#11-スコープ)|
||2|[実行](#12-実行)|
||3|[レスポンスの内容](#13-レスポンスの内容)|
|2||[ユーザー情報の変更を受信](#2-ユーザー情報の変更を受信)|
||1|[スコープ](#21-スコープ)|
||2|[実行](#22-実行)|
||3|[レスポンスの内容](#23-レスポンスの内容)|
|3||[変更通知を停止](#3-変更通知を停止)|
||1

元記事を表示

Java: Refaster templateでソースコードを一括置換しよう(Gradle版)

# 概要

大規模なリファクタリングを安全に行うため、Google製のJava静的解析ツールである[Error Prone](https://errorprone.info/)にて、自作の[Refaster template](https://errorprone.info/docs/refaster)に対して[Patch作成機能](https://errorprone.info/docs/patching)を利用したソースコードの一括置換を試みました。

本記事では、その手順をまとめています。

# 実行手順

## 1. [Refaster Template](https://errorprone.info/docs/refaster)クラスを作成する

例: [Apache Commons DbUtils](https://commons.apache.org/proper/commons-dbutils/)の[DbUtils#closeQuietly](https://commons.apache.org/proper/commons-dbutils/apidocs/org/a

元記事を表示

Protocol Buffers v26.0 の破壊的変更

# protobuf v26.0 と protobuf-java v4.26.0

protobuf v26.0 が 2024/03/14 にリリースされましたが、Java, PHP, C++, Ruby, Python には破壊的変更が含まれています。

https://github.com/protocolbuffers/protobuf/releases/tag/v26.0

他の言語は詳しく分かりませんが、Java ではかなり大きな変更が入っており、[protobuf-java](https://mvnrepository.com/artifact/com.google.protobuf/protobuf-java) のメジャーバージョンが上がっていて v4.x となっています。(マイナーバージョンは、protobuf のバージョンと同期しています)

大きな問題点は、protoc v26 以降でコンパイルされたファイルは、protobuf-java v3.25 以下ではコンパイル・動作できず、v4.26 以降を利用する必要がある点です。

速報的に、Java でどう対処すれば

元記事を表示

[Google Drive API v3] Javaでファイルのリビジョンを更新・削除する

Google Drive API v3(Java)を使用して、
Driveに置かれているファイルのリビジョンを更新・削除する方法
についてご紹介します。

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

|No||目次|
|—|—|—|
|1||[リビジョンを更新](#1-リビジョンを更新)|
||1|[スコープ](#11-スコープ)|
||2|[実行](#12-実行)|
||3|[レスポンスの内容](#13-レスポンスの内容)|
|2||[リビジョンを削除](#2-リビジョンを削除)|
||1|[スコープ](#21-スコープ)|
||2|[実行](#22-実行)|
||3|[レスポンスの内容](#23-レスポンスの内容)|

## 1. リビジョンを更新

### 1.1. スコープ
このAPIを実行するには、以

元記事を表示

ChatGPTや他3種の生成AIに、Androidアプリでタップした時にテキストを1秒表示して消す処理を聞いて、結果を比較 →性能差・各特徴が見られる

# はじめに

本稿では、下記の記事で記載した、Androidアプリでタップした時にテキストを1秒表示して消す処理を行うコードの作成について、
4種の生成AI、ChatGPT・Phind・Microsoft Copilot・Google Gemini、のコード生成結果を比較します。

https://qiita.com/dl_from_scratch/items/b5d6ab05464f8e25faf5

Androidのアプリの作り方を、ほとんど知らない状態で(※1・※2)、タップした時にテキストを1秒表示して消すような、簡単なサンプルアプリを試しに作ってみようと思った時に、
Androidアプリに関わったことがない、何も分からない状態で、一から検索して読み調べてコードを作るのは(簡単なコードであっても)相当面倒くさいな…、と思ってしまいます。

そこで、4種の生成AIに聞いて、タップした時にテキストを1秒表示して消す動作を行うサンプルプログラムを作ってもらい、うまく動作するかを試してみます。

※1: ただし、Android Studioの空のサンプルプロジェクトをそのままビル

元記事を表示

[Google Drive API v3] Javaでファイルのリビジョンを取得する

Google Drive API v3(Java)を使用して、
Driveに置かれているファイルのリビジョンを取得する方法
についてご紹介します。

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

|No||目次|
|—|—|—|
|1||[リビジョンリストを取得](#1-リビジョンリストを取得)|
||1|[スコープ](#11-スコープ)|
||2|[実行](#12-実行)|
||3|[レスポンスの内容](#13-レスポンスの内容)|
|2||[リビジョンを取得](#2-リビジョンを取得)|
||1|[スコープ](#21-スコープ)|
||2|[実行](#22-実行)|
||3|[レスポンスの内容](#23-レスポンスの内容)|

## 1. リビジョンリストを取得

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

元記事を表示

#1【勉強メモ】エヴァンス本からざっくり理解する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

元記事を表示

[Google Drive API v3] Javaでファイルのコメントの返信(リプライ)を追加・変更・削除する

Google Drive API v3(Java)を使用して、
Driveに置かれているファイルのコメントのリプライを追加・変更・削除する方法
についてご紹介します。

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

|No||目次|
|—|—|—|
|1||[リプライを追加](#1-リプライを追加)|
||1|[スコープ](#11-スコープ)|
||2|[実行](#12-実行)|
||3|[レスポンスの内容](#13-レスポンスの内容)|
|2||[リプライを変更](#2-リプライを変更)|
||1|[スコープ](#21-スコープ)|
||2|[実行](#22-実行)|
||3|[レスポンスの内容](#23-レスポンスの内容)|
|3||[リプライを削除](#3-リプライを削除)|
||1|[スコープ](#31-

元記事を表示

[Google Drive API v3] Javaでファイルのコメントの返信(リプライ)を取得する

Google Drive API v3(Java)を使用して、
Driveに置かれているファイルのコメントのリプライを取得する方法
についてご紹介します。

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

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

## 1. リプライリストを取得

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

元記事を表示

[Google Drive API v3] Javaでファイルのパーミッションを付与・更新・削除する

Google Drive API v3(Java)を使用して、
Driveに置かれているファイルのパーミッションを付与・更新・削除する方法
についてご紹介します。

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

|No||目次|
|—|—|—|
|1||[パーミッションの付与タイプと役割(ロール)](#1-パーミッションの付与タイプと役割ロール)|
||1|[アクセス権の付与タイプ](#11-アクセス権の付与タイプ)|
||2|[役割(ロール)](#12-役割ロール)|
|2||[パーミッションを付与](#2-パーミッションを付与)|
||1|[スコープ](#21-スコープ)|
||2|[実行](#22-実行)|
||3|[レスポンスの内容](#23-レスポンスの内容)|
|3||[パーミッションを更新](#3-

元記事を表示

文字列からJSONへ変換、JSONからキーを削除、String型からbyte型に変換

JSONの操作には、Jackson使っています。

メソッドには、throws UnsupportedEncodingException, JsonMappingException, JsonProcessingException を付けています

jacksonに関するimport

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.json.JsonMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;

“`java
String jsonStr = “{\”ID\”: 2, \”Name\”: \”taro sato\”, \”token\”: \”axffee33333ff

元記事を表示

OTHERカテゴリの最新記事