複数アプリケーションを育てていくための共通化戦略
by
irof
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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