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
Navigation3でViewModelにデータを渡す方法
mikanichinose
0
210
Azure AI Foundryでマルチエージェントワークフロー
seosoft
0
150
BigQuery Remote FunctionでLooker Studioをインタラクティブ化
cuebic9bic
2
230
CI/CDとタスク共有で加速するVibe Coding
tnbe21
0
230
20250625 Snowflake Summit 2025活用事例 レポート / Nowcast Snowflake Summit 2025 Case Study Report
kkuv
1
220
Welcome to the LLM Club
koic
0
140
AIの最新技術&テーマをつまんで紹介&フリートークするシリーズ #1 量子機械学習の入門
tkhresk
0
130
AWS CDK 実践的アプローチ N選 / aws-cdk-practical-approaches
gotok365
4
510
【TiDB GAME DAY 2025】Shadowverse: Worlds Beyond にみる TiDB 活用術
cygames
0
880
Кто отправит outbox? Валентин Удальцов, автор канала Пых
lamodatech
0
280
_第3回__AIxIoTビジネス共創ラボ紹介資料_20250617.pdf
iotcomjpadmin
0
140
知識を整理して未来を作る 〜SKDとAI協業への助走〜
yosh1995
0
150
Featured
See All Featured
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
20
1.3k
RailsConf 2023
tenderlove
30
1.1k
A Tale of Four Properties
chriscoyier
160
23k
The World Runs on Bad Software
bkeepers
PRO
69
11k
Site-Speed That Sticks
csswizardry
10
650
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
KATA
mclloyd
29
14k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.8k
Thoughts on Productivity
jonyablonski
69
4.7k
Documentation Writing (for coders)
carmenintech
71
4.9k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
GraphQLとの向き合い方2022年版
quramy
46
14k
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ʣʹಉҙ͍ͯͨͩ͘͠ඞཁ͕ ͋Γ·͢ɻಉҙ͠ͳ͍߹ࣸਅͷ͝ར༻Ͱ͖·ͤΜͷͰ͝ ҙ͍ͩ͘͞ɻ