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
はてなブログ最近の開発テクニックと最新の開発風景のご紹介
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
hitode909
July 01, 2017
Technology
2
9.8k
はてなブログ最近の開発テクニックと最新の開発風景のご紹介
hitode909
July 01, 2017
Tweet
Share
More Decks by hitode909
See All by hitode909
チームをチームにするEM
hitode909
0
510
「バイブス静的解析」でレガシーコードを分析・改善しよう
hitode909
4
5.4k
cpanfileの更新を 自動化したい
hitode909
0
2.7k
how to buy clothes
hitode909
1
21k
Perlの上にも三年 〜 ずっとイケてるサービスを作り続ける技術 〜
hitode909
14
44k
Perlの静的解析入門とPerlリファクタリングツールApp::PRTのご紹介
hitode909
10
12k
高速にドッグフードを食べる方法
hitode909
19
48k
Emacsで1ファイルにしか出現していないシンボルをハイライトするやつ
hitode909
2
1.3k
画面をチカチカさせるノウハウ
hitode909
0
360
Other Decks in Technology
See All in Technology
オンプレとGoogle Cloudを安全に繋ぐための、セキュア通信の勘所
waiwai2111
3
1.1k
Devinを導入したら予想外の人たちに好評だった
tomuro
0
880
Eight Engineering Unit 紹介資料
sansan33
PRO
1
6.9k
20260305_【白金鉱業】分析者が地理情報を武器にするための軽量なアドホック分析環境
yucho147
1
160
Webアクセシビリティ技術と実装の実際
tomokusaba
0
210
どこで打鍵するのが良い? IaCの実行基盤選定について
nrinetcom
PRO
2
170
AIに視覚を与えモバイルアプリケーション開発をより円滑に行う
lycorptech_jp
PRO
1
790
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
14k
OCI Security サービス 概要
oracle4engineer
PRO
2
13k
ブラックボックス観測に基づくAI支援のプロトコルのリバースエンジニアリングと再現~AIを用いたリバースエンジニアリング~ @ SECCON 14 電脳会議 / Reverse Engineering and Reproduction of an AI-Assisted Protocol Based on Black-Box Observation @ SECCON 14 DENNO-KAIGI
chibiegg
0
140
大規模サービスにおける レガシーコードからReactへの移行
magicpod
1
130
Exadata Database Service on Dedicated Infrastructure(ExaDB-D) UI スクリーン・キャプチャ集
oracle4engineer
PRO
7
7.1k
Featured
See All Featured
Testing 201, or: Great Expectations
jmmastey
46
8.1k
How to Think Like a Performance Engineer
csswizardry
28
2.5k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
280
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.2k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
So, you think you're a good person
axbom
PRO
2
1.9k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
300
Designing for Timeless Needs
cassininazir
0
150
How to train your dragon (web standard)
notwaldorf
97
6.5k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
270
Transcript
ͯͳϒϩά࠷ۙͷ ։ൃςΫχοΫͱ࠷ ৽ͷ։ൃ෩ܠͷ͝ հ
IJUPEF ژ͔Βདྷ·ͨ͠ ͯͳϒϩάΛ։ൃ͍ͯ͠Δ
ͯͳϒϩά ʙ ࠓ
҆ఆͯ͠։ൃΛ ଓ͚ΔͨΊͷऔΓΈ ͦͷͱ͖ʹߟ͑ͨ͜ͱίπ
ؒͷาΈ
ʙ 03.Θͳ͍ ബ͍ϑϨʔϜϫʔΫ
42-खॻ͖ .PEFMख࡞Γ 42-$POUSPMMFS͔Βൃߦ
ʙ 42-ίϐϖ 4FSWJDFΫϥε͔Β42-Λൃߦ
υϝΠϯۦಈઃܭ͕ྲྀߦΔ ϢϏΩλεݴޠΦϒδΣΫτΤϯςΟςΟ
:"1$"4*" 1FSMͷ্ʹࡾ ͣͬͱΠέͯΔαʔϏεΛ ࡞Γଓ͚Δٕज़
None
ઃܭϞσϦϯάͷؔ৺ͷߴ·Γ ಡॻձΛͬͨΓ
Ұํͦͷࠒ
ϑϩϯτΤϯυ ڊେͳϑΝΠϧˠ#SPXTFSJGZͰׂ K2VFSZˠ3FBDU
None
αʔόαΠυͷ1FSM ϑϩϯτΤϯυͷ+4 ͜ΕΒ͕Α͚Ε࠷ߴ
αʔόαΠυͷ1FSM ϑϩϯτΤϯυͷ+4 ͜ΕΒ͕Α͚Ε࠷ߴ͔ ͱ͍͏ͱͦ͏Ͱͳ͍
Ұํͦͷࠒ
)5.-ͷ৴ ૉͳΒ͕͠ଓ͍͍ͯͨ
ϒϩάαʔϏεϒϩάΛ৴͢ΔαʔϏε σβΠϯΧελϚΠζ දࣔ༰ͷΓସ͑Φϓγϣϯ ͳ͔ͳ͔ෳࡶͳΘΓʹύϥμΠϜ͕ݹ͍
7JFXΛ͖Ε͍ʹ อͭͷ͕͍͠
9TMBUFͷ55FSTFΛ͍ͬͯΔ ݴޠػೳ͕ૉ ڽͬͨ͜ͱͤͣී௨ʹ͍ͬͯΔ͚ͩ ؒύϥμΠϜͷਐԽ͕ͱ͘ʹͳ͍
ૉͳ7JFXͷੈք؍ 7JFXଆͰมΛએݴͤͣ $POUSPMMFS͔ΒͤݺΔ ςϯϓϨʔτׂͷࢦ͕ͳ͍ )5.-λάͰͳ͘จࣈྻΛѻ͍ͬͯΔ
7JFXΛͳΜͱ͔͢Δ 7JFX.PEFMԽ 3FBDUԽ ੩తղੳ͕ͯ͠ΜΔ
ෳࡶͳϩδοΫΛ 7JFX.PEFMʹҠ͢
ϩδοΫΛॻ͘ͱͳ͔ͳ͔େม
None
ϖʔδJEΛ༻͍ͯ બதͷλϒΛϋΠϥΠτ
<*'QBHF@JEbVTFSCMPHDPOpH ccQBHF@JEbVTFSCMPHDPOpHEFUBJM ccQBHF@JEbVTFSCMPHDPOpHQFSNJTTJPO > TFMFDUFE <&/%> ૉʹॻ͘ͱ
දࣔ༻ͷཧը໘αΠυόʔΛ ͋ΒΘ͢ΫϥεΛ࡞Δ
<*'TJEFCBSTFMFDUFE@UBC@JT CMPHDPOpH > TFMFDUFE <&/%>
)BUFOB&QJD7JFX"EBQUFS"ENJO4JEFCBS λϒ໊Λ͢ͱɼબத͔Ͳ͏͔ڭ͑ͯ͘ΕΔ ී௨ͷ1FSMͷΫϥεͳͷͰςετՄೳ
͍͜͠ͱΛ͢Δͱ͖3FBDUͰ ॻ͖͢
چདྷɿ55ˠK2VFSZ ࠷ۙɿ࠷ॳ͔Β3FBDU
ཧը໘ Ϋϩʔϧ͞ΕΔඞཁͳ͍ ಈతͳཁૉ͕ଟ͍
ಈతͳͱ͜Ζ·ͣ3FBDUͰॻ͖ ͨ͠Γ͍ͯ͠Δ
QSPQ5ZQFTͰ σʔλߏΛνΣοΫ FTMJOUͰղੳ ϨϯμϦϯάͷςετ
จࣈྻͰͳ͘λά୯Ґ ࣗવͱߏԽ͞ΕΔ
੩తղੳ͕ͯ͠ΜΔ
1$εϚʔτϑΥϯ".1
ࣅ͍ͯΔ͕ͪΐͬͱ͕ͪ͏ ίϐϖͯ͠ฤू͕ͪ͠
੩తղੳͯ͠ཧ͢Δ
YSU YTMBUF SFGBDUPSJOH UPPM
None
None
XSJUUFOJO3VCZ
XSJUUFOJO3VCZ 94MBUFʹґଘ͠ͳ͍ͨΊ1FSMͱ ผݴޠͰ࣮
55ͷจ๏Λύʔε ύʔεͨ͠ใΛදࣔ ϦϑΝΫλϦϯά
ύʔε <ʙ> จࣈͣͭݟ͍ͯ͘
ϒϩοΫͷݕग़ 55 <*'>ʜ<&/%>
ϒϩοΫͷݕग़ )5.- EJWʜEJW
55ͱ)5.-ಉ࣌ʹύʔε
ػೳ ωετͷදࣔ ॏෳ͢ΔϒϩοΫͷݕग़ ผϑΝΠϧʹΓग़͠
ωετͷදࣔ
YSUEVNQUFNQMBUFTTBNQMFIUNM %VNQJOHUFNQMBUFTTBNQMFIUNM IUNM CPEZ <'03JUFN*/JUFNT> <*'JUFNUJUMF> I<UJUMF>I <&/%> <&/%> CPEZ
IUNM
ωετͷେ͖͍ͱ͜Ζ͔Βཧ ࠷େͰωετͷͱ͜Ζ͋ͬͨ
ࢦఆͨ͠ϒϩοΫͷΓग़͠
UFNQBMUFTTBNQMFIUNM IUNM CPEZ <'03JUFN*/JUFNT> <*'JUFNUJUMF> I<UJUMF>I <&/%> <&/%> CPEZ IUNM
YSUFYUSBDUUFNQMBUFTTBNQMFIUNM<'03JUFN*/JUFNT>UFNQMBUFT @JUFNTUU
UFNQBMUFTTBNQMFIUNM IUNM CPEZ <*/$-6%&@JUFNTUU> CPEZ IUNM UFNQMBUFT@JUFNTUU <'03JUFN*/JUFNT> <*'JUFNUJUMF> I<UJUMF>I
<&/%> <&/%>
ࢦఆ͞ΕͨϒϩοΫΛൈ͖ग़͢ ϑΝΠϧʹॻ͖ग़͠ */$-6%&จΛ༻ҙ ΠϯσϯτΛௐ
ͳΔ͘খ͚ʹ͍ͯ͘͠࡞ઓ ҙຯͷ·ͱ·Γ͝ͱʹׂ ࠷খͰϑΝΠϧλά
@XSBQQFSDBOPOJDBMUU <*'DBOPOJDBM> MJOLSFMDBOPOJDBMISFG<DBOPOJDBM> <&/%>
ཧ͍ͯ͘͠ͱݟ͑Δͷ ෆཁͳϑϥά ॏෳ
੩తղੳ͠·͠ΐ͏
දݱྗͷऑ͍ͱ͜ΖͰ ͍͜͠ͱΛ͠ͳ͍ 1FSMʹدͤͨΓ +4ʹدͤͨΓ
IUUQTXXXBNB[PODPKQ&"$&"$&#&#$&#%&&&"&"&"&#&&"$&"&0CKFDU0SJFOUFE4FMFDUJPO&"'&""&#&##&&#$&&"&"#EQ
IUUQTXXXBNB[PODPKQ&"$&"$&#&#$&#%&&&"&"&"&#&&"$&"&0CKFDU0SJFOUFE4FMFDUJPO&"'&""&#&##&&#$&&"&"#EQ ϨΨγʔίʔυվળΨΠυͰͳ͍ ͣͭ͢͜͠վળ͔ΒϑϧεΫϥον·Ͱ 7JFX.PEFMͷ
ΞϓϦέʔγϣϯʹ৽͍͠άοζΛ ಋೖ͢Δͱ͖ͷίπ ࿈ଓతʹҠߦͰ͖Δ Ұൠతͳ֓೦Ͱ͋Δ ࣦഊͨ͠ΒݩʹͤΔ
࿈ଓతʹҠߦͰ͖Δ ن͕େ͖͍ͱҰؾʹॻ͖͑Δͷࠔ ࠔͬͯΔͱ͜Ζ͔ΒඞཁʹԠ͍ͯͬͯ͘͡
Ұൠతͳ֓೦Ͱ͋Δ ಠࣗͷ֓೦ΑΓɼطଘͷ֓೦ͷ΄͏͕ शಘ͍͢͠ ຊΛಡΊ͔Δͱ͔
ࣦഊͨ͠ΒݩʹͤΔ ͬͯΈ͚ͨͲ͋·ΓΑ͘ͳ͔ͬͨΒ ఫୀͰ͖Δͱͷͧ·͍͠ ӡ༻தʹঢ়گ͕มԽͯࣗ͠વͱফ͑Δ߹
7JFXͩΜͩΜ ྑ͘ͳ͍ͬͯΔ ͓ΘΓ
αʔόαΠυͷ1FSM ϑϩϯτΤϯυͷ+4 )5.-ͷΈཱͯ ͜ΕΒ͕Α͚Ε࠷ߴ
αʔόαΠυͷ1FSM ϑϩϯτΤϯυͷ+4 )5.-ͷΈཱͯ ͜ΕΒ͕Α͚Ε࠷ߴ͔ ͱ͍͏ͱͦ͏Ͱͳ͍
ϓϩμΫγϣϯͷίʔυҎ֎ ίʔυΛॻ͘ڥ ॻ͍ͨίʔυΛϦϦʔε͢Δ
खݩͷ։ൃڥͷ σβΠφʔͱͷ࿈ܞ
ͯͳͷσβΠφʔ σβΠϯ ϚʔΫΞοϓ )5.- 9TMBUF 3FBDU 6OEFSTDPSF5FNQMBUF
Ϟμϯͳπʔϧ͕ͳ͍ͱ ։ൃେม σβΠφʔͷΤσΟλ"UPN 4VCMJNF5FYU͔Β"UPNʹ౷Ұ
ηοτΞοϓΛख͏ 3FBDUܥͷϓϥάΠϯೖΕΔ FTMJOUೖΕΔ Πϯσϯτͷઃఆ FEJUPSDPOpH
Πϯσϯτ +4 ͱ +49 ࠞࡏ͠ ͍ͯͨͷΛʹଗ͑ͨ
Πϯσϯτˠ FTMJOUpY ίϝϯτਖ਼نදݱͰ͞ʹ
`git grep --name-only -P '^ +//' -- src/js/ `.split(/\n/).each{|path| source=open(path).read;
open(path, 'w'){|f| f.write source.gsub(/^( +)\/\//){|space| ' '*(space.length/2-1) +'//'} } }
λϒԡͨ͠ΒΠϯσϯτଗ͏Α͏ʹ ΩʔόΠϯυͷઃఆ
JGϧʔϓ50%0Ͱॻ͍ͯ Β͏ ΤϯδχΞ͕͋ͱ͔Βಈ͔͢ ͍͠ͱ͜ΖϖΞϚʔΫΞοϓ
MJOUͱ͔Πϯσϯτͱ͔ ΤσΟλͷࢧԉΛօ͕ड͚ΒΕΔ
։ൃڥΛ࡞Δίπ ΤσΟλͷΧελϚΠζ झຯͰͳ͘ࣄ
։ൃڥ खݩͰ1FSM .Z42- NFNDBIDFE &MBTUJDTFBSDI ͳͲಈ͔͍ͯ͠Δ
TDSJQUTFUVQ 1FSMΠϯετʔϧ %#εΩʔϚͷηοτΞοϓ OPEFͷηοτΞοϓ 1ZUIPOηοτΞοϓ &MBTUJDTFBSDIͷΠϯσοΫε࡞Δ
Α͋͘Δձ
ʮखݩͰΤϥʔ͕ग़·ͨ͠ʯ ʮΤϥʔϩάΛష͍ͬͯͩ͘͞ʯ ʮషΓ·ͨ͠ʯ ʮ͏গ্͠ష͍ͬͯͩ͘͞ʯ
σβΠφʹͱͬͯɼͲ͜·Ͱ͕Τ ϥʔ͔͔Βͳ͍ ΤϯδχΞʹͱͬͯɼσβΠφͷ खݩͷঢ়گΛѲ͢Δͷ͕͍͠
ͲͷϒϥϯνͰ ԿΛͨ͠Β Ͳ͏ͳͬͨͷ͔ ηοτΞοϓे͔ ฉ͘͜ͱ͍Ζ͍Ζ͋Δ
ԣʹ͍Εը໘ݟʹߦ͚Δ ϦϞʔτͩͱखؒ
ࣗಈͰखݩͷΤϥʔΛ4MBDLʹྲྀ͢ 1MBDL.JEEMFXBSF
1MBDL.JEEMFXBSF1PTU&SSPS5P4MBDL ୭͕ Ͳͷϒϥϯνͷ Ͳͷ63-Ͱ ͲΜͳΤϥʔʹૺ۰͔ͨ͠
ݺΕΔલʹαϙʔτͰ͖ͯศར
։ൃڥΛ࡞Δίπ ؾܰʹฉ͍ͯΒ͏ յΕͨͱ͖ʹ͙͢͢
։ൃڥͷ ͓ΘΓ
ϨϏϡʔͷ
ίʔυϨϏϡʔ ຖϨϏϡʔλΠϜ ͳΔ݅͘ʹͳΔ·ͰݟΔ
࣌ؒʹͳΔͱ͓Βͤ
ঢ়ଶ͕มΘΔͱ4MBDLʹྲྀ͢ ϨϏϡʔͯ͠ΔਓΛՄࢹԽ
ϥϕϧͰঢ়ଶΛཧ
ྃͨ͠ͱ͖ʹྑ͍ͷ͔ѱ ͍ͷ͔͔Βͳ͍
ϨϏϡʔྃΛͭʹׂ
σβΠϯϨϏϡʔϥϕϧͰ
ϥϕϧͭར༻͍ͯ͠Δ
ݟΒΕͣ์ஔ͞Ε͍ͯΔ1VMM3FRVFTUʹؾ ͖͍ͨ
IUUQTUXJUUFSDPNTJEF@UBOBTUBUVT
ݹ͍1VMM3FRVFTUʹؾ͖͍ͨ ؒಈ͖͕ͳ͚ΕࣗಈͰϥϕϧΛ༩
ϥϕϧͭར༻͍ͯ͠Δ
࠷ۙඪ४ͷػೳͰϨϏϡ ʔͰ͖ΔͷͰซ༻͍ͯ͠Δ IUUQTIFMQHJUIVCDPNBSUJDMFTBCPVUQVMMSFRVFTUSFWJFXT
ϨϏϡʔͷϑϩʔΛ͑Δίπ ϨϏϡʔͯ͠Β͑ͳ͍ͱ։ൃ͕ࢭ·ΔͷͰ ීஈݟ͑Δͱ͜ΖͰΔ
ϨϏϡʔΛਐΊΔίπ ײʹૌ͑ΔͷͰͳ͘ࣄ࣮ΛՄࢹԽ͢Δ ϨϏϡʔґཔͷ݅ɼϨϏϡʔͷਐɼݹ͞
ϨϏϡʔͷϑϩʔΛ͑Δίπ σβΠφʔ͚ͷࢧԉΤϯδχΞ༻ ͱಉ༷ʹ༻ҙ͢Δ
ϦϦʔεͷ
TUBHJOHʹϚʔδ͍ͯ͘͠ ϦϦʔε͕ͪஷ·͖ͬͯͨΒϦϦʔε ճʙճ͘Β͍
CPU͕ϦϦʔεΛଅͯ͘͠ΕΔ
None
Ϛʔδ݅ ίʔυͷߦ ࠷େߦ1VMM3FRVFTUͷ୲ऀ ͕ϦϦʔε୲
ϦϦʔε͍͚ͨ͠Ͳػೳ
CPU͕ಠΓݴΛߘ͢Δ
னٳΈආ͚Δ ༦ํආ͚Δ ༵ۚආ͚Δ ॕલආ͚Δ
৬ਓͷஅΛࣗಈԽ
None
ϦϦʔε༰ʹԠͯ͡ ಈతʹϦϦʔεखॱΛม͑Δ
;ͩΜͷखॱ
BMUFSUBCMF͋Δͱ͖
- [ ] `master`ʹϚʔδ <%- if changed_files.any?{|f| f.match(%r{^db/}) } -%>
- [ ] alter table (db/* ͕มߋ͞Ε͍ͯ·ͨ͠) <%- end -%> ϦϦʔεखॱΛ ςϯϓϨʔτΤϯδϯͰੜ
ͨ·ʹΔखॱΛࣗಈݕ BMUFSUBCMF OHJOYͷઃఆϦϩʔυ DSPOͷߋ৽
ϦϦʔεϑϩʔΛ࡞Δίπ ຖΔͷͳͷͰࣗಈԽ ਓ͕ݟΔલʹCPUʹࣄͤ͞Δ
ϦϦʔεͷ ͓ΘΓ
·ͱΊ ࠓͷԿͷͩͬͨͷ͔
৮Δରͱͦͷ࡞ઓ ϓϩμΫγϣϯίʔυஸೡʹ ։ൃڥͲΜͲΜΔ
ΞϓϦέʔγϣϯͷઃܭ৻ॏʹ ण໋͕͍ ৮Ε߹͏͍࣌ؒ ͦͷઃܭΛҰத৮Γ͍͔ͨ
ఫୀ͢͠͞ ബ͍ϑϨʔϜϫʔΫΛେʹ͍ͯ͠Δ ॏްͳάοζʹґଘͤͣ͋ͱ͔Β ·ͨม͑Δલఏ ಋೖٕ͕ͨ͠ݹͼͨͱ͖ఫୀͰ͖Δ͔
ਓʹΛ͚Δ νʔϜϝϯόશһ͕։ൃ͍͢͠ڥΛ ࡞ΔͷΤϯδχΞͷࣄ ಉ྅͕खͰΠϯσϯτͯͨ͠Βνϟϯε
։ൃΛαϙʔτ͢ΔͨΊͷίʔυ ؾܰʹม͍͑ͯ͘ ϓϩμΫγϣϯίʔυΑΓण໋͕͍ յΕͨΒࣺͯͯ࡞Γ͢
·ͱΊ ҆ఆͯ͠αʔϏε։ൃΛଓ͚ΔͨΊ ͷίʔυͷઃܭํ ։ൃڥ։ൃϑϩʔ ։ൃϝϯόͷαϙʔτ
એγʔϧͬͯ·͢
એγʔϧͬͯ·͢