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
Satoshi Tagomori
July 18, 2024
Technology
1
74
ソフトウェアエンジニアの入力と出力
Classmethod ODYSSEY Day 7
Satoshi Tagomori
July 18, 2024
Tweet
Share
More Decks by Satoshi Tagomori
See All by Satoshi Tagomori
さくらのクラウドにおけるCloudNativeのいまとこれから
tagomoris
4
660
State of Namespace
tagomoris
5
5.3k
クラウドサービス事業者におけるOSS
tagomoris
4
1.8k
パブリッククラウドのプロダクトマネジメントとアーキテクト
tagomoris
4
1.2k
2000年てづくりキーボードの旅
tagomoris
1
230
Namespace, Now and Then
tagomoris
0
340
Namespace on read
tagomoris
2
540
RubyKaigi Effect 2023, and ...
tagomoris
1
1.1k
Namespace, What and Why
tagomoris
9
19k
Other Decks in Technology
See All in Technology
declaration mergingの威力:ライブラリアップデート時の書き換え作業を90%短縮するテクニック
yutake27
2
220
VPC Reachability AnalyzerAnalyzer~実務での使いどころ
masakiokuda
1
290
Oracle Database オプティマイザ・ヒントの活用
oracle4engineer
PRO
1
110
AI駆動時代の新規事業の作り方
ryohysk
2
140
SwiftUIとMetalで簡単に作るレアカード風UI
stoticdev
1
120
トップエンジニアが語るDX最前線 / 20250517 Kazutoshi Ono & Ken Yamazaki
shift_evolve
0
380
GigaViewerにおけるMackerel APM導入の裏側
7474
0
100
熱々🔥のUDN🍜を喰らえ❗マルチテナントもVM統合も思いのまま❗新機能で切り拓くk8sネットワークの未来
tsukaman
0
180
初参加のハノーバーメッセで感じた世界最大級イベントの熱気とAI活用の未来
hamadakoji
0
210
Postman AI エージェントビルダー最新情報
nagix
0
110
トイルを撲滅!インフラ領域での生成AI活用のススメ
shuya
0
320
環境変数ライブラリ選手権
sgash708
0
100
Featured
See All Featured
How to train your dragon (web standard)
notwaldorf
91
6k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
48
5.4k
Speed Design
sergeychernyshev
30
960
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.3k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
19
1.2k
A designer walks into a library…
pauljervisheath
205
24k
Statistics for Hackers
jakevdp
799
220k
Side Projects
sachag
453
42k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
14
870
Documentation Writing (for coders)
carmenintech
71
4.8k
Embracing the Ebb and Flow
colly
85
4.7k
Transcript
ιϑτΣΞΤϯδχΞͷ ೖྗͱग़ྗ Satoshi Tagomori 2024/07/18 Classmethod Odyssey Day 7
@tagomoris Satoshi Tagomori (ా ૱) ιϑτΣΞΤϯδχΞ OSS։ൃऀ Maintainer/Founder: OSS: Fluentd,
MessagePack, Norikra, Woothee, … Event: ISUCON Service: Pathtraq
ུྺ tagomoris • 2006ʙ 2010 SIerͰOSS/ϓϩϓϥΠΤλϦΛΘͣITΠϯϑϥɺԾԽɺDBɺετϨʔδٕज़ • 2010ɿ iPadΞϓϦ։ൃɺAppStoreͰެ։(طʹެ։ఀࢭࡁ) •
2010ʙ2015 ϥΠϒυΞ(ͷͪLINE)ͰITΠϯϑϥɺσʔλੳج൫ɺISUCON։࢝(2011) • 2015ʙ2021 Treasure DataͰσʔλࢄॲཧج൫ɺFluentdϑϧλΠϜ։ൃ(2016ʙ2017) • 2021ʙ2024ɿ ݸਓࣄۀओͱٕͯ͠ज़ސɺαʔϏε։ൃɺॻ੶ࣥචɺOSS։ൃ
ུྺ tagomorisɿ ITΠϯϑϥઐ? σʔλੳج൫ઐ? • 2006ʙ 2010 SIerͰOSS/ϓϩϓϥΠΤλϦΛΘͣITΠϯϑϥɺԾԽɺDBɺετϨʔδٕज़ • 2010ɿ
iPadΞϓϦ։ൃɺAppStoreͰެ։(طʹެ։ఀࢭࡁ) • 2010ʙ2015 ϥΠϒυΞ(ͷͪLINE)ͰITΠϯϑϥɺσʔλੳج൫ɺISUCON։࢝(2011) • 2015ʙ2021 Treasure DataͰσʔλࢄॲཧج൫ɺFluentdϑϧλΠϜ։ൃ(2016ʙ2017) • 2021ʙ2024ɿ ݸਓࣄۀओͱٕͯ͠ज़ސɺαʔϏε։ൃɺॻ੶ࣥචɺOSS։ൃ
ೖྗͱग़ྗ ιϑτΣΞΤϯδχΞʹͱͬͯͷೖྗͱग़ྗ
ೖྗͱग़ྗ Inputs and Outputs ओମ ೖྗ ग़ྗ ϓϩάϥϜ σʔλ σʔλ
ϓϩάϥϚʔ ػೳཁ݅ ಈ࡞ཁ݅ ༷ ϓϩάϥϜίʔυ ιϑτΣΞΤϯδχΞ ? ? ਓؒ ঢ়گ ཉٻ ࣝɾܦݧ Ռ ۚમ ࣝɾܦݧ
ೖྗͱग़ྗ Inputs and Outputs ओମ ೖྗ ग़ྗ ϓϩάϥϜ σʔλ σʔλ
ϓϩάϥϚʔ ػೳཁ݅ ಈ࡞ཁ݅ ༷ ϓϩάϥϜίʔυ ιϑτΣΞΤϯδχΞ ? ? ਓؒ ঢ়گ ཉٻ ࣝɾܦݧ Ռ ۚમ ࣝɾܦݧ
ೖྗͱग़ྗ ͳͥͦΜͳͷʹ͢Δͷ? • γεςϜͷ;Δ·͍ΛݟΔ͜ͱϓϩάϥϜͰ͍͠ • ೖྗσʔλͱग़ྗσʔλΛݟͯσόοά • ෦ʹखΛೖΕͯprintσόοάprobeɺtracingͳͲͳͲ • Ͱώτ(ιϑτΣΞΤϯδχΞ)ͷ;Δ·͍Ͳ͏ͬͯݟΔ?
• ෦ʹखΛೖΕΔ • ೖྗͱग़ྗΛݟΔ
ιϑτΣΞΤϯδχΞ Engineer working on Software • ఆٛਓʹΑ͍ͬͯΖ͍Ζ • tagomorisͷࢹɿ ʮιϑτΣΞγεςϜΛத৺ʹΤϯδχΞϦϯάΛߦ͏ਓʯ
• ΤϯδχΞϦϯάɿ ։ൃ(ϓϩάϥϛϯά)ɺ࣮ੈքͷద༻ɺܧଓతͳػೳͱޮͷվળ ར༻ͷଅਐɺվળͷͨΊͷใऩूͱੳɺจॻ࡞ͱߋ৽ ։ൃɾվળܭըɺνʔϜ࡞Γɺใɺ࠾༻ɺ……
ಈػ ͳͥΤϯδχΞϦϯάΛߦ͏ͷ͔? ͳͥιϑτΣΞΤϯδχΞϦϯάΛબΜͩͷ͔?
ಈػ Motivation • ಈػೖྗͷ͜ͱɺग़ྗͷ͜ͱ͋Δ • ग़ྗ͕ಈػͷྫ • ۚમɺརศੑɺ໊༪ɺࣝ(ܦݧ) • ೖྗ͕ಈػͷྫ
• ࣝ(ح৺)
ಈػ Motivation • ಈػೖྗͷ͜ͱɺग़ྗͷ͜ͱ͋Δ • ग़ྗ͕ಈػͷྫ • ۚમɺརศੑɺ໊༪ɺࣝ(ܦݧ) • ೖྗ͕ಈػͷྫ
• ࣝ(ح৺)
ಈػ Motivation • ಈػೖྗͷ͜ͱɺग़ྗͷ͜ͱ͋Δ • ग़ྗ͕ಈػͷྫ • ۚમɺརศੑɺ໊༪ɺࣝ(ܦݧ) • ೖྗ͕ಈػͷྫ
• ࣝ(ح৺) ָ͠Έ ָ͠Έ
ࣗΛΔ ͳΜͱͳ͓ۚ͘ͷͨΊʹੜ͖Δɿ͢Β͍͠ ͕ ͏ͪΐͬͱ͚ͩਓੜʹϓϥεͷԿ͔͕͍͍͋ͬͯ
tagomoris: 2021 ʙ 2024 ओʹͬͨ͜ͱ • (ٕज़ސ 2021ʙ ࣾ) •
ॻ੶ࣥච 2021ʙ2022 • αʔϏε։ൃ 2022ʙ2023 • OSS։ൃ 2023ʙ2024
࣮ྫ1 ٕज़ॻग़൛
౷߹ϩάج൫ͷͨΊͷσʔλऩूπʔϧ • ٕज़ධࣾ, 2022/10/08ൃച A5ʗ544ϖʔδ https://gihyo.jp/book/2022/978-4-297-13109-8 Fluentd࣮ફೖ
࣮ྫ1: ٕज़ॻग़൛ Fluentd࣮ફೖͷࣥචɾग़൛ • ݩ2017͘Β͍͔Βͷاըͱݪߘ • ϑϧλΠϜͰಇ͍͍ͯͨͱ͖ʹͱͯͤ͞ΒΕͳ͔ͬͨ • ʮ͜ͷػձʹઈରʹग़ͯ͠ऴΘΓʹ͍ͨ͠ʯ •
୯ஶͱͯ͠ͷࣥචܦݧ • ࡶࢽهࣄଟ͘ܦݧ͋Γ • ڞஶͰͷ୯ߦຊࣥචͰϙγϟͬͨܦݧ͕͋ͬͯͪΐͬͱτϥϚ
࣮ྫ1: ٕज़ॻग़൛ Fluentd࣮ફೖͷࣥචɾग़൛ • ೖྗ • Fluentdʹؔ͢Δݩʑͷࣝͱܦݧɺ࠷৽ͷFluentdʹؔ͢Δߋ৽ใ • ग़ྗ •
࣮ͱ໊༪(୯ஶ) • ܦݧɿٕज़ॻͷॻ͖͔ͨɺٕज़ใͷจॻԽͷํ๏
࣮ྫ2 ݸਓαʔϏεͷ։ൃɾެ։
https://pathtraq.tagomor.is/
࣮ྫ2: ݸਓαʔϏεͷ։ൃɾެ։ Pathtraq • ࣗͷҐஔใΛ24x365ͰอଘɾݕࡧͰ͖ΔiPhoneΞϓϦ • ͕͍ࣗͭͲ͜ʹ͍͔ͨɺͲ͜ʹ͍͍͔ͭͨΛௐ͍ͨ • νΣοΫΠϯػೳ •
ͯ͢ΛࣗͰ࡞Δ • αʔόαΠυ͔ΒΫϥΠΞϯταΠυ·Ͱɺݱߦٕज़ͻͱηοτͷϦαʔν • ։ൃɺUI/UXσβΠϯɺར༻نɺAppStoreެ։ͳͲͷύΠϓϥΠϯશମ
࣮ྫ2: ݸਓαʔϏεͷ։ൃɾެ։ Pathtraq • ೖྗ • ReactɺSwiftUIͳͲͷ֤ϥΠϒϥϦɾϑϨʔϜϫʔΫ • FigmaʹΑΔUI/UXσβΠϯϓϩηε •
֤ࠃɾํ͚ར༻نɾϓϥΠόγʔϙϦγʔ࡞ϊϋ • ग़ྗ • ࣗͷ͍͍ͨαʔϏε
࣮ྫ3 OSS(Rubyͷύον)։ൃ
https://bugs.ruby-lang.org/issues/19744 https://rubykaigi.org/2024/presentations/tagomoris.html
Collision: 2 versions of 1 library cause errors Ruby Process
Library Code DB::Client (v3) 😵 Application Code App::Func User Library Code DB::Client (v2) Library Code ActiveSupport (v7) Before Namespace: Global Only
Ruby Process Namespace Hide changes from apps/libs in a namespace
to other spaces Namespace Application Code App::Func User Library Code DB::Client (v2) Library Code ActiveSupport (v7) Library Code DB::Client (v3) 😀
࣮ྫ3: OSS։ൃ Rubyʹ͓͚ΔNamespace։ൃ • Rubyʹ͓͚ΔίʔυִػೳͷఏҊ • ଞͷݴޠͰ͍͏ύοέʔδػೳతͳͷ(ͷϕʔεͱͳΔػೳ) • ࠐΈΫϥεʹର͢ΔϞϯΩʔύονNamespaceʹӨڹΛݶఆ •
ݱࡏఏҊɾ։ൃத • ͍ͪݸਓRubyϢʔβͱͯ͠ఏҊ͠ɺ։ൃ͍ͯ͠Δ • ͕ॆʹΑ͘ͳΕRubyʹೖΔ͔?
࣮ྫ3: OSS։ൃ Rubyʹ͓͚ΔNamespace։ൃ • ೖྗ • Rubyͷݴޠ༷ɺRubyVMͷ෦࣮ • ݴޠॲཧܥͷ࠷దԽख๏ •
Cݴޠ • ग़ྗ • ͕ࣗཉ͍͠ػೳ͕ೖͬͨRuby (ະୡ)
ࣗΛΔ ͳΜͱͳ͓ۚ͘ͷͨΊʹੜ͖Δɿ͢Β͍͠ ͕ ͏ͪΐͬͱ͚ͩਓੜʹϓϥεͷԿ͔͕͍͍͋ͬͯ
None
ࣗΛΔ ԿͷͨΊʹ? • ಈػʮଞͷਓʹͱͬͯʯͳΜͰ͍͍ • ଞਓग़ྗ͚ͩΛݟΔ • ಈػίϯτϩʔϧͰ͖Δ • ೖྗͱग़ྗΛదʹઃఆ͢Δ
• ࣋ଓՄೳͳಈػͱɺ࣋ଓෆՄೳͳಈػ͕͋Δ • ಈػΛదʹ࣋ͯΕɺָ͍͠։ൃΛܧଓతʹΕΔ
Linus Torvalds “Just For Fun” Thank you for listening!