複数アプリケーションを育てていくための共通化戦略
by
irof
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
複数 育 共通Խ戦略 JJUG CCC 2025 Spring @irof
Slide 2
Slide 2 text
2 # 自己 紹介 - -大ࡕ - ## - 関西Java ձ - 月 一 ## 仕事 - 個 人 事ۀ主 - 開発全般 支 ԉ
Slide 3
Slide 3 text
irof 正解 ڭ 初 心 者向 除 現場固有 言 難 投 ײ 現場固有 話 仕事 要 右側 3
Slide 4
Slide 4 text
irof 技術 安定指向 実践主ٛ 場所 見 極 実験 実験 実地検証 本番 検証 4
Slide 5
Slide 5 text
目次 共通Խ 話 共通Խ 共通Խ 共通Խ 段差 乗 ӽ 踏 考 5
Slide 6
Slide 6 text
共通Խ 話 6 共通Խ 話 共通Խ 共通Խ 共通Խ 段差 乗 ӽ 踏 考
Slide 7
Slide 7 text
共通Խ 背景 複数 連携 一 多 存在 特 Java 使 領域 単一 珍 気 分 担当者 ձ社 別 一 ԣ断的 課題 7
Slide 8
Slide 8 text
共通Խ 問題 同 問題 別ʑ 取 組 重複 違 解 出 絶対解 個別最適Խ 解 違 付随 偶有的 問題 大 違 問題 起 時 対処 専門Խ 人 負ՙ 偏 8
Slide 9
Slide 9 text
ԣ道 言 葉 Խ 売 文句 自 由 技術 選 実際別 技術 採用 成立 ӕ 必要 技術 手 出 問題 ۙ年 程度技術統一 流 思 9
Slide 10
Slide 10 text
共通Խ ૂ 重複 削減 品質 安定Խ 人 材流動性 確保 ڍ 思 10
Slide 11
Slide 11 text
共通Խ 足 取 重 難 見 別 困 今 方 手 間 時間 成Ռ 明 示 合意 面倒 仕事 指 示 11 抵抗 n֊層 参考
Slide 12
Slide 12 text
共通Խ 話 共通Խ 取 組 機ձ 少 ʁ偏 気 高 尚 取 組 方 手 探 自 分 経験 言 語Խ 思 次第 12
Slide 13
Slide 13 text
機ձ 13 今回 3 出 打率3割
Slide 14
Slide 14 text
共通Խ 14 共通Խ 話 共通Խ 共通Խ 共通Խ 段差 乗 ӽ 踏 考
Slide 15
Slide 15 text
15
Slide 16
Slide 16 text
[知識共有] 知識 共有 ✅ 手 軽 ⚠認識 採用 不明 ⚠ 共有 16
Slide 17
Slide 17 text
[雰囲気合 ] 共通Խ 取 組 具象Խ 同 作 本当 同 確認 今後 同 ✅共通Խ 低 柔軟性 高 ⚠判断 属 人 的 安定 危険 17
Slide 18
Slide 18 text
[基礎技術 統一] Java SpringBoot 使 技術 ἧ ✅[知識共有] 活用 期待 ✅基礎外 意思決定 導入 迅速 行 ⚠ 使 方 異 独 自 進Խ ᴥᴪ 生 多 ֖ 開 別物 ײ 18
Slide 19
Slide 19 text
[軽量標準Խ] [基礎技術 統一] 明文Խ [知識共有] 行 程度 則 互 期待 ✅技術 一定 水 準下 ⚠統制 効 仕組 形֚Խ ⚠ 標準Խ 検討 期待値 19
Slide 20
Slide 20 text
[ 共通Խ] 設定 処理 他 複製 持 込 ✅導入 低 ✅[雰囲気合 ] 比 具象 扱 伝達精度 高 ⚠ 元 変更 追随 手 間 追随 ༙ 元 管理 遠因 ⚠ 後 変更 期待 20
Slide 21
Slide 21 text
派 生 Spring Initializr Maven archetype GitHub 初期構築 [ 共通Խ] 一形態 精度 上 作 更 新 Өڹ 使 直後 独 自 進Խ 始 注意点 引 継 21
Slide 22
Slide 22 text
[内部 ] 処理共通Խ 一形態 jar 共有 ✅変更 機械的 波及 ⚠ 責任範囲 ᐆດ 混乱 生 22
Slide 23
Slide 23 text
派 生 参照 [ 共通Խ] 持 込 際 Git submodule 別 引 込 使 方法 Git 知識 必要 一度設定 終 日 常的 必要 知識 水 準 上 知 全員 要ٻ ʁ 正直 ק Java 素直 jar 共有 ʁ 23
Slide 24
Slide 24 text
[共通 ] 処理共通Խ 一形態 ӽ 使用 ✅ 制御 容қ ⚠処理 大 運用保守 必要 ⚠ 重 24
Slide 25
Slide 25 text
補 足 [内部 ] [共通 ] 処理 共通Խ 呼 出 呼 出 後 実 行 責任 側 否 大 違 拡張 選択肢 側 持 基本的 実装的 共通処理 [内部 ] ۀ務的 共通処理 [共通 ] 妥当 25 実装的 共通 ۀ務的 共通 分 使 技術 ۙ 考 方 転用 効 判断基準 結構違
Slide 26
Slide 26 text
内部 設定 拡張 Ճ 共通 使用 ✅ 強制 運用 必要 伝 ⚠Өڹ範囲 暗黙的 広 Խ 26 作 本 対象外
Slide 27
Slide 27 text
[ 標準Խ] ✅ ⚠ 27 書
Slide 28
Slide 28 text
[世ք 共通Խ] 外部 使 共通Խ 1 [知識共有] [基礎技術 統一] 採 用 言 ✅世ք 知 見 実績 活用 ⚠ 自 分 ײ 合 ʂ 解決 多 28
Slide 29
Slide 29 text
派 生 内部 公開 [世ք 共通Խ] 一形態 自 分 作 [内部 ] [内部 ] 公開 ✅ ⚠ 話 公開 方ʑ 29
Slide 30
Slide 30 text
30 再掲
Slide 31
Slide 31 text
前提技術要素 31
Slide 32
Slide 32 text
自 分 使 Nexus GitHub Packages AWS CodeArtifact 使 開発端末 CI環ڥ 言 Maven知識 要ٻ 水 準 上 Gradle使 Maven 知識 必要 jar lib OKʁ 手 軽 単純 機能 方 32
Slide 33
Slide 33 text
運用 必ਢ SNAPSHOT 実装次第 努力 再発明 素直 使 番号 複数 場合 SemVer 過剰 見 ׳習 場合 CalVer 合 思 単純 十 分 気 SemVer 1.152 SemVer 採用 …… 提供側 永ٱ 上 気分 使 分 使用側 使用 33
Slide 34
Slide 34 text
話 34 前回 落 🙃 違
Slide 35
Slide 35 text
共通Խ 35 共通Խ 話 共通Խ 共通Խ 共通Խ 段差 乗 ӽ 踏 考
Slide 36
Slide 36 text
一 36
Slide 37
Slide 37 text
同 二 目 作 37 [知識共有] [雰囲気合 ] [ 共通Խ]
Slide 38
Slide 38 text
独 自 進Խ🧟 38 ※ 期間 結構長 他 PiyoApp 増 省略
Slide 39
Slide 39 text
😵💫 39
Slide 40
Slide 40 text
😵💫😵💫 40
Slide 41
Slide 41 text
合 41 [基礎技術 統一] [軽量標準Խ]
Slide 42
Slide 42 text
同 目的 異 拡張 42
Slide 43
Slide 43 text
微妙 違 🤯 43
Slide 44
Slide 44 text
標準 仕組 強制 ʂ 44 [内部 ]
Slide 45
Slide 45 text
GOALʁ 45
Slide 46
Slide 46 text
BAD ENDʁ 46 邪魔ʂ 着 無理 …… 利関係者 増 動
Slide 47
Slide 47 text
BAD ENDʁ 現実 一直線 混在 悲؍ 向 合 取 組 47
Slide 48
Slide 48 text
付録 SpringBoot 共通Խ 48 抽象的 話 続 ṟٳ 的 具象 振 Skip可
Slide 49
Slide 49 text
SpringBoot 一押 SpringBoot 設定 ײ 調整 実 行 環ڥ 一層欲 ԣ断的 同 設定 必要 際 [ 共通Խ] 済 多 対象 多岐 渡 全部設定 ʁ ٙ 心 暗َ 49 付録
Slide 50
Slide 50 text
50 付録
Slide 51
Slide 51 text
使用 共通Խ SpringBoot 入 自 動的 多 共通Խ ༙ [ 共通Խ] 見 都合 変 Өڹ 対Ԡ 微妙 思 数 増 増 顕著 一式 数 starter 作 [基礎技術 統一] 共通Խ 51 付録
Slide 52
Slide 52 text
52 spring-boot-starter-xxx spring-boot-starter-xxx micrometer-registory-xxx hoge-app fuga-app 付録
Slide 53
Slide 53 text
53 spring-boot-starter-xxx spring-boot-starter-xxx micrometer-registory-xxx hoge-app fuga-app my-starter-xxx 付録
Slide 54
Slide 54 text
54 spring-boot-starter-xxx spring-boot-starter-xxx micrometer-registory-xxx hoge-app fuga-app my-starter-xxx Maven Gradle 使 統一 前提 上 依存解決 仕組 修得 上 行 雰囲気 動 依存 入 spring-boot-dependencies ՞ 制御 書 読 ײ 知 期待 難 領域 思 使用 共通Խ 付録
Slide 55
Slide 55 text
共通Խ 実 行 環ڥ 環ڥ変数 設定 複数 場合 SPRING_APPRICATION_JSON 設定 楽 実 行 効 spring.con fi g.import 共通設定 取 込 要 EnvironmentPostProcessor 追Ճ 時 突 込 55 付録
Slide 56
Slide 56 text
脱線:application.yml application.yml properties SpringBoot 読 設定 複数配置 ك 見 読 一 特定条件 上書 @SpringBootTest properties @DynamicProperySource application- test.properties 書 pro fi le 有効 他 方法 56 付録
Slide 57
Slide 57 text
周 特 連携周 運用 統一 個別 設定 設定 自 体 手 軽 手 入 時 全 一律同 多 優先的 共通Խ 57 付録
Slide 58
Slide 58 text
actuator /actuator/info 追Ճ git Spring 書 使 出力 実 行 環ڥ 確実 情報 確認 入 Jar 展開 確認 ك /actuator/env 環ڥ 見 捗 actuator周 一律同 設定 利点 多 Կ 安定 共通Խ 58 付録
Slide 59
Slide 59 text
入 口 出 口 側 変更 最 小 上 入 準備 分散 運 用始 必要 時 ԣ断的 持 最初 入 気 込 明 示 方 良 一時྇ 59 付録
Slide 60
Slide 60 text
例 SpringAOP 特Խ 拡張 用意 時 渋ʑ使 ײ SpringMVC 場合 HandlerInterceptor ControllerAdvice ClientHttpRequestInterceptor 60 付録
Slide 61
Slide 61 text
共通部分 ComponentScan 共通Խ Bean定ٛ 扱 場合 ComponentScan 自 動登録 小 回 効 避 側 見 以外 ComponentScan 事故 制約 原因 AutoCon fi guration 使 難 Import 明 示 的 引 込 61 付録
Slide 62
Slide 62 text
補 足 :SpringBoot 拡張 二択 Bean定ٛ Bean定ٛ 際 SpringBoot 意図 拡張点 注意 Spring 拡張点 使用 SpringBoot 殺 SpringBoot 拡張点 不 足 仕方 仕方 時 注意 必要 62 付録
Slide 63
Slide 63 text
共通Խ 段差 乗 ӽ 63 共通Խ 話 共通Խ 共通Խ 共通Խ 段差 乗 ӽ 踏 考
Slide 64
Slide 64 text
段差 乗 ӽ 共通Խ 取 組 伴 苦労 ײ 段差 呼 落 穴 迷 段差 乗 ӽ 解決 関 係 一対一 64
Slide 65
Slide 65 text
段差 生 原因 押 付 嫌 目 前 問題 苦 労 違 Ձ値基準 押 付 嫌 形 守 標準Խ 出発点 出発点 前提 辛 65
Slide 66
Slide 66 text
段差 空転 実 違 予期 波及 雑用係Խ Խ 聞 使 66
Slide 67
Slide 67 text
[空転 ] [内部 ] [内部 ] [共通 ] 作成 当然 始 機能使 ʁ ٙ 心 暗َ 特 組 合 ؤ張 対Ԡ ୭ 使 …… 利用者 見 OSS 67
Slide 68
Slide 68 text
共通Խ 取 組 重要性 高 標準Խ [軽量標準Խ] [ 標準Խ] 主 成Ռ 物 状گ 後回 経験 人 多 言 読 時 困 時 割 続 大事 68
Slide 69
Slide 69 text
[実 違 ] 同 思 ֖ 開 違 言 [雰囲気合 ] [軽量標準Խ] [ 共通Խ] 起 覚悟 大 見 込 外 [基礎技術 統一] 似 ײ 同 思 使 ك ك 当然 悪意 69
Slide 70
Slide 70 text
[予期 波及 ] [内部 ] Өڹ範囲 広 全体 Өڹ 規模 使 方 目 届 難 気 問題 起 問題 起 変更 怖 悪循環 70
Slide 71
Slide 71 text
[雑用係Խ Խ] [内部 ] 道具箱 入 一括適用 選択肢 出 個別対処 確実 早 対Ԡ 当然 話 領域 対Ԡ 必要性 技術力 上 繰 返 技術格差 広 対Ԡ 人 固定 Խ 話 行 着 雑用係 71
Slide 72
Slide 72 text
[聞 ] 共通Խ 取 組 受 取 側 色 ʑ 言 分 機ձ 言 Թ度ײ 合 仕方 ఘ 作 側 言 思 使 側 言 困 72
Slide 73
Slide 73 text
[使 ] 良 思 作 ୭ 使 他 使 思 自 分 使 使 残 要 使 現実 73
Slide 74
Slide 74 text
乗 ӽ 地道 確認 後方互換 取 組 声 届 関係性 適用度合 色 分 合 一本 74
Slide 75
Slide 75 text
[地道 確認] 機械的 確認 仕組 入 活用 人 力 確認 精度 低 扱 多少 漏 צ違 ڐ容 仕組 ײ 75
Slide 76
Slide 76 text
[後方互換 取 組 ] 後方互換 新 今 通 使 育 [内部 ] [内部 ] 共通Խ 期待 削減 更新 Өڹ 低 受 後方互換性 高 保 必要 互換性 維持 容қ 76
Slide 77
Slide 77 text
後方互換 損 場合 互換性 損 新 対Ԡ 生 [雑用係Խ Խ] 使 独 自 拡張 行 [実 違 ] [使 ] 使用側 当然 選択 言 参考 表出 事象 ୟ ௵ https://irof.hateblo.jp/entry/2025/01/24/121938 77
Slide 78
Slide 78 text
後方互換 取 組 参照 内部 使 JDK 不特定多数 使 比 後方互換 必要 労力 少 実際 必要 違 互換性 取 組 参考 78
Slide 79
Slide 79 text
段֊的移 行 新 IF 作成 順次乗 換 促 IF 維持 内部 ڍ動 [ ] 切 替 排他関係 合 79
Slide 80
Slide 80 text
ՙ下 [空転 ] 要因 適切 捨 削除 @Deprecated 警告 段֊ 置 面倒 ײ ڑ離ײ ۙ 場合 除 一 足 飛 行 ק ؆単 練習 難 参考 緊ٸ時 規律 https://irof.hateblo.jp/entry/2025/02/11/110918 80
Slide 81
Slide 81 text
依存 抑 技術 積 慎重 共通 特 使 後方互換 Өڹ 受 内部 積 派 生 安қ 選定 領域 使 使 使 使 以上 制御 81
Slide 82
Slide 82 text
[声 届 関係性] 共通Խ 押 付 反発 抱 構造 意識的 受 取 良 内部 建 付 幻想 相 手 ձ話 人 間 結構変 ײ 互 知 勝 手 ԇ 積 重 構造 前提 考 82
Slide 83
Slide 83 text
[適用度合 色 分 ] 共通 使 全部適切 判断 済 言 度合 定ٛ RFC RequirementLevel RFC2119 参考 83
Slide 84
Slide 84 text
適用度合 84 RFC 表記例 Թ度ײ MUST REQUIRED SHALL 必ਢ 必 難 場合 相談 欲 SHOULD RECOMMENDED 推奨 基本的 事後 ڭ MAY OPTIONAL 参考 従
Slide 85
Slide 85 text
適用度合 使用例 開発標準 規約 必ਢ Java SpringBoot 使 推奨 SpringBoot 設定 行 Bean定ٛ 設定 [内部 ] 行 避 参考 例 実際 使 程度 85
Slide 86
Slide 86 text
[ ] 朝 Open Feature 86
Slide 87
Slide 87 text
用途 抽象 実現 分離 安定 速度 獲得 87
Slide 88
Slide 88 text
変更 反ө 制御 88 制御 制御 XXX環ڥ向 中 制御 実 行 時 起動時 変更 必要 SpringBoot 処理時 手 動 運用 一環 分 自 動 ON/OFF切 替 的 権限制御 一Ԡ 広ٛ 守備範囲
Slide 89
Slide 89 text
互換 [内部 ] [内部 ] 活用 下 共通Խ 機能 変更 場合 変更 見 送 上 機能 元 維 持 選択肢 残 機能 互換性 維持 移 行 期 不要 次第 片付 89
Slide 90
Slide 90 text
有効Խ [内部 ] 機能 不要 場合 自 体 不採用 Խ 必要 選択 方式 使 不明 組 合 問題 起 小 必要 程度 方 認知負ՙ 軽減 不要 機能 動作 望 有効 無効 切 替 SpringBoot AutoCon fi guration 参考 90
Slide 91
Slide 91 text
実現 手 段 OpenFeature 機能 SpringBoot ConditionalOnXxx系 基本的 実 行 時 起動時 実 行 時 処理時 対Ԡ 自 力実装 外部Խ 実 行 時 処理時 頻繁 参照 検討 必要 設計 必要 …… 91
Slide 92
Slide 92 text
共有Խʁ 複数 同 参照 一Ԡ 実装技術 差 言 語 違 基本的 手 動 切 替 1Օ 所 設計 制御 92
Slide 93
Slide 93 text
共通Խ文脈 例 導入 取捨選択 制御 dependency 選択 方 低 機能 文脈 無効 受 入 制御 側 対Ԡ 別 API 呼 替 制御 93
Slide 94
Slide 94 text
[合 一本 ] [使 ] 要因 一 需要 共通Խ 共通 思 思 自 分 状گ 変 色 ʑ 共通Խ 否 判断 置 1Օ所 使 [ 共通Խ] 複数Օ所 使 変更 波及 望 一本 状گ 踏 考 明 必要 自 信 94
Slide 95
Slide 95 text
95 絡 伝 図
Slide 96
Slide 96 text
踏 考 96 共通Խ 話 共通Խ 共通Խ 共通Խ 段差 乗 ӽ 踏 考
Slide 97
Slide 97 text
ʁ 万能 正解 ୭ 困 状گ 規模 文Խ 様ʑ 要素 落 所 変 今 足 場 確認 少 先 状گ 見 据 選 択 思 ڭ 一緒 考 営ۀ 97
Slide 98
Slide 98 text
ʁ 一 選 小 領域 濃淡 辺 全体 ײ 意図 今 状گ 言 語Խ 留 進 戻 考 98
Slide 99
Slide 99 text
目指 理想 ʁ 段֊ 収束 [使 ] [合 一本 ] ڍ 共通 Խ 必要 進 必要 選択 言 99
Slide 100
Slide 100 text
組織構造 関係 共通Խ 法則 働 専任 間 ڥք 共通 Խ範囲 ڥք 兼任 逆 戦略 組織構造 無視 参考 情報 多 毎回 100
Slide 101
Slide 101 text
共通Խ 取 組 方 供給者 利用者 関係 対立構造 生 孤独 Կ 手 打 容қ 象Ἕ 塔 住 人 思 適切 共通Խ 適切 重要 過剰 101
Slide 102
Slide 102 text
領域 段֊ 共通Խ 考 受 思 小 踏 締 進 最ۙ 🤖 支 ԉ 選 結Ռ 受 取 自 分 同 選択 意志 持 選 方 良質 得 🧠 便利 使 思 102