Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
サービスディレクターの 意思決定を支える技術
Search
airreader
July 03, 2017
Programming
1
7.9k
サービスディレクターの 意思決定を支える技術
airreader
July 03, 2017
Tweet
Share
More Decks by airreader
See All by airreader
「おもしろがり」からのサービスリリース 〜てがきはてなブログの場合〜
airreader
0
1.4k
Other Decks in Programming
See All in Programming
ソフトウェア設計の課題・原則・実践技法
masuda220
PRO
26
21k
【CA.ai #3】Google ADKを活用したAI Agent開発と運用知見
harappa80
0
280
無秩序からの脱却 / Emergence from chaos
nrslib
2
12k
AWS CDKの推しポイントN選
akihisaikeda
1
240
Microservices Platforms: When Team Topologies Meets Microservices Patterns
cer
PRO
1
930
【Streamlit x Snowflake】データ基盤からアプリ開発・AI活用まで、すべてをSnowflake内で実現
ayumu_yamaguchi
1
110
バックエンドエンジニアによる Amebaブログ K8s 基盤への CronJobの導入・運用経験
sunabig
0
140
ローターアクトEクラブ アメリカンナイト:川端 柚菜 氏(Japan O.K. ローターアクトEクラブ 会長):2720 Japan O.K. ロータリーEクラブ2025年12月1日卓話
2720japanoke
0
700
tsgolintはいかにしてtypescript-goの非公開APIを呼び出しているのか
syumai
5
1.6k
Level up your Gemini CLI - D&D Style!
palladius
1
180
なあ兄弟、 余白の意味を考えてから UI実装してくれ!
ktcryomm
10
11k
新卒エンジニアのプルリクエスト with AI駆動
fukunaga2025
0
170
Featured
See All Featured
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.3k
Site-Speed That Sticks
csswizardry
13
990
We Have a Design System, Now What?
morganepeng
54
7.9k
Side Projects
sachag
455
43k
The Cult of Friendly URLs
andyhume
79
6.7k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
Rebuilding a faster, lazier Slack
samanthasiow
84
9.3k
Building an army of robots
kneath
306
46k
Statistics for Hackers
jakevdp
799
230k
Embracing the Ebb and Flow
colly
88
4.9k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Transcript
αʔϏεσΟϨΫλʔͷ ҙࢥܾఆΛࢧ͑Δٕज़ id:AirReader
ࠓճ͢͜ͱ
πʔϧΛ͏·͘ར༻ ͠ίετΛԼ͛Δ͜ ͱͰૉૣ͍ҙࢥܾఆ Λߦ͏͜ͱ͕Ͱ͖Δ
ࣗݾհ
ࣗݾհ w ͯͳ*%"JS3FBEFS w ॴଐגࣜձࣾͯͳ w ৬छσΟϨΫλʔ w גࣜձࣾͯͳʹϢʔβʔαϙʔτ৬ͰΞϧό Πτೖࣾ
w Ϣʔβʔαϙʔτࣾһ࠾༻ w σΟϨΫλʔʹస
αʔϏεϓϥοτϑΥʔϜ νʔϜʹॴଐ͍ͯ͠·͢
αʔϏεϓϥοτϑΥʔϜ νʔϜͬͯͳʹΔνʔϜʁ
ݹ͔͘Βӡ༻͍ͯ͠Δ αʔϏεΛ ҰखʹҾ͖ड͚Δ
w ͯͳμΠΞϦʔ w ͯͳΩʔϫʔυ w ਓྗݕࡧͯͳ w ͯͳϑΥτϥΠϑ w ͯͳάϧʔϓ
w ͯͳελʔ w ͯͳಗ໊μΠΞϦʔ w ࣾͷ෦αʔϏεͳͲ
ΊͪΌͪ͘Όଟ͍
ϝΠϯͰऔΓΜͰΔλεΫ
w ݹ͘ͳͬͯ͠·ͬͨ04͔Βͷ ٫ w ඇޮͳϛυϧΣΞ͔Βͷ٫
߈ܸతʹఫୀ͠ αʔϏεͷޮΛ্͛ ے࣭ͳӡ༻Λࢦ͢
͔͠͠ྑ͍αʔϏε๊͍͑ͯΔ
ఫୀ͚ͩͰ͍ͬͨͳ͍ʂ
Ͱఫୀ.VTUҊ݅ མͱͤͳ͍
Ͱ͖Δ͚ͩϝϯόʔͷΛ ΘͣʹཁΛ͑ͨ ։ൃΛߦ͏ඞཁ͕͋Δ
ͲͷΑ͏ͳมߋΛߦ͏͔ ݕ౼͢Δʹใ͕ඞཁ
ͲΕݹ͍αʔϏεͳͷͰ σʔλͷूܭج൫͍ͬͯ ͳ͍͠ɺ͑Δͷେ
ॳख͔Βॏ͗ͯ͢ ಈ͖͕औΕͳ͍ʜ
ͳΜͱ͔ग़དྷͳ͍͔ʜ
ͳΜͱ͔ग़དྷͳ͍͔ʜ
(PPHMFͷπʔϧ͕ࢲΛٹͬ ͯ͘Ε·ͨ͠ʂ
πʔϧΛར༻͢Δ͜ͱͰ ҙࢥܾఆʹඞཁͳڥΛ खܰʹ༻ҙ͢Δ͜ͱ͕Ͱ͖Δ
ͦͦҙࢥܾఆͱʁ
ҙࢥܾఆɺਓஂମ͕ಛఆͷඪΛୡ͢Δͨ Ίʹɺ͋Δঢ়گʹ͓͍ͯෳͷସҊ͔Βɺ࠷ળ ͷղΛٻΊΑ͏ͱ͢ΔਓؒͷೝతߦҝͰ͋Δɻ ҙࢥܾఆ8JLJQFEJB z z
͕ࣗೲಘͰ͖ΔղΛݟ͚ͭΔ͜ͱ ղͱͦ͜ࢸΔಓےΛڞ༗͢Δ͜ͱ
ҙࢥܾఆσΟϨΫλʔ ͚ͩͰ݁͢Δ࡞ۀͰͳ͍
ϝϯόʔʹΘͬͯ࢝Ίͯ ҙࢥܾఆ͕ߦΘΕͨͱ͍͑Δ
ҙࢥܾఆʹඞཁͳͷ
w ༐ؾ w ใऩूɾੳ w ҙࢤୡ
ҙࢥܾఆΛ્Ήͷ
w ։ൃͷ੍ w ࣗͷࣝෆ w ΤϯδχΞͱͷใ֨ࠩ
։ൃͷ ੍
ओλεΫผʹ͍ͬͯΔ ͕֬ߴ͍ࢪࡦΛ ࠷େޮͰ࣮ΛਐΊ͍ͨ
ࢼߦࡨޡ͢Δ༨༟ͳ͠
ࣗͷࣝ ෆ
ෆ͍ͯ͠Δͷ͔ͬͯΔ ͔ͩΒͦ͜ࢼߦࡨޡ͕͍ͨ͠
ੵۃੑ͔Βൃੜࣦͨ͠ഊ ڐ༰͢Δ͠͞ΕΔ͕ ෆ҆ײ͕ᐫʹͳΔ
ΤϯδχΞͱ ͷใ֨ࠩ
ΤϯδχΞΑΓ σΟϨΫλʔ͕͍࣋ͬͯΔ ใͷํ͕ଟ͍
ಉ͡ใΛ࣋ͬͯͳ͍ͱ அཧ༝ΘΒͳ͍
ͰɺͲ͏͍͏ใΛ ϕʔεʹஅ͍ͯ͠Δͷ͔ ͑Δͷ͚ͬ͜͏େม
πʔϧͰग़དྷΔ͜ͱ w ࣗࣾΤϯδχΞͷͰͳ͘σΟϨΫλʔ ͷͰ w ແҋ୫ͱ৭ʑͳ͜ͱ͕Ͱ͖Δ
πʔϧ͕ղܾͯ͘͠ΕΔ͜ͱ w ײͷෆ҆Λղফ͠ w ࢼߦࡨޡͷνϟϯεΛ༩͑ͯ͘ΕΔ w దʹར༻͢Εɺਖ਼͘͠ใ͕औΕΔɾ ఏࣔͰ͖Δ
w ༐ؾ w ใऩूɾੳ w ҙࢤୡ
w ༐ؾ w ใऩूɾੳ w ҙࢤୡ ͜͜Λࢧ͑ͯ͘ΕΔ
ใऩूྫ
5BH.BOBHFS "OBMZUJDT w 5BH.BOBHFSͷॊೈͳใऔಘઃఆ w "OBMZUJDTͷΧελϜσΟϝϯγϣϯɺΠϕϯ τػೳʹΑΔ๛ͳղੳػೳ w మ൘ͷΈ߹Θͤ
ϖʔδͷछผ͕63-ʹදݱ͞Ε ͍ͯͳ͍͚Ͳ͚ͯूܭ͍ͨ͠
ਓྗݕࡧͷ࣭͕ɺ࣭ܗࣜͳͷ͔ Ξϯέʔτܗࣜͳͷ͔औಘ͍ͨ͠
$44ηϨΫλͷࢦఆͰ ใ͕औಘͰ͖Δ w $44ηϨΫλΛॻ͘ͱ֘ͷ%0.ͷJOOFS5FYU ΛऔಘͰ͖Δ w ଐੑ໊ࢦఆ͢ΔͱଐੑͷΛऔಘͰ͖Δ w $44͕ͪΐͬͱΘ͔Ε୭Ͱ͑Δ
w ΞΠίϯͷҧ͍Ͱϖʔδछ͕औΕΔ w ࠩҟ͕ҰఆͷܗͰදݱ͞Ε͍ͯΕ͑Δ
ෳ͋Δճ༡ಈઢͷͲͷಋઢ͕ ར༻͞Ε͍ͯΔ͔Λݟ͍ͨ
None
ಈઢ৭ʑ͋Δ
ηΫγϣϯͷऔಘ function () { var current = {{element}}.parentNode; while(current) {
if(current.hasAttribute('id')) { return current.getAttribute('id'); } else { current = current.parentNode; } } } w ΫϦοΫ͞Εͨॴ͕ͲͷྖҬͳͷ͔Λऔಘ͍ͨ͠ w ͯͳಗ໊μΠΞϦʔͩͱ্ͷ֊ʹJEଐੑ͕͍͍ͯ ΔɻҎԼͷίʔυͰऔಘͰ͖Δ w ΫϦοΫͷλΠϛϯάͰ"OBMZUJDTͷΠϕϯτʹૹ৴͢Δ
݁Ռ͜͏͍͏άϥϑ͕࡞ΕΔ
ϢʔβʔͷߘΞΫγϣϯ ूܭ͍ͨ͠
Ϣʔβʔߘͷऔಘ • TagManagerͰɺFormૹ৴Λݕ͢Δ͜ͱ͕Ͱ ͖Δ • ͜ΕͱAnalyticsͷΠϕϯτΛΈ߹ΘͤΔͱɺ ߘܥσʔλAnalyticsʹอଘͰ͖Δ • AnalyticsͷػೳͱΈ߹ΘͤΒΕΔͷͰϩάΛू ܭ͢ΔΑΓߴػೳͳ߹
w ༐ؾ w ใऩूɾੳ w ҙࢤୡ
ҙࢥୡ
ैདྷͷ
ػೳͷૂ͍ͱ ͦΕʹରԠ͢ΔࢦඪΛ ఏࣔ͢Δͷ͕େม
ࢦඪ"OBMZUJDT͚ͩͰͳ͍ ࢦඪΛ֬ೝ͢ΔͨΊͷ63-ूΛ ࡞ͬͨΓ͢Δඞཁ͕͋ͬͨ
͜Ε࡞ΔͷݟΔͷେม
"OBMZUJDT 4QSFBETIFFU 4FBSDI$POTPMF %BUB4UVEJP
None
ͯͳಗ໊μΠΞϦʔͷਓؾهࣄΞʔ ΧΠϒػೳϦϦʔε͔࣌Βɺػೳ͝ ͱͷϨϙʔτΛ࡞͢ΔΑ͏ʹͨ͠
ҙਤΛ͑Δͷָ͕ʹͳΔ͠ ͻͱͰঢ়گ͕ѲͰ͖ΔͷͰ ΤϯδχΞ֬ೝָ͕ʹͳΔ
σΟϨΫλʔ୯ಠͰͷ ݶքɾσϝϦοτ
σʔλͷऔಘํ๏ͷڞ༗࿙Ε • CSSηϨΫλIDଐੑͰใΛऔಘ͢Δ ߹ɺHTMLߏʹมߋ͕Ճ͑ΒΕΔͱσʔ λ͕औಘͰ͖ͳ͘ͳΔ ➡ ͜ͷσʔλ͕͑Δɺͱ͍͏͜ͱ͕͔ͬ ͨΒɺదͳλΠϛϯάͰΞϓϦέʔγϣ ϯʹΈࠐ͏
σʔλͷऔಘํ๏ͷڞ༗࿙Ε • AppsScriptSpreadsheetͷؔͳͲͰؤ ுͬͯॲཧͯ͠σʔλΛੜ͍ͯ͠Δ߹ɺ յΕͨ࣌ʹ෮چ͕ࠔ ➡ ͜ͷσʔλ͕͑Δɺͱ͍͏͜ͱ͕͔ͬ ͨΒɺυΩϡϝϯτΛ͢ͳͲ͠Α͏
ղܾํ๏ͷݕ౼ෆ • σʔλΛऔಘํ๏͔Βෳͷํ๏͕͋Γɺ JavaScriptॻ͚ͯ͠·͏ɻσʔλͷอଘͰෳ ͷํ๏͕͋ΓɺΈ߹Θͤͨ͘͞Μ͋ͬͯ͠ ͍ • ࣗͷແବʹ࣌ؒΛ͍ͯ͠Δ߹͋Δ ➡ JavaScriptΤϯδχΞϨϏϡʔʹग़͢ɻઃఆ
ʹෆ͕҆͋Δ߹ଞDʹͯ͠ΈΔɻ࡞ۀ࣌ؒ Λ1-2࣌ؒʹ۠Δ
ղܾํ๏ͷݕ౼ෆ ➡ ઃఆ͕ҟৗʹෳࡶʹͳΔ߹ɺΤϯδ χΞʹ૬ஊ͢Δɻͦͦͬͱྑ͍ղ ܾํ๏͕ݟ͔ͭΔ߹͋Δ
%ʹΑΔใऔಘ ͋͘·ͰҰ࣌తͳͷͳͷͰ σʔλ͕͑Δͱ͔ͬͨΒ ΤϯδχΞͱ૬ஊͯ͠ ༷Λ֬ఆͤ͞·͠ΐ͏
·ͱΊ
(PPHMFͷπʔϧΛ͍ %͚ͩͰίετ ແྉ ʹ ҙࢥܾఆΛߦ͏ͨΊͷڥΛ ͑ΒΕ·͢
πʔϧΛ ղܾ͢ΔͨΊʹඞཁͳ ෛ୲ΛݮΒͯ͘͠ΕΔ
͋͘·Ͱղܾͷ ͍ͪखஈͰ͋Γ πʔϧΛ͏͜ͱ͕ తͰͳ͍
ใղੳίϛϡχέʔγϣ ϯʹϑΥʔΧε͢Δ࣌ؒΛ ૿͠ɺҙࢥܾఆΛՃ͞ ͤɺαʔϏεͷະདྷ࡞Γग़ ͍͖ͯ͠·͠ΐ͏
͓ΘΓ