@k2works/claude-code-booster 1.10.0 → 1.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +42 -42
  3. package/bin/claude-code-booster +79 -79
  4. package/lib/assets/.claude/README.md +162 -162
  5. package/lib/assets/.claude/SKILLS_TEMPLATE.md +100 -100
  6. package/lib/assets/.claude/scripts/generate-inception-deck.mjs +911 -911
  7. package/lib/assets/.claude/settings.json +11 -11
  8. package/lib/assets/.claude/skills/ai-agent-guidelines/SKILL.md +119 -119
  9. package/lib/assets/.claude/skills/analyzing-architecture/SKILL.md +87 -87
  10. package/lib/assets/.claude/skills/analyzing-business/SKILL.md +117 -117
  11. package/lib/assets/.claude/skills/analyzing-data-model/SKILL.md +80 -80
  12. package/lib/assets/.claude/skills/analyzing-domain-model/SKILL.md +88 -88
  13. package/lib/assets/.claude/skills/analyzing-inception-deck/SKILL.md +137 -137
  14. package/lib/assets/.claude/skills/analyzing-non-functional/SKILL.md +91 -91
  15. package/lib/assets/.claude/skills/analyzing-operation/SKILL.md +91 -91
  16. package/lib/assets/.claude/skills/analyzing-requirements/SKILL.md +89 -87
  17. package/lib/assets/.claude/skills/analyzing-tech-stack/SKILL.md +102 -102
  18. package/lib/assets/.claude/skills/analyzing-test-strategy/SKILL.md +87 -87
  19. package/lib/assets/.claude/skills/analyzing-ui-design/SKILL.md +86 -86
  20. package/lib/assets/.claude/skills/analyzing-usecases/SKILL.md +87 -87
  21. package/lib/assets/.claude/skills/creating-adr/SKILL.md +115 -115
  22. package/lib/assets/.claude/skills/developing-backend/SKILL.md +106 -106
  23. package/lib/assets/.claude/skills/developing-frontend/SKILL.md +96 -96
  24. package/lib/assets/.claude/skills/developing-release/SKILL.md +154 -154
  25. package/lib/assets/.claude/skills/generating-slides/SKILL.md +136 -136
  26. package/lib/assets/.claude/skills/git-commit/SKILL.md +106 -106
  27. package/lib/assets/.claude/skills/killing-processes/SKILL.md +98 -98
  28. package/lib/assets/.claude/skills/managing-docs/SKILL.md +200 -200
  29. package/lib/assets/.claude/skills/managing-operations/DEPLOY.md +77 -77
  30. package/lib/assets/.claude/skills/managing-operations/SETUP_CSHARP.md +80 -80
  31. package/lib/assets/.claude/skills/managing-operations/SETUP_FRONTEND.md +84 -84
  32. package/lib/assets/.claude/skills/managing-operations/SETUP_JAVA.md +75 -75
  33. package/lib/assets/.claude/skills/managing-operations/SKILL.md +156 -156
  34. package/lib/assets/.claude/skills/orchestrating-analysis/SKILL.md +134 -134
  35. package/lib/assets/.claude/skills/orchestrating-development/SKILL.md +243 -243
  36. package/lib/assets/.claude/skills/orchestrating-project/SKILL.md +193 -193
  37. package/lib/assets/.claude/skills/planning-releases/SKILL.md +222 -222
  38. package/lib/assets/.claude/skills/tracking-progress/SKILL.md +164 -164
  39. package/lib/assets/.devcontainer/devcontainer.json +34 -34
  40. package/lib/assets/.env.example +17 -17
  41. package/lib/assets/.gitattributes +4 -4
  42. package/lib/assets/.github/workflows/docker-publish.yml +77 -77
  43. package/lib/assets/.github/workflows/mkdocs.yml +39 -39
  44. package/lib/assets/AGENTS.md +94 -94
  45. package/lib/assets/CLAUDE.md +162 -162
  46. package/lib/assets/README.md +285 -269
  47. package/lib/assets/docker-compose.yml +33 -33
  48. package/lib/assets/docs/assets/css/extra.css +29 -29
  49. package/lib/assets/docs/assets/js/extra.js +44 -44
  50. package/lib/assets/docs/index.md +14 -14
  51. package/lib/assets/docs/reference/CodexCLIMCP/343/202/242/343/203/227/343/203/252/343/202/261/343/203/274/343/202/267/343/203/247/343/203/263/351/226/213/347/231/272/343/203/225/343/203/255/343/203/274.md +532 -532
  52. package/lib/assets/docs/reference/CodexCLIMCP/343/202/265/343/203/274/343/203/220/343/203/274/350/250/255/345/256/232/346/211/213/351/240/206.md +341 -341
  53. package/lib/assets/docs/reference/Java/343/202/242/343/203/227/343/203/252/343/202/261/343/203/274/343/202/267/343/203/247/343/203/263/347/222/260/345/242/203/346/247/213/347/257/211/343/202/254/343/202/244/343/203/211.md +578 -578
  54. package/lib/assets/docs/reference/TypeScript/343/202/242/343/203/227/343/203/252/343/202/261/343/203/274/343/202/267/343/203/247/343/203/263/347/222/260/345/242/203/346/247/213/347/257/211/343/202/254/343/202/244/343/203/211.md +465 -465
  55. package/lib/assets/docs/reference/UI/350/250/255/350/250/210/343/202/254/343/202/244/343/203/211.md +448 -448
  56. package/lib/assets/docs/reference//343/202/210/343/201/204/343/202/275/343/203/225/343/203/210/343/202/246/343/202/247/343/202/242/343/201/250/343/201/257.md +242 -242
  57. package/lib/assets/docs/reference//343/202/242/343/203/274/343/202/255/343/203/206/343/202/257/343/203/201/343/203/243/350/250/255/350/250/210/343/202/254/343/202/244/343/203/211.md +2216 -2216
  58. package/lib/assets/docs/reference//343/202/244/343/203/263/343/203/225/343/203/251/350/250/255/350/250/210/343/202/254/343/202/244/343/203/211.md +1878 -1878
  59. package/lib/assets/docs/reference//343/202/250/343/202/257/343/202/271/343/203/210/343/203/252/343/203/274/343/203/240/343/203/227/343/203/255/343/202/260/343/203/251/343/203/237/343/203/263/343/202/260.md +554 -554
  60. package/lib/assets/docs/reference//343/202/263/343/203/274/343/203/207/343/202/243/343/203/263/343/202/260/343/201/250/343/203/206/343/202/271/343/203/210/343/202/254/343/202/244/343/203/211.md +705 -705
  61. package/lib/assets/docs/reference//343/203/206/343/202/271/343/203/210/346/210/246/347/225/245/343/202/254/343/202/244/343/203/211.md +1313 -1313
  62. package/lib/assets/docs/reference//343/203/207/343/203/274/343/202/277/343/203/242/343/203/207/343/203/253/350/250/255/350/250/210/343/202/254/343/202/244/343/203/211.md +311 -311
  63. package/lib/assets/docs/reference//343/203/211/343/203/241/343/202/244/343/203/263/343/203/242/343/203/207/343/203/253/350/250/255/350/250/210/343/202/254/343/202/244/343/203/211.md +599 -599
  64. package/lib/assets/docs/reference//343/203/223/343/202/270/343/203/215/343/202/271/343/202/242/343/203/274/343/202/255/343/203/206/343/202/257/343/203/201/343/203/243/345/210/206/346/236/220/343/202/254/343/202/244/343/203/211.md +528 -528
  65. package/lib/assets/docs/reference//343/203/246/343/203/274/343/202/271/343/202/261/343/203/274/343/202/271/344/275/234/346/210/220/343/202/254/343/202/244/343/203/211.md +682 -682
  66. package/lib/assets/docs/reference//343/203/252/343/203/252/343/203/274/343/202/271/343/202/254/343/202/244/343/203/211.md +442 -442
  67. package/lib/assets/docs/reference//343/203/252/343/203/252/343/203/274/343/202/271/343/203/273/343/202/244/343/203/206/343/203/254/343/203/274/343/202/267/343/203/247/343/203/263/350/250/210/347/224/273/343/202/254/343/202/244/343/203/211.md +558 -558
  68. package/lib/assets/docs/reference//347/222/260/345/242/203/345/244/211/346/225/260/347/256/241/347/220/206/343/202/254/343/202/244/343/203/211.md +663 -663
  69. package/lib/assets/docs/reference//350/246/201/344/273/266/345/256/232/347/276/251/343/202/254/343/202/244/343/203/211.md +1248 -1248
  70. package/lib/assets/docs/reference//351/201/213/347/224/250/350/246/201/344/273/266/345/256/232/347/276/251/343/202/254/343/202/244/343/203/211.md +392 -392
  71. package/lib/assets/docs/reference//351/226/213/347/231/272/343/202/254/343/202/244/343/203/211.md +235 -235
  72. package/lib/assets/docs/reference//351/235/236/346/251/237/350/203/275/350/246/201/344/273/266/345/256/232/347/276/251/343/202/254/343/202/244/343/203/211.md +1236 -1236
  73. package/lib/assets/docs/template/ADR.md +30 -30
  74. package/lib/assets/docs/template/README.md +50 -50
  75. package/lib/assets/docs/template//343/201/276/343/201/232/343/201/223/343/202/214/343/202/222/350/252/255/343/202/202/343/201/206/343/203/252/343/202/271/343/203/210.md +12 -12
  76. package/lib/assets/docs/template//343/202/244/343/203/206/343/203/254/343/203/274/343/202/267/343/203/247/343/203/263/345/256/214/344/272/206/345/240/261/345/221/212/346/233/270.md +58 -58
  77. package/lib/assets/docs/template//343/202/244/343/203/263/343/202/273/343/203/227/343/202/267/343/203/247/343/203/263/343/203/207/343/203/203/343/202/255.md +13 -13
  78. package/lib/assets/docs/template//343/203/223/343/202/270/343/203/215/343/202/271/343/202/242/343/203/274/343/202/255/343/203/206/343/202/257/343/203/201/343/203/243.md +379 -379
  79. package/lib/assets/docs/template//345/256/214/345/205/250/345/275/242/345/274/217/343/201/256/343/203/246/343/203/274/343/202/271/343/202/261/343/203/274/343/202/271.md +68 -68
  80. package/lib/assets/docs/template//350/246/201/344/273/266/345/256/232/347/276/251.md +669 -669
  81. package/lib/assets/docs/template//350/250/255/350/250/210.md +163 -163
  82. package/lib/assets/gulpfile.js +23 -23
  83. package/lib/assets/mkdocs.yml +65 -65
  84. package/lib/assets/ops/docker/mkdoc/Dockerfile +19 -19
  85. package/lib/assets/ops/scripts/journal.js +180 -180
  86. package/lib/assets/ops/scripts/mkdocs.js +82 -82
  87. package/lib/assets/ops/scripts/release.js +431 -431
  88. package/lib/assets/ops/scripts/ssh.js +190 -190
  89. package/lib/assets/ops/scripts/vault.js +299 -299
  90. package/lib/assets/package-lock.json +1653 -1653
  91. package/lib/assets/package.json +40 -40
  92. package/lib/gulpfile.js +37 -37
  93. package/package.json +41 -41
@@ -1,579 +1,579 @@
1
- # Java アプリケーション環境構築ガイド
2
-
3
- ## 概要
4
-
5
- 本ガイドは、Java アプリケーション開発環境をゼロから構築し、ソフトウェア開発の三種の神器(バージョン管理、テスティング、自動化)を実践するための手順書です。
6
-
7
- ## 前提条件
8
-
9
- - Java 17 以降がインストールされていること
10
- - Git がインストールされていること
11
- - IntelliJ IDEA または VS Code がインストールされていること(推奨)
12
-
13
- ## ソフトウェア開発の三種の神器
14
-
15
- ### 1. バージョン管理
16
-
17
- #### Git の基本設定
18
-
19
- ```bash
20
- # ユーザー設定
21
- git config --global user.name "Your Name"
22
- git config --global user.email "your.email@example.com"
23
-
24
- # リポジトリの初期化
25
- git init
26
-
27
- # .gitignore の作成
28
- echo "build/" >> .gitignore
29
- echo ".gradle/" >> .gitignore
30
- echo "*.class" >> .gitignore
31
- echo ".idea/" >> .gitignore
32
- echo "*.iml" >> .gitignore
33
- ```
34
-
35
- #### コミットメッセージ規約(Angular ルール)
36
-
37
- ```text
38
- <タイプ>(<スコープ>): <タイトル>
39
- <空行>
40
- <ボディ>
41
- <空行>
42
- <フッタ>
43
- ```
44
-
45
- **タイプの種類:**
46
-
47
- - `feat`: 新機能の追加
48
- - `fix`: バグ修正
49
- - `docs`: ドキュメント変更のみ
50
- - `style`: コードに影響を与えない変更(フォーマット等)
51
- - `refactor`: 機能追加でもバグ修正でもないコード変更
52
- - `perf`: パフォーマンスを改善するコード変更
53
- - `test`: テストの追加または修正
54
- - `chore`: ビルドプロセスやツールの変更
55
-
56
- **例:**
57
- ```bash
58
- git commit -m 'feat: FizzBuzz機能の実装'
59
- git commit -m 'refactor: メソッドの抽出'
60
- git commit -m 'chore: 静的コード解析セットアップ'
61
- ```
62
-
63
- ### 2. テスティング
64
-
65
- #### JUnit 5 と AssertJ のセットアップ
66
-
67
- Gradle プロジェクトの初期化:
68
-
69
- ```bash
70
- ./gradlew init --type java-application
71
- ```
72
-
73
- `build.gradle` の基本設定:
74
-
75
- ```groovy
76
- plugins {
77
- id 'java'
78
- id 'application'
79
- }
80
-
81
- repositories {
82
- mavenCentral()
83
- }
84
-
85
- dependencies {
86
- // JUnit 5
87
- testImplementation 'org.junit.jupiter:junit-jupiter-api:5.10.1'
88
- testImplementation 'org.junit.jupiter:junit-jupiter-params:5.10.1'
89
- testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.10.1'
90
-
91
- // AssertJ
92
- testImplementation 'org.assertj:assertj-core:3.24.2'
93
- }
94
-
95
- test {
96
- useJUnitPlatform()
97
- }
98
-
99
- application {
100
- mainClass = 'App'
101
- }
102
- ```
103
-
104
- #### テストの実行
105
-
106
- ```bash
107
- # テストの実行
108
- ./gradlew test
109
-
110
- # 継続的テスト実行(ファイル変更監視)
111
- ./gradlew test --continuous
112
- ```
113
-
114
- ### 3. 自動化
115
-
116
- #### 完全な Gradle セットアップ
117
-
118
- `build.gradle` の完全版:
119
-
120
- ```groovy
121
- plugins {
122
- id 'java'
123
- id 'application'
124
- id 'jacoco'
125
- id 'checkstyle'
126
- id 'pmd'
127
- id 'com.github.spotbugs' version '6.0.7'
128
- id 'org.gradle.test-retry' version '1.5.6'
129
- }
130
-
131
- repositories {
132
- mavenCentral()
133
- }
134
-
135
- dependencies {
136
- // テスト関連
137
- testImplementation 'org.junit.jupiter:junit-jupiter-api:5.10.1'
138
- testImplementation 'org.junit.jupiter:junit-jupiter-params:5.10.1'
139
- testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.10.1'
140
- testImplementation 'org.assertj:assertj-core:3.24.2'
141
-
142
- // SpotBugs関連
143
- spotbugsPlugins 'com.h3xstream.findsecbugs:findsecbugs-plugin:1.12.0'
144
- }
145
-
146
- application {
147
- mainClass = 'App'
148
- }
149
-
150
- test {
151
- useJUnitPlatform()
152
-
153
- // テスト失敗時のリトライ設定
154
- retry {
155
- maxRetries = 3
156
- maxFailures = 20
157
- failOnPassedAfterRetry = false
158
- }
159
-
160
- // テストログ設定
161
- testLogging {
162
- events "passed", "skipped", "failed"
163
- exceptionFormat "full"
164
- }
165
- }
166
-
167
- // JaCoCo(コードカバレッジ)設定
168
- jacoco {
169
- toolVersion = "0.8.11"
170
- }
171
-
172
- jacocoTestReport {
173
- dependsOn test
174
- reports {
175
- xml.required = false
176
- csv.required = false
177
- html.outputLocation = layout.buildDirectory.dir('jacocoHtml')
178
- }
179
- }
180
-
181
- // PMD 設定
182
- pmd {
183
- consoleOutput = true
184
- toolVersion = "6.55.0"
185
- ruleSetFiles = files("config/pmd/ruleset.xml")
186
- ruleSets = []
187
- }
188
-
189
- // カスタムタスク:TDD用の継続的テスト実行
190
- task tdd(type: Test) {
191
- useJUnitPlatform()
192
- testLogging {
193
- events "passed", "skipped", "failed"
194
- exceptionFormat "full"
195
- }
196
- outputs.upToDateWhen { false }
197
- }
198
-
199
- // カスタムタスク:品質チェック全実行
200
- task qualityCheck {
201
- dependsOn 'checkstyleMain', 'checkstyleTest', 'pmdMain', 'pmdTest', 'spotbugsMain', 'spotbugsTest'
202
- description 'Run all quality checks'
203
- group 'verification'
204
- }
205
-
206
- // カスタムタスク:すべてのチェックとテストを実行
207
- task fullCheck {
208
- dependsOn 'test', 'qualityCheck', 'jacocoTestReport'
209
- description 'Run all tests and quality checks'
210
- group 'verification'
211
- }
212
-
213
- // ファイル変更監視タスク
214
- task watchTest {
215
- doLast {
216
- println "Watching for file changes..."
217
- println "Run: ./gradlew test --continuous"
218
- println "Or use your IDE's auto-test feature"
219
- }
220
- }
221
- ```
222
-
223
- ## 静的コード解析ツール
224
-
225
- ### Checkstyle の設定
226
-
227
- `config/checkstyle/checkstyle.xml` を作成:
228
-
229
- ```bash
230
- mkdir -p config/checkstyle
231
- ```
232
-
233
- ```xml
234
- <?xml version="1.0"?>
235
- <!DOCTYPE module PUBLIC
236
- "-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
237
- "https://checkstyle.org/dtds/configuration_1_3.dtd">
238
-
239
- <module name="Checker">
240
- <property name="charset" value="UTF-8"/>
241
-
242
- <!-- ファイルレベルのチェック -->
243
- <module name="FileTabCharacter">
244
- <property name="eachLine" value="true"/>
245
- </module>
246
-
247
- <!-- TreeWalkerによるAST解析 -->
248
- <module name="TreeWalker">
249
- <!-- インデント -->
250
- <module name="Indentation">
251
- <property name="basicOffset" value="4"/>
252
- </module>
253
-
254
- <!-- 命名規則 -->
255
- <module name="TypeName"/>
256
- <module name="MethodName"/>
257
- <module name="VariableName"/>
258
- <module name="ConstantName"/>
259
-
260
- <!-- その他 -->
261
- <module name="EmptyStatement"/>
262
- <module name="EqualsHashCode"/>
263
- <module name="MagicNumber">
264
- <property name="ignoreHashCodeMethod" value="true"/>
265
- <property name="ignoreAnnotation" value="true"/>
266
- </module>
267
-
268
- <!-- 循環複雑度のチェック -->
269
- <module name="CyclomaticComplexity">
270
- <property name="max" value="7"/>
271
- <property name="switchBlockAsSingleDecisionPoint" value="false"/>
272
- </module>
273
- </module>
274
- </module>
275
- ```
276
-
277
- ### PMD の設定
278
-
279
- `config/pmd/ruleset.xml` を作成:
280
-
281
- ```bash
282
- mkdir -p config/pmd
283
- ```
284
-
285
- ```xml
286
- <?xml version="1.0"?>
287
- <ruleset name="Custom Rules"
288
- xmlns="http://pmd.sourceforge.net/ruleset/2.0.0"
289
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
290
- xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0
291
- https://pmd.sourceforge.io/ruleset_2_0_0.xsd">
292
-
293
- <description>カスタム PMD ルールセット</description>
294
-
295
- <!-- 基本ルールセット -->
296
- <rule ref="category/java/bestpractices.xml">
297
- <exclude name="JUnitTestContainsTooManyAsserts"/>
298
- </rule>
299
-
300
- <rule ref="category/java/codestyle.xml">
301
- <exclude name="AtLeastOneConstructor"/>
302
- <exclude name="CommentDefaultAccessModifier"/>
303
- </rule>
304
-
305
- <rule ref="category/java/design.xml">
306
- <!-- 循環複雑度を7に制限 -->
307
- <exclude name="CyclomaticComplexity"/>
308
- </rule>
309
-
310
- <!-- 循環複雑度のカスタム設定 -->
311
- <rule ref="category/java/design.xml/CyclomaticComplexity">
312
- <properties>
313
- <property name="classReportLevel" value="80"/>
314
- <property name="methodReportLevel" value="7"/>
315
- <property name="cycloOptions" value=""/>
316
- </properties>
317
- </rule>
318
-
319
- <!-- 認知複雑度の設定 -->
320
- <rule ref="category/java/design.xml/CognitiveComplexity">
321
- <properties>
322
- <property name="reportLevel" value="7"/>
323
- </properties>
324
- </rule>
325
-
326
- <rule ref="category/java/errorprone.xml">
327
- <exclude name="BeanMembersShouldSerialize"/>
328
- </rule>
329
-
330
- <rule ref="category/java/performance.xml"/>
331
-
332
- <rule ref="category/java/security.xml"/>
333
- </ruleset>
334
- ```
335
-
336
- build.gradle に PMD 設定を追加:
337
-
338
- ```groovy
339
- // PMD 設定
340
- pmd {
341
- consoleOutput = true
342
- toolVersion = "6.55.0"
343
- ruleSetFiles = files("config/pmd/ruleset.xml")
344
- ruleSets = []
345
- }
346
- ```
347
-
348
- PMD はカスタム設定で以下をチェック:
349
-
350
- - マジックナンバーの使用
351
- - 空の catch ブロック
352
- - 循環複雑度が 7 を超えるメソッド
353
- - 認知複雑度が 7 を超えるメソッド
354
- - 不要なコード
355
-
356
- ### SpotBugs の設定(デフォルト設定を使用)
357
-
358
- SpotBugs は以下のバグパターンを検出:
359
-
360
- - Null ポインタ参照
361
- - リソースリーク
362
- - セキュリティ脆弱性
363
- - パフォーマンス問題
364
-
365
- ## タスクランナーコマンド一覧
366
-
367
- ### 基本コマンド
368
-
369
- ```bash
370
- # 依存関係のインストール
371
- ./gradlew build
372
-
373
- # テストの実行
374
- ./gradlew test
375
-
376
- # TDDモードでテスト実行
377
- ./gradlew tdd
378
-
379
- # 継続的テスト実行
380
- ./gradlew test --continuous
381
- ```
382
-
383
- ### 品質チェックコマンド
384
-
385
- ```bash
386
- # Checkstyle実行
387
- ./gradlew checkstyleMain
388
- ./gradlew checkstyleTest
389
-
390
- # PMD実行
391
- ./gradlew pmdMain
392
- ./gradlew pmdTest
393
-
394
- # SpotBugs実行
395
- ./gradlew spotbugsMain
396
- ./gradlew spotbugsTest
397
-
398
- # すべての品質チェック実行
399
- ./gradlew qualityCheck
400
- ```
401
-
402
- ### カバレッジ測定
403
-
404
- ```bash
405
- # テスト実行とカバレッジレポート生成
406
- ./gradlew test jacocoTestReport
407
-
408
- # レポートは build/jacocoHtml/index.html で確認
409
- ```
410
-
411
- ### 統合コマンド
412
-
413
- ```bash
414
- # すべてのテストと品質チェックを実行
415
- ./gradlew fullCheck
416
-
417
- # タスク一覧の表示
418
- ./gradlew tasks --group verification
419
- ```
420
-
421
- ## 開発フロー
422
-
423
- ### 1. プロジェクトの初期化
424
-
425
- ```bash
426
- # プロジェクトディレクトリの作成
427
- mkdir my-java-project
428
- cd my-java-project
429
-
430
- # Git リポジトリの初期化
431
- git init
432
-
433
- # Gradle プロジェクトの初期化
434
- ./gradlew init --type java-application
435
-
436
- # 設定ファイルの配置(上記の build.gradle、checkstyle.xml、PMD ruleset.xml)
437
-
438
- # 依存関係のインストール
439
- ./gradlew build
440
-
441
- # 初期コミット
442
- git add .
443
- git commit -m 'chore: プロジェクトの初期化'
444
- ```
445
-
446
- ### 2. TDD サイクルの実践
447
-
448
- ```bash
449
- # 継続的テスト実行を開始
450
- ./gradlew test --continuous
451
-
452
- # 別ターミナルで開発を進める
453
- # 1. 失敗するテストを書く(Red)
454
- # 2. テストを通す最小限のコードを書く(Green)
455
- # 3. リファクタリング(Refactor)
456
-
457
- # 品質チェック
458
- ./gradlew qualityCheck
459
-
460
- # コミット
461
- git add .
462
- git commit -m 'feat: 新機能の実装'
463
- ```
464
-
465
- ### 3. カバレッジ確認
466
-
467
- ```bash
468
- # テストとカバレッジレポート生成
469
- ./gradlew test jacocoTestReport
470
-
471
- # ブラウザでレポートを確認
472
- open build/jacocoHtml/index.html # macOS
473
- start build/jacocoHtml/index.html # Windows
474
- ```
475
-
476
- ## IDE 統合
477
-
478
- ### IntelliJ IDEA
479
-
480
- 1. プロジェクトを開く
481
- 2. `File` → `Settings` → `Build, Execution, Deployment` → `Build Tools` → `Gradle`
482
- 3. `Build and run using` を `Gradle` に設定
483
- 4. `Run tests using` を `Gradle` に設定
484
-
485
- **自動テスト実行の設定:**
486
- - `Run` → `Edit Configurations`
487
- - `+` → `Gradle`
488
- - `Tasks` に `test --continuous` を設定
489
-
490
- ### VS Code
491
-
492
- 必要な拡張機能:
493
- - Extension Pack for Java
494
- - Gradle for Java
495
- - Test Runner for Java
496
-
497
- `settings.json` に追加:
498
- ```json
499
- {
500
- "java.test.runner": "junit",
501
- "java.test.config": {
502
- "workingDirectory": "${workspaceFolder}"
503
- }
504
- }
505
- ```
506
-
507
- ## トラブルシューティング
508
-
509
- ### Gradle Wrapper が動作しない場合
510
-
511
- ```bash
512
- # Gradle Wrapper の再生成
513
- gradle wrapper --gradle-version=8.5
514
-
515
- # 実行権限の付与(Unix系)
516
- chmod +x gradlew
517
- ```
518
-
519
- ### テストが見つからない場合
520
-
521
- - テストクラス名が `*Test.java` で終わっているか確認
522
- - テストメソッドに `@Test` アノテーションがあるか確認
523
- - `src/test/java` ディレクトリ配下にテストクラスがあるか確認
524
-
525
- ### 静的解析ツールのエラーを無視したい場合
526
-
527
- ```java
528
- // Checkstyle を無視
529
- // CHECKSTYLE:OFF
530
- 問題のあるコード
531
- // CHECKSTYLE:ON
532
-
533
- // PMD を無視
534
- @SuppressWarnings("PMD.MethodNamingConventions")
535
- public void my_method() { }
536
-
537
- // SpotBugs を無視
538
- @SuppressFBWarnings("NP_NULL_ON_SOME_PATH")
539
- public void method() { }
540
- ```
541
-
542
- ## ベストプラクティス
543
-
544
- 1. **コミットは小さく頻繁に**
545
-
546
- - 機能単位でコミット
547
- - テストが通る状態でコミット
548
-
549
- 2. **テストファースト**
550
-
551
- - 実装前にテストを書く
552
- - テストが失敗することを確認してから実装
553
-
554
- 3. **継続的な品質チェック**
555
-
556
- - コミット前に `./gradlew qualityCheck` を実行
557
- - カバレッジ 80% 以上を目標
558
- - 循環複雑度を 7 以下に維持
559
-
560
- 4. **自動化の活用**
561
-
562
- - `./gradlew test --continuous` を常に起動
563
- - IDE の自動テスト機能を活用
564
-
565
- 5. **リファクタリングの習慣**
566
-
567
- - テストが通ったらリファクタリング
568
- - 重複コードの排除
569
- - 意図が明確なコード
570
-
571
- 6. **複雑度の管理**
572
-
573
- - メソッドの循環複雑度は 7 以下を維持
574
- - 複雑なロジックは小さなメソッドに分割
575
- - 早期リターンやガード節を活用して複雑度を削減
576
-
577
- ## まとめ
578
-
1
+ # Java アプリケーション環境構築ガイド
2
+
3
+ ## 概要
4
+
5
+ 本ガイドは、Java アプリケーション開発環境をゼロから構築し、ソフトウェア開発の三種の神器(バージョン管理、テスティング、自動化)を実践するための手順書です。
6
+
7
+ ## 前提条件
8
+
9
+ - Java 17 以降がインストールされていること
10
+ - Git がインストールされていること
11
+ - IntelliJ IDEA または VS Code がインストールされていること(推奨)
12
+
13
+ ## ソフトウェア開発の三種の神器
14
+
15
+ ### 1. バージョン管理
16
+
17
+ #### Git の基本設定
18
+
19
+ ```bash
20
+ # ユーザー設定
21
+ git config --global user.name "Your Name"
22
+ git config --global user.email "your.email@example.com"
23
+
24
+ # リポジトリの初期化
25
+ git init
26
+
27
+ # .gitignore の作成
28
+ echo "build/" >> .gitignore
29
+ echo ".gradle/" >> .gitignore
30
+ echo "*.class" >> .gitignore
31
+ echo ".idea/" >> .gitignore
32
+ echo "*.iml" >> .gitignore
33
+ ```
34
+
35
+ #### コミットメッセージ規約(Angular ルール)
36
+
37
+ ```text
38
+ <タイプ>(<スコープ>): <タイトル>
39
+ <空行>
40
+ <ボディ>
41
+ <空行>
42
+ <フッタ>
43
+ ```
44
+
45
+ **タイプの種類:**
46
+
47
+ - `feat`: 新機能の追加
48
+ - `fix`: バグ修正
49
+ - `docs`: ドキュメント変更のみ
50
+ - `style`: コードに影響を与えない変更(フォーマット等)
51
+ - `refactor`: 機能追加でもバグ修正でもないコード変更
52
+ - `perf`: パフォーマンスを改善するコード変更
53
+ - `test`: テストの追加または修正
54
+ - `chore`: ビルドプロセスやツールの変更
55
+
56
+ **例:**
57
+ ```bash
58
+ git commit -m 'feat: FizzBuzz機能の実装'
59
+ git commit -m 'refactor: メソッドの抽出'
60
+ git commit -m 'chore: 静的コード解析セットアップ'
61
+ ```
62
+
63
+ ### 2. テスティング
64
+
65
+ #### JUnit 5 と AssertJ のセットアップ
66
+
67
+ Gradle プロジェクトの初期化:
68
+
69
+ ```bash
70
+ ./gradlew init --type java-application
71
+ ```
72
+
73
+ `build.gradle` の基本設定:
74
+
75
+ ```groovy
76
+ plugins {
77
+ id 'java'
78
+ id 'application'
79
+ }
80
+
81
+ repositories {
82
+ mavenCentral()
83
+ }
84
+
85
+ dependencies {
86
+ // JUnit 5
87
+ testImplementation 'org.junit.jupiter:junit-jupiter-api:5.10.1'
88
+ testImplementation 'org.junit.jupiter:junit-jupiter-params:5.10.1'
89
+ testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.10.1'
90
+
91
+ // AssertJ
92
+ testImplementation 'org.assertj:assertj-core:3.24.2'
93
+ }
94
+
95
+ test {
96
+ useJUnitPlatform()
97
+ }
98
+
99
+ application {
100
+ mainClass = 'App'
101
+ }
102
+ ```
103
+
104
+ #### テストの実行
105
+
106
+ ```bash
107
+ # テストの実行
108
+ ./gradlew test
109
+
110
+ # 継続的テスト実行(ファイル変更監視)
111
+ ./gradlew test --continuous
112
+ ```
113
+
114
+ ### 3. 自動化
115
+
116
+ #### 完全な Gradle セットアップ
117
+
118
+ `build.gradle` の完全版:
119
+
120
+ ```groovy
121
+ plugins {
122
+ id 'java'
123
+ id 'application'
124
+ id 'jacoco'
125
+ id 'checkstyle'
126
+ id 'pmd'
127
+ id 'com.github.spotbugs' version '6.0.7'
128
+ id 'org.gradle.test-retry' version '1.5.6'
129
+ }
130
+
131
+ repositories {
132
+ mavenCentral()
133
+ }
134
+
135
+ dependencies {
136
+ // テスト関連
137
+ testImplementation 'org.junit.jupiter:junit-jupiter-api:5.10.1'
138
+ testImplementation 'org.junit.jupiter:junit-jupiter-params:5.10.1'
139
+ testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.10.1'
140
+ testImplementation 'org.assertj:assertj-core:3.24.2'
141
+
142
+ // SpotBugs関連
143
+ spotbugsPlugins 'com.h3xstream.findsecbugs:findsecbugs-plugin:1.12.0'
144
+ }
145
+
146
+ application {
147
+ mainClass = 'App'
148
+ }
149
+
150
+ test {
151
+ useJUnitPlatform()
152
+
153
+ // テスト失敗時のリトライ設定
154
+ retry {
155
+ maxRetries = 3
156
+ maxFailures = 20
157
+ failOnPassedAfterRetry = false
158
+ }
159
+
160
+ // テストログ設定
161
+ testLogging {
162
+ events "passed", "skipped", "failed"
163
+ exceptionFormat "full"
164
+ }
165
+ }
166
+
167
+ // JaCoCo(コードカバレッジ)設定
168
+ jacoco {
169
+ toolVersion = "0.8.11"
170
+ }
171
+
172
+ jacocoTestReport {
173
+ dependsOn test
174
+ reports {
175
+ xml.required = false
176
+ csv.required = false
177
+ html.outputLocation = layout.buildDirectory.dir('jacocoHtml')
178
+ }
179
+ }
180
+
181
+ // PMD 設定
182
+ pmd {
183
+ consoleOutput = true
184
+ toolVersion = "6.55.0"
185
+ ruleSetFiles = files("config/pmd/ruleset.xml")
186
+ ruleSets = []
187
+ }
188
+
189
+ // カスタムタスク:TDD用の継続的テスト実行
190
+ task tdd(type: Test) {
191
+ useJUnitPlatform()
192
+ testLogging {
193
+ events "passed", "skipped", "failed"
194
+ exceptionFormat "full"
195
+ }
196
+ outputs.upToDateWhen { false }
197
+ }
198
+
199
+ // カスタムタスク:品質チェック全実行
200
+ task qualityCheck {
201
+ dependsOn 'checkstyleMain', 'checkstyleTest', 'pmdMain', 'pmdTest', 'spotbugsMain', 'spotbugsTest'
202
+ description 'Run all quality checks'
203
+ group 'verification'
204
+ }
205
+
206
+ // カスタムタスク:すべてのチェックとテストを実行
207
+ task fullCheck {
208
+ dependsOn 'test', 'qualityCheck', 'jacocoTestReport'
209
+ description 'Run all tests and quality checks'
210
+ group 'verification'
211
+ }
212
+
213
+ // ファイル変更監視タスク
214
+ task watchTest {
215
+ doLast {
216
+ println "Watching for file changes..."
217
+ println "Run: ./gradlew test --continuous"
218
+ println "Or use your IDE's auto-test feature"
219
+ }
220
+ }
221
+ ```
222
+
223
+ ## 静的コード解析ツール
224
+
225
+ ### Checkstyle の設定
226
+
227
+ `config/checkstyle/checkstyle.xml` を作成:
228
+
229
+ ```bash
230
+ mkdir -p config/checkstyle
231
+ ```
232
+
233
+ ```xml
234
+ <?xml version="1.0"?>
235
+ <!DOCTYPE module PUBLIC
236
+ "-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
237
+ "https://checkstyle.org/dtds/configuration_1_3.dtd">
238
+
239
+ <module name="Checker">
240
+ <property name="charset" value="UTF-8"/>
241
+
242
+ <!-- ファイルレベルのチェック -->
243
+ <module name="FileTabCharacter">
244
+ <property name="eachLine" value="true"/>
245
+ </module>
246
+
247
+ <!-- TreeWalkerによるAST解析 -->
248
+ <module name="TreeWalker">
249
+ <!-- インデント -->
250
+ <module name="Indentation">
251
+ <property name="basicOffset" value="4"/>
252
+ </module>
253
+
254
+ <!-- 命名規則 -->
255
+ <module name="TypeName"/>
256
+ <module name="MethodName"/>
257
+ <module name="VariableName"/>
258
+ <module name="ConstantName"/>
259
+
260
+ <!-- その他 -->
261
+ <module name="EmptyStatement"/>
262
+ <module name="EqualsHashCode"/>
263
+ <module name="MagicNumber">
264
+ <property name="ignoreHashCodeMethod" value="true"/>
265
+ <property name="ignoreAnnotation" value="true"/>
266
+ </module>
267
+
268
+ <!-- 循環複雑度のチェック -->
269
+ <module name="CyclomaticComplexity">
270
+ <property name="max" value="7"/>
271
+ <property name="switchBlockAsSingleDecisionPoint" value="false"/>
272
+ </module>
273
+ </module>
274
+ </module>
275
+ ```
276
+
277
+ ### PMD の設定
278
+
279
+ `config/pmd/ruleset.xml` を作成:
280
+
281
+ ```bash
282
+ mkdir -p config/pmd
283
+ ```
284
+
285
+ ```xml
286
+ <?xml version="1.0"?>
287
+ <ruleset name="Custom Rules"
288
+ xmlns="http://pmd.sourceforge.net/ruleset/2.0.0"
289
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
290
+ xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0
291
+ https://pmd.sourceforge.io/ruleset_2_0_0.xsd">
292
+
293
+ <description>カスタム PMD ルールセット</description>
294
+
295
+ <!-- 基本ルールセット -->
296
+ <rule ref="category/java/bestpractices.xml">
297
+ <exclude name="JUnitTestContainsTooManyAsserts"/>
298
+ </rule>
299
+
300
+ <rule ref="category/java/codestyle.xml">
301
+ <exclude name="AtLeastOneConstructor"/>
302
+ <exclude name="CommentDefaultAccessModifier"/>
303
+ </rule>
304
+
305
+ <rule ref="category/java/design.xml">
306
+ <!-- 循環複雑度を7に制限 -->
307
+ <exclude name="CyclomaticComplexity"/>
308
+ </rule>
309
+
310
+ <!-- 循環複雑度のカスタム設定 -->
311
+ <rule ref="category/java/design.xml/CyclomaticComplexity">
312
+ <properties>
313
+ <property name="classReportLevel" value="80"/>
314
+ <property name="methodReportLevel" value="7"/>
315
+ <property name="cycloOptions" value=""/>
316
+ </properties>
317
+ </rule>
318
+
319
+ <!-- 認知複雑度の設定 -->
320
+ <rule ref="category/java/design.xml/CognitiveComplexity">
321
+ <properties>
322
+ <property name="reportLevel" value="7"/>
323
+ </properties>
324
+ </rule>
325
+
326
+ <rule ref="category/java/errorprone.xml">
327
+ <exclude name="BeanMembersShouldSerialize"/>
328
+ </rule>
329
+
330
+ <rule ref="category/java/performance.xml"/>
331
+
332
+ <rule ref="category/java/security.xml"/>
333
+ </ruleset>
334
+ ```
335
+
336
+ build.gradle に PMD 設定を追加:
337
+
338
+ ```groovy
339
+ // PMD 設定
340
+ pmd {
341
+ consoleOutput = true
342
+ toolVersion = "6.55.0"
343
+ ruleSetFiles = files("config/pmd/ruleset.xml")
344
+ ruleSets = []
345
+ }
346
+ ```
347
+
348
+ PMD はカスタム設定で以下をチェック:
349
+
350
+ - マジックナンバーの使用
351
+ - 空の catch ブロック
352
+ - 循環複雑度が 7 を超えるメソッド
353
+ - 認知複雑度が 7 を超えるメソッド
354
+ - 不要なコード
355
+
356
+ ### SpotBugs の設定(デフォルト設定を使用)
357
+
358
+ SpotBugs は以下のバグパターンを検出:
359
+
360
+ - Null ポインタ参照
361
+ - リソースリーク
362
+ - セキュリティ脆弱性
363
+ - パフォーマンス問題
364
+
365
+ ## タスクランナーコマンド一覧
366
+
367
+ ### 基本コマンド
368
+
369
+ ```bash
370
+ # 依存関係のインストール
371
+ ./gradlew build
372
+
373
+ # テストの実行
374
+ ./gradlew test
375
+
376
+ # TDDモードでテスト実行
377
+ ./gradlew tdd
378
+
379
+ # 継続的テスト実行
380
+ ./gradlew test --continuous
381
+ ```
382
+
383
+ ### 品質チェックコマンド
384
+
385
+ ```bash
386
+ # Checkstyle実行
387
+ ./gradlew checkstyleMain
388
+ ./gradlew checkstyleTest
389
+
390
+ # PMD実行
391
+ ./gradlew pmdMain
392
+ ./gradlew pmdTest
393
+
394
+ # SpotBugs実行
395
+ ./gradlew spotbugsMain
396
+ ./gradlew spotbugsTest
397
+
398
+ # すべての品質チェック実行
399
+ ./gradlew qualityCheck
400
+ ```
401
+
402
+ ### カバレッジ測定
403
+
404
+ ```bash
405
+ # テスト実行とカバレッジレポート生成
406
+ ./gradlew test jacocoTestReport
407
+
408
+ # レポートは build/jacocoHtml/index.html で確認
409
+ ```
410
+
411
+ ### 統合コマンド
412
+
413
+ ```bash
414
+ # すべてのテストと品質チェックを実行
415
+ ./gradlew fullCheck
416
+
417
+ # タスク一覧の表示
418
+ ./gradlew tasks --group verification
419
+ ```
420
+
421
+ ## 開発フロー
422
+
423
+ ### 1. プロジェクトの初期化
424
+
425
+ ```bash
426
+ # プロジェクトディレクトリの作成
427
+ mkdir my-java-project
428
+ cd my-java-project
429
+
430
+ # Git リポジトリの初期化
431
+ git init
432
+
433
+ # Gradle プロジェクトの初期化
434
+ ./gradlew init --type java-application
435
+
436
+ # 設定ファイルの配置(上記の build.gradle、checkstyle.xml、PMD ruleset.xml)
437
+
438
+ # 依存関係のインストール
439
+ ./gradlew build
440
+
441
+ # 初期コミット
442
+ git add .
443
+ git commit -m 'chore: プロジェクトの初期化'
444
+ ```
445
+
446
+ ### 2. TDD サイクルの実践
447
+
448
+ ```bash
449
+ # 継続的テスト実行を開始
450
+ ./gradlew test --continuous
451
+
452
+ # 別ターミナルで開発を進める
453
+ # 1. 失敗するテストを書く(Red)
454
+ # 2. テストを通す最小限のコードを書く(Green)
455
+ # 3. リファクタリング(Refactor)
456
+
457
+ # 品質チェック
458
+ ./gradlew qualityCheck
459
+
460
+ # コミット
461
+ git add .
462
+ git commit -m 'feat: 新機能の実装'
463
+ ```
464
+
465
+ ### 3. カバレッジ確認
466
+
467
+ ```bash
468
+ # テストとカバレッジレポート生成
469
+ ./gradlew test jacocoTestReport
470
+
471
+ # ブラウザでレポートを確認
472
+ open build/jacocoHtml/index.html # macOS
473
+ start build/jacocoHtml/index.html # Windows
474
+ ```
475
+
476
+ ## IDE 統合
477
+
478
+ ### IntelliJ IDEA
479
+
480
+ 1. プロジェクトを開く
481
+ 2. `File` → `Settings` → `Build, Execution, Deployment` → `Build Tools` → `Gradle`
482
+ 3. `Build and run using` を `Gradle` に設定
483
+ 4. `Run tests using` を `Gradle` に設定
484
+
485
+ **自動テスト実行の設定:**
486
+ - `Run` → `Edit Configurations`
487
+ - `+` → `Gradle`
488
+ - `Tasks` に `test --continuous` を設定
489
+
490
+ ### VS Code
491
+
492
+ 必要な拡張機能:
493
+ - Extension Pack for Java
494
+ - Gradle for Java
495
+ - Test Runner for Java
496
+
497
+ `settings.json` に追加:
498
+ ```json
499
+ {
500
+ "java.test.runner": "junit",
501
+ "java.test.config": {
502
+ "workingDirectory": "${workspaceFolder}"
503
+ }
504
+ }
505
+ ```
506
+
507
+ ## トラブルシューティング
508
+
509
+ ### Gradle Wrapper が動作しない場合
510
+
511
+ ```bash
512
+ # Gradle Wrapper の再生成
513
+ gradle wrapper --gradle-version=8.5
514
+
515
+ # 実行権限の付与(Unix系)
516
+ chmod +x gradlew
517
+ ```
518
+
519
+ ### テストが見つからない場合
520
+
521
+ - テストクラス名が `*Test.java` で終わっているか確認
522
+ - テストメソッドに `@Test` アノテーションがあるか確認
523
+ - `src/test/java` ディレクトリ配下にテストクラスがあるか確認
524
+
525
+ ### 静的解析ツールのエラーを無視したい場合
526
+
527
+ ```java
528
+ // Checkstyle を無視
529
+ // CHECKSTYLE:OFF
530
+ 問題のあるコード
531
+ // CHECKSTYLE:ON
532
+
533
+ // PMD を無視
534
+ @SuppressWarnings("PMD.MethodNamingConventions")
535
+ public void my_method() { }
536
+
537
+ // SpotBugs を無視
538
+ @SuppressFBWarnings("NP_NULL_ON_SOME_PATH")
539
+ public void method() { }
540
+ ```
541
+
542
+ ## ベストプラクティス
543
+
544
+ 1. **コミットは小さく頻繁に**
545
+
546
+ - 機能単位でコミット
547
+ - テストが通る状態でコミット
548
+
549
+ 2. **テストファースト**
550
+
551
+ - 実装前にテストを書く
552
+ - テストが失敗することを確認してから実装
553
+
554
+ 3. **継続的な品質チェック**
555
+
556
+ - コミット前に `./gradlew qualityCheck` を実行
557
+ - カバレッジ 80% 以上を目標
558
+ - 循環複雑度を 7 以下に維持
559
+
560
+ 4. **自動化の活用**
561
+
562
+ - `./gradlew test --continuous` を常に起動
563
+ - IDE の自動テスト機能を活用
564
+
565
+ 5. **リファクタリングの習慣**
566
+
567
+ - テストが通ったらリファクタリング
568
+ - 重複コードの排除
569
+ - 意図が明確なコード
570
+
571
+ 6. **複雑度の管理**
572
+
573
+ - メソッドの循環複雑度は 7 以下を維持
574
+ - 複雑なロジックは小さなメソッドに分割
575
+ - 早期リターンやガード節を活用して複雑度を削減
576
+
577
+ ## まとめ
578
+
579
579
  このガイドに従うことで、Java アプリケーション開発に必要な環境が整い、ソフトウェア開発の三種の神器を実践できます。継続的にテストを書き、品質をチェックし、自動化を活用することで、**動作するきれいなコード** を維持し続けることができます。