Slide 1

Slide 1 text

依存ライブラリはどこに? 2024年3⽉21⽇ Shigeki Shoji

Slide 2

Slide 2 text

庄司重樹 受賞歴 AWS 2023 Japan Top Engineers 資格 AWS認定12冠 (All Certifications) Professional Scrum Product Owner I Professional Scrum Master I Professional Scrum Developer I コミュニティ AWS Community Builders program、関ジャバ、JJUG、Scala関⻄、もめんと会他 2

Slide 3

Slide 3 text

とあるJavaアプリケーションの構成 3

Slide 4

Slide 4 text

依存ライブラリをどこから取得しよう? 4

Slide 5

Slide 5 text

ライブラリ公開元から直接 • グループ名はDNSドメイン名を逆向きにしたものと推測してみ る… 5

Slide 6

Slide 6 text

Maven等が登場する前 • ソースコードを公開先からダウンロードして取り込む • ftp等で公開先からダウンロードしてクラスパスに追加して取り 込む • 依存ライブラリが別のライブラリに依存していると、対応バー ジョンの不⼀致等で管理がとにかく⼤変 • 開発者が複数いると、ある⼈の環境では動作するが、別の⼈の 環境では動作しないということが増⼤ 6

Slide 7

Slide 7 text

いいアイデアない? 7

Slide 8

Slide 8 text

Hubのようなものがあれば • 個別に公開先からではなく、⼀元管理されたところがあれば 8

Slide 9

Slide 9 text

CI/CDを⽀えるインフラに成⻑ MavenやGradle等を使って⾃動的に依存ライブラリをダウン ロードして、アプリケーションコードをコンパイル、それをパッ ケージングしたアーティファクトをリポジトリにアップロード 9

Slide 10

Slide 10 text

Maven Centralってどこにあるの? • https://repo1.maven.org/maven2 10

Slide 11

Slide 11 text

ライブラリの検索 • https://central.sonatype.com/ 11

Slide 12

Slide 12 text

セマンティックバージョニング • 詳細はここで • 簡単にいうと、後⽅互換性の有無、バグ修正のみの場合などに、どの 部分のバージョンを変更するかの仕様 • Node.js で使⽤される npm ではこのセマンティックバージョニングに 則った形式のみ受け⼊れられている(でも肝⼼の後⽅互換性がないの にマイナーバージョンのみやパッチバージョンの変更がされているラ イブラリがある) 12

Slide 13

Slide 13 text

いいね!社内で開発したライブラリも管 理していい? 13

Slide 14

Slide 14 text

Maven Centralはパブリックリポジトリ • Maven Centralからライブラリのダウンロードに認証不要 • アップロードする場合は、認証と公開鍵⽅式の署名が必要 • 組織内で作成したライブラリを世界中で使ってもらいたい場合 はMaven Centralに登録できる 14

Slide 15

Slide 15 text

プライベートなライブラリの管理 15

Slide 16

Slide 16 text

Inhouse Repository • オンプレミス • Sonatype Nexus • JFrog Artifactory • クラウド • AWS CodeArtifact • GitHub Packages • GitLab Packages and Registries 16

Slide 17

Slide 17 text

アーティファクト管理ツールの特徴 • 最近のアーティファクト管理ツールは脆弱性のチェック機能が ある • Java以外のプロトコル (Go、.NET、Rust、Python、Node.js、 Docker、Linux(rpm)、Linux(apt) その他) にも対応している 17

Slide 18

Slide 18 text

おわりに • 社内の再利⽤可能なアーティファクトを Inhouse Repository を活⽤していきましょう • アーティファクト管理ツールは単なるファイルシステムとは違 うということを理解しましょう 18

Slide 19

Slide 19 text

19 ありがとうございました