pom.xml
Mavenの設定ファイル。Project Object ModelでPOM。プロジェクトの情報、依存関係、利用するプラグライン・ライセンス・SCMのURLなど様々な情報を記録できる。
Mavenってなに?
ビルドツール兼依存管理ツール補足
pom.xmlにspring-boot-starter-data-jpa や h2などど書くと、Mavenがネットから自動でダウンロードしてプロジェクトに追加してくれる。
勝手に追加するなんて怖いなあ
→Mavenの自動ダウンロードは基本的に安全(HTTPS/チェックサム等)だが、企業ではプロキシやアーティファクト管理サーバーで更に保護する。個人の学習では問題ないが、公開プロジェクトではバージョン管理や脆弱性チェックを習慣にする方が良い。
SCMってなに?
Soure Control Management(ソース管理)。代表はGit。JPA / Spring Data JPA
JPAは「Javaでデータベースのレコードをオブジェクトとして扱う仕組み」
(Java Persistence API)
Spring Data JPAはその使いやすい実装(便利なRepositoryを提供)
JPAを使うとSQLを直接ゴリゴリ書かなくてもsave(), findAll()みたいなメソッドでDB操作できる。
H2
H2(H2 Database)は軽量なデータベース(開発用にとても手軽)
組み込みで動く(メモリ上かファイルに保存)ので開発や試作に便利
Eclipseでファイルが2通りの見え方をする理由
Eclipseでは、Package ExplorerとProject Explorer / Navigatorという2通りのビューがある。
初見だと戸惑うが、単にどちらも便利なので両方用意しているだけらしい。基本的に同じファイルを指すので慣れた方を使ってよい。
Package Explorer
Javaのパッケージ構造(論理構造)を中心に見せるビューで、Java開発向けの表示。
Project Explorer / Navigator
ワークスペース/ファイルシステムに近い「実体(ファイル・フォルダ)」を見せるビューで、言語やプラグインに応じた追加情報(外部ライブラリやWebリソースなど)を表示できる汎用ビュー。
(参考:https://help.eclipse.org/latest/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2Freference%2Fviews%2Fref-view-package-explorer.htm&utm_source%3Dchatgpt.com)
checksum(チェックサム)
ダウンロードしたファイルが改ざんされてないか確認するための短いハッシュ値(検証用)
プロキシ (network proxy)
一般にはネットワーク経由通信を中継する装置/ソフト。社内から外部(Maven Centralなど)へ行く通信を制御したりログを取ったりする。
アーティファクト管理サーバー(Nexus/Artifactory)
パッケージ(jarなど=アーティファクト)を補完・配布・キャッシュする専用サーバ。外部リポジトリの内容をキャッシュ(=プロキシ機能)したり、社内専用のアーティファクトを置いたりできる。( 別にデバフを1回防げたりはしない )
アーティファクト管理サーバは「プロキシ機能+アーティファクトの管理機能」を持つことが多く、実務ではこれを使って外部依存の安全管理を行う
repository.save() / findAll()
Spring Data JPAの典型メソッド。save()はオブジェクトをDBに保存、findAll()は全件検索してオブジェクトのリストを返す
中央リポジトリ(Maven Central)
多くのライブラリが公開されている公式のパッケージ配布所。Mavenはここから依存を引っ張ることが多い。
SBOM(Software Bill of Materials)
そのソフトが使っている部品(ライブラリ)の「材料表」。セキュリティや監査で使う。
Spring Initializr
Spring Boot プロジェクトのひな型を自動生成してくれるWeb/サービス(start.spring.io)や裏のAPI。