- 1. 依存性注入のメモ
- 2. Lambda ってなんですか〜SkillBuildersってのがある話
- 3. [Google Calendar API(V3)] Javaでアクセス制御ルール(ACL)を作成・更新・削除する
- 4. [Google Calendar API(V3)] Javaでカレンダーのイベントを取得する
- 5. 【初心者】SpringフレームワークにおけるDIコンテナについて
- 6. オブジェクト指向の理解と実践
- 7. [Google Calendar API(V3)] Javaでカレンダーを取得する
- 8. [Google Calendar API(V3)] Javaでカレンダーの空き時間情報を取得する
- 9. [Google Calendar API(V3)] Javaでアクセス制御ルール(ACL)を取得する
- 10. コードの中で日本語を使うことに関しての所感
- 11. Javaで文字列が一致しているか確認する時はequalsを使う
- 12. Doma2を使ってみる(その2)
- 13. [Google Calendar API(V3)] Javaでカレンダーとイベントの色を取得する
- 14. 【Java22】super()をコンストラクタの先頭以外に書けるようになる【JEP 447】
- 15. 【備忘録】Springスターター・プロジェクト(Spring Initializr)を使う時の注意点【Spring Boot, eclipse】
- 16. [Google Calendar API(V3)] Javaでカレンダーのユーザー設定情報を取得する
- 17. 【eclipse】Spring bootでバージョンが違うというエラーが出た(java.lang.UnsupportedClassVersionError)
- 18. 【Spring boot】メイン・クラスcom.example.demo.~を検出およびロードできませんでしたを解決する【eclipse】
- 19. メモ
- 20. [Google Calendar API(V3)] JavaでCalendar APIを使う
依存性注入のメモ
# 依存性注入とは何かChatGPTに聞いてみた
依存性注入(Dependency Injection)は、ソフトウェアエンジニアリングにおける設計原則の一つであり、特定のコンポーネントが他のコンポーネントに依存しないようにするための手法。具体的には、あるオブジェクトが他のオブジェクトを直接生成せずに、外部から提供されることでそのオブジェクトの依存関係を明示的にすること。### 目的
1\. 結合度の低減
クラス間の依存関係を減らし、各クラスを独立して変更やテストができるようにする。
2\. 柔軟性の向上
依存性注入を使用することで、異なる実装のオブジェクトを簡単に交換することができ、システム全体の柔軟性が向上する。
3\. テスト容易性の向上
外部から依存オブジェクトを注入することで、ユニットテストやモックテストが容易になる。# ChatGPTの回答を見て
結局コードで書くとどうなるのかが分からなく、言葉の意味も理解することが難しい
主に保守やテストで作りやすくなるといった目的はなんとなく把握することはできた# 実装してみよう
CarクラスとEngineクラスを用意
車は
Lambda ってなんですか〜SkillBuildersってのがある話
## はじめに
ちょっと執筆中です LTなどで使ったパワポを記事にしていこうと思います。
アプリケーション(まわりにJava アプリケーションエンジニアがおおかったのもあり、JAVA+Tomcatあたりのアプリケーション書いてる人を前提に進めます)エンジニア向けに書いていきます。## 経緯
後輩や同僚から、「AWS始めたい」「アプリケーションエンジニアもそろそろサーバレスをしたい」「ラムだって何?」と、いろんなレベル感のメンバから聞かれるので書いたLT資料です。
行間が読めなくなるのでちょこちょこ説明を追記していこうと思います。目標は「AWS Lambda を使い始める皆様へ」の第一歩目を作る。
## はじまり,はじまり〜
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/8216/d0d8ddee-d8bf-2c83-db94-aef4f40fc978.png)
![image.png](https://qiita-image-store.s3.ap-northeas
[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||目次|
|—|–
[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-レスポンスの内容)|
|2||[イベントを取得](#2-イベントを取得)|
||1|[スコープ](#21-スコープ)|
||2|[実行](#22-実行)|
||3|[レスポンスの内容](#23-レスポンスの内容)|## 1. イベント一覧の取得
指定したカレンダーのイベント一覧を取得します。##
【初心者】SpringフレームワークにおけるDIコンテナについて
## DIコンテナとは何か
DIコンテナは、**オブジェクト間の依存関係を管理する仕組み**です。
インスタンスの生成、オブジェクトへのインスタンスの注入、インスタンスのライフサイクルの管理の役割を担います。
## なぜDIコンテナを使うのか
### 従来“`java
public class UserService {
public ListfindAll() {
UserRepository userRepository = new JdbcUserRepository();
return userRepository.selectAll();
}
}
“`問題点
JdbcUserRepositoryクラスをテスト用のTestUserRepositoryに変更したい場合、以下のように変更する必要があります。
“`java
public class UserService {
public ListfindAll() {
//JdbcUserRepository → TestUserRepository
Use
オブジェクト指向の理解と実践
## 始めに
社会人1年目を乗り切る前に、初めてQiitaを投稿します。新卒1年目、現場で使用するJavaの基礎体力をつけるため、とにかく資格をと思い、
Java BronzeとJava Silverを受験し、どちらも無事合格しました。
ですが、参考書を利用し勉強を行う中で「オブジェクト指向」のチャプターだけ避け続けてきました。第一印象で苦手だと感じると、その印象を拭うのに時間がかかる性格なこともあり、
「オブジェクト指向」というワードが出てくると『はいはい、捨て問ね』と勝手に決めつけ、40ページほどスキップする、そんな勉強をしていました。
運良く資格勉強では障壁になりませんでしたが、現場で働く際、
メンバーと共通の考え方を持つために、「オブジェクト指向」を身につけることはマストだということに気づいたため、今回は苦手克服を目的として執筆しようと思います。### この記事の対象者
– 新卒1年目~2年目エンジニアの方
– Javaの学習を始めた方
– オブジェクト指向から逃げようとした私### この記事で伝えること
– Javaを用いたオブジェクト指向について理解する
[Google Calendar API(V3)] Javaでカレンダーを取得する
Google Calendar API V3(Java)を使用して、
Googleカレンダーを取得する方法
についてご紹介します。Googleカレンダーの左下にあるマイカレンダー、他のカレンダーの情報が取得できます。
:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Google Calendar API(V3)] JavaでCalendar APIを使う](https://qiita.com/doran/items/c735c7b05c0a2ed4bfdb)
を参照ください。
:::|No||目次|
|—|—|—|
|1||[カレンダー一覧を取得](#1-カレンダー一覧を取得)|
||1|[スコープ](#11-スコープ)|
||2|[実行](#12-実行)|
[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を使用するためのキー取得](#