Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと
Search
Yasutaka KOUNO
May 17, 2014
Technology
0
190
エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと
2014/05/17に行われた「エフスタ!! in Aizu 〜やっててよかったこの仕事〜」でセッションした際に使用したスライドです。
Yasutaka KOUNO
May 17, 2014
Tweet
Share
More Decks by Yasutaka KOUNO
See All by Yasutaka KOUNO
はじめてのIT勉強会 #1 Readable Code Part 1
ykono
0
760
Readable Code 勉強会 in 仙台 Part 1: 名前を改善する
ykono
0
120
Other Decks in Technology
See All in Technology
急成長を支える基盤作り〜地道な改善からコツコツと〜 #cre_meetup
stefafafan
0
130
Navigation3でViewModelにデータを渡す方法
mikanichinose
0
220
Amazon ECS & AWS Fargate 運用アーキテクチャ2025 / Amazon ECS and AWS Fargate Ops Architecture 2025
iselegant
17
5.7k
AWS テクニカルサポートとエンドカスタマーの中間地点から見えるより良いサポートの活用方法
kazzpapa3
2
560
PHPでWebブラウザのレンダリングエンジンを実装する
dip_tech
PRO
0
210
20250625 Snowflake Summit 2025活用事例 レポート / Nowcast Snowflake Summit 2025 Case Study Report
kkuv
1
310
M3 Expressiveの思想に迫る
chnotchy
0
110
Tech-Verse 2025 Keynote
lycorptech_jp
PRO
0
220
250627 関西Ruby会議08 前夜祭 RejectKaigi「DJ on Ruby Ver.0.1」
msykd
PRO
2
320
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
26k
AIのAIによるAIのための出力評価と改善
chocoyama
2
570
5min GuardDuty Extended Threat Detection EKS
takakuni
0
160
Featured
See All Featured
Music & Morning Musume
bryan
46
6.6k
The Language of Interfaces
destraynor
158
25k
Stop Working from a Prison Cell
hatefulcrawdad
270
20k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
Six Lessons from altMBA
skipperchong
28
3.9k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.8k
Navigating Team Friction
lara
187
15k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
657
60k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.4k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
46
9.6k
Building Adaptive Systems
keathley
43
2.6k
Transcript
ʮͬͯͯΑ͔ͬͨ͜ͷࣄʯ ͱݴ͑ΔΑ͏ʹ͖ͬͯͨ͜ͱ גࣜձࣾηΧΠωοτ Տ߁ོ
ࣗݾհ • ໊લɿՏ߁ོʢ͜͏ͷ͔ͨ͢ʣ • גࣜձࣾηΧΠωοτ • ओʹGoogle App Engine /
JavaͰͷ ։ൃΛ͍ͯ͠·͢ɻ • Facebook: kouno.yasutaka
ུྺ • ̍̔ࡀ·Ͱౡݝ܊ࢁࢢͰաͯ͝͠·ͨ͠ɻ • ̎̓ࡀ·Ͱ౦ژͰSIܥͷձࣾʹॴଐ • ʙݱࡏ ઋͰىۀ
AGENDA 1. ॳʹൃ֮ͨ͠ةݥͳஹީ 2. νʔϜΛͻͬ͘Γฦ͢ 3. ೲظͰ։ൃ͢ΔͨΊʹ 4. ·ͱΊ
ҙࣄ߲ • ଞͷํϚδϝͳ͓ͷ༷Ͱ͢ͷͰɺ ͢͜͠ࡅ͚ͨײ͡ʹ͠·ͨ͠ɻ • ϑΟΫγϣϯͰ͢ɻ • ͋͑ͯѱ͕ొ͠·͢ɻ • ࣸਅͷਓΠϝʔδͰ͢ɻ
• সͬͯฉ͍͍͚ͯͨͩΕ͍Ͱ͢ɻ
1. ॳʹൃ֮ͨ͠ةݥͳஹީ
̎̌̍̏ ݄̍̌ ϓϩάϥϚͷืू͕དྷΔ
ϓϩδΣΫτʹ͍ͭͯ • ͷࡂൃੜ࣌ʹɺ৬һͷ ҆൱ঢ়گΛใࠂɾ֬ೝ͢ΔͨΊͷαʔϏεͷ࡞ • ϚϧνςφϯτɾWebαʔϏεͱͯ͠ఏڙ͢Δ • ࡂ࣌ͷٸܹͳΞΫηε૿ՃʹରԠ͢ΔͨΊɺ εέʔϧΞτͯ͠ࢄॲཧΛߦ͏ඞཁ͕͋Δ
໘ஊʹߦͬͯΈΑ͏
ϓϩδΣΫτࢀೖ࣌ͷલใ • Java EEʹΑΔWebγεςϜͷ։ൃ • ։ൃϦʔμʔJava EEͷܦݧ͕๛ • Ϋϥελߏͷઃܭɾ͕Ͱ͖Δ •
طଘϝϯόʔJavaͷεΩϧ͕͋Δ • جຊઃܭ΄΅ऴ͍ྃͯ͠Δ • ̎̑ਓ݄ఔͷݟࠐΈ
Α͋͘ΔϓϩδΣΫτΈ͍ͨͩ͠ ແ͍ͩΖ͏
͍͟ɺࢀೖʂ ※ ࣸਅͷਓΠϝʔδͰ͢ɻ
͔͠͠ɺૣ͘ॳʹ ൃ֮͢Δਅࣄ࣮ ※ ࣸਅͷਓΠϝʔδͰ͢ɻ
ࢀೖޙʹൃ֮ͨ͠ࣄ࣮ɿ̍ جຊઃܭ΄΅ऴ͍ྃͯ͠Δ ← ͕ͣͩͬͨ ࣮࣭ཁ݅ఆٛॻ(5p)ͷΈ
ࢀೖޙʹൃ֮ͨ͠ࣄ࣮ɿ̎ ։ൃϦʔμʔJava EEͷܦݧ͕๛ ← ͕ͣͩͬͨ ҎલʹJavaͰͲΜͳγεςϜ࡞ͬͯͨΜͰ͔͢ʁ ……·͊ɺ͍Ζ͍Ζͱ ϑϨʔϜϫʔΫͱ͔Կͬͯ·ͨ͠ʁ ……ಛʹ Javaॻ͚·͢ʁ
ॻ͍ͨΓ͠ͳ͍͔ͳ ※ ࣸਅͷਓΠϝʔδͰ͢ɻ νʔϜɾϦʔμʔ
ͳΜ͔ո͍͠
ࢀೖޙʹൃ֮ͨ͠ࣄ࣮ɿ̎ طଘϝϯόʔJavaεΩϧ͕͋Δ ← ͕ͣͩͬͨ COBOLҰے̎̌ʂ ΈࠐΈͷCΛ COBOLͱVBΛগ͠ɺJava̍पؒݚम͠·ͨ͠ʂ
εΩϧ͕ͥΜͥΜ Ϛονͯ͠ͳ͍ʂ
ࢀೖޙʹൃ֮ͨ͠ࣄ࣮ɿ̎ શһHTMLJavaͷεΩϧ͕ͳ͍ʂ
ࢀೖޙʹൃ֮ͨ͠ࣄ࣮ɿ̏ ̎̑ਓ݄ఔͷݟࠐΈ ← ͕ͣͩͬͨ ओʹΔ͜ͱ • ϏδωεɾϩδοΫͷઃܭɾ • UIͷσβΠϯɾ࣮ •
ෳͷαʔόʔʹΑΔࢄγεςϜઃܭɾߏங • αʔόʔͷࢮ׆ࢹɾӡ༻ํ๏ͷཱ֬ɾจষԽ • ϝʔϧͷҰ੪৴ɾड৴ • ϚϧνςφϯτରԠ ͜ͷͰΓͯΔͷʁ
ࢀೖޙʹൃ֮ͨ͠ࣄ࣮ɿ̏ ࣮࣭༧ࢉ͔Βٯࢉͨ͠ਓ݄ ̎̑ਓ݄ఔͷݟࠐΈ ← ͕ͣͩͬͨ
ଞʹɺॻ͚ͳ͍͜ͱ͕ଟ…
ͳʹΑΓɺͳͷ ୭ةػײΛ๊͍͍ͯͳ͍͜ͱ
͜ͷঢ়گΛݟͯɺײ͡·ͨ͠
σεϚͷष͍͕͢Δ… ※ ࣸਅͷਓΠϝʔδͰ͢ɻ
σεϚʔνͱ ࣍ͷ͍ͣΕ͔ʹ֘͢Δͷ 1. ༩͑ΒΕͨظ͕ؒɺৗࣝతͳظؒͷҎԼͰ͋Δ 2. ΤϯδχΞ͕௨ৗඞཁͳਓͷҎԼͰ͋Δ 3. ༧ࢉͦͷଞͷϦιʔε͕ඞཁʹରͯ͠Ͱ͋Δ 4. ػೳੑೳͳͲͷཁٻ͕ഒҎ্Ͱ͋Δ
※ Wikipedia͔ΒͷҾ༻
σεϚʔνͱ ฏͨ͘ݴ͑໌Β͔ʹࣦഊͦ͠͏ͳͷʹɺ ܧଓ͍ͯ͠Δʢͤ͟ΔΛಘͳ͍ʣϓϩδΣΫτͷ͜ͱ
ॳʹͯ͠ɺઈ
͔͠͠
ύϯυϥͷശͷఈʹ ͻͱͭͷر͕… ϓɹɹϩɹɹδɹɹΣɹɹΫɹɹτ
ͦΕ
·ͩɺԿ࡞͍ͬͯͳ͍ʂ
ੲɺࣦഊͨ͠σεϚҊ݅ɺ ϓϩδΣΫτظͰରॲͰ͖ͳ͔ͬͨɻ
ࠓճͷϓϩδΣΫτ ࢝·͔ͬͨΓɻ
͜Ε͔Βͷઃܭཧ࣍ୈͰ Ͳ͏ʹ͔Ͱ͖ͳ͍͔ʁ
໘ന͍ʂ
ͬͯΖ͏͡Όͳ͍͔ʂ ※ ࣸਅͷਓΠϝʔδͰ͢ɻ
2. νʔϜΛͻͬ͘Γฦ͢
ͱ͍͑ɺࠓͷࣗʹ ൃݴݖ͋·Γͳ͍ɻ
ϓϩδΣΫτମ੍ ←ΠϚίί ϓϩδΣΫτɾϚωʔδϟʔ ϓϩμΫτɾΦʔφʔ ։ൃνʔϜɾϦʔμʔ ։ൃνʔϜɾϝϯόʔ Aࣾ Bࣾ Cࣾ
Ͳ͏ݟͯ֎༷Ͱ͢ɻ ຊʹ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ
ͱɺఘΊͨΒࢼ߹ऴྃͳͷͰ
ϓϩδΣΫτମ੍ ϓϩδΣΫτɾϚωʔδϟʔ ϓϩμΫτɾΦʔφʔ ։ൃνʔϜɾϦʔμʔ ։ൃνʔϜɾϝϯόʔ Aࣾ Bࣾ Cࣾ ←ΠϚίί
Ғ͍ਓͷ৴པΛউͪऔΔ ࡞ઓΛ։࢝
࡞ઓ̍ɿతΛ֬ೝ͢Δ
εςʔΫϗϧμʔ͕ ԿΛؾʹ͍ͯ͠Δ͔֬ೝ͢Δ
AࣾͷϓϩδΣΫτɾϚωʔδϟʔͱ૬ஊ ࠓճͷҊ݅Ͱؾʹͯ͠Δ͜ͱͬͯԿͰ͔͢ʁ ϦϦʔεޙͷӡ༻ͱ͔อकͩͶɻ ͋·Γେ͖ͳମ੍ͱΕͳ͍͔Β ͋ͱɺཧΞδϟΠϧͱ͔ ͬͯΈ͍ͨΜ͚ͩͲɺ ܦݧ͕ͳ͍͔Βߟ͑தͩͶ ͳΔ΄Ͳ Aࣾ ϓϩδΣΫτɾϚωʔδϟʔ
※ ࣸਅͷਓΠϝʔδͰ͢ɻ
BࣾͷϓϩμΫτɾΦʔφʔʹ૬ஊ ࠓճͷҊ݅Ͱؾʹͯ͠Δ͜ͱͬͯԿͰ͔͢ʁ ݄̏ʹϓϨθϯΔ͔Βɺ ͦΕ·ͰʹσϞ͕ग़དྷΔΑ͏ʹͯ͠΄͍͠ ݄̏Ҏ֎ͳʹ͔͋Γ·͢ʁ Bࣾ ϓϩμΫτɾΦʔφʔ ಛʹແ͍ΑɻٯʹϦϦʔε ܾ·ͬͯͳ͍͔Βগ͘͠Β͍ͳΒ ௐͰ͖Δ͔ͳ
※ ࣸਅͷਓΠϝʔδͰ͢ɻ
͜ͷใΛݩʹɺ ఏҊࢿྉͷ࡞Λ։࢝
࡞ઓ̎ɿةػײΛڞ༗͢Δ
ॏཁͳΛ ೝࣝͯ͠Β͏
BࣾͷϓϩμΫτɾΦʔφʔʹ૬ஊ ϝϯόʔͬͯશһJava։ൃཁһͳΜͰ͢ΑͶʁ CࣾͷӦۀ͞Μ͔Βͦ͏આ໌͏͚ͯΔ͚Ͳ ΈΜͳJavaͰ͖ͳ͍Β͍͠Ͱ͢Αʁ Bࣾ ϓϩμΫτɾΦʔφʔ ͑ͬʁ ͪΐͬͱ֬ೝͯ͠Έ·͔͢ ※ ࣸਅͷਓΠϝʔδͰ͢ɻ
શһͰJavaίʔσΟϯάن ಡΈ߹ΘͤձΛ࣮ࢪ
વɺϘϩ͕ग़Δ
ͪΐͬͱCࣾӦۀͱ ͯ͘͠Δ… ※ ࣸਅͷਓΠϝʔδͰ͢ɻ
AࣾͷϓϩδΣΫτɾϚωʔδϟʔͱ૬ஊ εέδϡʔϧʹ͍ͭͯɺ֬ೝ͍ͨ͜͠ͱ͕… Ͳ͏ͨ͠ͷʁ աڈͷܦݧ͔ΒΈͯɺεέδϡʔϧʹ ͔ͳΓແཧ͕͋Γͦ͏Ͱ͢ …Θ͔ͬͨɺ֬ೝͯ͠ΈΔ ࠜڌ͚ͩͰ֬ೝͯ͠Β͑·ͤΜ͔ʁ Aࣾ ϓϩδΣΫτɾϚωʔδϟʔ ※
ࣸਅͷਓΠϝʔδͰ͢ɻ
̎࣌ؒޙ
ͳΜͷࠜڌͳ͔ͬͨ ※ ࣸਅͷਓΠϝʔδͰ͢ɻ
ͦͯ͠
ϓϩδΣΫτং൫Ͱૣ͘ ۓுঢ়ଶʹʂ
͜ΕͰ࣍ͷ࡞ઓͷ ͕ͬͨʂ ※ ࣸਅͷਓΠϝʔδͰ͢ɻ
࡞ઓ̏ɿղܾࡦΛఏҊ͢Δ
ͻͱ͖͠Γڞ༗ͨ͠ ͱ͜ΖͰ
ࠓޙͷํʹ͍ͭͯ ݕ౼͠Α͏ Aࣾ ϓϩδΣΫτɾϚωʔδϟʔ ※ ࣸਅͷਓΠϝʔδͰ͢ɻ
ͬͯ·ͨ͠ʂ
ࠓճͷཁٻʹ߹Θͤͯ ఏҊॻΛ༻ҙ͠·ͨ͠ ※ ৄࡉ࣍ষͰઆ໌͠·͢ ※ ࣸਅͷਓΠϝʔδͰ͢ɻ
ͦͷ݁Ռ
ͦΕΛϕʔεʹਐΊΑ͏ ※ ࣸਅͷਓΠϝʔδͰ͢ɻ
ͦͯ͠ɺମ੍มԽ
ϓϩδΣΫτମ੍ ϓϩδΣΫτɾϚωʔδϟʔ ϓϩμΫτɾΦʔφʔ ։ൃνʔϜɾϦʔμʔ ։ൃνʔϜɾϝϯόʔ Aࣾ Bࣾ Cࣾ
ϓϩδΣΫτମ੍ ϓϩδΣΫτɾϚωʔδϟʔ ϓϩμΫτɾΦʔφʔ ։ൃνʔϜɾϦʔμʔ ։ൃνʔϜɾϝϯόʔ Aࣾ Bࣾ Cࣾ ↑ΠϚίί ΞʔΩςΫτ
ͦͷ࣌ɺࣄ͕݅
ϝϯόʔΛͯ͠ ·͔͞ͷ ग़ࣾڋ൱ Cࣾ νʔϜɾϦʔμʔ ※ ࣸਅͷਓΠϝʔδͰ͢ɻ
͔͠͠
͜Ενϟϯεʂ
ΑΖ͚͠Ε ͍͍Ϧʔμʔ հ͠·͢Α ※ ࣸਅͷਓΠϝʔδͰ͢ɻ
ࣗࣾϝϯόʔͷࢀೖʹޭ ※ ࣸਅͷਓΠϝʔδͰ͢ɻ
ϓϩδΣΫτମ੍ ↑ΠϚίί ϓϩδΣΫτɾϚωʔδϟʔ ϓϩμΫτɾΦʔφʔ ։ൃνʔϜɾϦʔμʔ ։ൃνʔϜɾϝϯόʔ Aࣾ Bࣾ Cࣾ ΞʔΩςΫτ
New! →
͔͠͠ɺ·ͨࣄ͕݅
։ൃϝϯόʔ શһఫୀͤ͞·͢ʂ ※ ࣸਅͷਓΠϝʔδͰ͢ɻ
ͦͷ݁Ռ
ϓϩδΣΫτମ੍ ↑ΠϚίί ϓϩδΣΫτɾϚωʔδϟʔ ϓϩμΫτɾΦʔφʔ ։ൃνʔϜɾϦʔμʔ Aࣾ Bࣾ ։ൃνʔϜɾϝϯόʔ Cࣾ ΞʔΩςΫτ
New! →
ϓϩδΣΫτମ੍ ↑ΠϚίί ϓϩδΣΫτɾϚωʔδϟʔ ϓϩμΫτɾΦʔφʔ ։ൃνʔϜɾϦʔμʔ Aࣾ Bࣾ ΞʔΩςΫτ New! →
……
ͻͬ͘Γฦ͗ͨ͢͠ʁ ※ ࣸਅͷਓΠϝʔδͰ͢ɻ
3. ೲظͰ։ൃ͢ΔͨΊʹ
͍લৼΓࣦྱ͠·ͨ͠
͔͜͜Β ΘΓͱϚδϝͳͰ͢
ίϯτϩʔϧݖಘ·͕ͨ͠ɺ ·ͩɺෆ҆ཁૉ͕ࢁੵΈͰ͢
ݱঢ়ͷओͳ՝ 1. ։ൃɾӡ༻ίετΛݮΒͨ͢Ίͷݕ౼ 2. ։ൃϝϯόʔͷௐୡɾڭҭ 3. ݄̏·ͰʹσϞ͕Ͱ͖ΔΑ͏ʹ͢Δ 4. ೲظ͕࣭ͩམͱͨ͘͠ͳ͍
ෆ҆Λղফ͢ΔͨΊʹ ϦεΫΛऔΔ
՝̍ɿ։ൃɾӡ༻ίετΛݮΒ͢
ํࡦ̍ɿPaaS / IaaSΛར༻͢Δ
ॳظஈ֊ͷߏͱ͔ཁٻͱ͔ • αʔόʔͷϗεςΟϯάαʔϏεΛར༻͢Δ • োੑΛߟྀͯ͠Ϋϥελߏʹ͢Δ • αʔόʔͷࢮ׆ࢹ͕ߦ͑Δ ※ ͨͩ͠ɺΠϯϑϥΤϯδχΞ͍·ͤΜɻ
αʔόʔߏͷΠϝʔδ DBαʔόʔ APαʔόʔ ϩʔυόϥϯαʔ ࢮ׆ࢹ
࣌ؒ༧ࢉແ͍ΜͩΑ
͍ͥͬͨແཧʂ
ͳͷͰ
Google App EngineΛ༻͢Δ
Google App Engineͷಛ • উखʹεέʔϧΞτ͢Δ • ࣗಈͰෳσʔλϕʔεɾαʔόʔʹอଘ • ಉ͡ڥ͕͙͢ʹɺ͍ͭ͘Ͱ࡞ΕΔ •
͍͍͢ཧίϯιʔϧ͕͋Δ
ͳʹΑΓɺ͕ࣗͨͪಘҙ
Πϯϑϥͷ͜ͱ Կߟ͑ͳ͍͍ͯ͘
͕ɺ࣮Ͱ͖ͳ͍ػೳ
ͦΕΒAWSΛ༻
AWSΛ༻࣮ͯͨ͠͠ػೳ • ؾி͔ΒใΛड৴͢ΔͨΊͷ FTPαʔόʔػೳ • ܞଳΩϟϦΞϝʔϧͷҰ੪৴
PaaS / IaaS Λ༻ͨ݁͠Ռ • Πϯϑϥͷઃܭɾߏஙίετ͕΄΅̌ʹ • جຊతʹӡ༻ࢹର EC2Πϯελϯε͚̍ͭͩʹ
՝̎ɿ։ൃϝϯόʔͷௐୡ
͍Ζ͍Ζ͋ͬͯফ໊͑ͨ̏ ϝϯόʔΛूΊΔඞཁ͕͋Γ·͢
ํʑʹืूΛͨ݁͠Ռ Javaٕज़ऀ໊̎࠾༻Ͱ͖·ͨ͠
ϝϯόʔڭҭͷ՝ • ϑϨʔϜϫʔΫͱ Google App Engine σʔλϕʔεͷशಘ • HTML /
JavaScriptͷεΩϧෆ
ํࡦ̍ɿ̍पؒϖΞϓϩάϥϛϯά
ͳͥɺ̍िؒͳͷ͔
ϓϩδΣΫτɾϚωʔδϟʔͱͷձ ϖΞϓϩͰͬͯΈΑ͏ͱࢥ͏ͷͰ͕͢… ࡞ۀޮ͕ʹͳΓͦ͏Ͱා͍ͳɻ ظ͍ؒ͠ɺϦεΫͱΕͳ͍Α ͰɺڭҭͷͨΊʹҰि͚ؒͩ Β͍ͤͯͩ͘͞ Aࣾ ϓϩδΣΫτɾϚωʔδϟʔ ※ ࣸਅͷਓΠϝʔδͰ͢ɻ
ڭҭϨϏϡʔͷίετͱτϯτϯ ͳͷ͔͠Εͳ͍͚Ͳ…
̍पؒϖΞϓϩάϥϛϯά • ࢀೖޙ̍प͚ؒͩϖΞϓϩ͢Δ • ڭ͑ΔଆɺπʔϧɺϑϨʔϜϫʔΫͷ͍ํ ͳͥ͜ͷΑ͏ʹ࡞Δͷ͔ͳͲͷഎܠ આ໌͠ͳ͕ΒίʔσΟϯά͢Δ • ͦͷਓͷΫηಛΛΔ •
̍पؒͰྃͰ͖ΔετʔϦʔʢػೳʣ※Λબ͢Δ
ͬͯΈͨײ νʔϜʹૣ͘ೃછΉ͜ͱ͕Ͱ͖ͨ υΩϡϝϯτΛಡ·͞ΕΔΑΓཧղ͕ૣͯ͘ਂ͍ ίʔσΟϯάͷํͱ͔ϧʔϧ͕ڞ༗Ͱ͖ͨ ৽ϝϯόʔͷεΩϧϨϕϧ͕͔ͬͨ ̍ػೳΛ௨ͯ͠࡞ͷաఔ͕ݟ͑ͨͷͰɺෆ͕҆ݮͬͨ ৽ϝϯόʔ طଘϝϯόʔ
ͳ͔ͳ͔ධ
ϖΞϓϩάϥϛϯά͕ ೝΊΒΕͳ͍߹ʹޮՌత
ํࡦ̎ɿ࡞ۀൣғͷݶఆ
৽ϝϯόʔ HTML / JavaScript εΩϧ͕ແ͍
ษڧͯ͠Β͏࣌ؒͳ͍ ϖΞϓϩͰ͖ͳ͍
ͿͬͪΌ͚
JavaScriptΛଟਓͰ ͍͡Γͨ͘ͳ͍
ͳͷͰ
JavaͰϏδωεϩδοΫ͚ͩ ࡞ͬͯΒ͏͜ͱʹ
UIͱϏδωεϩδοΫͷ UI : HTML / JavaScript Logic: Java JSON-RPC ϏδωεϩδοΫͷݺग़
↑ ϝιουΛݺͿ͚ͩ ϏδωεϩδοΫͷఏڙ ↑ ϝιουΛ࡞Δ͚ͩ
ૄ݁߹ʹ͢Δ͜ͱͰ ࡞ۀΛγϯϓϧʹ
ϩάΠϯใҎ֎ εςʔτϨεͳʢঢ়ଶΛ࣋ͨͳ͍ʣ ػೳͱͯ͠ఏڙ͢Δɻ POINT
՝̏ɿ݄̏·Ͱʹ σϞ͕Ͱ͖ΔΑ͏ʹ͢Δ
ϓϩμΫτɾΦʔφʔͷཁٻ ݄̏ʹϢʔβʔ͕ ࣮ࡍʹૢ࡞͢ΔσϞΛߦ͏ ϓϩμΫτɾΦʔφʔ ϦεέෆՄ σϞͰ༻͢Δػೳʹ όά͕ͳ͍͜ͱ ※ ࣸਅͷਓΠϝʔδͰ͢ɻ
࣮ࡍͷϦϦʔε༧ఆ݄̑ͳͷͰ ݄̏։ൃͷத൫ͱͳΔ
ΥʔλʔϑΥʔϧܕͩͱ ΄΅࣮֬ʹͰ͖ͳ͍ʂ
ϓϩδΣΫτɾϚωʔδϟʔ͕ લʹݴͬͯͨ͜ͱ ཧΞδϟΠϧͱ͔ ͬͯΈ͍ͨΜ͚ͩͲɺ ܦݧ͕ͳ͍͔Βߟ͑தͩͶ ϓϩδΣΫτɾϚωʔδϟʔ ※ ࣸਅͷਓΠϝʔδͰ͢ɻ
ΞδϟΠϧ։ൃͰߦ͜͏ʂ
Scrumʁ XPʁ
……
ܦݧऀ͕Ұਓ͍ͳ͍ʂ
……ࣦഊͦ͠͏ɻ
ͳͷͰɺ
ϓϥΫςΟεΛҰ෦͚ͩద༻
։ൃΠςϨʔγϣϯ ʢ̍िؒʙ̎िؒͷظؒʣ • • '( • • •
!1-87 • PG/.,0 • ! • *.58+47/3 &(#"( • • 26+.) • $%
ద༻ϓϥΫςΟε No fjY`W] $1 1 3*[og ?I2,V0:7%X`lo\inH" CS]bokoV(CS8 2
" '"rs +H7PFE@I7PS@I75V !CS8 3 OR=<R X`lo\inL K7X`lo\inKCSOR=<RV0;8 4 `]b/ JUnit-V)B7`]bL/ V0;8 5 DONE ]bokoP^]YM KBG:J?TNI2JAJ:8 p&#>9SM7DL^]YM.UFG:J:q 6 X`lo\inah X`lo\inL K7BEfmZjgLahV0:7" 6=QLeWocd_YVS 7 rt4 &#BJ:8
͜Ε͚ͩ
େͳͷࠞཚ͠ͳ͍͜ͱ • ࠓɺԿΛ͖͔͢໌֬ʹ͢Δ • ࠓɺग़དྷΔ࡞ۀྔΛ໌֬ʹ͢Δ • ࠓɺͲ͜·Ͱग़དྷ͍ͯΔ͔໌֬ʹ͢Δ • ࠓɺରॲ͖͕͋͢Δ͔໌֬ʹ͢Δ
՝̐ɿೲظ͕ͩ ࣭མͱͨ͘͠ͳ͍
࣭ΛอͭͨΊʹ • ςετͷࣗಈԽ͢Δ • ϝϯςφϯεͰ͖ΔίʔυΛॻ͘
ํࡦ̍: Spockͷಋೖ
JUnit ॻ͘ͷεΰ͘μϧ͍
͕͜͜ΠϠͩΑJUnit • ࣮ίʔυҎ্ʹɺಡΈ͍͢ίʔυΛ ॻ͘ͷ͕େมɻϝϯςͮ͠Β͍ɻ • ύλʔϯςετσʔλ४උͷ ڽͬͨςετΛॻ͘ͷ͕େมɻ • ७ਮʹهड़ྔ͕ଟ͗͢Δɻ
த൫μϨͯ͘ΔͱJUnitΛ ॻ͔ͳ͍ɾखൈ͖͢Δਓ͕ଓग़
ͦ͜Ͱ
SpockΛಋೖʂ
Spockͱ • JavaɾGroovyΞϓϦέʔγϣϯ͚ͷ ςετɾ༷ϑϨʔϜϫʔΫ • ඒ͘͠දݱྗͷߴ͍༷هड़ݴޠ • JUnitͱͯ͠ಈ࡞͢Δɻ طଘͷJUnitͷػೳશͯ͑Δɻ
SpockʹΑΔςετίʔυ class Math extends Specification { def “̎ͭͷ͔Βɺେ͖͍ΛऔಘͰ͖Δ͜ͱ" { expect:
Math.max(a, b) == c ! where: a | b | c 1 | 3 | 3 0 | 0 | 0 7 | 4 | 4 } } ݅ϛε ʢc7͕ਖ਼ղʣ
SpockʹΑΔΤϥʔ௨ ̎ͭͷ͔Βɺେ͖͍ΛऔಘͰ͖Δ͜ͱ FAILED ! Condition not satisfied: ! Math.max(a, b)
== c | | | | 7 4 | 4 false
Groovyͷशಘʹؔͯ͠ • Javaͷίʔυ͕΄΅ͦͷ··ಈͨ͘Ίɺ ͱΓ͋͑ͣɺ͙͢͏͜ͱ͕Ͱ͖ͨ • ͳΕͯ͘ΔͱɺGroovyΒ͍͠ίʔυ͕ ॻ͚ΔΑ͏ʹͳΓɺίʔυྔ͕গͳ͘ ݟ͍͢ςετ͕ॻ͚ΔΑ͏ʹͳͬͨ
ຊʹ͢Β͍͠ͷͰ ͥͻ࣮ફͯ͠Έ͍ͯͩ͘͞
ํࡦ̎: Ϧʔμϒϧίʔυಡॻձ
͠Β͘։ൃ͍ͯͯ͠ ൃ֮ͨ͠
ίʔυϨϏϡʔͷ Ռ͕ग़ͳ͍
ਖ਼͘͠ಈ͚͘ͲɺಡΈͮΒ͍ɺ มͳઃܭͷίʔυ͕૿͍͑ͯ͘
͜ͷ··ͩͱ ϝϯςͰ͖ͳ͘ͳͬͯ͠·͏
ͳͷͰ
None
ಡॻձͷํ • ຖɺఆ࣌ޙʹ̍ষͣͭʢҰ࣌ؒఔʣ • ࣋ͪճΓͰ୲ऀΛܾΊͯɺղઆͯ͠Β͏ • ಡΜͩষʹ͍ͭͯɺσΟεΧογϣϯ͢Δ
ಡॻձͷޮՌ • ֤ϝϯόʔ͕ࣗͰಡΈ͍͢ίʔυΛ ߟ͑ΔΑ͏ʹͳͬͨ • ϨϏϡʔͷࢦఠͷҙਤࠜڌ͕ ΘΓ͘͢ͳͬͨ • ֶशҙཉͷ্
4. ·ͱΊ
ͦͷޙ͍Ζ͍Ζͳ͕ ൃੜ͠·͕ͨ͠
ۀτϥϒϧͳ͘ ແࣄɺ݄̑ʹϦϦʔε Ͱ͖ͦ͏Ͱ͢ɻ
͍Ζ͍Ζ͝հ͠·͕ͨ͠
ͬͯͯΑ͔ͬͨ ͱݴ͏ͨΊʹ
ੵۃతʹಈ͘͜ͱʂ
ׂʹറΒΕΔඞཁແ͍
ੵۃతʹಈ͘ͱ ͔Γ૿͑ΔͷͰʁ
μϝͩͱΘ͔ͬͯͯ ์ஔ͢Δ΄͏͕ແ
Ͱɺ͕Μͬͨͬͯ څྉมΘΒͳ͍Α
ࣄͷใु ͓͚ۚͩ͡Όͳ͍
ͦΕ
৴པ
࣍ͷࣄ
ѱ͍ࣄɺ৴པΛ࣭ʹͯ͠ ͓ۚΛआΓ͍ͯΔΑ͏ͳͷ
Ͱɺࣦഊͨ͠ΒͲ͏͢Δͷʁ
ࣦഊͨͬͯ͠ 100%μϝʹͳΔ༁͡Όͳ͍
࣮ࡍͷͱ͜Ζ 100%ͷޭࣦഊͳ͍
େࣄͳͷ࿈ഊ͠ͳ͍͜ͱ
ϓϩδΣΫτͷվળʹ େᭊΛৼΔ͏ඞཁͳ͍
࠷ॳ͔ΒᘳΛࢦ͢ͱ େɺࣦഊ͢Δ
·ͣɺখ͞ͳ৴པΛ ಘΔͱ͜Ζ͔Β࢝ΊΑ͏
͝ਗ਼ௌɺ͋Γ͕ͱ͏͍͟͝·ͨ͠
ࣸਅૉࡐʹ͍ͭͯ ͜ͷࢿྉɺͺͨͦ͘(http://pakutaso.comʣͷࣸਅૉࡐΛҰ෦ར ༻͍ͯ͠·͢ɻ͜ͷࣸਅΛܧଓͯ͠ར༻͢Δ߹ɺͺͨͦ͘ ެࣜαΠτ͔Βࣗ͝Ͱμϯϩʔυ͍͔ͯͨͩ͘͠ɺͺͨ͘ ͦͷ͝ར༻ن(http://pakutaso.comʣʹಉҙ͍ͯͨͩ͘͠ඞཁ͕ ͋Γ·͢ɻಉҙ͠ͳ͍߹ࣸਅͷ͝ར༻Ͱ͖·ͤΜͷͰ͝ ҙ͍ͩ͘͞ɻ