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
エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと
Search
Yasutaka KOUNO
May 17, 2014
Technology
200
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと
2014/05/17に行われた「エフスタ!! in Aizu 〜やっててよかったこの仕事〜」でセッションした際に使用したスライドです。
Yasutaka KOUNO
May 17, 2014
More Decks by Yasutaka KOUNO
See All by Yasutaka KOUNO
はじめてのIT勉強会 #1 Readable Code Part 1
ykono
0
830
Readable Code 勉強会 in 仙台 Part 1: 名前を改善する
ykono
0
130
Other Decks in Technology
See All in Technology
自主式軟體工廠
philipz
0
120
Snowflake Horizon Catalog と Apache Iceberg で作る オープンなデータ基盤
kitagawaz
0
390
Apache Iceberg が拓く AI 時代のオープンレイクハウス
tomtanaka
0
210
Argo CDとAtlantisで実現するインフラ管理のセルフサービス化──小規模SREチームで支えるプラットフォーム
cassius7
0
280
サーバーフルコンピューティング?AWS Lambda
iwatatomoya
0
130
SDDの運用にめげずに向き合った話
sansantech
PRO
0
110
HolmesGPTで始めるSREエージェント入門!プラットフォームの障害調査はAIにお任せ 〜
sanghyuk
0
260
VS Code × GitHub Copilot での Fabric 開発
ryomaru0825
1
220
AI 時代の Azure エンジニアリング ~ 私たちは何を磨き、何を任せるのか ~
chack411
1
370
組み立てて楽しむ AWS Blocks 入門
kmiya84377
0
140
GitHub Agentic Workflows を触ってみる
htkym
2
920
2026-10-01_MagicPod_QAハーネスエンジニアリングとQA組織の未来像
ynisqa1988
1
420
Featured
See All Featured
A better future with KSS
kneath
240
18k
The Pragmatic Product Professional
lauravandoore
37
7.5k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
510
How to Think Like a Performance Engineer
csswizardry
28
2.9k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
510
Building a Scalable Design System with Sketch
lauravandoore
464
34k
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.2k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
590
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
270
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
1
620
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.9k
Embracing the Ebb and Flow
colly
88
5.2k
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ʣʹಉҙ͍ͯͨͩ͘͠ඞཁ͕ ͋Γ·͢ɻಉҙ͠ͳ͍߹ࣸਅͷ͝ར༻Ͱ͖·ͤΜͷͰ͝ ҙ͍ͩ͘͞ɻ