Slide 1

Slide 1 text

中尾 正剛 PayPayカード株式会社 OSS公開 までの流れ

Slide 2

Slide 2 text

アジェンダ 導入部分 1. なぜ作った? a. なぜOSS公開した? b. OSS公開の流れ 2. アカウント作成 a. GnuPGで鍵作成 b. build.gradleの設定 c. 公開 d. まとめ 3.

Slide 3

Slide 3 text

自己紹介 所属 PayPayカード株式会社 └プロダクト本部  └プロダクト開発部   └プロダクト開発1グループ    └中尾 正剛 経歴 2011/04 中小SES 2015/01 株式会社セレス 2020/10 エキサイト株式会社 2023/11 PayPayカード株式会社 -> NOW

Slide 4

Slide 4 text

0.0.XXってまだプレビュ ー版じゃね? 何だこれは? なんに使うの? OSS公開されました

Slide 5

Slide 5 text

MyBatisGeneretorのプラグインを作りました そもそもなにを作った

Slide 6

Slide 6 text

DBのテーブルの情報を基にSQLを実行できる ファイルを自動生成してくれます。 単一のテーブルに対してデータ取得・追加・更新・削除という 基本的な処理は自動生成ファイルで達成することができる deleteByPrimaryKey insert insertSelective selectByPrimaryKey updateByPrimaryKeySelective updateByPrimaryKey MyBatisGeneretorとは? https://mybatis.org/generator/

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

MyBatisGeneretorを普通に実行すると テーブル数が多いと大量にファイルが作られる。 ファイルが同一パッケージに大量にあると 可読性が悪いので、用途ごとのパッケージでまとめるた めに作った ファイルが多すぎ!

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

自動生成されるので 正直気にしなくても良い

Slide 11

Slide 11 text

なぜOSS公開した? 単純に公開してみたい

Slide 12

Slide 12 text

DBのテーブルの情報を基にSQLを実行できる ファイルを自動生成してくれます。 単一のテーブルに対してデータ取得・追加・更新・削除という 基本的な処理は自動生成ファイルで達成することができる deleteByPrimaryKey insert insertSelective selectByPrimaryKey updateByPrimaryKeySelective updateByPrimaryKey テーブルがパッケージごとに分割されるので関係性がわかりやすい MyBatisGeneretor * package-with-hyphen-separator

Slide 13

Slide 13 text

作り方 PluginAdapterを使えば できるらしい!

Slide 14

Slide 14 text

本題に入ります 英語読む 公式を見る 記事見る https://central.sonatype.org/publish/publish-guide/

Slide 15

Slide 15 text

アカウント作成

Slide 16

Slide 16 text

プロジェクト Community Support - Open Source Project Repository Hosting 課題タイプ New Project 要約(Summary) package-with-hyphen-separator 説明(Description) This is a custom plugin for mybatis generator. Package the snake case (_ delimiter) of the table name. Group Id io.github.naka-sho Project URL https://github.com/naka-sho/package-with-hyphen-separator SCM url https://github.com/naka-sho/package-with-hyphen-separator Already Synced to Central No チケット作成 もしかしたらいまチケット作成する手順じゃないかも。 。 。

Slide 17

Slide 17 text

apt-get install gpg LANG=C gpg --full-gen-key LANG=C gpg --list-keys LANG=C gpg --list-secret-keys --keyid-format short GnuPGで 鍵作成 鍵を作るのにパスワードとかいろいろ設定大変です 赤いところ控えておく

Slide 18

Slide 18 text

公開鍵を 登録する https://keyserver.ubuntu.com gpg --send-keys XXXXX でできなかったのでブラウザから

Slide 19

Slide 19 text

build.gradleの 設定 https://central.sonatype.org/publish/publish-gradle/#introduction MavenDeploymentでエラーになる。 おそらくgradle8.6(2024/3/1)の バージョンに対応していない

Slide 20

Slide 20 text

このあたりは省略 gradleの公式 ページで確認 https://docs.gradle.org/current/userguide/publishing_maven.html 400 bad requerst change URLs to point to your repos, と書いている通り、URLを設定する必要が ありま URLは以下に設定する def releasesRepoUrl = "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2" def snapshotsRepoUrl = "https://s01.oss.sonatype.org/content/repositories/snapshots"

Slide 21

Slide 21 text

このあたりは省略 URL変更して 実行 https://docs.gradle.org/current/userguide/publishing_maven.html Could not PUT 'XXXX'. Received status code 401 from server: Unauthorized どうやらアップロードする際に認証エラー が発生するようだ def releasesRepoUrl = "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2" def snapshotsRepoUrl = "https://s01.oss.sonatype.org/content/repositories/snapshots" アップロードをする際に認証処理が必要

Slide 22

Slide 22 text

このあたりは省略 アップロードをする際に認証処理が必要 https://docs.gradle.org/current/dsl/org.gradle.api.artifacts.repositori es.AuthenticationSupported.html credeincalの 設定を追加 ~/.gradle/gradle.propertiesに credentialsの情報を追加。 mySecureRepositoryUsername=XXXX mySecureRepositoryPassword=YYYY credentialを読み込む設定を追加

Slide 23

Slide 23 text

gradleを実行 gradle :publish を実行。成功を確認する 次は https://s01.oss.sonatype.org/#welcome にログインする

Slide 24

Slide 24 text

公開する サイドメニューからRepositoriesを選択 closeを選択し、stagingする。 このときJava Docが足りないなどチェッ クが入るので修正する Releaseを選択し、本番公開する

Slide 25

Slide 25 text

公開できました! 簡単でしたよね?

Slide 26

Slide 26 text

まとめ とりあえずやってみよう OSS開発は怖くない 誰でもできる

Slide 27

Slide 27 text

最後に 引数でやりたい。 。 開発当初は-も_も区切り文字を変えられるようにしている名残で す。 。 。 hyphenじゃなくunder-barでは? userとuser_attrのテーブルが合った時にuserパッケージにuserを 入れるか、 、 、 Topもパッケージ化するか検討中 強制的にModelにRecordと名前が

Slide 28

Slide 28 text

燃え尽きる メンテナンス全然できてない。 。 。

Slide 29

Slide 29 text

No content