SlideShare ist ein Scribd-Unternehmen logo
1 von 30
JavaScriptの基本と
ReactJsの紹介
WBN 2016年5月21日勉強会
泉 陽二
自己紹介
• 4,5年ぐらいプログラミングやっています。
• 主な言語はobjective-c(iOS)やC#(ウィンドウズデス
クトップアプリケーション)
アジェンダ
• JavaScriptの解説
• ReactJsの簡単な紹介
変数
• 変数とは値を格納したり、取り出したりする入れ物
• 値には数値や文字列(文章)、真偽値(Bool)、配列、オブジェ
クト、関数がある(JavaScriptでは関数も値として扱える)。
• 変数の宣言はvarで行う。
• JavaScriptの変数は型にとらわれない。
(文字列を格納している変数に後から数値を入れることがで
きる。他のプログラミング言語だと最初に文字列を代入す
ると、それ以降、文字列以外代入できない)
変数(数値、文字列、boolean)
• var foo = ‘bar’; //文字列
• var num = 1; //数値
• var bool = true; //boolean true or false
変数(オブジェクト、配列、関
数)
• var ichiro = {
age : 20,
country : “Japan”,
}; //オブジェクト
• var fruitArray = [“apple”, “orrange”]; //配列
• var addFunc = function addFunc( x, y ){ //関数
return x + y;
};
その他の変数
• その他の変数の型にはDate(日付)やRegExp(正規表
現)、Error(エラー)等がありますが、省略します。
= について
• =で変数に代入する時、文字列と数値は値そのもの
が格納されるが、オブジェクトや配列は参照が格納
される。
var myString1
• var myStr1 = ‘str’;
var myStr2 = myStr1;
var myString2
文字列’str’
文字列’str’
• var myArray1 = [ 1, 2 ];
var myArray2 = myArray1;
var myArray1
var myArray2
[ 1, 2]
変数の同値比較
• 変数の同値比較は === で行う。等しい場合はtrueと
なり、等しくない場合はfalseとなる
• オブジェクトや配列は内容が同じでも等しいと判定
されないことがある
var a = [ 1, 2 ];
var b = [ 1, 2 ];
a === b //falseとなる
var c = [ 1, 2 ];
var d = c;
c === d; //trueとなる
変数の同値比較
• オブジェクトや配列の同値比較は同一人物の時のみ
等しいと判定される。(顔も体型も同じ双子は等し
くない判定される)
オブジェクトについて
• 空のオブジェクトを作成して、プロパティを設定する方
法(サンプルコード参照)
• コンストラクタを定義して、newで作成する方法(サンプ
ルコード参照)
• オブジェクトのプロパティは .プロパティ名 で変更、設
定、取得する
• オブジェクトの例としてオブジェクトを人に見立てて
Personという名前でコンストラクタに使用されることが
ある
配列について
• 配列は連続したデータを格納する変数として使われれ
る
• 配列の要素にアクセスするには0,1,2と数値を使ってア
クセスする。(0から始まることに注意)
var myArray = [ ‘a’, ‘b’ ];
myArray[0]; //0番目の要素(この場合だと’a’)を取得・変
更することができる
• .push で配列の末尾に値を追加し、 .length で配列に格
納されている値の数を取得できる(上の場合2 となる)
関数について
• 何かしらの演算や処理を行うもの。数値や文字列、
オブジェクト等の値(引数)を受け取って、処理を行
い。処理したものを返す(return)。
• returnが実行されるとreturn以降に記述されている
内容は省略される。
• 関数には無名関数や即時実行関数などがある。
• 関数の生成方法はサンプルコードを参照
メソッド使用時の注意点
• 参照している変数自体を変更するか、参照している
変数を元に新しい変数を作成するかの違いに気をつ
ける。
例えば、組み込みのArrayのconcatメソッドは2つの
配列をつなげて新しい配列を作成するので、作成に
利用した2つの配列は変更されない。reverseメソッ
ドは新しい配列を作成せず、元の配列の並びを逆順
にする。
処理の実行順序
• 加減乗除は算数と同じで足し算、引き算よりも先に
掛け算、割り算が実行される。
x + y / z だとx + ( y / z ) の順に実行される。
• obj.obj.propertyだと(obj.obj).propertyの順に処理さ
れる。obj.(obj.property)の順に処理されることはな
い
分岐とループ
• ifやswitchを使って条件を分岐したり、forやwhileを
使ってループ処理を行う。
• breakで処理を抜け出したり、continueでループ内
の処理をスキップしたりする。
• ループ処理を考える時でn回ループする場合でも具
体的な小さい数で考えるといい。1,2,3とか1,2,3,4
など
スコープ
• JavaScriptでは変数のスコープは関数内だけにとど
まり、関数内で宣言した変数は関数外からはアクセ
スできない。関数外で宣言されている変数には関数
内からアクセスできる。
ifやforループ内で宣言した変数にはifやforループ外
からでもアクセスできる。
変数の巻き上げ(Hoisting)
• 変数や関数は宣言する前にアクセスできる。
a = 0; //変数が宣言される前に値を代入しても
//JavaScriptではエラーにならない
…
…
var a; //変数の宣言
• 基本的に変数の宣言は関数内の一番上で行う
その他
• 他にもthisやprototype、クロージャとあるが今回は
省略します。
コーディングスタイル
• javascript coding style modernなどで検索する
Airbnbやgoogle、jqueryなどがコーディングスタイルを提供し
ている
• 参考サイト
• http://noeticforce.com/best-javascript-style-guide-for-
maintainable-code
• https://github.com/airbnb/javascript/tree/master/es5#arrays
• https://github.com/rwaldron/idiomatic.js/#native
イベント
• addEventListenerやremoveEventListnerでボタンクリ
ックやタッチイベント時に処理を追加することがで
きる。
• getElementByIdやgetElementByTagNameや
getElementClassNameなどで特定のHTMLの要素に
アクセスする
• HTMLの編集にはinsertBeforeやappendChild、
replaceChild、cloneNode、removeChild、
parendNode、innerHTMLなどがある
Javascriptリファレンス
• MOZILLA DEVELOPER NETWORKなどに組み込み
のオブジェクトやそのメソッド、イベント処理、ブ
ラウザ対応状況などが載っている
https://developer.mozilla.org/en-
US/docs/Web/JavaScript/Reference
• JavaScriptを試すのにJSFiddleなどがある
https://jsfiddle.net
• http://qiita.com/gaogao_9/items/ec2b867d6941173f
d0b1
参考にした書籍
(プログラミング初心者向きではない
可能性あり)
• JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス
すごく有名な本
• 開眼! JavaScript ―言語仕様から学ぶJavaScriptの本質
他のオブジェクト指向言語を知っている人だと楽に読めるかも
• 入門 モダンJavaScript
DOM操作やイベント処理、Ajaxにも触れている。
本が厚いので読むのが大変かも
• 本を選ぶときは出版年月日が新しい方がいいかも。
今現在(2016年5月)時点ではECMAScript(ES) 5.1にほとんどの最新ブラウザが
対応している。ECMAScript2015(ES6)が去年打ち出されたが一部の機能のみ
対応しているかも
babelなどのAltJSでES2015を使用可能
React.js
• React.jsとはfacebookが提供しているJavaScriptラ
イブラリです
• MVCのVの部分を担う(ユーザーインターフェイス
部分)
React.js
• 6つの異なるテクノロジー
React + JSX + Webpack + Babel(ES6をES5に変換
したりする) + Flux + Express
で構成されることが多いらしい
React.js
• http://postd.cc/learn-raw-react-no-jsx-flux-es6-
webpack/
を元に解説します。
React.js
• ライブラリの読み込み
react.jsとreact-dom.jsを読み込む
• 読み込んだ上の2つのライブラリに定義されている
ReactオブジェクトやReactDomオブジェクトを利
用する
React.js
• ReactオブジェクトのcreateElementメソッドや
createClassメソッド、ReactDomオブジェクトの
renderメソッドを使用してHTMLを記述します。
参考サイト
• JSXやFluxを使っていないReactの解説
http://postd.cc/learn-raw-react-no-jsx-flux-es6-
webpack/
• FacebookのReactサイト
http://facebook.github.io/react/docs/getting-
started.html
https://facebook.github.io/react/docs/tutorial-ja-
JP.html
ご静聴ありがとうござ
いました

Weitere ähnliche Inhalte

Andere mochten auch

C#によるファイルの読み書き
C#によるファイルの読み書きC#によるファイルの読み書き
C#によるファイルの読み書きHiroki Takahashi
 
C# Database操作1 接続と切断-
C# Database操作1  接続と切断-C# Database操作1  接続と切断-
C# Database操作1 接続と切断-Hiroki Takahashi
 
C# Database操作2 データの取得-
C# Database操作2  データの取得-C# Database操作2  データの取得-
C# Database操作2 データの取得-Hiroki Takahashi
 
C# TreeViewを使用する2
C# TreeViewを使用する2C# TreeViewを使用する2
C# TreeViewを使用する2Hiroki Takahashi
 
C# FileSystemWatcherコントロールを使用したアプリケーションの作成
C# FileSystemWatcherコントロールを使用したアプリケーションの作成C# FileSystemWatcherコントロールを使用したアプリケーションの作成
C# FileSystemWatcherコントロールを使用したアプリケーションの作成Hiroki Takahashi
 
Photoshopでバナー "いい感じ" に制作せよ!
Photoshopでバナー "いい感じ" に制作せよ!Photoshopでバナー "いい感じ" に制作せよ!
Photoshopでバナー "いい感じ" に制作せよ!Hiroki Shibata
 
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみたADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみたNarami Kiyokura
 
C#/.NETがやっていること 第二版
C#/.NETがやっていること 第二版C#/.NETがやっていること 第二版
C#/.NETがやっていること 第二版信之 岩永
 
Xamarin ~ iOS/Android/Windows アプリを C# で作ろう~
Xamarin ~ iOS/Android/Windows アプリをC# で作ろう~Xamarin ~ iOS/Android/Windows アプリをC# で作ろう~
Xamarin ~ iOS/Android/Windows アプリを C# で作ろう~Fujio Kojima
 
Apple審査を一発通過! iOS開発経験0でも出来る じげん流Swift開発のすべて
Apple審査を一発通過!iOS開発経験0でも出来るじげん流Swift開発のすべてApple審査を一発通過!iOS開発経験0でも出来るじげん流Swift開発のすべて
Apple審査を一発通過! iOS開発経験0でも出来る じげん流Swift開発のすべてMasaru Gushiken
 
おっさんES6/ES2015,React.jsを学ぶ
おっさんES6/ES2015,React.jsを学ぶおっさんES6/ES2015,React.jsを学ぶ
おっさんES6/ES2015,React.jsを学ぶdcubeio
 
中の下のエンジニアを脱出するための仕事術
中の下のエンジニアを脱出するための仕事術中の下のエンジニアを脱出するための仕事術
中の下のエンジニアを脱出するための仕事術Noriaki Kadota
 
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツオブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ増田 亨
 
オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門増田 亨
 

Andere mochten auch (16)

C#によるファイルの読み書き
C#によるファイルの読み書きC#によるファイルの読み書き
C#によるファイルの読み書き
 
C# Database操作1 接続と切断-
C# Database操作1  接続と切断-C# Database操作1  接続と切断-
C# Database操作1 接続と切断-
 
C# Database操作2 データの取得-
C# Database操作2  データの取得-C# Database操作2  データの取得-
C# Database操作2 データの取得-
 
C# TreeViewを使用する2
C# TreeViewを使用する2C# TreeViewを使用する2
C# TreeViewを使用する2
 
C# FileSystemWatcherコントロールを使用したアプリケーションの作成
C# FileSystemWatcherコントロールを使用したアプリケーションの作成C# FileSystemWatcherコントロールを使用したアプリケーションの作成
C# FileSystemWatcherコントロールを使用したアプリケーションの作成
 
Photoshopでバナー "いい感じ" に制作せよ!
Photoshopでバナー "いい感じ" に制作せよ!Photoshopでバナー "いい感じ" に制作せよ!
Photoshopでバナー "いい感じ" に制作せよ!
 
More C++11
More C++11More C++11
More C++11
 
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみたADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
 
C#/.NETがやっていること 第二版
C#/.NETがやっていること 第二版C#/.NETがやっていること 第二版
C#/.NETがやっていること 第二版
 
Xamarin ~ iOS/Android/Windows アプリを C# で作ろう~
Xamarin ~ iOS/Android/Windows アプリをC# で作ろう~Xamarin ~ iOS/Android/Windows アプリをC# で作ろう~
Xamarin ~ iOS/Android/Windows アプリを C# で作ろう~
 
Apple審査を一発通過! iOS開発経験0でも出来る じげん流Swift開発のすべて
Apple審査を一発通過!iOS開発経験0でも出来るじげん流Swift開発のすべてApple審査を一発通過!iOS開発経験0でも出来るじげん流Swift開発のすべて
Apple審査を一発通過! iOS開発経験0でも出来る じげん流Swift開発のすべて
 
Deep Dive C# 6.0
Deep Dive C# 6.0Deep Dive C# 6.0
Deep Dive C# 6.0
 
おっさんES6/ES2015,React.jsを学ぶ
おっさんES6/ES2015,React.jsを学ぶおっさんES6/ES2015,React.jsを学ぶ
おっさんES6/ES2015,React.jsを学ぶ
 
中の下のエンジニアを脱出するための仕事術
中の下のエンジニアを脱出するための仕事術中の下のエンジニアを脱出するための仕事術
中の下のエンジニアを脱出するための仕事術
 
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツオブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
 
オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門
 

Ähnlich wie Word bench nagoya 5月度

夏だからJava再入門
夏だからJava再入門夏だからJava再入門
夏だからJava再入門Katsumi Honda
 
「愛されたい!」と思ったときにJavaで書くRubyクラス
「愛されたい!」と思ったときにJavaで書くRubyクラス「愛されたい!」と思ったときにJavaで書くRubyクラス
「愛されたい!」と思ったときにJavaで書くRubyクラスKoichiro Ohba
 
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
JavaScriptCore.framework の普通な使い方 #cocoa_kansaiJavaScriptCore.framework の普通な使い方 #cocoa_kansai
JavaScriptCore.framework の普通な使い方 #cocoa_kansaiTomohiro Kumagai
 
初歩から始めるJava勉強会 プレゼンテーション資料
初歩から始めるJava勉強会 プレゼンテーション資料初歩から始めるJava勉強会 プレゼンテーション資料
初歩から始めるJava勉強会 プレゼンテーション資料Terumi Tamura
 
JavaScriptことはじめ
JavaScriptことはじめJavaScriptことはじめ
JavaScriptことはじめYuki Ishikawa
 
JDK 10 へようこそ
JDK 10 へようこそJDK 10 へようこそ
JDK 10 へようこそDavid Buck
 
オブジェクト指向開発におけるObject-Functional Programming
オブジェクト指向開発におけるObject-Functional Programmingオブジェクト指向開発におけるObject-Functional Programming
オブジェクト指向開発におけるObject-Functional ProgrammingTomoharu ASAMI
 
LLoT2016 Java Update
LLoT2016 Java UpdateLLoT2016 Java Update
LLoT2016 Java Updatetorutk
 
演習:プログラミング言語処理をやってみよう (ver.1.01)
演習:プログラミング言語処理をやってみよう (ver.1.01)演習:プログラミング言語処理をやってみよう (ver.1.01)
演習:プログラミング言語処理をやってみよう (ver.1.01)Takashi Ishio
 
C,Javaと比較しながらRubyに入門する話 - e-ZUKA Rails拡大号vol1
C,Javaと比較しながらRubyに入門する話 - e-ZUKA Rails拡大号vol1C,Javaと比較しながらRubyに入門する話 - e-ZUKA Rails拡大号vol1
C,Javaと比較しながらRubyに入門する話 - e-ZUKA Rails拡大号vol1耕平 谷口
 
Shibuya.lisp #28: 仮題: R について
Shibuya.lisp #28: 仮題: R についてShibuya.lisp #28: 仮題: R について
Shibuya.lisp #28: 仮題: R についてtnoda
 
JavaScriptユーティリティライブラリの紹介
JavaScriptユーティリティライブラリの紹介JavaScriptユーティリティライブラリの紹介
JavaScriptユーティリティライブラリの紹介Yusuke Hirao
 
2歩目 プレゼン資料 初歩から始めるjava勉強会
2歩目 プレゼン資料 初歩から始めるjava勉強会2歩目 プレゼン資料 初歩から始めるjava勉強会
2歩目 プレゼン資料 初歩から始めるjava勉強会悠平 鎌田
 
JavaScript Tips 2015(PDF 版)
JavaScript Tips 2015(PDF 版)JavaScript Tips 2015(PDF 版)
JavaScript Tips 2015(PDF 版)taskie
 
C# コンパイラーの書き換え作業の話
C# コンパイラーの書き換え作業の話C# コンパイラーの書き換え作業の話
C# コンパイラーの書き換え作業の話信之 岩永
 
JavaScriptで「キャピタライズ」を 実装してみる
JavaScriptで「キャピタライズ」を 実装してみるJavaScriptで「キャピタライズ」を 実装してみる
JavaScriptで「キャピタライズ」を 実装してみるiPride Co., Ltd.
 

Ähnlich wie Word bench nagoya 5月度 (16)

夏だからJava再入門
夏だからJava再入門夏だからJava再入門
夏だからJava再入門
 
「愛されたい!」と思ったときにJavaで書くRubyクラス
「愛されたい!」と思ったときにJavaで書くRubyクラス「愛されたい!」と思ったときにJavaで書くRubyクラス
「愛されたい!」と思ったときにJavaで書くRubyクラス
 
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
JavaScriptCore.framework の普通な使い方 #cocoa_kansaiJavaScriptCore.framework の普通な使い方 #cocoa_kansai
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
 
初歩から始めるJava勉強会 プレゼンテーション資料
初歩から始めるJava勉強会 プレゼンテーション資料初歩から始めるJava勉強会 プレゼンテーション資料
初歩から始めるJava勉強会 プレゼンテーション資料
 
JavaScriptことはじめ
JavaScriptことはじめJavaScriptことはじめ
JavaScriptことはじめ
 
JDK 10 へようこそ
JDK 10 へようこそJDK 10 へようこそ
JDK 10 へようこそ
 
オブジェクト指向開発におけるObject-Functional Programming
オブジェクト指向開発におけるObject-Functional Programmingオブジェクト指向開発におけるObject-Functional Programming
オブジェクト指向開発におけるObject-Functional Programming
 
LLoT2016 Java Update
LLoT2016 Java UpdateLLoT2016 Java Update
LLoT2016 Java Update
 
演習:プログラミング言語処理をやってみよう (ver.1.01)
演習:プログラミング言語処理をやってみよう (ver.1.01)演習:プログラミング言語処理をやってみよう (ver.1.01)
演習:プログラミング言語処理をやってみよう (ver.1.01)
 
C,Javaと比較しながらRubyに入門する話 - e-ZUKA Rails拡大号vol1
C,Javaと比較しながらRubyに入門する話 - e-ZUKA Rails拡大号vol1C,Javaと比較しながらRubyに入門する話 - e-ZUKA Rails拡大号vol1
C,Javaと比較しながらRubyに入門する話 - e-ZUKA Rails拡大号vol1
 
Shibuya.lisp #28: 仮題: R について
Shibuya.lisp #28: 仮題: R についてShibuya.lisp #28: 仮題: R について
Shibuya.lisp #28: 仮題: R について
 
JavaScriptユーティリティライブラリの紹介
JavaScriptユーティリティライブラリの紹介JavaScriptユーティリティライブラリの紹介
JavaScriptユーティリティライブラリの紹介
 
2歩目 プレゼン資料 初歩から始めるjava勉強会
2歩目 プレゼン資料 初歩から始めるjava勉強会2歩目 プレゼン資料 初歩から始めるjava勉強会
2歩目 プレゼン資料 初歩から始めるjava勉強会
 
JavaScript Tips 2015(PDF 版)
JavaScript Tips 2015(PDF 版)JavaScript Tips 2015(PDF 版)
JavaScript Tips 2015(PDF 版)
 
C# コンパイラーの書き換え作業の話
C# コンパイラーの書き換え作業の話C# コンパイラーの書き換え作業の話
C# コンパイラーの書き換え作業の話
 
JavaScriptで「キャピタライズ」を 実装してみる
JavaScriptで「キャピタライズ」を 実装してみるJavaScriptで「キャピタライズ」を 実装してみる
JavaScriptで「キャピタライズ」を 実装してみる
 

Word bench nagoya 5月度