
ã³ãŒããæžãã®ã¯é£ããã§ãã è€æ°ã®ãã©ãããã©ãŒã çšã®ã³ãŒããæžãããšã¯ããã«å°é£ã§ãã ããã°ã©ããŒã¯ãããç¥ã£ãŠãããéå»20幎ã«ãããããäžèœã®äžèœè
ãã®ã¢ã€ãã¢ã¯å¿ãåºæ¿ããããŸããŸãªãã¯ãããžãŒã§å
·äœåãããŠããŸããã Javaããé»è©±ã®ã®ã£ãããŸã§ãéçºè
ã¯æ¬åœã«äžåºŠæžãã ãã§ã©ãã§ãä»äºããããã£ãã®ã§ãã ããããããŸããããŸããã§ããã
ãããŠãfacebookã¯ReactJSãäœããŸããã èªåã§ãã£ãããä¿®æ£ããŸãã ãããŠããã¯èµ·ãã£ãã javascriptã®ããã¥ãŒããããã€ã³ã¿ãŒãã§ã€ã¹ãæ§ç¯ãããšããã¢ã€ãã¢ã¯éåžžã«åªããŠããããšã倿ãããããfacebookã¯ãã¬ãŒã ã¯ãŒã¯ãã¢ãã€ã«ãã©ãããã©ãŒã ã«ç§»æ€ããæåã«iOSçšã®React Nativeãäœæãã6ãæåŸã«AndroidãäœæããŸããã WebããçãŸãããã¯ãããžãŒã¯ãJavaã.NETãªã©ã®ã¢ã³ã¹ã¿ãŒã倱æããããšãå®è¡ã§ããŸããïŒ
倢ãå¶ãïŒäžåºŠæžããŠãã©ãã§ãèµ°ã

ã¯ãã¹ãã©ãããã©ãŒã éçºãæè¿äžè¬çã«ãªããŸããã 15幎åããããã°ã©ã ããšããèšèã¯ãWindowsçšã®ããã°ã©ã ããšå矩èªã§ããã ã»ãšãã©ã®ã³ã³ãã¥ãŒã¿ãŒã¯Windowsäžã§åäœããŠããŸããã ãšã³ã¿ãŒãã©ã€ãºãœãªã¥ãŒã·ã§ã³ã®å¹³è¡ããäžçã§ã¯ãHP-UXïŒããããç¥ãããŠããchpuxïŒããµãŒããŒLinuxãããã³JavaãçããŠããŸããã å¥ã®å¹³è¡ããäžçã§-ãã©ãã·ã§ãããšã€ã©ã¹ãã¬ãŒã¿ãŒãšãã³ã¹ã äžçã¯äº€å·®ãããããã°ã©ã ã¯ç¹å®ã®ãã©ãããã©ãŒã çšã«äœæãããã¯ãã¹ãã©ãããã©ãŒã ãœãªã¥ãŒã·ã§ã³ã¯å¿
èŠä»¥äžã«å¥œå¥å¿ã匷ããã®ã§ããã
ãããŠãããã€ãã®ããšãèµ·ãããŸããã 圌ãã¯ã¢ãã€ã«ãã©ãããã©ãŒã ããæã¡ãããããŒã®äººæ°ãé«ãŸãããœãããŠã§ã¢ã®è³Œå
¥ãšã¬ã³ã¿ã«ã倧å¹
ã«ç°¡çŽ åãããŸããã ããã°ã©ã ã¯ãã³ã³ãã¥ãŒã¿ãŒãšã³ãžãã¢ã ãã§ãªããå
šå¡ã䜿çšããããã«ãªããŸããã ãããŠçªç¶ãé·å¹Žã®Javaã¹ããŒã¬ã³ãäžåºŠæžãã ãã§ã©ãã§ãå®è¡ããããéåžžã«éèŠã«ãªã£ãããšã倿ããŸããã éè¡ããã¹ã¿ãŒããã¯ãŸã§ãèšå€§ãªæ°ã®äŒæ¥ãã¢ããªã±ãŒã·ã§ã³ãå¿
èŠãšããŠããŸããã æãŸãã-ããã«ãã¹ãŠã®é¢é£ãã©ãããã©ãŒã ã«ã å®ããŠéåžžã«æãŸããã ãããŠãããä»ãªãã
èšèšã¬ã€ããšå®è¡é床ãããªãã®å€¢ã劚ããŸã
éçºè
ã¯å®çžŸã®ããããŒã«ããã»ãããæãèœãšããŸãããããã¹ãŠãããã»ã©åçŽã§ã¯ãªãããšã倿ããŸããã ã¢ãã€ã«ãã©ãããã©ãŒã ã§å©çšå¯èœãªã¯ãã¹ãã©ãããã©ãŒã éçºæè¡ã®å€§éšåã¯ããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹èªäœãæç»ããŸãã ãªããæåã«ã圌ã¯å€åœäººã«èŠããã®ã§ããããã ãããŠã第äºã«ãé床ãäœäžããŸãã ããã«ãæµãããããªæœè±¡åãã远å ããŠãã ãããé
ããæ©ãããè€éãªã¢ããªã±ãŒã·ã§ã³ã¯ã¯ãã¹ãã©ãããã©ãŒã ãã¬ãŒã ã¯ãŒã¯ã®ãã¬ãŒã ã¯ãŒã¯ãè¶
ãããã®ããã€ãã£ããã³ãŒãã§æ¡åŒµããå¿
èŠããããæ¡åŒµæ©èœãšãã¬ãŒã ã¯ãŒã¯èªäœã®çžäºäœçšã®åé¡ã«ã€ãªããããšããããããŸãã
ãã®åé¡ã解決ããããã«èšèšããããã¬ãŒã ã¯ãŒã¯ãšã©ã€ãã©ãªã¯ããéã®éšã®åŸãããã³ã®ããã«å¢ãå§ããŸããïŒAppceleratorãPhonegapãXamarinãFireMonkeyãNativeScriptã ãããã誰ãç¹å¥ãªäººæ°ãç²åŸããããšã¯ãªããã€ã³ã¿ãŒãããäžã®èšäºã¯ã
ãã¬ãŒã ã¯ãŒã¯ã®
åã®ããšã«ã¯ã©ã€ã¢ã³ããã³ã¯ãäœãå§ãã1幎åŸã«ãããæšãŠãŠãã€ãã£ãã«åãæ¿ããŸããããªã©ã®ã€ã³ã¿ãŒãããäžã®èšäºãçŸãå§ããŸããã
Reactã¯ã¬ã¹ãã³ã·ããªWeb-to-Mobileãã¶ã€ã³ããããããŸã

ãããŠãããã§ã2015幎åã°ã«ãFacebookã¯React Nativeãå°å
¥ããŸããã äžèŠãæ°ãããã®ã¯ãããŸããã JavaScriptãiOSããã³Androidã®äž¡æ¹ã§ããã€ãã£ãããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹èŠçŽ ãäœæã§ããŸãã Appceleratorã¯ãããé·å¹Žã«ããã£ãŠäœ¿çšããŠããŸãã
æªéã¯çްéšã«é ããŠããŸããã ããã¥ãŒããããã€ã³ã¿ãŒãã§ãŒã¹ã®ã¢ã»ã³ããªãšããŠã§ãããåçšãããé©å¿ãèšèšã¢ãããŒãã«ãããè峿·±ãããšãå¯èœã«ãªããŸããã Reactã䜿çšãããšãWebã®å Žåãšåæ§ã«ãã€ã³ã¿ãŒãã§ã€ã¹ãæå³çã«åŒ·å¶ãããŸãã iOSãŸãã¯Androidã®ã€ã³ã¿ãŒãã§ã€ã¹èŠçŽ ã§æäœãã代ããã«ããã¶ã€ããŒã¯è«çã³ã³ããŒãã³ãïŒãç»é¢ãããã¿ã€ãã«ããããªã¹ãããããã¿ã³ãïŒããã€ã³ã¿ãŒãã§ã€ã¹ãäœæããŸãã ãããŠããã§ã«ã³ã³ãã€ã«ãããã€ã³ã¿ãŒãã§ãŒã¹ã¯ãã¡ã€ã«ã§ç¹å®ã®ãã©ãããã©ãŒã ã«ããããããŸãïŒæ°è¡ã®ã³ãŒãã¯ãé²è¡ãã³ã³ããŒãã³ãããŠã§ãçšã®HTMLã¿ã°ã®ã»ãããAndroidçšã®
ProgressBarAndroidããã³iosçšã®
ProgressViewIOSã«å€æããŸãã
ãã®ã¢ãããŒãã¯éåžžã«äŸ¿å©ã§ããæåã¯ãã€ã³ã¿ãŒãã§ã€ã¹ã¯ããã«ãŠãããŒãµã«ãããã¯ã§æ§æããããã®åŸãå®éã«å¿
èŠãªå Žåã«ã®ã¿åãã©ãããã©ãŒã ã§ç¢ºå®ãããŸãã ããã¯ããŠãããŒãµã«ããŽã ãã€ã³ã¿ãŒãã§ãŒã¹ãæåã«èª²ãããæ¬¡ã«
@mediaã®å©ããåããŠãé»è©±ç»é¢ãã¿ãã¬ããç»é¢ãããã³å€§ç»é¢çšã«ç¢ºå®ãããã¢ãããã£ãã¬ã€ã¢ãŠããæãèµ·ããããŸãã
ã¢ããªã±ãŒã·ã§ã³ã®ãããã¿ã€ãã¯æ°æ¥ã§å®æããŸã
äŸãšããŠãReact Native SDKã®ãã¹ãã¢ããªã±ãŒã·ã§ã³ãèŠãŠã¿ãŸãããã SDKã䜿çšãããšãç¡æã®ãã¢ããŒãã¢ãå«ãéåžžã®é話ãŸãã¯ãããªé話ãéåä¿¡ã§ããŸãã ãããŠãã¢ããªã±ãŒã·ã§ã³ã¯ããã䜿çšããæ¹æ³ã瀺ããŸãïŒãã°ã€ã³ãŠã£ã³ããŠãçªå·ãŸãã¯ååãå
¥åããããã®ãŠã£ã³ããŠããã³ãŒã«ãã¿ã€ãã®ãã¿ã³ã®æ£åšãããããªããªã³ã«ããããããã€ã¯ããªãã«ããããªã©ã
ãœãŒã¹ãèŠã
ãšãäž¡æ¹ã®ãã©ãããã©ãŒã ã§åäœãã1ã€ã®ã³ãŒãã衚瀺ãããŸãã ã³ãŒãã¯ãç§ãã¡ãæãã§ããå Žæã§ã®ã¿ç°ãªããŸãã ããšãã°ãã¹ã€ããã®ãã€ãã£ãããŒãžã§ã³ã䜿çšãããããããã®å®è£
ã¯
ColorSwitch.ios.jsãš
ColorSwitch.android.jsã® 2ã€ã®ãã¡ã€ã«ã«åå²ãããŸãã
ãã¢ã¢ããªã±ãŒã·ã§ã³ã¯2æ¥ã§äœæãããŸããã iOSãšAndroidã®ããäžã ãŸããWebçšã®ããŒãžã§ã³ãäœæããå Žåã¯ãããã«1æ¥ããããŸãïŒã¯ããweb SDKããããã¯ããwebRTCã®éæ³ã®ãããã§ãã©ãŠã¶ãŒããåŒã³åºãããšãã§ããŸãïŒã ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹èŠçŽ ãdivã«çœ®ãæããWebããŒãžã§ã³ãšã¢ãã€ã«ããŒãžã§ã³ã§ç°ãªãSDKåŒã³åºãã倿Žããã ãã§ãã
<View style={styles.settings_table}> <View style={styles.settings_switch}> <Text style={styles.settings_label}>Peer-to-peer</Text> <ColorSwitch defaultValue={settings_p2p} valueUpdate={(value) => {settings_p2p = value}}/> </View> <View style={styles.settings_switch}> <Text style={styles.settings_label}>Video</Text> <ColorSwitch defaultValue={settings_video} valueUpdate={(e) => this.videoSwitch(e)}/> </View> </View>
ããããã³ãŒãã¹ããããå®éã«ã¯ãã¹ãŠããšãŠãã¹ã ãŒãºã§ããïŒ
æ¯æ
ããŸããŸãå€ãã®äŒæ¥ãReactJSãšReact Nativeã䜿çšããŠããŸãã ãã ãããã®æè¡ã¯ãŸã éåžžã«æ°ããïŒAndroidããŒãžã§ã³ã¯æ°ãæåã®ãã®ã§ãïŒããã¹ãŠã®ãå°å
çŸæ£ããå«ãŸããŠããŸãã
ãŸãã
ãç®±ããåºããŠããã«ãå©çšã§ããå°æ°ã®ã€ã³ã¿ãŒãã§ãŒã¹èŠçŽ ã«æ³šç®ããããšæã
ãŸã ã iosãšandroidã«ã¯ã1åããŒã¹ã®ãŠãããŒãµã«ãš10ã®ç¹å®ããããŸãã ãã€ãã£ãèŠçŽ ã¯ç°¡åã«ã©ããã§ããŸãããããã«ã¯javaãobjective-cããŸãã¯swiftã®ç¥èãå¿
èŠã§ãã å¥ã®æ¹æ³ã¯ãGitHubã§å©çšå¯èœãªäœçŸãã®æå¥œå®¶ãäœæããã¢ã€ãã ã®1ã€ã䜿çšããããšã§ãã ãããããªãŒãã³ãœãŒã¹ã¯ç¹å®ã®ãã®ã§ã-äžæ³šæã«æžãããèŠçŽ ã«ã¯ãèªåã§è¡ãå Žåãããå€ãã®åé¡ãããå ŽåããããŸãã
æè¡ã®è¥ããå©çšå¯èœãªã©ã€ãã©ãªãšãã€ã³ããŒã®éžæãå¶éããŸãã React Nativeã®çºè¡šã®æç¹ã§ãiosãšandroidã®ãã€ãã£ãSDKãé·ãéãããŸããã ããã䜿çšããŠãããã«ç§»æ€ãéå§ããwebRTCãReact Nativeã§åããŠããã¯ããŸããã ããããããã§ãããªãæéãããããŸãããããã¥ã¡ã³ããå匷ããŠããéãã³ãŒããæžããŠããéããã¹ãŠããã¹ãããŠããéãç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ãèšå®ããŠããé-æ·±å»ãªã©ã€ãã©ãªã®å Žåãããã¯1ãæä»¥äžã®è³ªåã«ãªããŸãã
ãŸãããã¬ãŒã ã¯ãŒã¯ã®éçºé床ãéçºè
ã®æã«æž¡ããšã¯éããŸããã ææ°ããŒãžã§ã³ã«æŽæ°ãããšããã°ã®ãšã©ãŒã ãã§ãªããèŠåã衚瀺ãããã«ããããªã®åçãçªç¶åæ¢ããŸããã ã³ãŒããé·æéæãäžãããšãããäœè
ãAndroidçšã®
ReactPropããã¡ããã©ãå¥ã®å Žæã«ç§»åããããšã
ããããŸããã ãã¡ããããã®ãããªå€æŽã¯é »ç¹ã«çºçããããã§ã¯ãããŸããããç¹ã«AndroidããŒãžã§ã³ã§ã¯äŸç¶ãšããŠçºçããŸãã
import com.facebook.react.uimanager.*; import com.facebook.react.uimanager.annotations.ReactProp; public class VoxImplantViewManager extends SimpleViewManager<VoxImplantRendererView>
çµè«
ãã®æè¡ã¯éåžžã«ææã§ãããè¥ãã§ãã çŽæ¥ã®ç«¶åä»ç€Ÿã®äžã§ããã€ã¯ããœããã®ãwindows universal appsããšããååãä»ããããšãã§ããŸããã€ã³ã¿ãŒãã§ã€ã¹ã®ã»ãã³ãã£ãã¯ã¬ã€ã¢ãŠããšããæŠå¿µã¯ãæè¿é£ç¶æè¡ã«ãã£ãŠåŒ·åãããŸããã ãXamarin.Formsãã¯ãããŠãããŒãµã«ãããã³ããã©ãããã©ãŒã åºæã®ãã€ã³ã¿ãŒãã§ãŒã¹èŠçŽ ãåããåæ§ã®ãœãªã¥ãŒã·ã§ã³ãæäŸããŸãã ããããReactã«ã¯ããã€ãã®å©ç¹ããããŸãããã©ãããã©ãŒã ã®1ã€ãšããŠã®Webãéåžžã«äººæ°ã®ããJavaScriptãããã»ã©äººæ°ã®ãªãnode.jsããŒã«ãã§ãŒã³ãç¡æãFacebookã®ãµããŒãã远å èšå®ãªãã®ãããããªããŒããã§ãã
React Nativeã䜿çšããŠãWebã¢ããªã±ãŒã·ã§ã³ã®ã¢ãã€ã«ããŒãžã§ã³ããã°ãããããã¿ã€ãåã§ããããã«ãªã£ããšèšããŸãã ããã«ãWebã¢ããªã±ãŒã·ã§ã³ãæ¢ã«ReactJSã§èšè¿°ãããŠããå Žåã転éé床ã¯å€§å¹
ã«åäžããŸãã åºèã§ã®åºçã䌎ãè€éãªã¢ããªã±ãŒã·ã§ã³ã®äœæã¯ãã§ã«å¯èœ
ã§ãããã®ã£ã©ãªãŒã§æç¢ºã«èŠãããšãã§ã
ãŸã ã ããããæçµçãªãé ã«æµ®ãã¶ããåŒãããåºãããŠãjavaãšobjective-cã«ç»ãå¿
èŠããããšããäºå®ã«åããŠãã ããã
PSãããŠã圌ãã¯åœŒãèªèº«ã®ããã«ãã£ãããæ±ºããŠä¿®çããŸããã§ããã ããããããã«ã¯ããã£ã³ããŒã³ããããŠå®éã«å ŽæãåªãããŠããŸãã