61
JavaScriptことはじめ 2014/06/08(日) @株式会社ガイアックス

JavaScriptことはじめ

Embed Size (px)

DESCRIPTION

2014/06/08(日) @株式会社ガイアックス

Citation preview

Page 1: JavaScriptことはじめ

JavaScriptことはじめ2014/06/08(日) @株式会社ガイアックス

Page 2: JavaScriptことはじめ

ほと(@hoto17296)

• 株式会社ガイアックス新卒エンジニア

• Ruby好き

• JavaScript歴8年くらい

Page 3: JavaScriptことはじめ

今日やること

• (Web開発における) JavaScript入門

• jQuery

• Ajax

• オブジェクト指向

Page 4: JavaScriptことはじめ

今日やらないこと

• JavaScriptフレームワーク(知らない)

• サーバーサイドJavaScript(知らない)

• JavaScriptでスマホアプリ開発(知らない)

• JavaScriptのテスト手法(知らない)

Page 5: JavaScriptことはじめ

JavaScript 概要

Page 6: JavaScriptことはじめ

JavaScript とは

• Javaではない!!!

• Javaに記法を似せて作ったのが由来らしい

• が、全然似てない(と思う)

• 全く異なる言語

Page 7: JavaScriptことはじめ

JavaScript とは

• ブラウザ上で実行できる唯一のプログラム言語

• Web開発するなら避けて通れない

• TypeScript?Dart?なにそr…

Page 8: JavaScriptことはじめ

ブラウザごとに実装Google V8

SpiderMonkey

Nitro

Chakra

Page 9: JavaScriptことはじめ

ECMAScript とは

• JavaScriptの標準化仕様

• 各ブラウザによる ECMAScript 実装を JavaScript と呼ぶ

• 詳しくはWikipedia読もう

Page 10: JavaScriptことはじめ

JavaScript の特徴

• DOMを操作できる

• 動的型付け

• イベントドリブン

• オブジェクト指向

Page 11: JavaScriptことはじめ

JavaScript の特徴

• DOMを操作できる

• 動的型付け

• イベントドリブン

• オブジェクト指向

Page 12: JavaScriptことはじめ

DOMを操作できる• DOM: Document Object Model

• マークアップ文書(HTMLとか)の構造にアクセスするためのAPI

• ほぼすべてのブラウザで実装されている

• 要するに、JavaScriptはWebページを 動的に書き換えたりできるということ

Page 13: JavaScriptことはじめ

JavaScript の特徴

• DOMを操作できる

• 動的型付け

• イベントドリブン

• オブジェクト指向

Page 14: JavaScriptことはじめ

動的型付け

• 実行されるまでデータの型がわからない

• 一般的に、動的型付け言語は遅い

• が、JavaScriptは速い

Page 15: JavaScriptことはじめ

動的型付け言語 条件 結果

JavaScript Chrome 31.0 (V8) 0.385 sec

Ruby 2.0.0p353 5.345 sec

Python 2.7.5 15.726 sec

PHP 5.5.7 26.398 sec

Perl 5.16.3 39.230 sec

【ベンチマーク対決】竹内関数でたらいまわし | 熊本でWEB開発もホームページ制作もしない http://www.mixp.net/javascript/360

Page 16: JavaScriptことはじめ

JavaScript の特徴

• DOMを操作できる

• 動的型付け

• イベントドリブン

• オブジェクト指向

Page 17: JavaScriptことはじめ

イベントドリブン

• イベントが起こったら処理が実行される

• ○○ を ×× したときに △△ する

• 例: 送信ボタン を クリック した時に   バリデーション をする

Page 18: JavaScriptことはじめ

JavaScript の特徴

• DOMを操作できる

• 動的型付け

• イベントドリブン

• オブジェクト指向

Page 19: JavaScriptことはじめ

オブジェクト指向• すべてのデータはオブジェクト

• 関数ですら第一級オブジェクト

• 関数を変数に代入できる

• 関数に関数を渡せる

• えっ でもJavaScriptってクラスないじゃん

• オブジェクトリテラル ≠ クラス

Page 20: JavaScriptことはじめ

ここまでで何か質問は( ・∀・)ノ

Page 21: JavaScriptことはじめ

JavaScriptの文法

Page 22: JavaScriptことはじめ

変数

• var文 を使うと宣言できる • $ 付けなくていい

• 宣言されてない変数にも代入できる • グローバルスコープになってしまう • あまりやらないほうがいい

Page 23: JavaScriptことはじめ

変数のスコープ

• 外側 → 内側: 見えない • 内側 → 外側: 見える

Page 24: JavaScriptことはじめ

データ型いろいろデータ型 意味 例

String 文字列 “hogehoge”, “123”

Number 数値 123, 3.14, 0xFF, Infinity, NaN

Boolean 論理値 true, false

Object オブジェクト オブジェクトリテラル, 関数 など

Array 配列 [ 1, 1, 2, 3, 5, 8 ]

Null Null null

undefined 未定義 undefined

Page 25: JavaScriptことはじめ

オブジェクトリテラル

• RubyやPerlでいうところのハッシュ

• 配列や関数も入れることができる

Page 26: JavaScriptことはじめ

関数

• return は省略できない

• 引数のデフォルト値は指定できない

Page 27: JavaScriptことはじめ

演算子いろいろ演算子名 例

代入演算子 = += -= *= /= %= $= ^= |= など

比較演算子 == != === !== > >= < <=

算術演算子 + - * / % ++ ̶ -

ビット演算子 & | ^ ~ << >> >>>

論理演算子 && || !

文字列演算子 + +=

特殊演算子 delete in new this typeof など

Page 28: JavaScriptことはじめ

文字列演算子

• JavaScriptの文字列連結は「 + 」!!

• 型に注意

Page 29: JavaScriptことはじめ

条件式

• 後置構文は使えない( 式 if 条件; みたいなやつ )

• () や {} は省略できない

Page 30: JavaScriptことはじめ

繰り返し(1)

• break でループ終了

• continue で次のループ

Page 31: JavaScriptことはじめ

繰り返し(2)

• オブジェクトリテラルの要素を順番に取り出す

• foreach と同じ感覚で使うと痛い目見る

Page 32: JavaScriptことはじめ

DOM関連

Page 33: JavaScriptことはじめ

windowオブジェクトプロパティ例 意味

window.alert( msg ) アラートを表示

window.confirm( msg ) 確認ダイアログを表示

window.document ドキュメントオブジェクト(後述)

• ウィンドウに関するあらゆるプロパティが取得できる

• 「window. 」は省略できる

Page 34: JavaScriptことはじめ

documentオブジェクト

• html文書そのものを表すオブジェクト • ここからDOMツリーにアクセスできる

プロパティ例 意味

document.title ページタイトル

document.cookie クッキーデータ

document.getElementById( id )

指定された id を持つ要素オブジェクトを返す

document.getElementsByClassName( class )

指定された class を持つ要素オブジェクトリストを返す

Page 35: JavaScriptことはじめ

(;́ー`) ふぅ…

Page 36: JavaScriptことはじめ

とりあえず実行してみよう

Page 37: JavaScriptことはじめ

実行のしかた• コンソールで実行

• Chrome or Firefox

• 右クリック → 要素の検証 → コンソール

• htmlファイルから呼び出し

• <script type=“~~.js”></script>

• htmlファイルに埋め込み

Page 38: JavaScriptことはじめ

デバッグ方法

• ブラウザのコンソールで試してみる

• スクリプトに console.log() を埋め込む

• スクリプトに debugger を埋め込む

Page 39: JavaScriptことはじめ

BMIを求めるスクリプト• BMI: ボディマス指数(Body Mass Index)

• ヒトの肥満度を表す体格指数

ワーク

BMI =Weight(kg)

Height(m)2

Page 40: JavaScriptことはじめ

BMIを求めるスクリプト

• http://bit.ly/js-kotohajimeの「ワーク」ページから サンプルコードをダウンロード

ワーク

Page 41: JavaScriptことはじめ

やることワーク

• フォームに入力された値を取得する

• BMI指数を計算する

• 小数点第2位で四捨五入する

• 計算結果を表示する

Page 42: JavaScriptことはじめ

~~ 昼休憩 ~~

Page 43: JavaScriptことはじめ
Page 44: JavaScriptことはじめ

jQuery とは

• JavaScriptライブラリ

• JavaScriptをより簡潔に記述できる

• 特にDOM操作やAjaxがやりやすい

Page 45: JavaScriptことはじめ

jQuery とは

• バージョン 1系 と 2系 がある

• 1系: IE8対応

• 2系: IE8非対応・高速

Page 46: JavaScriptことはじめ

jQuery 関数

• jQuery(‘セレクタ’)

• $(‘セレクタ’) とも書ける

• CSSライクなセレクタで様々なDOMを選択できる

Page 47: JavaScriptことはじめ

jQueryでDOM操作

新しい div 要素を生成して.parent クラスを持つ要素の中に追加

Page 48: JavaScriptことはじめ

jQueryでDOM操作

偶数番目の tr要素 にhighlightクラス を追加/削除

Page 49: JavaScriptことはじめ

jQueryでイベント駆動

Page 50: JavaScriptことはじめ

データ属性を操作

• HTML5のカスタムデータ属性

• 要素そのものに任意のデータを紐付けることができる

Page 51: JavaScriptことはじめ

ゲーム作ろう( ́ー`)

ワーク

Page 52: JavaScriptことはじめ

エイトクイーン

• クイーンを8体ならべるゲーム

• どのクイーンも他のクイーンを取れない位置に置かないといけない

ワーク

Page 53: JavaScriptことはじめ

エイトクイーンワーク

Page 54: JavaScriptことはじめ

サンプルコードの仕様ワーク

.queen クイーンを置いたマス

.ableクイーンを置けるマス

.disableクイーンを置けないマス

Page 55: JavaScriptことはじめ

やること

• クリックしたマスを queen クラスにする

• 置いたクイーンの 縦・横・斜め をdisable クラスにする

• ゲームクリアしていたら「おめでとう!」的なアラートを表示する

Page 56: JavaScriptことはじめ

Ajax

Page 57: JavaScriptことはじめ

Ajax とは

• Asynchronous JavaScript + XML

• 非同期通信

• jQueryを使うと便利

Page 58: JavaScriptことはじめ

JSON

• ほと はここで力尽きたようだ

Page 59: JavaScriptことはじめ

クロスドメイン制約

Page 60: JavaScriptことはじめ

オブジェクト指向の話

Page 61: JavaScriptことはじめ

まとめ• JavaScriptはWeb開発では必須知識

• 仕組みがわかっていると安全にインターネットを使える

• JavaScriptは簡単に書けるからこそスパゲティコードになりがち

• jQueryはほどほどに活用しよう