Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
JJUG_CCC_2017_Spring2.pdf
Search
Kengo TODA
May 23, 2017
Technology
170
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
JJUG_CCC_2017_Spring2.pdf
test
Kengo TODA
May 23, 2017
More Decks by Kengo TODA
See All by Kengo TODA
セキュリティ担当がいない中小医療機関を院外のRISSはどう支えるべきか / How External RISS Can Help Small Medical Institutions
eller86
0
180
AI といっしょに仕事をする(子供向け)
eller86
0
43
Kotlin 開発のツラミを爆破した話! / Explode the difficulty of Kotlin dev!
eller86
0
200
生成AI 業務応用向けガイドライン 斜め読み / Overview of Generative AI Business Application Guidelines
eller86
0
220
KotlinユーザのためのJSpecify入門 / JSpecify 101 for Kotlin Devs
eller86
0
2.4k
JavaとGroovyで書かれたGradleプラグインをKotlinで書き直した話 / Converted a Gradle plugin from Groovy&Java to Kotlin
eller86
0
1.9k
ヒューマンスキル / The Humanskills
eller86
0
780
医療機関向けシステムの信頼性 / Reliability of systems for medical institutions
eller86
0
550
Server-side Kotlinを使うスタートアップでどんなDetektルールが育ったか / Detekt rules made in start-up working with Server-side Kotlin
eller86
0
1.7k
Other Decks in Technology
See All in Technology
AIオーケストレーションを活用した 開発ワークフローの設計と実践
bqnq
0
120
AIで実装は速くなった。なのにプロダクトは速くならない。職能の壁を越えて価値のフローを設計する
nwiizo
7
7.6k
The Agent Builder Loop from Daily Work to OSS
minorun365
PRO
3
120
目の前の楽しいが人生を変える - コミュニティの螺旋の歩き方と楽しむコツ / change your life
soudai
PRO
3
220
Omarchy Quattro の日本語設定周り
simosako
2
120
OpenTelemetry eBPF Instrumentationの舞台裏 / Behind the Scenes of OpenTelemetry eBPF Instrumentation
ymotongpoo
3
690
日経電子版を支えていく Kasane Design System/fec_fukuoka
nikkei_engineer_recruiting
0
330
DEFCON_CHV_CTF_Write-up.pdf
bata_24
0
110
Driving AI Adoption Using In-House GPUs to Serve Qwen
po3rin
2
470
GoにおけるFFIのこれまでとこれから
goccy
4
1.6k
現場に行くだけでは足りない——プロダクトエンジニアが業務の流れを捉える観点と、その鍛え方
takumiengineering
0
370
AIに丸投げしないトイル削減 / Eliminating Toil Without Leaving It All to AI
kohbis
4
1k
Featured
See All Featured
Paper Plane (Part 1)
katiecoart
PRO
1
11k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Rails Girls Zürich Keynote
gr2m
96
14k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
67k
GraphQLとの向き合い方2022年版
quramy
50
15k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.9k
HDC tutorial
michielstock
2
860
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
202
76k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
4
600
ラッコキーワード サービス紹介資料
rakko
1
4.8M
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
57k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
890
Transcript
© Works Applications Co.,Ltd. #ccc_f3 2017 May/20th, JJUG CCC 2017
Spring SpotBugs(FindBugs)ʹΑΔ େنERPͷίʔυ࣭վળ 1
© Works Applications Co.,Ltd. #ccc_f3 Agenda ‣ ࣗݾհ ‣ 20175݄ݱࡏͷJava੩తղੳπʔϧػೳɾಈൺֱ
‣ େنERPͷίʔυ๊࣭͕͑Δͱͦͷղܾ ‣ ։ൃ͍ͯ͠Δ৫ͱͦͷ ‣ ߦ͍ͬͯΔͱࠓޙͷల 2
© Works Applications Co.,Ltd. #ccc_f3 ͜ͷηογϣϯͰಘΒΕΔͷ ‣ େن։ൃʹͯӡ༻Մೳͳίʔυ࣭վળख๏ ‣ άϩʔόϧͰେنͳJava։ൃʹ͓͍ͯඞਢͱͳΔ
ʮίʔυ࣭ͷఈ্͛ʯͷ࣮ફతͳख๏ ‣ ࣾFWϥΠϒϥϦͷ͍ํΛΊΔख๏ͱͯ͠ ׆༻Ͱ͖Δ੩తղੳπʔϧϓϥάΠϯͷ։ൃख๏ 3
© Works Applications Co.,Ltd. #ccc_f3 ࣗݾհ ✤ https://github.com/ KengoTODA/ ✤
᷂ϫʔΫεΞϓϦέʔγϣϯζ ݚڀ։ൃΤϯδχΞ ✤ ߴߍੜͷͱ͖ʹήʔϜ࡞Γͨͯ͘ HSP2ʹखΛग़͠ɺϑϦʔιϑτ ΣΞ࡞Ոɺͦͯ͠R&Dʹ ✤ SpotBugsͷதͷਓ JVM Simulator Maven3 ebook 4
© Works Applications Co.,Ltd. #ccc_f3 1. 20175݄ݱࡏͷ Java੩తղੳπʔϧػೳɾಈൺֱ 5
© Works Applications Co.,Ltd. #ccc_f3 ੩తղੳπʔϧͷྑ͍ͱ͜Ζ ✤ ͍खʹܦݧਂ͍͕ࣝͳͯ͘ɺ ✤ ϨϏϡʔલσϓϩΠલͳͲૣ͍ஈ֊Ͱɺ
✤ ΛൃݟͰ͖Δ 6
© Works Applications Co.,Ltd. #ccc_f3 ൺֱରJava੩తղੳπʔϧ ‣ Checkstyle ‣ PMD
‣ FindBugs / SpotBugs ‣ Checker Framework ‣ Google error-prone 7
© Works Applications Co.,Ltd. #ccc_f3 Checkstyle ‣ ιʔείʔυղੳͳͷͰίϯύΠϧͳ͠Ͱ࣮ߦͰ͖Δ ‣ ଟ࠼ͳIDEɾϏϧυπʔϧʹରԠ
‣ ίʔσΟϯάنͷ֬ೝ͕ओత ‣ ϓϥάΠϯ࣮ʹඞཁͳ͕ࣝগͳ͍ ‣ http://checkstyle.sourceforge.net/ 8
© Works Applications Co.,Ltd. #ccc_f3 PMD ‣ ιʔείʔυղੳͳͷͰίϯύΠϧͳ͠Ͱ࣮ߦͰ͖Δ ‣ ଟ࠼ͳIDEɾϏϧυπʔϧͦͯ͠ݴޠʹରԠ
‣ CPDʢίϐϖݕग़ʣػೳࡌ ‣ ϓϥάΠϯ࣮ΘΓͱෳࡶ ‣ https://pmd.github.io/ 9
© Works Applications Co.,Ltd. #ccc_f3 FindBugs / SpotBugs ‣ όΠτίʔυղੳͳͷͰίʔυʹͳ͍ใʢΫϥεɺ
ґଘઌɺΞϊςʔγϣϯʣCLASSPATH͔ΒิͰ͖Δ ‣ ଟ࠼ͳIDEɾϏϧυπʔϧʹରԠ ‣ ͠Β͘։ൃ͕ࢭ·͍ͬͯͨʢ3.0.12ऑલͷϦϦʔεʣ ‣ ϓϥάΠϯ࣮ʹJVMόΠτίʔυͷ͕ࣝ͋Δͱྑ͍ ‣ https://spotbugs.github.io/ 10
© Works Applications Co.,Ltd. #ccc_f3 ࢀߟɿJSR305Ξϊςʔγϣϯͷࠓ ‣ javax.annotation ύοέʔδʹؚ·ΕΔ ˏNonnull
ˏUntaintedͳͲͷΞϊςʔγϣϯ ‣ JSR305͕DormantͱͳͬͨޙFindBugs͕͍ͯͨ͠ ‣ SpotBugsʹΑΔϝϯςφϯε༧ఆແ͠ ‣ ܕύϥϝʔλʹ͏͜ͱͰ͖ͳ͍ͷͰ ࠓޙԺ͔ʹஔ͖͑ΒΕ͍ͯ͘ͷͰ 11
© Works Applications Co.,Ltd. #ccc_f3 Checker Framework ‣ Java8ͷJSR 308
(Annotations on Java Types) Λར༻͢Δ ‣ ଟ࠼ͳIDEɾϏϧυπʔϧʹରԠ ‣ JDKʹؚ·ΕΔΫϥεͷৼΔ͍Λσʔλϕʔεʹ࣋ͭ ‣ https://checkerframework.org/ 12
© Works Applications Co.,Ltd. #ccc_f3 Google error-prone ‣ ίϯύΠϧ࣌ʹղੳ͢ΔͷͰίʔυʹͳ͍ใर͍͍͢ ‣
ιʔείʔυͷࣗಈमਖ਼Λॳ͔Βҙ͍ࣝͯ͠Δʁ ‣ EclipseඇରԠʢcom.sun.* ύοέʔδʹґଘͷͨΊʣ ‣ ৭ʑϞμϯͰϓϥάΠϯ࣮͍͢͠ ‣ GoogleࣾһҎ֎͔ΒͷPRʢ࣮ͱͯ͠ʣड͚͚ͯͳ͍ ‣ http://errorprone.info/ 13 Refs: http://dl.acm.org/citation.cfm?id=2486877
© Works Applications Co.,Ltd. #ccc_f3 ࠓ͏ͳΒͲͷπʔϧʁ 14 ʘ Target Standard
Rules Note Checkstyle 7.7 AST 152 checks ŠŖũƄŎƃŞƄن PMD 5.6.1 AST 287 rules (PMD Java) ଟݴޠରԠ SpotBugs 3.1.0−RC1 Bytecode 453 patterns (+9 experimentals) plugin๛ Checker Fw 2.1.11 AST (Compiler֦ு) 19 checkers JSR308ରԠ error-prone v2.0.19 AST (Compiler֦ு) 145 patterns (+61 experimentals) কདྷʹظ
© Works Applications Co.,Ltd. #ccc_f3 ࠓ͏ͳΒͲͷπʔϧʁ ‣ ͱʹ͔͘Λग़͍ͨ͠ ‣ SpotBugs
+ Checker Framework ‣ Type AnnotationΛ͑SpotBugsʹݟ͚ͭΒΕͳ͍ ᖰΓग़ͤΔՄೳੑ͕͋Δ ‣ ղੳʹ࣌ؒΛ͔͚ͨ͘ͳ͍ ‣ error-proneͰίϯύΠϧ࣌νΣοΫ ‣ PMDΛίϯύΠϥͱฒྻ࣮ߦ 15
© Works Applications Co.,Ltd. #ccc_f3 ࠓ͏ͳΒͲͷπʔϧʁ ‣ JavaεΩϧͷߴ͍։ൃऀ͕ἧ͍ͬͯΔ ‣ Ξϊςʔγϣϯͷར༻Λଅਐ͠Checker
FrameworkΛ׆༻͢Δ ‣ ఆظతͳSpotBugsͰࡉ͔͍ᖰΓग़͢ ‣ ։ൃऀͷJavaεΩϧʹΒ͖͕ͭ͋Δ ‣ CheckstyleͰ࠷ݶͷಡΈ͢͞Λ୲อ͢Δ ‣ CPDͰίϐϖʹܯࠂΛ͢Δʢઅͷ͋ΔίϐϖΛଅ͢ʣ ‣ ಈ࡞Λܰͨ͘͠PMDSpotBugsΛ͜·Ίʹճ͠࠷ݶͷϛεΛ͙ 16
© Works Applications Co.,Ltd. #ccc_f3 Agenda ‣ ࣗݾհ ‣ 20175݄ݱࡏͷJava੩తղੳπʔϧػೳɾಈൺֱ
‣ େنERPͷίʔυ๊࣭͕͑Δͱͦͷղܾ ‣ ։ൃ͍ͯ͠Δ৫ͱͦͷ ‣ ߦ͍ͬͯΔͱࠓޙͷల 17
© Works Applications Co.,Ltd. #ccc_f3 2. େنERPͷίʔυ࣭͕ ๊͑Δ 18
© Works Applications Co.,Ltd. #ccc_f3 גࣜձࣾ ϫʔΫεΞϓϦέʔγϣϯζͱ ✤ ERPύοέʔδͷ։ൃΛߦ͍ͬͯΔاۀ ✤
γϯΨϙʔϧɺதࠃɺΠϯυɺΞϝϦΧʹڌ ✤ ίϯγϡʔϚΞϓϦͷΑ͏ͳϢʔβϏϦςΟͱ εϐʔυΛ࣋ͭERPʮHUEʢAI WorksʣʯΛ ։ൃɾఏڙ 19
© Works Applications Co.,Ltd. #ccc_f3 HUEͷ࣮ ✤ RDB͢ΔͳͲʹͩ͜Θ͍ͬͯͯɺ ✤ MSA͠ͳ͍ͱࢮ͵ఔʹࢁ΄ͲαʔϏε͕͋Γɺ
✤ ಙౡʹݚڀॴ࡞ΔϨϕϧͰࣗવݴޠॲཧʹຊؾͰɺ ✤ 100msୡͷͨΊʹAWS LambdaΛಋೖ͢ΔͳͲ ৽͍͜͠ͱ৭ʑ͍ͬͯΔɻ 20
© Works Applications Co.,Ltd. #ccc_f3 HUEͷ࣮Λࢧ͑Δਓ ✤ ඇৗʹଟ࠼Ͱॴଟ͍ ✤ ౦ژɾେࡕɾνΣϯφΠɾ্ւɾγϯΨϙʔϧͳͲʹ
։ൃڌ͕ࢄ͍ͯ͠Δ ✤ ڭҭϨϕϧৗ͔ࣝΒͯ͠ҧ͏ ✤ ϑϩϯτΤϯυɺϑϨʔϜϫʔΫɺϞόΠϧɺػցֶशɺ όονɺࢄॲཧͱ͍༷ͬͨʑͳઐՈ͕ڞଘ ✤ εΩϧͷͳ͍৽ਓ͕૿͑ଓ͚͍ͯΔঢ়ଶ 21
© Works Applications Co.,Ltd. #ccc_f3 HUEͷ࣮Λࢧ͑Δਓ ✤ ඇৗʹଟ࠼Ͱॴଟ͍ ✤ ౦ژɾେࡕɾνΣϯφΠɾ্ւɾγϯΨϙʔϧͳͲʹ
։ൃڌ͕ࢄ͍ͯ͠Δ ✤ ڭҭϨϕϧৗ͔ࣝΒͯ͠ҧ͏ ✤ ϑϩϯτΤϯυɺϑϨʔϜϫʔΫɺϞόΠϧɺػցֶशɺ όονɺࢄॲཧͱ͍༷ͬͨʑͳઐՈ͕ڞଘ ✤ εΩϧͷͳ͍৽ਓ͕૿͑ଓ͚͍ͯΔঢ়ଶ 22 ɿ ߴʹ૿͍͑ͯ͘ ։ൃऀͷΩϟονΞοϓΛ গͳ͍ίϛϡχέʔγϣϯͰ ͲͷΑ͏ʹॿ͚Δ͔ʁ
© Works Applications Co.,Ltd. #ccc_f3 ͳͥSpotBugs͔ ✤ ࣾͷਓࡐͱࢿ࢈ ✤ ෦࣮ʹ໌Δ͍ෳͷ։ൃऀ
✤ ϓϥάΠϯ࣮ܦݧͷੵ ✤ Eclipse࿈ܞ ✤ HUEEclipseΛඪ४IDEͱ͍ͯ͠Δ ✤ Java8αϙʔτ ✤ FindBugs 3.0.1Lambdaͷѻ͍ʹ ͕͋Δ 23
© Works Applications Co.,Ltd. #ccc_f3 Agenda ‣ ࣗݾհ ‣ 20175݄ݱࡏͷJava੩తղੳπʔϧػೳɾಈൺֱ
‣ େنERPͷίʔυ๊࣭͕͑Δͱͦͷղܾ ‣ ։ൃ͍ͯ͠Δ৫ͱͦͷ ‣ ߦ͍ͬͯΔͱࠓޙͷల 24
© Works Applications Co.,Ltd. #ccc_f3 3. HUE͕ߦ͍ͬͯΔͱ ࠓޙͷల 25
© Works Applications Co.,Ltd. #ccc_f3 աڈͷࣦഊ ✤ σϑΥϧτઃఆͷ··FindBugsCheckstyleΛ ϩʔΧϧϏϧυϓϨϚʔδϏϧυʹಋೖ͠ɺ ੜ࢈ੑΛେ͖͘Լ͛ͨ
✤ ϓϨϚʔδϏϧυ͕1͔͔࣌ؒۙͬͯ͘͠·ͬͨ ✤ mvn -Dfindbugs.skip <findbugs.skip>true </findbugs.skip> ͕ͨΓલʹͳͬͯ͠·ͬͨ 26
© Works Applications Co.,Ltd. #ccc_f3 աڈͷࣦഊ ✤ σϑΥϧτઃఆͷ··FindBugsΛEclipseʹಋೖ͠ɺ ੜ࢈ੑΛେ͖͘Լ͛ͨ ✤
ϫʔΫεϖʔεʹ10Λ͑ΔϓϩδΣΫτΛৗ࣌༻ ҙͯ͠։ൃ͢Δਓ͕ଟ͔ͬͨ ✤ Eclipse PluginʹύϑΥʔϚϯε্ͷ͕ܽؕ͋ͬͨ 27
© Works Applications Co.,Ltd. #ccc_f3 ͦͦɺ ✤ MSAΛࢦ͍ͯ͠Δͷʹ৫ԣஅͳղੳඞཁ͔ʁ ✤ ֤αʔϏε։ൃऀ͕͖ʹΕ͍͍ͷͰʁ
✤ ࣏ࣗͰ͖Δ׆ಈΛ։ൃޮΛԼͤͯ͞·Ͱ ԣஅతʹΔʁ 28
© Works Applications Co.,Ltd. #ccc_f3 MSAͰ৫ԣஅͳղੳඞཁ͔ʁ ✤ ඞཁ ✤ ੩తղੳnice
to haveͰͳ͘must to have ✤ ͦΕͧΕҟͳΔਓࡐɾΛ͍࣋ͬͯΔͷͰ શʹ࣏ࣗʹͤΔͱ͍࣮ͭࢪ͞ΕΔͷ͔ෆ໌ྎ ✤ ։ൃޮΛԼ͛ͳ͍ํ๏Λ୳͢ඞཁ͕͋Δ 29
© Works Applications Co.,Ltd. #ccc_f3 ༏ઌ ཏੑ ʢϝϦοτʣ ࣦഊΛ౿·͑ͯ ✤
։ൃޮʹଥڠ͠ͳ͍ ✤ ۃྗ։ൃऀͷৗۀΛ ϒϩοΫ͠ͳ͍ख๏Λ୳͢ ✤ ޮԼΛೲಘͤ͞ΒΕΔ ՁΛग़͢ ✤ ͪΌΜͱதΛཧղͯ͠͏ ✤ ݁ہόονϓϩάϥϜͳͷͰ ׳Εͨख๏ͰϓϩϑΝΠϧՄೳ ։ൃޮ ʢೲಘʣ 30
© Works Applications Co.,Ltd. #ccc_f3 ௐࠪɿͳͥFindBugs͍ͷ͔ʁ ✤ 10લͷৗࣝʹͱ͍࣮ͮͨ ʢSpotBugs 3.1.0-RC1Ͱղফʣ
✤ MapΛͬͨ String#intern() ૬ͷࣗલॲཧ ✤ ListΠϯελϯεΛ͍·Θͨ͢Ίͷܭࢉॲཧ ✤ Eclipse GUIΛසൟʹߋ৽͗͢͠Δ ʢSpotBugs 3.1.0-RC2Ͱղফʣ ✤ ղੳର͕มΘΔͨͼʹUIΛߋ৽ ✤ γϯάϧεϨουʢίΞΛ͍Εͳ͍ʣ 31
© Works Applications Co.,Ltd. #ccc_f3 ௐࠪɿڥมߋͰߴԽͰ͖Δʁ ✤ ΄΅Ͱ͖ͳ͍ ✤ FindBugsCPU
bound͕ͩγϯάϧεϨουͳόον ✤ ෳίΞΛ৯͍͍ͬͯΔͷJITίϯύΠϥͷεϨου ʢ-XX:CICompilerCountͰ૿ݮՄ͕ͩʹ΄΅د༩ͳ͠ʣ ✤ OOMEGC stormΛى͜͞ͳ͍ఔͷϝϞϦΛ༩͑Ε ͋ͱCPUίΞ૿ͯ͠ϝϞϦ૿ͯ͠มԽͳ͠ 32
© Works Applications Co.,Ltd. #ccc_f3 ௐࠪɿGuava v19.0ղੳͷϚΠΫϩϕϯν ʢ4 CPU coresʣ
33 128m 256m 512m 1g 2 (Default) OOME 18.2s 18.0s 18.2s 3 OOME 19.2s 18.2s 18.0s 4 OOME 24.8s 24.7s 23.6s -XX:CICompilerCount -Xmx & -Xms refs: https://github.com/spotbugs/spotbugs/pull/128
© Works Applications Co.,Ltd. #ccc_f3 ௐࠪɿGuava v19.0ղੳͷϚΠΫϩϕϯν ʢ2 CPU coresʣ
34 2g Default 26.0s G1GC 28.7s G1GC + UseStringDeduplication 29.1s GCઃఆʢJava8ʣ -Xmx & -Xms refs: https://github.com/spotbugs/spotbugs/pull/128
© Works Applications Co.,Ltd. #ccc_f3 ௐࠪɿઃఆͰfindbugs-maven-pluginΛ ߴԽ͢Δʹ ✤ onlyAnalyzeͰରΫϥεΛΓɺ visitorsͰར༻DetectorΛΔ͜ͱͰߴʹͳΔ
✤ ൃݟ͍ͨ͠όάʹ༏ઌΛ͚ͭΔ͜ͱ͕؊ཁ ✤ ExcludeFilterͰରϑΝΠϧΛͬͯ͘ͳΒͳ͍ ✤ Filterॲཧͷ݁Ռʹରͯ͠Өڹ͢ΔͨΊ 35
© Works Applications Co.,Ltd. #ccc_f3 Ҏ্Λ౿·͑ͯ 36
© Works Applications Co.,Ltd. #ccc_f3 ํ ✤ ॏࢹͷૈ͍ղੳͱɺཏੑॏࢹͷղੳΛΈ߹Θ ͤΔ ✤
ϓϨϚʔδϏϧυͰมߋ͞ΕͨΫϥε͚ͩΛղੳ ✤ र͍࿙ΕΔ࣍ͷղੳͰൃݟɾใࠂ 37
© Works Applications Co.,Ltd. #ccc_f3 ॏ͘ཏੑͷߴ͍ղੳʢ֓ཁʣ ✤ Jenkins + SonarQubeͰ։ൃ͕׆ൃͰͳ͍࣌ؒଳʹ࣮ࢪ
✤ ॏେͰͳ͍ϨϕϧͷϧʔϧؚΊ࣮ͯࢪ ✤ ։ൃऀ͕͍ͭͰΞΫηεͰ͖ΔSonarQubeΛఏڙ ✤ ReadmeϓϩδΣΫτҰཡϖʔδʹBadgeΛදࣔ͠ ҰཡੑͱSonarQubeͷಋઢΛ֬อ 38
© Works Applications Co.,Ltd. #ccc_f3 ॏ͘ཏੑͷߴ͍ղੳʢ݁Ռʣ ✤ 50ͷϓϩδΣΫτ͔Β3,000ͷΛݟ͚ͭɺ 1ϲ݄Ͱ͏ͪ900Λղফͨ͠ ✤
String.format() logger.info() ͷϑΥʔϚοτҟৗ ✤ ϚϧνεϨουϓϩάϥϛϯάΞϯνύλʔϯ 39
© Works Applications Co.,Ltd. #ccc_f3 ૉૣ͘ૈ͍ղੳʢ֓ཁʣ ✤ ॏେͳΛத৺ʹௐࠪ ✤ ಠࣗMavenϓϥάΠϯͰfindbugs-maven-pluginΛ
ϥοϓ ✤ มߋ͞Εͨ.javaϑΝΠϧҰཡ͔Βߋ৽͞ΕͨՄೳੑ ͷ͋ΔclassϑΝΠϧͷҰཡΛSpotBugsʹ͢ 40
© Works Applications Co.,Ltd. #ccc_f3 ૉૣ͘ૈ͍ղੳʢ݁Ռʣ ✤ SpotBugsʹ͔͔Δ࣌ؒΛฏۉ93ˋݮ ✤ େ͖ͳϦϙδτϦͰ1ҎʹղੳΛऴ͑ΒΕΔ
✤ र͍͖Εͳ͍ඞͣग़Δ ✤ ྫɿˏNonNullΛΠϯλϑΣʔεʹՃͨ͠߹ 41
© Works Applications Co.,Ltd. #ccc_f3 ࠓޙͷల ✤ ͞Βʹଟ͘ͷϦϙδτϦͷಋೖ ✤ Type
AnnotationΛஈ֊తʹಋೖ͢Δ ✤ ٕज़ʹͩ͜ΘΓͷڧ͍ɺڞ௨Ϟδϡʔϧ։ൃऀʹ ڠྗΛґཔ͢Δ 42
© Works Applications Co.,Ltd. #ccc_f3 4. ࣾFWࢧԉͷͨΊͷ SpotBugsϓϥάΠϯ࣮ํ๏ 43
© Works Applications Co.,Ltd. #ccc_f3 5. ·ͱΊ 44
© Works Applications Co.,Ltd. #ccc_f3 େن։ൃʹ͓͚Δίʔυ࣭վળ ✤ ϓϩδΣΫτͷͱن͕େ͖͍MSAͰӡ༻ͷ ্͕͕Δ ✤
֤αʔϏε։ൃऀ͕੩తղੳπʔϧͷϝϦοτΛ ڗडͰ͖Δڥͷߏங͕ඞཁ 45
© Works Applications Co.,Ltd. #ccc_f3 େن։ൃʹ͓͚Δίʔυ࣭վળ ✤ FindBugs/SpotBugsͷΫηΛཧղ͢Ε େن։ൃͰαΫαΫར༻Ͱ͖Δ ✤
ύϥϝʔλͷมߋͰ࣮ߦϧʔϧͱରίʔυΛ ߜΓࠐΉɺࠩղੳͱόον࣮ߦΛ͚Δ 46
© Works Applications Co.,Ltd. #ccc_f3 େن։ൃʹ͓͚Δίʔυ࣭վળ ✤ SpotBugsϓϥάΠϯΛ։ൃ͢ΕࣾϑϨʔϜϫʔΫ ݻ༗ͷ੩తղੳπʔϧͰൃݟͰ͖Δ ✤
࣮ʹඞͣ͠JVMόΠτίʔυͷࣝඞཁ ͱ͠ͳ͍ 47
© Works Applications Co.,Ltd. #ccc_f3 6. ࠾༻ใ 48
© Works Applications Co.,Ltd. #ccc_f3 ੈքΛࢦ͢ΤϯδχΞΛ ืू͍ͯ͠·͢ 49
© Works Applications Co.,Ltd. #ccc_f3 ۩ମతͳΛฉ͖͍ͨํ ✤ ൃදޙʹࢲʹฉ͖ʹདྷ͍ͯͩ͘͞ʂ ✤ CIɺMSAɺϚΠάϨʔγϣϯɺ։ൃϓϩηεɺ
ଟڌ։ൃઐͳͷͰ৭ʑ͓Ͱ͖·͢. ✤ ຊۈͰͳ͍ͷͰɺຊڌݻ༗ͷ ͋·Γ͑ΒΕͳ͍͔͠Ε·ͤΜɻ 50
© Works Applications Co.,Ltd. #ccc_f3 Thank you! ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ 51
© Works Applications Co.,Ltd. #ccc_f3 7. ࢀߟࢿྉ 52
© Works Applications Co.,Ltd. #ccc_f3 ࢀߟใ ‣ ιʔείʔυͷ্࣭ͷͨΊͷޮՌతͰޮతͳ ίʔυϨϏϡʔ ‣
https://www.slideshare.net/MoriharuOhzu/ ss-9224836 53
© Works Applications Co.,Ltd. #ccc_f3 ࢀߟใ ‣ ϥϜμࣜετϦʔϜ API ৽͍࣌͠
API ͚ͩ ͡Όͳ͍ʂ Java8 ͷλΠϓɾΞϊςʔγϣϯ͋ͷख͜ͷख ‣ http://waman.hatenablog.com/entry/ 2014/05/08/063959 54
© Works Applications Co.,Ltd. #ccc_f3 ࢀߟใ ‣ Type Annotation for
Static Program Analysis ‣ https://www.slideshare.net/skrb/type-annotation- for-static-program-analysis 55
© Works Applications Co.,Ltd. #ccc_f3 ࢀߟใ ✤ G1: from garbage
collector to waste management consultant ✤ https://blogs.oracle.com/java-platform-group/ g1%3a-from-garbage-collector-to-waste- management-consultant 56
© Works Applications Co.,Ltd. #ccc_f3 ࢀߟใ ✤ G1 GC ͓͞Β͍ͱ
#jjug_ccc Ͱൃදͨ͠ ✤ http://cco.hatenablog.jp/entry/ 2015/12/01/011223 57
© Works Applications Co.,Ltd. #ccc_f3 ࢀߟใ ✤ The Google FindBugs
fixit ✤ http://dl.acm.org/citation.cfm?id=1831738 58