- 1. 【Spring Boot入門】#1 Spring Boot + Thymeleafで新規登録画面を作成する
- 2. 【Spring Boot入門】#0 事前準備
- 3. 開発経験ゼロからの挑戦!AzureFunctionsを使った処理効率化方法と成功するまでの道のり
- 4. JSPとServletについて
- 5. Spring Bootプロジェクトのリファクタリング
- 6. Spring Boot アノテーション一覧
- 7. Dependency Injection
- 8. Java Jsp サーブレット フォームの値取得(POST)。出力。
- 9. Mustacheテンプレートを使用したソース自動生成
- 10. 韓国語の形態素解析をJavaで行う
- 11. Javaのメモリ管理とガベージコレクションの仕組みについて
- 12. 【備忘録】Spring Securityの導入
- 13. 【Androidアプリ開発】Hilt Unable to instantiate activity 解決策
- 14. ACSのサポート(推奨)Java について ~2024.10月時点
- 15. 【Java】Spring BootとMySQLを使ったREST API構築入門 – データベースからテーブルのデータを取得する
- 16. Java 文字列⇔数値 変換
- 17. 【Java】配列中の最大値検索をJavaで実装してみる【アルゴリズム】
- 18. JSP&サーブレットによるwebアプリケーション作成の覚書
- 19. 先輩社員がどうやって不具合を解決しているのか
- 20. Java SE Gold で勉強したことメモ(Predicate編)
- 21. Spring Bootをマスターするまでのロードマップ
【Spring Boot入門】#1 Spring Boot + Thymeleafで新規登録画面を作成する
## はじめに
自身の知識のアウトプットも兼ねて、新人研修用に作成した記事となります。Spring Bootを学び始めた方を対象とした内容になっています。開発環境や依存関係については、前回の記事を参照ください。
https://qiita.com/ioaio/items/10af72b06252541ca1a7
## 概要
企業情報登録画面を作成します。
クライアントからのリクエスト(URL)を元に画面を表示する為のControllerの作成と、遷移先である画面をThymeleafで作成していきます。#### 完成イメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3917178/a4da3148-81be-3bd1-f667-14b2b29fde1e.png)## パッケージ構成
赤枠で囲ったパッケージ、クラス、HTMLファイルを今回作成していきます。![image.png](https://qiita-image-store.s3.ap-northeast-1
【Spring Boot入門】#0 事前準備
## はじめに
自身の知識のアウトプットも兼ねて、新人研修用に作成した記事となります。Spring Bootを学び始めた方を対象とした内容になっています。## 環境要件
“`none:環境要件
OS:Windows 10 Pro
Java:17.0.2
Spring Boot:3.3.4
DB:XAMPP(MySQL 10.4.21-MariaDB)
IDE:Spring Tool Suite 4(STS)
“`## 依存関係
新規プロジェクト作成時に、依存関係(機能)を追加します。
今回追加した依存関係は以下の通りです。#### Lombok
Javaプログラミングにおける便利なライブラリで、コードの冗長性を減らし、開発効率を向上させます。アノテーションを用いることで、getterやsetter、toStringメソッドなどのボイラープレートコードを自動生成し、手動での記述を不要にします。#### MySQL Driver
Spring BootアプリケーションがMySQLデータベースへ接続するために使用されるJDBCドライバです。MySQL Connector/
開発経験ゼロからの挑戦!AzureFunctionsを使った処理効率化方法と成功するまでの道のり
## はじめに
こんにちは!AgVenture Labの荒井です。Azure Functions、皆さんはご存知ですか?Azure FunctionsはMicrosoftのクラウドサービスで、サーバレス環境でコードを実行できる便利な仕組みです。
実は、私はシステムエンジニアの経験はあるものの、アプリ開発についてはほぼ初心者。
それでもAzure Functionsを使って既存のプロダクトの処理効率化に挑戦してみました。この記事では、そんな初心者がAzure Functionsを使いこなそうと奮闘した体験談をお届け
します。
これを読んでいただければ、初めての方でも自信を持って一歩を踏み出せるはずです!:::note info
本記事のポイント
・Functionsを用いたサーバ(Java)の処理効率化(非同期化)
・JavaCVでのffmpeg機能実行
・Azure Queue Storageの活用
:::## 目次
1. [Azure Functionsの利用方法](#azure-functionsの利用方法)
2. [なぜAzureFunctionsを選んだの
JSPとServletについて
# JSPとServletについて
## 概要
JSP(JavaServer Pages)とServletは、JavaでWebアプリケーションを開発するための主要な技術です。Javaをバックエンドとして使い、サーバーサイドで動的にコンテンツを生成することで、クライアントに情報を提供します。JSPはHTMLにJavaコードを埋め込むためのテンプレートエンジンで、ユーザーインターフェースの設計に使われることが多く、Servletはサーバーサイドロジックを記述するためのJavaプログラムです。
## JSPとは
JSP(JavaServer Pages)は、HTMLページ内にJavaコードを埋め込むことで、動的なWebページを生成するテンプレート技術です。JSPは、Javaコードを直接埋め込んで処理するため、ユーザーのリクエストに応じた動的コンテンツ生成に適しています。
### JSPの特徴
– **HTMLとJavaの混在**: JSPはHTMLコードにJavaコードを埋め込んで使用します。
– **サーバーサイドでの処理**: JSPはサーバー側でコンパイル・実行され、クライ
Spring Bootプロジェクトのリファクタリング
## はじめに
進行中のプロジェクトでリファクタリングを担当しています。使用しているフレームワークはVue.jsとSpring Bootで、クライアントとサーバーはREST API(JSONフォーマット)で通信しています。
リファクタリングの経験がないため、どのような手順で進めればよいかを調査しながら、成果と学びを記録に残していきたいと考えています。## リファクタリングの目的
リファクタリングの必要性を明確にし、以下の目的を目指します。**1. コードの可読性向上:** コードを整理し、後から変更や追加がしやすい構造にする。
**2. 保守性向上:** メンテナンスが容易で、エラーやバグが発生しにくい構造を目指す。
**3. パフォーマンスの最適化:** 不必要な計算や処理を取り除き、効率的に動作させる。## リファクタリングの進行手順
### 1. 現状と課題の分析 ###
**・コードレビュー:** 画面のバックエンド側のソースコードに対してコードレビューを実施し、改善が必要な箇所を洗い出す。
**・課題リストの作成と優先度の決定:** リファクタリング対象箇所をリス
Spring Boot アノテーション一覧
Spring Bootのアノテーションの一覧です。
間違い等あればご指摘ください。@SpringBoot
メインメソッドを含んだクラスに付与すると「SpringBootアプリケーション」と認識される
@Controller
SpringMVCで、アプリケーション層のコントローラーに付与
Javaクラスに付与すると、このクラスはコントローラーと認識してくれる。
thymeleafを使用したHTMLをレスポンスするときに使用@RestController
jsonやxmlをレスポンスするときに使用
RestAPI、もしくはRestfulAPIを呼び出す時はReact.jsなどのFEから呼び出す必要があるDependency Injection
@Autowired
依存性の注入
インスタンス生成するクラスに付与@Component
@Controller・@Service・@Repogitory・@RestContro
Java Jsp サーブレット フォームの値取得(POST)。出力。
### ■完成画面
・Eclipse使用
1:入力画面(insert.jsp)
![スクリーンショット (106).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478380/e80c779a-4ce2-bdda-5cdf-b60ff572e7da.png)
2:処理(ShainInsertComplete.java)
![スクリーンショット (107).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478380/76ddeafe-ac07-650a-8b3b-d53b80e2cb96.png)### ■ソースコード
・insert.jsp
“`jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
Mustacheテンプレートを使用したソース自動生成
# はじめに
何十年も前からプログラムソース自動生成は行われてきました。今でこそ、生成AIが自動生成してくれますが、昔はルールベースで、テンプレートエンジンと呼ばれるライブラリがその役割を担っていました。**Apache Velocity**等はHTMLを生成するJSP等の代わりに使用するエンジンとして使用されるケースも多かったですが、私が携わっていたプロジェクトではソース自動生成ツールのテンプレートとして使用していました。また、多くのOSSでもテンプレートエンジンは使用されており、例えば**OpenAPI Generator**は内部に**Mustache**を使用しています。
今回、私もMustacheを使用してソース自動生成を作ってみたのですが、多少ハマったため、Mustacheについてご紹介いたします。尚、今回はソース自動生成を目的としたMustacheの利用になりますが、Mustacheは**Velocity**や**Thymeleaf**等と同様に動的HTMLを生成することもでき、**SpringBoot**でもサポートしてます。ただ、今回はあくまでプログラムソース
韓国語の形態素解析をJavaで行う
# 概要
韓国語の形態素解析器はいくつか存在するようですが、「open-korean-text」がよさそうでした。
https://github.com/open-korean-text/open-korean-text?tab=readme-ov-file
# maven
“`xml
org.openkoreantext
open-korean-text
2.1.0
“`# サンプルコード
“`java
package hello;import java.util.List;
import org.openkoreantext.processor.KoreanTokenJava;
import org.openkoreantext.processor.OpenKoreanTextProcessorJava;
import org.open
Javaのメモリ管理とガベージコレクションの仕組みについて
## ■ はじめに
初めに**GarbageCollection**とい言葉について。
**garbage(ガベージ)** : 「ごみ」や「くず」、「がらくた」などのこと。
**collection(コレクション)** :「収集」や「回収」、「収集物」などのこと。garbage + collection = GarbageCollection (ガベージコレクション)
つまりガベージコレクションは直訳で**ごみの収集** といった意味合いになります。Javaでいうガベージコレクションとは**プログラムで使用していないメモリを開放すること**です。
またガベージコレクタというものが、定期的にメモリの開放を行います。このガベージコレクションはメモリリーク[^1]の発生を防ぎ、
アプリケーションを効率よく動作させるための最適化に役立ちます。この記事ではJavaのメモリ構造やガベージコレクションの役割、
ガベージコレクションチューニングの基礎知識について解説していこうとおもいます。## ■ 目次
1. [Javaのメモリ構造](#1-j
【備忘録】Spring Securityの導入
# Spring Security
Spring Security実装のメモ書き
## 開発環境
javaのバージョン : 21
springbootのバージョン : 3.3.5
依存関係の管理 : gradle## Spring Security の追加
gladleに依存関係を追加します。
“`gradle:build.gradle
dependencies {
implementation ‘org.springframework.boot:spring-boot-starter-security’
}
“`
プロジェクトを再ロードすることでSpring Securityがプロジェクトに追加されます。## ログイン画面の表示
Spring securityの追加が完了すれば、ログイン画面が使えるようになります。
プロジェクトを実行し、http://localhost:8080 にアクセスするとログイン画面が表示されます。
![ログイン画面](https://qiita-image-store.s3.ap-northeast-1.amazon
【Androidアプリ開発】Hilt Unable to instantiate activity 解決策
## はじめに
DIをやりたかったのでH
ACSのサポート(推奨)Java について ~2024.10月時点
主題の通りです。
## ACSのサポートJavaに関するドキュメント
こちらの情報を参照してください。
Java Options for IBM i Access Client Solutions?
https://www.ibm.com/support/pages/node/719405## 2024年10月時点での推奨Javaバージョンについて
***ACS 1.1.8.0以降はJava 8 以降がサポートになります。上記ドキュメントによれば、推奨はJava 11です。(2024/10現在)***
## ACSが推奨するJavaディストリビューターは?
上記のウェブページに記載があるのは下記4つです。推奨、と明確に書かれていないものもありますが、わざわざ3つ挙げていますのでほかのJavaよりは推奨、と言えると思います。
**1.Oracle OpenJDK**
**2.IBM Semeru Runtimes IBM OpenJ9 (Eclipse OpenJ9)**
https://developer.ibm.com/languages/java/seme
【Java】Spring BootとMySQLを使ったREST API構築入門 – データベースからテーブルのデータを取得する
この記事では、`build.gradle` に必要な依存関係を追加済みの状態で、Spring BootアプリケーションからMySQLデータベースに接続し、`test_table` テーブルのデータを取得するREST APIを構築する手順について解説します。
## 準備
### 1. テーブル作成
A5でテーブルを作成し、データを投入しておく。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3782903/b4727166-7b6b-6634-f36b-14c58ba894a1.png)## 手順
### 1. `TestTable` エンティティの作成
まず、データベースの `test_table` テーブルに対応するJavaクラスを作成します。このクラスはJPAのエンティティとして設定され、Spring Data JPAがデータベースのテーブルとマッピングを行います。
#### エンティティクラスコード例
“`java
package com.example.demo
Java 文字列⇔数値 変換
Java の 文字列⇔数値 変換に関する、自分用のメモです。
# 数値 ⇒ 文字列
## valueof() メソッド
### 使用例
“` Java
int i = 0;
long l = 0L;
String s1 = String.valueof(i);
String s2 = String.valueof(l);
“`### メソッドの説明
“` Java
String クラス
public static String valueOf(int i)public static String valueOf(long l)
“`
int / long 引数の文字列表現を返す。## +演算子
### 使用例
“` Java
int i = 0;
String s = “” + i;
“`## toString() メソッド
### 使用例
“` Java
int i = 0;
String s = new Integer(i).toString();
“`
### メソッドの説明
“` Java
String クラス
public String
【Java】配列中の最大値検索をJavaで実装してみる【アルゴリズム】
## はじめに
基礎的なアルゴリズムをJavaで実装していきます。
今回は **「配列中の最大値検索」** です。## 配列中の最大値検索
目的:
カンマ区切りの複数の数値を受け取り、その中で最も大きい数値を検索します。手段:
「配列に格納した値を先頭から1つずつ取り出して比較し、前より値が大きければ戻り値を更新する。
配列の最後の値を比較し終わった時点で戻り値に入っている値が、その配列の最大値になる。」というアルゴリズムです。## 設計
カンマ区切りの値を1つ1つ配列に格納するために `split()` を使っています。
また、1行単位で標準入力を読み込んだ場合String型になるので、それをint型に変換する処理を挟んでいます。(数値の大小比較をしたいため)## ソース
### フォルダ構成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524566/1dd917c6-8a51-f265-a341-e3677264ab6c.png)### ソースコード
“`
JSP&サーブレットによるwebアプリケーション作成の覚書
# はじめに
JSP&サーブレットで web アプリケーションを作成する際に学習した事項を絞って覚書にしました。あまり触らなくなりましたが、基本的な部分を忘れかけていたので、ここに覚書として残しておきます。
:::note warn
最新の情報では無い場合があります。
:::# Tomcat
Tomcat はオープンソースのサーブレットコンテナ。サーブレットコンテナとは、端的に言うと「JSP に対応したウェブサーバ」のこと。Tomcat では、サーバ上のプログラムを「アプリケーション」という単位で管理しており、一つのサーバの中に複数のアプリケーションを配備することができる。
### アプリケーションフォルダの設定
1. webapps フォルダに配置する方法
アプリケーション(WAR ファイルまたは展開されたフォルダ)を Tomcat の webapps ディレクトリに配置する。Tomcat は起動時にこのフォルダ内のアプリケーションを自動的に検出して展開する。
1. 外部設定ファイルを使用する方法
Tomcat にアプリケーションフォルダの場所を設定するには
先輩社員がどうやって不具合を解決しているのか
## 自己紹介
– opengl-8080
– たまに Qiita で技術メモを書いたり
– 関西在住・SIer 勤務—
## はじめに
– システム開発をしていると、いろいろな場面で不具合と遭遇する
– 当然、不具合は解決しなければならない
– 下に若手がついて一緒に開発をすることがあるが、不具合の解決方法が分からないと相談を受けることがよくある
– 経験が浅いと、不具合調査のために何から着手すればいいか分からない
– ある程度パターン化された手順を踏むことで、多くの不具合は解決できるという経験的な認識がある
– 私がどういう手順で、何を考えながら不具合の解決を行っているかを整理・説明することで、若手の成長に繋がれば幸いJava SE Gold で勉強したことメモ(Predicate編)
関数型インターフェースのPredicate\
の使いどころについて以下のような場合が挙げられるようです。
Predicateを用いて説明用変数を導入し、処理内容を分かりやすくできます。“`php:Type.java
public enum BloodType{ //血液型を表すEnumクラス
A,B,AB,O;
}
“`
“`php:Patient.java
public class Patient{ //患者を表すクラス
private BloodType bType;
private int age;public Patient(BloodType bType, int age){
this.bType = bType;
this.age = age;
}
//getter類は省略
}“`
Predicateを使用しない場合
“`php:Main.java
public class Main{
public static void main(String[] a
Spring Bootをマスターするまでのロードマップ
# はじめに
業務でSpring Bootを使って、REST APIの開発する予定なので、マスターするまでのロードマップを生成AIに聞いてまとめてみました。私のスキルレベルはこんな感じ
– Javaは学生の頃からちょくちょく触ってて、業務でもコーディングはしてきた。(半年 ~ 1年未満)
– Spring Bootに関しては、1ヶ月程度研修で勉強したレベル (1年前ぐらい)
DIコンテナあたりの概念は知ってて、超基本的な実装だったらできるつもり# 生成AIに質問してみた
こんな感じで質問してみました、結構良さそう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3561504/7ac57199-03d0-6c82-7200-2340bc448d87.png)# 作成したロードマップ
内容精査して、整理してみた。ねずみ色はこれから学習しようと思っていること。
苦手意識があり、注力してしっかり勉強したいことは赤色にしました。
※括弧内は到達レベルの目標です。
## 基本編 (