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
1.8k
リファクタリングとtsort
`ib` gemをリファクタリングして、機能追加した時の話
ainame
October 16, 2013
Tweet
Share
More Decks by ainame
See All by ainame
Swift 5.7で変わる正規表現を試してみよう
ainame
4
7.1k
iOSDC 2021 - App Store用スクリーンショットの自動生成をアラビア語対応してSwiftUIで実装してみた
ainame
0
5.7k
DNN/GPU with Ruby #rubykaigi
ainame
2
3.2k
Server Side Swift実用性評価 2017 #iosdc #b
ainame
3
4.4k
Process tons of jobs with Swift
ainame
0
1.8k
Swift on the ObjC #shibuyaswift
ainame
4
870
家族アルバムみてね 開発風景 #realm_jp
ainame
4
4.1k
iOSで無限バックグラウンドアップロード(に挑戦してみた話)
ainame
2
5.1k
RubyMotionについて #mixiwwdc
ainame
2
420
Other Decks in Programming
See All in Programming
SidekiqでAIに商品説明を生成させてみた
akinko_0915
0
120
Blazing Fast UI Development with Compose Hot Reload (droidcon London 2025)
zsmb
0
460
AI駆動開発カンファレンスAutumn2025 _AI駆動開発にはAI駆動品質保証
autifyhq
0
120
例外処理を理解して、設計段階からエラーを見つけやすく、起こりにくく
kajitack
2
130
Bakuraku E2E Scenario Test System Architecture #bakuraku_qa_study
teyamagu
PRO
0
240
CSC509 Lecture 11
javiergs
PRO
0
290
マンガアプリViewerの大画面対応を考える
kk__777
0
450
GitHub Copilotを使いこなせ!/mastering_github_copilot!
kotakageyama
2
760
組織もソフトウェアも難しく考えない、もっとシンプルな考え方で設計する #phpconfuk
o0h
PRO
2
270
Vue 3.6 時代のリアクティビティ最前線 〜Vapor/alien-signals の実践とパフォーマンス最適化〜
hiranuma
2
370
pnpm に provenance のダウングレード を検出する PR を出してみた
ryo_manba
1
180
ビルドプロセスをデバッグしよう!
yt8492
0
240
Featured
See All Featured
How STYLIGHT went responsive
nonsquared
100
5.9k
We Have a Design System, Now What?
morganepeng
54
7.9k
Site-Speed That Sticks
csswizardry
13
940
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
34
2.3k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
2
270
Rebuilding a faster, lazier Slack
samanthasiow
84
9.2k
Making the Leap to Tech Lead
cromwellryan
135
9.6k
The World Runs on Bad Software
bkeepers
PRO
72
11k
The Power of CSS Pseudo Elements
geoffreycrofte
80
6k
Typedesign – Prime Four
hannesfritz
42
2.9k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
13k
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(Ր)Ͱ͢