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.5k
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
900
家族アルバムみてね 開発風景 #realm_jp
ainame
4
4.1k
iOSで無限バックグラウンドアップロード(に挑戦してみた話)
ainame
2
5.2k
RubyMotionについて #mixiwwdc
ainame
2
440
Other Decks in Programming
See All in Programming
Claude Code Skill入門
mayahoney
0
450
ポーリング処理廃止によるイベント駆動アーキテクチャへの移行
seitarof
3
1.3k
我々はなぜ「層」を分けるのか〜「関心の分離」と「抽象化」で手に入れる変更に強いシンプルな設計〜 #phperkaigi / PHPerKaigi 2026
shogogg
2
720
安いハードウェアでVulkan
fadis
1
850
Laravel Nightwatchの裏側 - Laravel公式Observabilityツールを支える設計と実装
avosalmon
1
270
Symfony + NelmioApiDocBundle を使った スキーマ駆動開発 / Schema Driven Development with NelmioApiDocBundle
okashoi
0
250
おれのAgentic Coding 2026/03
tsukasagr
1
120
S3ストレージクラスの「見える」「ある」「使える」は全部違う ─ 体験から見た、仕様の深淵を覗く
ya_ma23
0
1.2k
AI Assistants for YourAngular Solutions @Angular Graz, March 2026
manfredsteyer
PRO
0
130
飯MCP
yusukebe
0
440
Everything Claude Code OSS詳細 — 5層構造の中身と導入方法
targe
0
160
今こそ押さえておきたい アマゾンウェブサービス(AWS)の データベースの基礎 おもクラ #6版
satoshi256kbyte
1
210
Featured
See All Featured
The Language of Interfaces
destraynor
162
26k
Believing is Seeing
oripsolob
1
100
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
120
Code Reviewing Like a Champion
maltzj
528
40k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
1
170
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Being A Developer After 40
akosma
91
590k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.5k
Amusing Abliteration
ianozsvald
0
150
Abbi's Birthday
coloredviolet
2
6.1k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.4k
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(Ր)Ͱ͢