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

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

[Gmail API] JavaでGmailクライアントサイド暗号化(CSE)を作成・更新・削除する

Gmail API v1(Java)を使用して、
Gmailクライアントサイド暗号化(CSE)を作成・更新・削除する方法
についてご紹介します。

**Gmailクライアントサイド暗号化とは**
メールデータをGoogleクラウドベースストレージ時に転送または保存する前に
ブラウザ内で暗号化を行う仕組みです。
送信先の相手が受信するまで、メールデータは保護されます。
これにより機密データや規制対象データのコンテンツの機密性保持を強化できます。

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

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

|No||目次|
|—|—|—|
|1||[CSEを生成](#1-cseを生成)|
||1|[スコープ

元記事を表示

Android Studioで行コメントをインデント幅に自動で合わせる

## はじめに
JavaとAndroid Studioを並行して学習しています。
Android Studioでの操作中、Javaファイルでのコメント行の設定で手間取ったので設定方法を記載します。

## 問題
コメント欄をコード入力時に自動でインデントに合わせたかった
![Untitled (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3677610/120734fd-e104-b52f-8c20-60fa482610bb.png)

## 解決方法
以下の設定2つを変更し、解決しました。

### 設定1(コード整形時のフォーマットスタイル)
・設定>エディター>コードスタイルのJavaを選択
 折り返しと括弧>整形時の保持>最初の列にコメントを入れるをチェックオフ
英語の場合は
・Setteing>Editor>Code Style>Java
 Code Generation>Comment Code>Line comment at first columnをチェックオフ
![Unti

元記事を表示

[Gmail API] JavaでGmailクライアントサイド暗号化(CSE)されたIDを取得する

Gmail API v1(Java)を使用して、
Gmailクライアントサイド暗号化(CSE)されたIDを取得する方法
についてご紹介します。

**Gmailクライアントサイド暗号化とは**
メールデータをGoogleクラウドベースストレージに転送または保存する前に
ブラウザ内で暗号化を行う仕組みです。
送信先の相手が受信するまで、メールデータは保護されます。
これにより機密データや規制対象データのコンテンツの機密性保持を強化できます。

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

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

|No||目次|
|—|—|—|
|1||[CSE構成リストを取得](#1-cse構成リストを取得)|
||

元記事を表示

C++/Java系言語で1文字だけでコメントアウトするブロックを切り替える

# 概要

プログラミングをしていると実装の方式を試してみることがあると思います。あるいは、別の実装でうまくいくか自信のない時、今あるものはコメントアウトしておいて別の実装を試してみたり。そんな場合、今時はエディターの機能で簡単にブロックをコメントアウトしたりできますが、言語仕様をうまく使って一文字編集するだけでコードブロックをコメントアウトする小技を大昔に思いついていて今でも使うことがあるので紹介します。実装中の試行錯誤の時には便利です。

この技はC++/Java/Javascript系の、ブロックコメント`/* … */`とインラインコメント`//`がサポートされている言語で利用できます。

# ブロックを`/`の削除でコメントアウトする

以下のように書いておくと、一番最初の`/`を削除すると最初の行がインラインコメントからブロックコメントに切り替わり、ブロック全体がコメントアウトされます。

“`javascript
//*
var x = foo;
//*/
“`

先頭行が`//`で始まると、最初と最後の行がどちらもインラインコメントになり、`/*`で始まるとそこ

元記事を表示

[Gmail API] Javaでメールボックス内スレッドのラベル追加・削除、スレッドの削除をする

Gmail API v1(Java)を使用して、
Gmailのメールボックス内スレッドのラベルを更新・削除する方法と
スレッドを削除、スレッドをゴミ箱に移動したりゴミ箱から削除する方法
についてご紹介します。

**スレッドとは**
件名と宛先が同じで関連する複数の一連のメールのやりとりをまとめて表示する機能です。

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

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

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

|No||目次|
|—|—|—|
|1||[スレッドのラベル更新・削除](#1-スレッドのラベル

元記事を表示

Java20以上で、MME(Java標準)のSysEXを処理する

はじめまして。
お会いできて光栄です。

手始めに、「Java20以上で、MME(Java標準)のSysEXを処理する」について公開してみようと思います。

OralceJavaJDKのjavax.sound.midi.MidiMessageクラスは、
SysEXシステムエクスクルーシブメッセージに対応しているとうたっています。
F0ではじまるSysEXは問題なく送信できるようです。
しかし、F7ではじまる場合、うまく送信できません。

対処するにあたっては、以下のキーワード検索した文章を組み合わせています。
stackoverflowやQiitaなどです。動作するようにまとめられましたので、公開しています。

midimessage java sysex f0 f7 crash java20

JDK20~JDK22までは動作確認しています。Windows10のみ確認しています。
将来のJDKではこのコードが必要なくなる可能性もあります。

では、私の場合の、プログラムコードをご紹介します。

ここに至るには、JavaMIDIMixerの作成を行ったことに発端しています。
 htt

元記事を表示

BigDecimal.setScaleのRoundingMode.UPがこんなに切り上がるわけがない

こんにちは。

Java、書いてますか?

今回は `BigDecimal.setScale(int, RoundingMode)` でだいぶ頭を悩ませた挙動と対策について書きます。
なんか調べてて __めちゃくちゃムカついちゃった__ のでその恨み言もあります。

ちなみに当記事ですが __事実としてこう、対策としてはこう__ 、ということを書いているだけで、申し訳ないですが理屈の深掘りはできませんでした。

:::note info
動作環境
IDE:IntelliJ IDEA 2023.3.5 (Community Edition)
OS:Windows11
Java:AmazonCorretto 21.0.1
:::

# この記事のまとめ
小数第一位を切り上げるコードを書いたよ!
“`java
// 当然 1 になるよね!
BigDecimal.valueOf(1.000000000000001d).setScale(0, RoundingMode.UP);
“`
__2になったよ!!!__

“`java
// 切り上げる前に第二位以下を切り捨てちゃおうね!
BigD

元記事を表示

break文の使い方

Javaにおけるbreakの概要をまとめます。

目次
[1.break文とは](#1-break文とは)
[2.breakの使い方](#2-breakの使い方)

# 1. break文とは
break文は、実行されると繰り返し処理を終了して、次の処理へ移ってくれる便利なものです。

以下のように記載します。

“`java
break;
“`

繰り返し処理であるfor文やwhile文の他、switch文でも使用できます。

# 2. breakの使い方
for文の中にif文を書き、ifの条件式がtrueのときに実行される処理としてbreak文を書くと、for文の条件式を全て実行せずに処理を終わらせることができます。
“`java
int num = 10;

for (int i = 0; i < 10; i++){ num -= 3; if (num < 0){ break; } } ``` 上記コードのfor文は10回繰り返す条件式になっていますが、if文の条件式とbreak文によって、実行回数が10回に満たなくとも、numが0より小さくなった場合に処理

元記事を表示

[Gmail API] Javaでユーザー情報(言語、不在通知、自動転送、POP、IMAP)を設定する

Gmail API v1(Java)を使用して、
Gmailのユーザーの設定情報を設定する方法
についてご紹介します。

設定できるユーザーの設定情報は下記の5つになります。
・言語の設定
・不在通知の設定
・自動転送の設定
・POPの設定
・IMAPの設定

**・言語の設定**
Gmailメニュー 「設定」 -> 「全般」 -> 「言語」
で設定できる内容です。

**・不在通知の設定**
Gmailメニュー 「設定」 -> 「全般」 -> 「不在通知」
で設定できる内容です。
Springでのインジェクション方法まとめ

## はじめに

インジェクションの方法は以下の3通り
・**コンストラクタインジェクション(推奨)**
・フィールドインジェクション(非推奨)
・セッターインジェクション

Spring公式によるとコンストラクタインジェクションを推奨しており、フィールドインジェクションは非推奨となっている。
私がこれまで経験した開発現場ではフィールドインジェクションを利用していることが多いため、今後はコンストラクタインジェクションを積極的に利用したい。

## DIについて
Dependency Injectionの略称。
Java固有の概念ではなくあらゆる言語やフレームワークで広く使われている。

大まかに以下の流れで、インスタンスの注入を行う
1. SpringがDIする対象のインスタンスを探す
2. @Autowiredアノテーションが付与されている箇所に、インスタンスを注入する
3. インスタンスのライフサイクルの生成と破棄

本記事はインジェクションの方法に焦点を当てるため、DI詳しい解説は省く。
DIについて以下参照。
[依存性の注入](https://tech-blog.yayoi-k

元記事を表示

Java 22新機能まとめ

Java 22が2024/3/19にリリースされました。
https://mail.openjdk.org/pipermail/jdk-dev/2024-March/008827.html
[The Arrival of Java 22!](https://inside.java/2024/03/19/the-arrival-of-java-22/)

LTSではなく正式採用された機能も少ないですが、Gathererは出番も多そうなAPIなのでチェックしておきましょう。
また、非互換性として、Javaソースの直接実行でパッケージとディレクトリの対応が厳しくなっているので注意が必要です。

JDKをインス

元記事を表示

🔰アプリを公開までやりたい

## 簡単に自己紹介
・22卒 SE 男 24
・飽きっぽい
・眠い

## なぜやりたいと思ったのか?
・自分の知識が乏しいと感じる
・自信にしたい
・アウトプットする習慣をつけたい
・自分のアイデアを形にすることに魅力を感じた

## やりたいこと
一段階
・アプリ作成
・公開

二段階
・改良を重ねる
・FB

## 方針・意気込み
・使用するサービス・技術の理解をしながら進める
・分からないけど何となく動いたは、NG
・諦めない・・!!

元記事を表示

「ログイン成功後に毎回XXXを実行したい」をSpring Securityで実装する

## ログイン成功後にXXXを実行したい
– ログイン成功後、ユーザー情報のログを出力したい
– ログイン成功後、〇〇を満たすユーザーはXXにリダイレクトしたい

こうした要望をSpring Securityを使って実装するための方法を紹介します。

私の調べた限り、`AuthenticationSuccessHandler`と`AuthenticationSuccessEvent`の2種類の実装方法が存在しました。

## versions
– Spring Boot 3.2.3
– Spring Security 6.2.2

## AuthenticationSuccessHandler
まずは`AuthenticationSuccessHandler`を継承したカスタムのハンドラクラスを作成します。
“`java:CustomLoginSuccessHandler
@Component
public class CustomLoginSuccessHandler implements AuthenticationSuccessHandler {
@Override

元記事を表示

[Gmail API] Javaでメール下書きを作成・更新・削除、下書きを送信する

Gmail API v1(Java)を使用して、
Gmailのメール下書きを作成・更新・削除する方法と
作成した下書きを送信する方法
についてご紹介します。

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

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

|No|||目次|
|—|—|—|—|
|1|||[下書きを作成](#1-下書きを作成)|
||1||[添付ファイルなし](#11-添付ファイルなし)|
|||1|[スコープ](#111-スコープ)|
|||2|[実行](#112-実行)|
|||3|[レスポンスの内容](#113-レスポンスの内容)|
||2||[添付ファイルあり](#12-添付ファイルあり)|
|

元記事を表示

[Gmail API] Javaでメールの添付ファイルを取得する

Gmail API v1(Java)を使用して、
Gmailのメールの添付ファイルを取得する方法
についてご紹介します。

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

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

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

## 1. 添付ファイルを取得
メールの添付ファイルを取得します。

取得する添付ファイルIDは、MessagePartBodyのgetAttachmentIdで取得可能で

元記事を表示

[Gmail API] Javaで送信元エイリアスのS/MIME構成を取得する

Gmail API v1(Java)を使用して、
送信元エイリアスのS/MIME構成を取得する方法
についてご紹介します。

**S/MIMEとは**
電子証明書を用いたメールのなりすましや改ざん、盗聴などを防ぐための仕組みです。
セキュリティを高めるために、メールの暗号化と電子署名を行います。

このAPIは、無料版のアカウントでは使用できず、利用するには
有料版の「Google Workplace」でのアカウントが必要になるそうです。

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

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

|No||目次|
|—|—|—|
|1||[S/MIME構成一覧を取得](#1-smim

元記事を表示

java.net.http.HttpClient にて、IOException: Too many open files エラーが発生する場合の対応

# 概要
`java.net.http.HttpClient`を利用してHTTP通信を行う実装を行った際、処理が集中すると `IOException: Too many open files` というエラーが発生してしまうことがあります。

それほど大した負荷でもないのに、この例外が発生してしまった場合、以下の2つに問題がある可能性が考えられます。

1. OSの設定
2. HttpClientのインスタンスの持ち方

それぞれ、どのように解消すれば良いか、以下に記述します。

# 1. OSの設定を見直す
Linux OSにおいて、ファイルディスクリプタの上限が低く抑えられている可能性があります。この上限値を増やす、または取り払うことで問題が解消されるかもしれません。
詳細は他記事に委ねます。

# 2. HttpClientインスタンスをキャッシュする
HttpClientは、デフォルト実装を`HttpClient.newBuilder().build()`によって生成

元記事を表示

[Gmail API] JavaでGmailの代理人の情報を取得する

Gmail API v1(Java)を使用して、
Gmailの代理人の情報を取得するを取得する方法
についてご紹介します。

**代理人とは**
ユーザーやグループを代理人に指定してGmailアカウントへのアクセスを許可すると、
代理人は受信トレイで次の操作ができます。
・フィルタ(ルール)でメールを自動的に振り分ける
・メールをアーカイブしてやりとりの記録を残す
・ラベルを使用してメールのステータスを管理する
・送信者として代理人名を表示する、または表示しない
代理人は、受信トレイの共有と同義です。

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

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

|No||目次|
|—|—|—|
|1||[

元記事を表示

Javaアプリケーションのバージョン間移行の診断(Migration Toolkit for Application Binaries)

## はじめに
現場でIBM社のWebSphere Application Server(以下WASと略する)とJavaで作られたアプリケーションのバージョン間移行を行う。
バージョンアップによる影響を診断するためのツールを導入し、影響調査に利用した。

## Migration Toolkit for Application Binariesとは
WASやJavaのバージョン間移行やマイグレーションを診断するツール。
jarファイルをコマンドで実行し利用する。
診断対象としてJavaアプリケーションのwarまたはearファイルが必要。

warファイルの作成方法は以下参照。Eclipseでのビルドを想定。
[warファイル作成(ビルド)](https://rainbow-engine.com/war-howto-create/)

Migration Toolkit for Application Binariesは以下のリンクからダウンロードできる。
[ツールのダウンロード](https://www.ibm.com/support/pages/node/6250961#asset/

元記事を表示

[Gmail API] Javaでメールをメールボックスに入れる(自分にメール送信)

Gmail API v1(Java)を使用して、
Gmailでメールをメールボックスに入れる方法
についてご紹介します。

メールボックスにメールを入れる方法は下記の2通りあります。

**・メールボックスに直接メールを入れる**
メールクライアントに介することなく、メールボックスに直接メールを入れます。
IMAPコマンドのAPPENDを実行した場合と同じ動きです。
(IMAP:メールサーバー側のメール受信に使用する機能)

**・SMTPサーバーを介してメールボックスにメールを入れる**
通常のメール送信と同様の流れでメールボックスにメールを入れます。
ただし、SPFチェックは行われません。
(SPF:電子メールの送信元ドメインが詐称されていないかを検査するための仕組み)

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

本文中の引数にある「

元記事を表示

OTHERカテゴリの最新記事