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

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

配列の生成・初期化コストを低減するテクニック

# 概要
本記事では、プログラミング言語で配列の生成・初期化コストを低減する方法について説明します。言語はJavaで説明しますが、他の言語でも考え方は通用すると思います。
タイトル詐欺的なところがあるかもしれないので予めお断りしておきますと、基本的には一度作った配列を使い回すという至極当たり前な方法なのですが、使い回す際の工夫によって、初期値を配列全体に設定するコストを低減することができる、という内容になります。

# モチベーション
競技プログラミングなどで最短経路問題を解く時に、ダイクストラ法や01BFS等を使うために各頂点までの距離を保持する用の配列を用意することがあると思います。以下のようなコードで`dist`に当たる変数です。

“`Java
int[] dist = new int[N];
Arrays.fill(dist, Integer.MAX_VALUE);
dist[0] = 0;
ArrayDeque queue = new ArrayDeque<>();
queue.add(0);
while ( queue.size() > 0 ) {

元記事を表示

[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-レスポンスの内容)|

## 1. ユーザー、ドライブ、システム情報の取得

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

DriveScopes.DRIVE
DriveScopes.DRIVE_APPDATA
DriveS

元記事を表示

[Google Drive API v3] JavaでDrive APIを使う

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

***Drive APIとは***
Googleが提供しているAPIで、
GoogleDrive上のファイルやフォルダ、ユーザーの管理、作成、編集できます。

Drive APIの利用料金は無料です。
ただし、100秒あたりの使用制限があります。
ユーザーごとおよびプロジェクトごとに20,000回/100秒です。

|No|||目次|
|—|—|—|—|
|1|||[Drive APIを使用するための準備](#1-drive-apiを使用するための準備)|
||1||[プロジェクトの作成](#11-プロジェクトの作成)|
||2||[Drive APIの設定](#12-drive-apiの設定)|
||3||[APIを使用するためのキー取得](#13-apiを使用するためのキー取得)|
|||1|[サービス アカウント](#131-サービス-アカウント)|
|||2|[OAuth2.0 クライアントID](#132-oauth20-クライアントid)|
|2|||[Drive APIを使っ

元記事を表示

grpc-ecosystem/grpc-spring を使ってみる

# Java と gRPC 界隈のこれまでの現状

Java, Kotlin ユーザーの皆様、gRPC は使っているでしょうか?

JVM 言語の上で gRPC を使う際、[grpc-java](https://github.com/grpc/grpc-java) が提供されていますが、これは Java 上で netty を使って単体で動くもので、Spring Boot との親和性が皆無でした。

https://github.com/grpc/grpc-java

Google 社内では Spring Boot を使っていないであろうから良いのでしょうが、我々一般の Java 開発者にとっては不自由なものです。

これまでは、有志からいくつかの Spring Boot の上で grpc-java を動かすライブラリが提供されていましたが、どれも個人が開発しているもの ([LogNet/grpc-spring-boot-starter](https://github.com/LogNet/grpc-spring-boot-starter) など) で、プロジェクトが放置気味だったり品質

元記事を表示

5章:機能管理を行うWEBアプリケーション成果物(途中経過)

個人の学習用として機能管理を行うWEBアプリを作成しております。

作成経過の目次
[1章:学習用のWebアプリを作成しよう(技術選定)](https://qiita.com/tokio-mori/items/7aadc78eab10d4115ac3 “1章:学習用のWebアプリを作成しよう(技術選定)”)
[2章:GitHub,GitLab,Visual Studio Codeでリポジトリの作成・連携を行う](https://qiita.com/tokio-mori/items/322609e180fa5086a186 “2章:GitHub,GitLab,Visual Studio Codeでリポジトリの作成・連携を行う”)
[3章:画面遷移図・テーブル設計を作成する](https://qiita.com/tokio-mori/items/7bbd7761a7664da75408 “3章:画面遷移図・テーブル設計を作成する”)
[4章:基本設計仕様書を作成する](https://qiita.com/tokio-mori/items/72d944a53f90f8082197 “4章:基

元記事を表示

最短・最安でWebエンジニアになる方法

# はじめに

私は新卒でプログラマーとして働き始めて、現在はそこそこ大きい SaaS の企業で働いています。友人に「エンジニアってどうなん?稼げる?おれでもなれるん?」と聞かれることがちょくちょくあるのでこの記事を書いてみました。完全未経験の友人へ **「一日でも早く」** 、**「なるべくお金をかけずに」**、**「Web エンジニアになる」** 方法を伝えるという形式でこの記事を書いていきます。

# 目指すゴール
前述の通り「一日でも早く」、「なるべくお金をかけずに」、「Web エンジニアになる」のがゴールです。最も求人数が多いバックエンドのエンジニアでの就職を目指します。そして、就職先のビジネスモデルは気にしません。つまり、受託開発やSES、自社プロダクトの有無などは気にしないということです。このように書くと「えー、SES とか受託開発は嫌だよー。かっこいい都心のオシャレなオフィスで自社開発のエンジニアになりたいんだけど……」という声が聞こえて来そうです。

この選択が学習方法にも関わってくるので、まず学習ロードマップから説明させてください。なぜ就職先のビジネスモデル

元記事を表示

JAR実行でApache POIが非常に遅くなる原因を調べる

# 1. はじめに
* EclipseでApache POIを実行すると早いけど、JARファイルから実行すると非常に遅くなる
* 遅くなる原因を解決したい

# 2. 開発環境
* Apache POI
* Eclipse
* Java

# 3. 原因
* 生成されるJARに必須ライブラリをパッケージすると遅くなるらしい
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852081/100d51b9-f280-7034-bc4a-f43eb983f376.png)

https://stackoverflow.com/questions/65773278/apache-poi-extremely-slow-when-exporting-runnable-jar-with-package-option-in-ecl

# 4. 解決方法
* サブフォルダに必須ライブラリをコピーすると改善した
![image.png](https://qiita-image-store.s3.ap-no

元記事を表示

Eclipseでスクラッチボックを使用してみる

# 1. はじめに
* Javaで開発中にちょっとしたコードを試したい
* EclipseのScrachBookを使用したい

# 2. 開発環境
* Eclipse All in One
* Java

# 3. スクラッチブックの作成
* 新規作成からスクラッチ・ページを選択する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852081/9d040b6f-ffcc-1764-d98d-0a07d0725500.png)

# 4. サンプルコード
## 4.1. 事前準備
* スクラッチページで右クリックをして、インポートの設定を選択する必要がある
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852081/8875c871-2c3a-da8c-21d5-eac548527ed1.png)

* 必要なインポートを選択する
![image.png](https://qiita-i

元記事を表示

[Vision API] Javaで画像のプロパティを検出する

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

APIを使用し、画像のプロパティを取得します。
ドミナントカラーとクロップヒントを取得します。

|取得情報|概要|
|—|—|
|ドミナントカラー|同じか類似の色相を基調に、トーン(色調)を変えた配色法|
|クロップヒント|画像をクロップするヒント(座標)

下記の記事の方法でも取得可能です。
[⧉[Vision API] Javaで画像のクロップヒントを検出する](https://qiita.com/doran/items/a661a39702e8d0e1a8a9)
詳しくはこちらを参照ください。|

:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Vision API] Javaで画像内のいろいろなものを検出する](https://qiita.com/doran/items/444cb6231b7dffb9ddac)
を参照ください。
:::

|No||目次|
|—|—|—|
|1||[Feature.T

元記事を表示

【Java基礎】ローカルでJavaファイルを動かす

## 前提
JDKをインストール、PATH通し済み
環境 windows

## 準備
1. Javaファイルを作成し、ローカルの適当な場所に置く
※下記にあるソースをテキストファイルにコピペし、拡張子を`.java`に変更すればOKです
1. コマンドプロンプト開き、ファイルを置いたディレクトに移動(cd)、
(もしくはファイルを置いたディレクトをエクスプローラーで開き、パス入力箇所で`cmd`)
cmd.png

cmd開く.png

元記事を表示

[Vision API] Javaで画像のエンティティとページを検出する

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

APIを使用し、画像のエンティティとページを取得します。
指定した画像に対し、インターネット上の情報を取得できます。

取得できる情報は下記になります。
・インターネット上の類似の画像からのエンティティ
・インターネット画像に一致する画像
・視覚的に類似した画像
・リクエスト画像のトピックに関するサービスの最善の推測
・インターネットからの一致する画像を含む Web ページ
・インターネットからの部分一致画像

実際にどのような情報が取得できるのかは、
本記事の[3. 結果の検証](#3-結果の検証)を参照ください。

:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Vision API] Javaで画像内のいろいろなものを検出する](https://qiita.com/doran/items/444cb6231b7dffb9ddac)
を参照ください。
:::

|No||目次|
|—|—|—|
|1||[Feature.Typeの指定](#1

元記事を表示

[Vision API] Javaで不適切なコンテンツを検出する(セーフサーチ検出)

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

APIを使用し、画像のセーフサーチ検出を行います。

セーフサーチ検出は、画像に含まれる不適切なコンテンツを検出します。
以下の5つのカテゴリが、画像にどの程度の可能性で存在するかチェックします。
|カテゴリ|
|—|
|アダルトコンテンツの可能性|
|医療画像である可能性|
|際どい内容が含まれている可能性|
|なりすましの可能性|
|暴力的なコンテンツが含まれている可能性|

それぞれの上記のカテゴリに対して以下の5段階で評価します。
|レベル|可能性|
|—|—|
|1|可能性は非常に低い|
|2|可能性は低い|
|3|可能性はある|
|4|可能性は高い|
|5|可能性は非常に高い|

:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Vision API] Javaで画像内のいろいろなものを検出する](https://qiita.com/doran/items/444cb6231b7dffb9ddac)
を参照ください。
:::

|No|

元記事を表示

Spring Batchを業務で使うために調べたことまとめ

Spring Batchを業務で使用する機会があり調べていたところ、最新のバージョンでの実装方法や躓いたポイントなどで日本語の記事が見つかりにくかったので、備忘録がてら記事にしました。
Spring Batchそのものについては特に解説しませんので、全く触れたことがないという方は以下の記事等を参考に、基本的な概念について理解することをおすすめします。

https://terasoluna-batch.github.io/guideline/5.0.0.RELEASE/ja/single_index.html#Ch02_SpringBatchArch

## 前提
以下の環境での実装例です。
また、実装例はあくまで検証用のため、設計上必ずしも最適化されていないところはご容赦ください。
– Spring Boot 3.2.2
– Spring Batch 5.1.0

## 1.メタテーブルの作成について
Spring Batchを使う上で、バッチの実行状況を管理するメタテーブルが必要です。
これらは初回実行時に作成する必要があります。
設定ファイルにspring.batch.jdbc.

元記事を表示

【Java】jakarta.servlet.ServletException: java.lang.NoClassDefFoundError: javax/servlet/jsp/tagext/TagLibraryValidator【エラー解決】

# はじめに
JSPで表題のエラーが出て苦戦したので、エラー解決方法をメモ。

## やろうとしたこと
Eclipse上でこういうJSPを用意して、全てのJSPにインクルードするようにweb.xmlの方で設定。
“`jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
“`
“`web.xml




*.jsp UTF-8 /WEB-INF/include.jsp



“`

## おこった事象

作ったアプリのどの画面でもいいのでアクセスすると、下記

元記事を表示

[Vision API] Javaで画像内のランドマークを検出する

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

APIを使用し、画像内に含まれているランドマークを検出します。
ランドマークとは、よく知られている自然や人工建造物を示すそうです。

画像内のランドマークの位置だけではなく、**緯度と経度**も取得できます。

:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Vision API] Javaで画像内のいろいろなものを検出する](https://qiita.com/doran/items/444cb6231b7dffb9ddac)
を参照ください。
:::

|No||目次|
|—|—|—|
|1||[Feature.Typeの指定](#1-featuretypeの指定)|
|2||[実行結果の取得](#2-実行結果の取得)|
||1|[レスポンスの出力](#21-レスポンスの出力)|
||2|[レスポンスの内容](#22-レスポンスの内容)|
|3||[結果の検証](#3-結果の検証)|
||1|[ランドマークが少ない場合](#31-ランドマーク

元記事を表示

Java複数バージョンの共存 対応環境VSCode/Linux

ここで言う共存は単一プロジェクト内の共存ではなく、OS上での共存。
例えば、Java11とJava17を楽に切り替えて動作検証テストしたいとき。
システム環境変数だと切り替える毎に端末再起動が必要になってしまう。

## VSCode(ローカル)
ワークスペースで使い分ける方法。
VScodeの設定画面からユーザータブではなくワークスペースタブ側にJava Homeを設定する。
なお、ユーザー側よりワークスペース側の設定の方が優先度が高い。

settings.jsonに設定される内容
“`(Java11のワークスペース)settings.json
“java.jdt.ls.java.home”:”C:〜11〜”
“`
“`(Java17ワークスペースの)settings.json
“java.jdt.ls.java.home”:”C:〜17〜”
“`
※VSCodeでJavaHomeを設定していなければOSのシステム環境変数が使用される。
※VSCodeのバージョンが古い場合のプロパティ名は”java.home”になる。

## Linux
“`:ウィンドウ1
export

元記事を表示

【Spring】[org.springframework.web.context.ContextLoaderListener] のアプリケーションリスナの設定中にエラーが発生しました。【Eclipse】

# はじめに
EclipseでSpringの適当なアプリを作ってTomcatを起動すると、表記のエラーがでるので解決策をメモ。

:arrow_down: ログ。
“`
重大: クラス [org.springframework.web.context.ContextLoaderListener] のアプリケーションリスナの設定中にエラーが発生しました
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1449)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1257)
at org.apache.catalina.core.DefaultInstan

元記事を表示

【Spring】org.springframework.web.servlet.DispatcherServlet noHandlerFound【エラー解決】

# はじめに
Spring MVCで適当なアプリを作ったところ、404エラーが出続けたので自分の誤りをメモ。
![無題.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526202/e5e4d8af-9333-f41b-31db-2cc172f36df6.png)

:arrow_down: ログ抜粋
“`
3月 08, 2024 2:29:43 午後 org.springframework.web.servlet.DispatcherServlet noHandlerFound
警告: No mapping for GET /demo6/
3月 08, 2024 2:29:43 午後 org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver handleNoHandlerFoundException
警告: No endpoint GET /demo6/.
“`

# 間違ってたとこ
Bean定義ファイルの

元記事を表示

[Vision API] Javaで画像のクロップヒントを検出する

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

APIを使用し、画像をクロップするヒント(座標)を取得します。
画像のクロップとは、中心のROI矩形領域のみの部分画像の切り出すことで
画像の最適化を行います。

記事では、APIの実行、その結果についてのみを記載していますので、
画像クロップや画像処理周りについて気になる方は検索してください。

:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Vision API] Javaで画像内のいろいろなものを検出する](https://qiita.com/doran/items/444cb6231b7dffb9ddac)
を参照ください。
:::

|No||目次|
|—|—|—|
|1||[Feature.Typeの指定](#1-featuretypeの指定)|
|2||[実行結果の取得](#2-実行結果の取得)|
||1|[レスポンスの出力](#21-レスポンスの出力)|
||2|[レスポンスの内容](#22-レスポンスの内容)|
|3||[結果の

元記事を表示

[Vision API] Javaで画像内の文字を検出する

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

APIを使用し、画像内に含まれている文字を検出します。

画像から光学式文字認識(OCR)を使用してテキストを検出、抽出できます。
検出の指定は2つあります。
|タイプ|検出内容|
|—|—|
|TEXT_DETECTION|抽出された文字列全体、個々の単語、それらの境界ボックスが取得できます。|
|DOCUMENT_TEXT_DETECTION|「TEXT_DETECTION」で取得できる情報に加え、
検出結果の信頼度、ページ、ブロック、段落、単語、改行の情報が取得できます。

:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Vision API] Javaで画像内のいろいろなものを検出する](https://qiita.com/doran/items/444cb6231b7dffb9ddac)
を参照ください。
:::

|No||目次|
|—|—|—|
|1||[Feature.Typeの指定](#1-featuretypeの

元記事を表示

OTHERカテゴリの最新記事