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
リファクタリングとtsort
Search
ainame
October 16, 2013
Programming
1.8k
1
Share
リファクタリングとtsort
`ib` gemをリファクタリングして、機能追加した時の話
ainame
October 16, 2013
More Decks by ainame
See All by ainame
Swift 5.7で変わる正規表現を試してみよう
ainame
4
7.6k
iOSDC 2021 - App Store用スクリーンショットの自動生成をアラビア語対応してSwiftUIで実装してみた
ainame
0
5.9k
DNN/GPU with Ruby #rubykaigi
ainame
2
3.3k
Server Side Swift実用性評価 2017 #iosdc #b
ainame
3
4.5k
Process tons of jobs with Swift
ainame
0
1.9k
Swift on the ObjC #shibuyaswift
ainame
4
910
家族アルバムみてね 開発風景 #realm_jp
ainame
4
4.2k
iOSで無限バックグラウンドアップロード(に挑戦してみた話)
ainame
2
5.2k
RubyMotionについて #mixiwwdc
ainame
2
450
Other Decks in Programming
See All in Programming
Making the RBS Parser Faster
soutaro
0
680
ついに来た!本格的なマルチクラウド時代の Google Cloud
maroon1st
0
400
AIを導入する前にやるべきこと
negima
2
340
【26新卒研修資料】TDD実装演習
dip_tech
PRO
0
180
Are We Really Coding 10× Faster with AI?
kohzas
0
140
継続的な負荷検証を目指して
pyama86
3
1k
〜バイブコーディングを超えて〜 チームで実験し続けたAI駆動開発
tigertora7571
0
200
空間オーディオの活用
objectiveaudio
0
140
GoogleCloudとterraform完全に理解した
terisuke
1
190
AgentCore Optimizationを始めよう!
licux
3
230
UaaL×Androidアプリのメモリ計測 — Memory Profilerの先へ
rio432
0
140
属人化しないコード品質の作り方_2026.04.07.pdf
muraaano
0
330
Featured
See All Featured
The Curse of the Amulet
leimatthew05
1
12k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
170
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.3k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
1
370
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
540
Abbi's Birthday
coloredviolet
2
7.5k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
210
The Cost Of JavaScript in 2023
addyosmani
55
9.9k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
690
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
How to Think Like a Performance Engineer
csswizardry
28
2.6k
The untapped power of vector embeddings
frankvandijk
2
1.7k
Transcript
ϦϑΝΫλϦϯάͱtsort 2013-10-16 / Shibuya.rb @ainame
ࣗݾհ @ainame / Satoshi Namai גࣜձࣾϛΫγΟ εϚϗΞϓϦΤϯδχΞʹͳΔ༧ఆͩͬͨͷͰ͢ ͕ɺ૬มΘΒͣPerlॻ͍ͯ·͢ ࠷ۙɺRubyMotionͬͯΔ ͘͘ձ
/ RubyMotion Tokyo meetups
ࠓͷ 1.ϦϑΝΫλ1 - ςϯϓϨʔτΤϯδϯಋೖ 2.ϦϑΝΫλ2 - Hash & ArrayΛΦϒδΣΫτԽ 3.tsortಋೖͰػೳվળ
gemΛ͍ͬͨ͡
None
None
ibʹ͍ͭͯ RubyMotionͰInterfaceBuilderΛ͏ͨΊͷgem rake ib:open app/*.rbΛparseͯ͠Stubs.hΛు͘ Interface Builder্ͰOutletΛUIͱ࿈ܞͰ͖Δ https://github.com/yury/ib
ib͕Ruby͔Βੜ
super class͕ઌʹఆٛ ͞Εͯͳ͍ͱμϝ Τϥʔ͕ग़Δͷ ݏͩͬͨ
Կͱͳ͍ͨ͘͠ͳʔ ͱࢥͬͯιʔείʔυಡΜͰΈͨΒ खΛೖΕΔͷ͕ਏͦ͏ͩͬͨͷͰ ϦϑΝΫλϦϯάͯ͠Έͨ
templateΤϯδϯͷಋೖ Stubs.hΛग़ྗ͢ΔͨΊʹίʔυͷதʹͻͳܗίʔ υ͕ຒΊࠐ·Ε͍ͯͨ 1ຕϑΝΠϧΛςϯϓϨʔτϑΝΠϧɺςϯϓϨʔ τͷhelperɺϑΝΠϧੜॲཧͷ3ͭʹ `tilt` gemཱ͕ͭ SinatraͰΘΕͯΔ
Before
writeϝιουʹ ॲཧ͕ϕλॻ͖ ඞͣIOॲཧ͕ൃੜͯ͠ ςετͮ͠Β͍
ϔϧύʔͷ தͰϔϧύʔ͕ݺΕͯ ॲཧ͕͍ͮΒ͍ ྻΞΫηε ͕Ή͍ͣ
After
tiltͰrender͢Δॲཧ RenderingHelperΫϥεʹ viewͷϔϧύʔΛ࣮ ϔομͱ ࣮ϑΝΠϧΛ ϑΝΠϧʹॻ͖ग़͠
͜ͷޙ հ͢ΔϦϑΝΫλϦϯάͰ ϔϧύʔγϯϓϧʹ
Hash & ArrayΛΦϒδΣΫτԽ HashͱArrayͰԿͰσʔλΛදݱ͍ͯ͘͠ͷ͏Μ͟Γ͢Δ data[‘a.rb’][0][:class][0][0] ????????? ڞಉ։ൃ͢Δ࣌ʹۤ͠Ή σʔλΛϥοϓ͢ΔΦϒδΣΫτΛ࣮ def [](key);
@data[key] endͰޓΛ࣋ͨͤΔ ΞΫηαʔΛ༻ҙͯ͠ෳࡶͳΞΫηεΛղܾ
Before
None
After
None
ߏମͰ͞Βʹ ߏԽ ϔϧύʔ ݩσʔλʹΞΫηεग़དྷΔ
ݩͷinfo[:class][0][0] ΑΓ͔Γ͍͢
ґଘؔղܾ Կߟ͑ͣʹϔομʔϑΝΠϧʹॻ͖ͩ͢ͱ XCode্ͰΤϥʔˍwarn͕ग़Δ ্͔Βॱʹ͖ͪΜͱΫϥεఆٛ͞Εͯͳ͍ͱμϝ ґଘؔͷղܾ͕ඞཁʂʂʂʂʂʂʂ tsort͏ͱ͕؆୯ʹղ͚Δʂ
super class͕ઌʹఆٛ ͞Εͯͳ͍ͱμϝ
tsort tsortͱʁ Rubyͷඪ४ϥΠϒϥϦ τϙϩδΧϧιʔτͷRubyͷ࣮ ґଘؔͷղܾʹ͑Δ rubygems, bundlerͱ͔ʹΘΕͯΔ
τϙϩδΧϧιʔτ ༗ແด࿏άϥϑ άϥϑͷؒͷґଘؔΛݩͱʹιʔτ͢Δ ӈͷਤͷ߹ B, A, D, C, Eͷॱ
IB::DependencyResolver ґଘؔղܾ༻ͷΫϥεΛ࣮ parse݁ՌΛड͚औΔ ༗ແด࿏άϥϑʹม tsortͰฒͼସ͑ ฒͼସ͑݁ՌΛฦ͢
Τϥʔ 0 !!!
·ͱΊ طଘgemʹػೳՃ͢Δ࣌ʹ͙͢ʹػೳՃ͕ແ ཧͦ͏ͩͬͨΒগͮͭ͠ϦϑΝΫλϦϯά ύʔϑΣΫτRubyʹࡌͬͯͳ͍͚Ͳɺ tsortͱ͔tiltͱ͔ศརͳͷͰϢʔςΟϦςΟܥͷ ϥΠϒϥϦ࡞Δ͍࣌·͠ΐ͏ʂʂʂ
RubyMotion meetup •@ainameͱ@HIROCASTER͕ओ࠵ •ຖ݄ͷୈೋՐ༵ʹ։࠵Ͱ͘͘ձελΠϧ •RubyMotion։ൃऀͷ@watson1978͞ΜࢀՃ •ձϛΫγΟͷίϥϘϧʔϜ •࣍ճ201311݄5(Ր)Ͱ͢