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
React Native / Alternative な開発ツールの採択について
Search
Naoya Ito
June 09, 2015
Technology
23
9.9k
React Native / Alternative な開発ツールの採択について
#nikkeidenshiban_Sansan の勉強会での発表資料です
Naoya Ito
June 09, 2015
Tweet
Share
More Decks by Naoya Ito
See All by Naoya Ito
Functional TypeScript
naoya
15
5.8k
TypeScript 関数型スタイルでバックエンド開発のリアル
naoya
66
30k
シェルの履歴とイクンリメンタル検索を使う
naoya
8
3.1k
20230227-engineer-type-talk.pdf
naoya
89
72k
関数型プログラミングと型システムのメンタルモデル
naoya
62
96k
TypeScript による GraphQL バックエンド開発
naoya
28
32k
フロントエンドのパラダイムを参考にバックエンド開発を再考する / TypeScript による GraphQL バックエンド開発
naoya
67
24k
「問題から目を背けず取り組む」 一休の開発チームが6年間で学んだこと
naoya
144
59k
一休の現在と、ここまでの道のり
naoya
90
41k
Other Decks in Technology
See All in Technology
Qiita Organizationを導入したら、アウトプッターが爆増して会社がちょっと有名になった件
minorun365
PRO
1
410
結果的にこうなった。から見える メカニズムのようなもの。
recruitengineers
PRO
1
150
AIxIoTビジネス共創ラボ紹介_20250311.pdf
iotcomjpadmin
0
110
「頑張る」を「楽しむ」に変換する技術
tomoyakitaura
11
1.9k
AI_Agent_の作り方_近藤憲児
kenjikondobai
19
4.6k
アジリティを高めるテストマネジメント #QiitaQualityForward
makky_tyuyan
1
770
How to benefit from the latest Keycloak features
ahus1
0
110
社内でKaggle部を作って初学者育成した話
daikon99
1
220
プルリクエストレビューを終わらせるためのチーム体制 / The Team for Completing Pull Request Reviews
nekonenene
4
2.1k
“常に進化する”開発現場へ! SHIFTが語るアジャイルQAの未来/20250306 Yuma Murase
shift_evolve
0
180
エンジニアのキャリアパスと、 その中で自分が大切にしていること
noteinc
4
3.3k
実践的なバグバウンティ入門 (2025年版)
scgajge12
0
280
Featured
See All Featured
The Cost Of JavaScript in 2023
addyosmani
47
7.5k
Side Projects
sachag
452
42k
Making Projects Easy
brettharned
116
6.1k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.3k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
The Invisible Side of Design
smashingmag
299
50k
Designing for humans not robots
tammielis
250
25k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
GitHub's CSS Performance
jonrohan
1030
460k
Rails Girls Zürich Keynote
gr2m
94
13k
How to train your dragon (web standard)
notwaldorf
91
5.9k
Automating Front-end Workflow
addyosmani
1369
200k
Transcript
3FBDU/BUJWF "MUFSOBUJWFͳ։ൃπʔϧͷ࠾ ʹ͍ͭͯ /BPZB*UP ܦిࢠ൛Y4BOTBOJ04"OESPJEΞϓϦ։ൃऀษڧձ7PM
3FBDU/BUJWF
3FBDU/BUJWF • +BWB4DSJQU – ϥϯλΠϜͰ+4㱺/BUJWF6*ΛϒϦοδ – "QQMJDBUJPOTSVOOFBSGVMMTQFFE • 3FBDUͱಉ͡࡞๏ – -FBSO0ODF 8SJUF"OZXIFSF •
044
var Playground = React.createClass({ getInitialState: function() {
return { text: "" }; }, _onChangeText: function(text) { this.setState({ text: text }); }, render: function() { return ( <View style={styles.container}> <Text style={styles.welcome}> {this.state.text} </Text> <TextInput style={styles.textInput} onChangeText={this._onChangeText} /> </View> ); } }); setState() JSX
ΤσΟλ͖ͳͷ Ͱ $NE 3ͰϦϩʔυ ίϯιʔϧ Ϗϧυ9DPEF
Na#ve App (Cocoa Touch, UIKit ...) React Na#ve Library JavaScript
Engine (JavaSc#ptCore) React JS React Na#ve JS Library Your Applica#on hDp://www.slideshare.net/ModusJesus/intro-‐to-‐react-‐na#ve +4ΛϥϯλΠϜͰಈ͔͠ ωΠςΟϒίʔυΛϒ Ϧοδ
• ݟͨ/BUJWF – Ͱ͖͕͋Γ·ͣ·ͣ/BUJWFʹḮ৭ͳ͍ͷʹ • ʮ/BUJWFʹ͍ۙʯ – +4Λஞ࣮࣍ߦͯ͠ΔͷͰ/BUJWFͱಉ͡ʹͳ Βͳ͍ –
ࡢࠓͷͷੑೳ্͋ΓؾʹͳΒͳ͍Ϩϕϧ • ։ൃͷײ৮ – 0CKFDUJWF$4XJGUͷͦΕͱେ͖͘ҟͳΔ ωΠςΟϒͬΆ͘ͳ͍
3FBDUͷύϥμΠϜ State <View> <Text>{this.state.text}</Text> <TextInput onChangeText={...}
/> <View> ... </View> </View> setState() • ΞϓϦέʔγϣϯͷঢ়ଶΛ4UBUFͰཧ • 7JFXίϯϙʔωϯτࢦͰࢠπϦʔ • 4UBUF͕มߋ͞ΕΔͱ7JFXͷඞཁՕॴ͕ࣗಈߋ৽
3FBDU/BUJWF • 3FBDU – ୯७Ͱֶशίετͷ͍ΞʔΩςΫνϟ – ظతͳอकੑ ่Εʹ͍͘ઃܭ Λ୲อ • ΞϓϦέʔγϣϯ7JFXͷNVUBCJMJUZ ঢ়ଶ
ΛͲ͏ѻ͏͖͔ʹରͯ͠ղΛఏࣔ • 3FBDU/BUJWF – 3FBDUͱಉ͡ΓํͰΞϓϦΛ࡞ΕΔ • 㱺্هϝϦοτΛڗडͰ͖Δ
࣮ࡍͷ༻ײ • 8FCͷ3FBDUΛ৮ͬͨ͜ͱ͕͋Ε͙͢ॻ͚Δ – 3FBDUͷઃܭ࡞๏'MVY·Ͱ͙࣮͢ફͰ͖Δ – -FBSO0ODFҏୡ͡Όͳ͍͔ • ։ൃͷײ৮ͱͯ͠ɺ8FCͬΆ͍ –
/PEFKT OQNΤίγεςϜ – $NE3ͰϦϩʔυͱ͔ – 'MFYCPYBOE4UZMJOH • ϒϦοδͳͷͰ6*ʹଟগบ͕͋Δ – 3FBDU͕༻ҙͨ͠ίϯϙʔωϯτ
ͱ͜ΖͰŋŋŋ ͜ͷΞʔΩςΫνϟͲͬ ͔Ͱݟͨ͜ͱͳ͍Ͱ͔͢
8SJUF0ODF "EBQU"OZXIFSF 5JUBOJVN4%, 5JUBOJVN.PCJMFͱݺ Ε͍ͯͨ
hDps://speakerdeck.com/masuidrive/yuan-‐mou-‐evuanzierisutoga-‐jian-‐rureactna#ve
None
3FBDU/BUJWFͷτϨʔυΦϑ • ྨࣅͷΞʔΩςΫνϟ๊͕͑Δͷͱಉ༷ͷ ՝ – ͬͺΓͳʔ • +4ͰϒϦοδ͍ͯ͠Δ͜ͱʹΑΔܽ વ͋Δ
– ωΠςΟϒΛݺͳ͍ – '8PO'8ͷδϨϯϚ
ϦϦʔεલ͍͢͝Λ૾ ͚ͯͨ͠Ͳɺ࣮ࡍग़ͨͷ ʮ͏Μɺ·͋ݱ࣮తʹͦ͏ ͩΑͶʯతͳ *5ۀք͋Δ͋Δ
'BDFCPPLʹෳͷ'8 • 3FBDU/BUJWF – 'BDFCPPL(SPVQ • $PNQPOFOU,JU – /FXT'FFEFUD –
0CKFDUJWF$ – 3FBDU*OTQJSFE • "TZOD%JTQMBZ,JU – 'BDFCPPLQBQFS – GQT6*69 3FCVJMEGNFQ ࢀর ʮ3FBDU/BUJWF͕Ϟ όΠϧ։ൃͷܾఆ൛ʯ ͱ͍͏ελϯεͰͳ ͦ͞͏
"MUFSOBUJWFͳ։ൃπʔϧ • $PSEPWB چ1IPOF(BQ – 8FCΞϓϦΛωΠςΟϒͰแΉ – ͍ΘΏΔʮϋΠϒϦουΞϓϦʯ •
5JUBOJVN.PCJMF • 3FBDU/BUJWF • 9BNBSJO – /&5ςΫϊϩδʔͰ/BUJWF"QQ • $ BTZODBXBJU -*/2 .77. • ͋·Γৄ͘͠ͳ͍Ͱ͢ • 3VCZ.PUJPO – 3VCZˠ--7.ͰωΠςΟϒʹ – ϒϦοδϥούͰͳ͍ϐϡΞωΠςΟϒ – $PDPB1PETͳͲແཧͳ͑͘Δ ΄͔ʹ͍Ζ͍Ζ ͋Δ
ࡢࠓͷঢ়گ • ࠒͷύϑΥʔϚϯεతͳ͋ ·ΓݟΒΕͳ͍ – ੑೳ্͕ͨ͠ – ࣮͕ख़͖ͯͨ͠ • ϑϨʔϜϫʔΫPOϑϨʔϜϫʔΫʹΔ ͔൱͔
έʔεελσΟ • 'BCMJDࣾ͞Μͷ'SJM – ঁੑ͚ϑϦϚΞϓϦ • ۀظʹ։ൃॏࢹͰ 5JUBOJVN – ωΠςΟϒͷܦݧ͕͋ͬͨػಈੑ
ॏࢹͰ5JUBOJVNʹ • ˠΤϯδχΞ࠾༻ˠωΠ ςΟϒͰϦϓϨΠε – ։ൃϲ݄
hDps://speakerdeck.com/ninjinkun/zhong-‐gui-‐mo-‐ioskai-‐fa-‐tokodorebiyu
தͷਓᐌ͘ • ʮ5JUBOJVNσβΠφʔ͕+4࿔ͬͯσβ ΠϯมߋͰ͖ͨͷͰɺϑϦϧΈ͍ͨͳϏδϡΞ ϧσβΠϯॏࢹͷϓϩμΫτʹϑΟοτͯ͠ Δଆ໘͋ͬͨɺͱ͍͏͋Γ·͢ʯ • ʮ্ཱͪ͛ظ͔ΒσβΠϯॏࢹͰߦ͚ͨͷ 5JUBOJVNͷ͓͔͛͋ͬͨΑ͏Ͱ͢ʯ
έʔεελσΟ • ;BJN͞Μ – ՈܭΞϓϦ • ઐՈͰͳ͍ۀऀ͕5JUBOJVNͰ։ൃ – ʮ+4ͳΒͳΜͱ͔ॻ͚ͨʯΒ͍͠ –
ݱߦόʔδϣϯ5JUBOJVN – ສϢʔβʔ"QQ4UPSF෦Ґ • ωΠςΟϒԽ – J04ŋŋŋ4XJGUͰ࠶։ൃத – "OESPJEŋŋŋ͕Μ͕ͬͨ࣌ͷ 5JUBOJVNͰ࣭Λ֬อͰ͖ͣωΠςΟϒ Խ 3FCVJMEGNFQ ࢀর
தͷਓᐌ͘ • 5JUBOJVNͰ࡞ͬͨ"OEPSJE൛Α͘Ϋϥο γϡͯ͠େมͩͬͨ – Ϋϥογϡ͕ݪҼͰϨϏϡʔ͕ • ωΠςΟϒ൛ʹͯ͠ϨϏϡʔվળ – ʮམͪͳ͘ͳͬͨʯʮ͘ͳͬͨʯʮݟ͕ͨྑ͘
ͳͬͨʯ – ͨͩ͠ଞͷࢪࡦҰॹʹ࣮ࢪͨ͠ͷͰ্͕͕ͬ ͨͷ࡞Γ͕͠શͯͱ͍͏Θ͚Ͱͳ͍ͱͷ͜ͱ
ߟ • ಛΛΑ͘׆͔ͨ͠έʔε – Ϧʔϯతͳ؍͔Β • ͘࡞ͬͯϑΟʔυόοΫΛूΊΔ • ͘͢վम • σβΠϯͷࢼߦࡨޡ
• ҰํͰቕͬͨΓŋŋŋ ʮϓϩͷϓϩάϥϚ͚ʯͱ͍͏ ΑΓʮαʔϏε͕࡞Γ͍ͨαʔ Ϗεࢦͷਓ͚ʯͱ͍͏πʔϧ ͷಛੑΛ͏·͘׆͔ͨ͠
• ͦΕͧΕͷ4%,ʹͦΕͧΕಛ • ಛΛ׆͔ͯ͠։ൃʹΈࠐΊ༗ޮ – ྫઐ͕ࣝগͳͯ͘ࡁΉ㱺ۀظʹ • ຊ֨తʹΔͱ૬Ԡͷίετ –
ྫ • ݁ہωΠςΟϒͷ͕ࣝඞཁʹ • ϥΠϒϥϦ͕͑ͳ͍㱺ϒϦοδ։ൃ • ϑϨʔϜϫʔΫ࣮ͷཧղ • ϨΠϠ͕ॏͳͬͯͯσόοάͮ͠Β͍ಛघͳσόοΨ • ωΠςΟϒฒΈͷ࡞ΓࠐΈʹωΠςΟϒΑΓ͕͔͔࣌ؒΔ
తίετ ྫֶशίετਂ͍ඞཁػձ ϓϩμΫτ࣭νʔϜ։ൃ ੜ࢈ੑͳͲ ˞ಛఆͷ࣮ʹ͍ͭͯϞσϧԽͨ͠ͷͰͳ͘ ͋͘·Ͱߟ͑ํͷϑϨʔϜϫʔΫͰ͢ ͋Δఔͷ࣭ΛٻΊΔ ͱతίετ͕ಉ͋Δ ͍ٯస͢ΔͱԾఆ
جૅ࣭ͷͷΛ ίετͰ࡞ΕΔ͜ͱ ͕Ξυόϯςʔδ ネイティブ (標準) Alterna#ve ૬Ԡͷ࣭Λٻ͢ Δͱɺཁٻίετʹ େ͕ࠩͳ͘ͳΔ ͜ͷล·Ͱཁٻ͢ ΔͳΒ࡞Γସ͑ͨ ํ͕͍͍͔
࠾Γ্͛ͳ͔ͬͨ͜ͱ • ͦͦΫιΞϓϦಓ۩ͷͳͷ͔ – ϞόΠϧΞϓϦͷ6*69ͷແཧղͱ͔ – 8FCͷޭମݧΛࣺͯΒΕͳ͍ͱ͔ – "OESPJEͱJ04Λಉ͡ʹ͠ΖΈ͍ͨͳཁٻͱ͔
• ͕͢͞ʹʹͳͬͯͦΜͳ͜ͱݴ͏ਓŋŋŋ
ߟ • "MUFSOBUJWFͳಓ۩ʹͦΕͧΕಛ – ಛΛઓུతʹ׆͔ͤϝϦοτେ͖͍ – /05ۜͷؙɻਅ໘ʹΔͱ૬ԠͷίετɻܽΛͲ͏Χόʔ͢Δ ͔ • 3FBDU/BUJWF
– ظతͳอकੑΛᨳ͍ͬͯΔ – ͕ɺܽ෦͕ظతʹͲ͏ڹ͔͘·ͩະ • ݸਓతͳݟղ – ͦͦ͜͜ͷنͷ։ൃ৫͔ͭ͘อक͢ΔͳΒશମ࠷ద ڭҭɺࢿɺ ਓࡐ֬อ ͷ؍͔Βඪ४Ͱ͍͍ͷͰ – খ͞ͳνʔϜɺۀظɺೲظҰߟͷ༨͋Γ – झຯŋŋŋ͖ͳ͑ΑΖ͍͠ 3VCZ.PUJPOͬͯ·͢J
5IBOLT ֆCZ͋ΘΏ͖