- 1. [Google Calendar API(V3)] Javaでカレンダーの空き時間情報を取得する
- 2. [Google Calendar API(V3)] Javaでアクセス制御ルール(ACL)を取得する
- 3. コードの中で日本語を使うことに関しての所感
- 4. Javaで文字列が一致しているか確認する時はequalsを使う
- 5. Doma2を使ってみる(その2)
- 6. [Google Calendar API(V3)] Javaでカレンダーとイベントの色を取得する
- 7. 【Java22】super()をコンストラクタの先頭以外に書けるようになる【JEP 447】
- 8. 【備忘録】Springスターター・プロジェクト(Spring Initializr)を使う時の注意点【Spring Boot, eclipse】
- 9. [Google Calendar API(V3)] Javaでカレンダーのユーザー設定情報を取得する
- 10. 【eclipse】Spring bootでバージョンが違うというエラーが出た(java.lang.UnsupportedClassVersionError)
- 11. 【Spring boot】メイン・クラスcom.example.demo.~を検出およびロードできませんでしたを解決する【eclipse】
- 12. メモ
- 13. [Google Calendar API(V3)] JavaでCalendar APIを使う
- 14. Javaで、ディレクトリの一覧を取得。拡張子はproperties。Listに結果を格納したい
- 15. JAVAをたまにしか書かないのでコードのメモを置く
- 16. Javaサーブレットの基本
- 17. staticメソッドから非staticメソッドを呼び出す
- 18. 拡張for文の使い方
- 19. Spring bootで@DateTimeFormatのバリデーションで発生する例外を調査
- 20. Doma2を使ってみる(その1)
[Google Calendar API(V3)] Javaでカレンダーの空き時間情報を取得する
Google Calendar API V3(Java)を使用して、
Googleカレンダーの空き時間情報を取得する方法
についてご紹介します。:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Google Calendar API(V3)] JavaでCalendar APIを使う](https://qiita.com/doran/items/c735c7b05c0a2ed4bfdb)
を参照ください。
:::|No||目次|
|—|—|—|
|1||[空き時間を取得](#1-空き時間を取得)|
||1|[スコープ](#11-スコープ)|
||2|[実行](#12-実行)|
||3|[レスポンスの内容](#13-レスポンスの内容)|## 1. 空き時間を取得
Googleカレンダーの空き時間を取得します。### 1.1. スコープ
このAPIを実行するには、以下のいずれかのスコープを指定してください。
“`
CalendarScopes.CALENDAR
CalendarScopes.CALENDAR_R
[Google Calendar API(V3)] Javaでアクセス制御ルール(ACL)を取得する
Google Calendar API V3(Java)を使用して、
Googleカレンダーのアクセス制御ルール(ACL)を取得する方法
についてご紹介します。**カレンダーのアクセス制御ルール(ACL)とは**
指定したユーザー、またはグループと予定の共有ができます。
UIでは、カレンダーの設定 -> [特定のユーザーまたはグループと共有する]
から設定できる内容です。
:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Google Calendar API(V3)] JavaでCalendar APIを使う](https://qiita.com/doran/items/c735c7b05c0a2ed4bfdb)
を参照ください。
:::|No||目次|
|—|–
コードの中で日本語を使うことに関しての所感
## はじめに
本記事は「Webなんでも勉強会」という勉強会で話した内容をベースに、時間の都合で端折った話などを書き加えたものです。
https://gsfukuoka.connpass.com/event/312323/
ちなみにコードやそれに関する用語はKotlin(およびJava)を前提としています。
## この記事で話すこと
関数名やら変数名に日本語、というかマルチバイト文字が使えるプログラミング言語ってあると思うのですが、実際コードの中で日本語を使うのってどう思いますか?
例えばこんなのです。これは医療保険を表すクラスをKotlinで書いてみたものです。
私は肯定的に思っているのですが、なぜ肯定的なのかを書いていきたいと思います。
“`Kotlin
class 保険(val 保険者番号: String,
val 記号: String,
val 番号: String,
val 枝番: String) {val is後期高齢者: Boolean
get() = // 後期高齢者か
Javaで文字列が一致しているか確認する時はequalsを使う
## はじめに
もうタイトルだけで言いたい事は言ってしまった感があります。
私は業務でほとんどJavaしか使ってこなかったので当然のことだと思っていましたが、他の言語を勉強していく内に以外と`equals`を使わないことが分かってきました。
Javaの子ども(だと勝手に思っている)**Kotlin**ですら`==`で比較できる。::: note info
Kotlinでも`equals`は使えます。
:::
ということでこの件を浅く掘り下げます。## Stringはプリミティブ型ではない
Stringは1文字目が大文字である事からもわかるように**クラス**となります。
`int`や`boolean`といったプリミティブ型ではありません。
ではなぜ以下のような宣言ができるのか。“`java
String text = “abc”;
int num = 123;
“`
これはStringだけの特殊な仕様により、コンパイラが自動的にStringオブジェクトを生成しているためです。
つまり、`String text = “abc”;`の宣言は以下と _概念的には_ 同等になり
Doma2を使ってみる(その2)
# Doma2を使ってみる(その2)
## セットアップ
### 環境
– 言語
– Kotlin 1.9.22
– フレームワーク
– SpringBoot 3.2.3
– buildツール
– Gradle 8.5
– IDE
– Intellij### Intellij用プラグイン
#### [Doma Support](https://plugins.jetbrains.com/plugin/7615-doma-support)
IntelliJ上で、Domaを使った開発を少しだけ便利にすることができるプラグイン
– DAO関連で主にSQLファイルの作成と移動などが簡単になる
[README](https://github.com/siosio/DomaSupport/blob/master/README.md)### Gradle
#### build.gradle.kts“`build.gradle.kts
plugins {
// KotlinでSpring Boot開発を行うためのプラグイン
// https://spring.io/
[Google Calendar API(V3)] Javaでカレンダーとイベントの色を取得する
Google Calendar API V3(Java)を使用して、
Googleカレンダーのカレンダーとイベントの色を取得する
についてご紹介します。下記の色を取得できます。
・カレンダーに指定できる色
・イベントに指定できる色
:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Google Calendar API(V3)] JavaでCalendar APIを使う](https://qiita.com/doran
【Java22】super()をコンストラクタの先頭以外に書けるようになる【JEP 447】
“`java:Java21
public class SuperClass{
public SuperClass(long value) {
/* なんか重い処理 */
}
}public class SubClass extends SuperClass{
public SubClass(long value) {
super(value);// super呼ぶ前に検証したいんじゃが
if(value <= 0){ throw new IllegalArgumentException("non-positive value"); } } } ``` これまで`super()`は必ずコンストラクタの一番最初に書かなければなりませんでした。 2024/03/19にリリースされたJava22において、ようやく次の書式が合法化されました。 ```java:Java22 public class SubClass extends SuperClass{ public SubClass(long value) { // 先に検証できる
【備忘録】Springスターター・プロジェクト(Spring Initializr)を使う時の注意点【Spring Boot, eclipse】
# Javaのバージョンが正しいか確認する!
![スクリーン ショット 2024-04-01 に 15.59.00 午後.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3735520/dcd82509-9117-0aa2-0e3f-35ae1b550de2.png)この確認をし忘れて違うバージョンを選択していると、JREシステムライブラリがアンバインド済みになってしまい、
:::note alert
エラー: メイン・クラスcom.example.demo.~を検出およびロードできませんでした
原因: java.lang.ClassNotFoundException: com.example.demo.~
:::
:::note alert
型 java.lang.Class を解決できません。It is indirectly referenced from required type org.springframework.boot.autoconfigure.SpringBootApplica
[Google Calendar API(V3)] Javaでカレンダーのユーザー設定情報を取得する
Google Calendar API V3(Java)を使用して、
Googleカレンダーのユーザー設定情報を取得する方法
についてご紹介します。Googleカレンダーの右上にある歯車マークを押して表示される
メニューの「設定」から設定できる内容を取得できます。
:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Google Calendar API(V3)] JavaでCalendar APIを使う](https:
【eclipse】Spring bootでバージョンが違うというエラーが出た(java.lang.UnsupportedClassVersionError)
JavaのSpring bootでWebアプリを開発していたら下のようなエラーが発生。
:::note alert
エラー: メイン・クラスcom.example.demo.~のロード中にLinkageErrorが発生しました
java.lang.UnsupportedClassVersionError: com/example/demo/~ has been compiled by a more recent version of the Java Runtime (class file version 66.0), this version of the Java Runtime only recognizes class file versions up to 65.0
:::## 【原因】build.gradleで指定しているバージョンがJavaのバージョンと異なる
1. Javaのバージョンを確認
Eclipseのメニューから[設定]を選択→[Java]-[インストール済みのJRE]を選択
チェックの付いているJavaのバージョンを確認。2. build.grad
【Spring boot】メイン・クラスcom.example.demo.~を検出およびロードできませんでしたを解決する【eclipse】
eclipseを使ってSpring bootでWebアプリを開発していたらコードは間違えていないのに下のようなエラーが出てしまった。
:::note alert
エラー: メイン・クラスcom.example.demo.~を検出およびロードできませんでした
原因: java.lang.ClassNotFoundException: com.example.demo.~
:::
:::note alert
型 java.lang.Class を解決できません。It is indirectly referenced from required type org.springframework.boot.autoconfigure.SpringBootApplication
:::# 【原因】JREシステムライブラリがアンバインド済みもしくは追加されてない
1. プロジェクトを右クリック
1. プロパティを選択
1. Javaのビルド・パスを選択
1. ライブラリー選択
1. 変数の追加からJRE システムライブラリー追加、もしくはアンバインド済みのJREシステムライブラリの編集で使
メモ
~~~Java
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;@Service
public class MessageService {@Value(“${greeting.morning}”)
private String morningMessage;@Value(“${greeting.afternoon}”)
private String afternoonMessage;@Value(“${greeting.evening}”)
private String eveningMessage;@Value(“${error.E101}”)
private String errorE101Message;@Value(“${error.E102}”)
private String errorE102Message;
[Google Calendar API(V3)] JavaでCalendar APIを使う
Googleが提供しているGoogle Calendar APIをJavaで使ってみました。
***Google Calendar APIとは***
Googleが提供しているAPIで、Googleカレンダーに関する操作ができます。Google Calendar APIの利用料金は無料です。
|No|||目次|
|—|—|—|—|
|1|||[Google Calendar APIを使用するための準備](#1-google-calendar-apiを使用するための準備)|
||1||[プロジェクトの作成](#11-プロジェクトの作成)|
||2||[Google Calendar APIの設定](#12-google-calendar-apiの設定)|
||3||[APIを使用するためのキー取得](#
Javaで、ディレクトリの一覧を取得。拡張子はproperties。Listに結果を格納したい
“`java
import java.io.File;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;public class PropertiesFileList {
public static void main(String[] args) {
// クラスパスを基準としたディレクトリのパス
String directoryPath = “/directory”; // ディレクトリが直下にある場合// クラスローダーを使用してリソースを取得
ClassLoader classLoader = PropertiesFileList.class.getClassLoader();
URL resource = classLoader.getResource(directoryPath);if (resource != null) {
// try
JAVAをたまにしか書かないのでコードのメモを置く
# はじめに
1年ほどJAVAを書いておらず、基礎文法を忘れかけていたのでこの記事にメモ書きする。# JAVAメモ
“`java:テンプレ(main.javaだとする)
public class main{
public static void main(String[] args){
}
}
“`“`java:何かを入力・出力したい時
import java.util.Scanner;public class main{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
int n = scan.nextInt(); //単変数の場合
int[] A = new int [n]; //配列の場合
for(int i=0;i
Javaサーブレットの基本
## サーブレットとは
サーブレットとは、JavaでWebアプリケーションを作成するための技術標準の1つです。サーブレットは、Webサーバー上で実行されるJavaプログラムで、クライアントからのリクエストを受け取り、必要な処理を行った後、レスポンスを返します。
サーブレットの主な特徴は以下の通りです。
– プラットフォームに依存しない
– マルチスレッド対応
– 軽量
– 拡張性が高い## サーブレットのライフサイクル
サーブレットには、以下のようなライフサイクルがあります。
1. **インスタンス化** – サーブレットのインスタンスが生成される。
2. **初期化** – `init()`メソッドが呼び出される。
3. **サービス** – `service()`メソッドが呼び出され、HTTP リクエストに応じた処理が行われる。
4. **破棄** – `destroy()`メソッドが呼び出され、サーブレットインスタンスが破棄される。“`mermaid
graph LR
A[インスタンス化] –> B[初期化]
B –> C[サービス]
C –> D[破棄
staticメソッドから非staticメソッドを呼び出す
staticメソッドから非staticメソッドを呼び出したい場合は直接呼び出すことができません。
インスタンスを生成し、そのインスタンスを通して呼び出す必要があります。この記事ではstaticメソッドの概要に加えて、staticメソッドから非staticメソッドを呼び出す方法について記載します。
目次
[1.staticメソッドとは](#1-staticメソッドとは)
[2.非staticメソッドからstaticメソッドを呼び出す](#2-非staticメソッドからstaticメソッドを呼び出す)
[3.staticメソッドから非staticメソッドを呼び出す](#3-staticメソッドから非staticメソッドを呼び出す)# 1. staticメソッドとは
staticメソッドは、戻り値の前にstaticを付けることで宣言できます。
staticメソッドで表現された変数はstatic変数またはクラス変数と呼ばれます。以下の例からは、staticMethodがstatic変数(クラス変数)であり、staticMethodと命名されたメソッドがstaticメソッドである
拡張for文の使い方
for文を書く際に拡張for文を使うことが多いので、for文と拡張for文の違いや、拡張for文の利便性をまとめます。
目次
[1.for文とは](#1-for文とは)
[2.拡張for文とは](#2-拡張for文とは)# 1. for文とは
まず、for文について説明します。
for文は以下の要素で成り立ちます。
・for文で使用する変数の宣言と初期化を行う初期化式
・繰り返し処理が実行される条件を記載する条件式
・ループ処理が終わるたびに実行される変化式
“`java
for (初期化式; 条件式; 変化式;) {
処理
}
“`
サンプルに当てはめてみます。
iは0から始まり、numに1が足される処理が10回実行されます。
“`java
int num = 0;for (int i = 0; i <10; i++;) { num += 1; } ``` # 2. 拡張for文とは 次に、拡張for文について説明します。 拡張for文は、配列やArrayListなどのコレクションの要素に対して順番に処理を行うことができます。 ()内には以下の要素を記
Spring bootで@DateTimeFormatのバリデーションで発生する例外を調査
## 環境
* Spring boot 3.2.4
* Amazon Corretto JDK 17## 調査したこと
* Controllerで日付のパラメタを受け取るときに、バリデーションをかけたい
* @DateTimeFormatと@JsonFormatは@Sizeなどの通常のバリデーションとスローされる例外が異なっていた
* @RequestParamと@RequestBodyの位置の違いでも動作が異なるため、それぞれ試してみる## 結果
|位置|バリデーション|スローされる例外|
|-|-|-|
|@PathVariable|@Size|ConstraintViolationException|
|@PathVariable|@DateTimeFormat|MethodArgumentTypeMismatchException|
|@RequestParam|@Size|ConstraintViolationException|
|@RequestParam|@DateTimeFormat|MethodArgumentTypeMismatchException
Doma2を使ってみる(その1)
# Doma2を使ってみる(その1)
## ライブラリ概要
Doma 2はJava 8+向けのデータベースアクセスフレームワークです。Domaにはさまざまな強みがあります。## 特徴
– SQLマッパー型
– 2-way SQL
– Kotlinサポート
– コンパイル時にアノテーションプロセッサーを使用して、ソースコードを検証および生成します。
– 型安全なCriteria APIを提供します。
– 他のライブラリに依存しません。### SQLマッパー型
データベースのテーブルとプログラムのクラスを直接対応付けることができます。
また、SQLは別途テキストファイルに書くことが多い
#### メリット
– 学習コストが低い
– SQLを知っていれば利用することができる
#### デメリット
– 誰でも扱える結果、共通化されないことが多い
#### 選定理由
– 開発者を選ばずとりあえず DB アクセスをして動くものを作りたい場合に採用される### 2-way SQL
SQL単体でも、プログラムからでも実行できる
“`sql
select * from t_pr