Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
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
780
Readable Code 勉強会 in 仙台 Part 1: 名前を改善する
ykono
0
120
Other Decks in Technology
See All in Technology
Symfony AI in Action
el_stoffel
2
300
インフラ室事例集
mixi_engineers
PRO
2
170
useEffectってなんで非推奨みたいなこと言われてるの?
maguroalternative
9
5.9k
Oracle Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
0
610
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
3.2k
【保存版】「ガチャ」からの脱却:Gemini × Veoで作る、意図を反映するAI動画制作ワークフロー
nekoailab
0
120
翻訳・対話・越境で強いチームワークを作ろう! / Building Strong Teamwork through Interpretation, Dialogue, and Border-Crossing
ar_tama
4
980
Kill the Vibe?Architecture in the age of AI
stoth
1
150
進化の早すぎる生成 AI と向き合う
satohjohn
0
460
Design System Documentation Tooling 2025
takanorip
1
820
type-challenges を全問解いたのでエッセンスと推し問題を紹介してみる
kworkdev
PRO
0
160
履歴テーブル、今回はこう作りました 〜 Delegated Types編 〜 / How We Built Our History Table This Time — With Delegated Types
moznion
14
8.8k
Featured
See All Featured
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
Statistics for Hackers
jakevdp
799
230k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.6k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.1k
For a Future-Friendly Web
brad_frost
180
10k
Mobile First: as difficult as doing things right
swwweet
225
10k
Typedesign – Prime Four
hannesfritz
42
2.9k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
118
20k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.8k
Become a Pro
speakerdeck
PRO
30
5.7k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
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ʣʹಉҙ͍ͯͨͩ͘͠ඞཁ͕ ͋Γ·͢ɻಉҙ͠ͳ͍߹ࣸਅͷ͝ར༻Ͱ͖·ͤΜͷͰ͝ ҙ͍ͩ͘͞ɻ