LoginSignup
25
27

More than 5 years have passed since last update.

プログラミングをあまりしたことない人がReactNativeを始めるときに知っておきたいことや参考資料のまとめ

Last updated at Posted at 2018-01-10

おって書き足していきますmm

この資料について

ReactNativeで開発をはじめるために知っておいた方がいいことまとめ
新人が入った時とかの参考資料に。

想定読者レベル:
- js以外の他の言語を、研修/もしくは授業等で習った経験があるくらいで、実務経験はなし

※可能限りわかりやすいように、正確性よりは雰囲気重視

プログラミング基本/教養として

※ 本を読む
* リーダブルコード
* (プログラムはなぜ動くのか)
* (オブジェクト指向でなぜつくるのか) // immutable.jsとか関数型とか、いろいろ出てくる前にまずオブジェクト指向についてしっておく。JAVAとかを授業で習った前提ではあるが。

Javascript(ES6)

※ javascriptにはes6という新しい規格の記法があり、基本はes6やそれより新しいの記法を使うのがベター

追記: 2018-07-13

jsに関しては下記がよかった
★ ECMAScript 2018時代のJavaScript入門書
https://asciidwango.github.io/js-primer/

※ 一歩踏み込めるのであれば、コールバック地獄や、スコープ汚染、プロトタイプ汚染など(昔の?)JSの課題だったところもさらっておく。
中上級者になるためのJavaScript【知識編】 - Qiita

React / ReactNative

Reactとは?

コンポーネントという部品を組み立てて 画面をつくることができるやつ
出来る限り短く説明するReact.js入門 - Qiita

ReactNativeとは

reactでネイティブアプリをつくるやつ

追記: 2018-07-13

reactnativeexpress が一通りまとまっていてすごくいい
http://www.reactnativeexpress.com/

一度盲目的にチュートリアルをやってみる。
Learn the Basics · React Native
qiitaにも勉強してみた的な記事がたくさんあるので読んでみる。やってみる。

参考:デバッグツールの使い方

(iOS)
メニュー:コマンド + D
リロード:コマンド + R

(Android)
メニュー:コマンド + M
リロード:大文字のRを二回押す

component

  • componentとは
    • View(見た目)を構成するパーツのようなもの
    • React-native で実装してくときに一番触ることが多い(たぶん

基本的な構成

import React, { Component } from 'react'
import {
  AppRegistry,
  StyleSheet,
  TouchableOpacity,
  Text,
  View,
} from 'react-native' //ReactNativeのコンポネント。使うものをimportする

class App extends Component { //ReactのComponentを継承して、コンポネントを作っていく
  constructor(props) {
    super(props)
    this.state = { count: 0 } //コンポネント内での状態を管理するにはstateを使う。stateが更新されると、renderが呼ばれてviewが更新される
  }

  componentDidMount() { //lifecycleイベント。コンポネントがmountしたときなどのイベントに処理を書く時に。
  }

  onPress = () => { 
    this.setState({
      count: this.state.count+1
    })
  }

 render() { //Viewの描画の本体的な場所。returnでjsxを返す。
   return (
     <View style={styles.container}> //このViewもComponent(react-nativeの) styleなどのpropsを渡していく
       <TouchableOpacity
         style={styles.button} 
         onPress={this.onPress} //propsにはfunctionも渡せる
       >
         <Text> Touch Here </Text>
       </TouchableOpacity>
       <View style={[styles.countContainer]}>
         <Text style={[styles.countText]}>
            { this.state.count !== 0 ? this.state.count: null} // {}で囲った中にjsもかける
          </Text>
        </View>
      </View>
    )
  }
}

const styles = StyleSheet.create({ //CSS的な感じでスタイルを書いていく
  container: {
    flex: 1,
    justifyContent: 'center',
    paddingHorizontal: 10
  },
  button: {
    alignItems: 'center',
    backgroundColor: '#DDDDDD',
    padding: 10
  },
  countContainer: {
    alignItems: 'center',
    padding: 10
  },
  countText: {
    color: '#FF00FF'
  }
})

AppRegistry.registerComponent('App', () => App) //アプリのエンドポイント

  • renderメソッド/jsxとは
    • 出力するViewのテンプレートみたいなもの
    • htmlみたいな感じでviewをかける
    • React.jsのJSXを使ってみる - Qiita
    • stateかpropsが更新されたタイミングで呼ばれる。自動的に。
      • 逆にいうとstateを更新するとrenderが走ってしまう。
  • stylesheet
    • CSSのようなもの
  • state
    • コンポーネントの中の状態管理
  • props
    • コンポーネントの外から渡されるデータやコールバック。
    • コンポーネントが関数だとすると引数みたいなイメージ
  • life cycle イベント

サードパーティのライブラリを使う

例)
https://github.com/oblador/react-native-vector-icons

やること (各ライブラリのinstallationを見てください。以下、よくある例)
- npm もしくは yarnでパッケージのインストール
- react-native link

react-native linkって??

ネイティブ(objectice-c / java)のライブラリをネイティブのプロジェクトに読み込ませる。
※ ここ、結構ハマりがちなポイント。ネイティブの知識がないと辛いことが多々あるので、xcodeやandroid studioの基本操作〜デバッグ方法は知っておくとベター

React-native run-ios / run-androidをしたときにおきていること

  • ネイティブのソースコードをビルドする
  • JSのソースコードをトランスコンパイルする(動くようにJSのコードをごにょごにょする)
  • packager/serverが立ち上がる
  • シミュレーターが立ち上がる
  • シミュレータがserverからjsのコードをロードする
  • 動く

navigation (react-navigation)

画面を遷移させるもの

redux

stateをcomponentを横断して管理できるもの
※ なんでreduxのようなものが必要とされているのかを理解しておく

ネイティブでのアプリ開発の基礎知識

iOS

  • 簡単な本を読むのがいいのでは?
  • ライブラリの追加はよくやる&よくエラーが起きるのでそれは知っておく
    • xcodeでのライブラリの追加方法
    • xcodeでのcocoa podを使ったライブラリの追加方法

android

  • こちらも簡単な本を読んでおく。activity/intent/みたいなところがなんとなく分かっていればok
  • android studioでのライブラリの追加方法も知っておく。
  • ビルド関係の設定も雰囲気知っておく

参考:html/css

参考:教養として、、なぜjavascriptのフレームワークが必要なのか

第5章 クライアントサイドの変遷 - 惑星を動かすプログラム - Qiita

NextStep

ネイティブとのブリッジ
パフォーマンス
設計パターン(まだデファクトスタンダードはない印象ですが)
ネイティブ側の知識を増やす
などなど

あとは教養として、なんでMVVM的なJSフレームワークが出てきたかの歴史を知っておくとReactへの理解は進むかも
でもネイティブへの理解増やすのが実務的には一番いいのかも

余談

いろいろ出てきて面倒だけれども、大丈夫。みんな混乱しているので。

2016年にJavaScriptを学ぶとこんな感じ – Medium Japan – Medium

サーバーサイドJavaScript(Node.js) - HTTP/1.1 200 OK - Qiita

仮想DOMかっこいい
なぜ仮想DOMという概念が俺達の魂を震えさせるのか - Qiita

25
27
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
27