SlideShare a Scribd company logo
1 of 61
Download to read offline
JavaScriptことはじめ
2014/06/08(日) @株式会社ガイアックス
ほと(@hoto17296)
• 株式会社ガイアックス

新卒エンジニア
• Ruby好き
• JavaScript歴8年くらい
今日やること
• (Web開発における) JavaScript入門
• jQuery
• Ajax
• オブジェクト指向
今日やらないこと
• JavaScriptフレームワーク(知らない)
• サーバーサイドJavaScript(知らない)
• JavaScriptでスマホアプリ開発(知らない)
• JavaScriptのテスト手法(知らない)
JavaScript 概要
JavaScript とは
• Javaではない!!!
• Javaに記法を似せて作ったのが由来らしい
• が、全然似てない(と思う)
• 全く異なる言語
JavaScript とは
• ブラウザ上で実行できる唯一のプログラム言語
• Web開発するなら避けて通れない
• TypeScript?Dart?なにそr…
ブラウザごとに実装
Google V8
SpiderMonkey
Nitro
Chakra
ECMAScript とは
• JavaScriptの標準化仕様
• 各ブラウザによる ECMAScript 実装を

JavaScript と呼ぶ
• 詳しくはWikipedia読もう
JavaScript の特徴
• DOMを操作できる
• 動的型付け
• イベントドリブン
• オブジェクト指向
JavaScript の特徴
• DOMを操作できる
• 動的型付け
• イベントドリブン
• オブジェクト指向
DOMを操作できる
• DOM: Document Object Model
• マークアップ文書(HTMLとか)の構造に

アクセスするためのAPI
• ほぼすべてのブラウザで実装されている
• 要するに、JavaScriptはWebページを

動的に書き換えたりできるということ
JavaScript の特徴
• DOMを操作できる
• 動的型付け
• イベントドリブン
• オブジェクト指向
動的型付け
• 実行されるまでデータの型がわからない
• 一般的に、動的型付け言語は遅い
• が、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
JavaScript の特徴
• DOMを操作できる
• 動的型付け
• イベントドリブン
• オブジェクト指向
イベントドリブン
• イベントが起こったら処理が実行される
• ○○ を したときに △△ する
• 例: 送信ボタン を クリック した時に

   バリデーション をする
JavaScript の特徴
• DOMを操作できる
• 動的型付け
• イベントドリブン
• オブジェクト指向
オブジェクト指向
• すべてのデータはオブジェクト
• 関数ですら第一級オブジェクト
• 関数を変数に代入できる
• 関数に関数を渡せる
• えっ でもJavaScriptってクラスないじゃん
• オブジェクトリテラル クラス
ここまでで何か質問は

( ・ ・)ノ
JavaScriptの文法
変数
• var文 を使うと宣言できる
• $ 付けなくていい
• 宣言されてない変数にも代入できる
• グローバルスコープになってしまう
• あまりやらないほうがいい
変数のスコープ
• 外側 → 内側: 見えない
• 内側 → 外側: 見える
データ型いろいろ
データ型 意味 例
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
オブジェクトリテラル
• RubyやPerlでいうところのハッシュ
• 配列や関数も入れることができる
関数
• return は省略できない
• 引数のデフォルト値は指定できない
演算子いろいろ
演算子名 例
代入演算子 = += -= *= /= %= $= ^= ¦= など
比較演算子 == != === !== > >= < <=
算術演算子 + - * / % ++ ̶ -
ビット演算子 & ¦ ^ << >> >>>
論理演算子 && ¦¦ !
文字列演算子 + +=
特殊演算子 delete in new this typeof など
文字列演算子
• JavaScriptの文字列連結は「 + 」!!
• 型に注意
条件式
• 後置構文は使えない( 式 if 条件; みたいなやつ )
• () や {} は省略できない
繰り返し(1)
• break でループ終了
• continue で次のループ
繰り返し(2)
• オブジェクトリテラルの要素を順番に取り出す
• foreach と同じ感覚で使うと痛い目見る
DOM関連
windowオブジェクト
プロパティ例 意味
window.alert( msg ) アラートを表示
window.confirm( msg ) 確認ダイアログを表示
window.document ドキュメントオブジェクト(後述)
• ウィンドウに関するあらゆるプロパティが

取得できる
• 「window. 」は省略できる
documentオブジェクト
• html文書そのものを表すオブジェクト
• ここからDOMツリーにアクセスできる
プロパティ例 意味
document.title ページタイトル
document.cookie クッキーデータ
document.getElement

ById( id )
指定された id を持つ

要素オブジェクトを返す
document.getElements

ByClassName( class )
指定された class を持つ

要素オブジェクトリストを返す
(;́ー`) ふぅ…
とりあえず実行してみよう
実行のしかた
• コンソールで実行
• Chrome or Firefox
• 右クリック → 要素の検証 → コンソール
• htmlファイルから呼び出し
• <script type= ∼∼.js ></script>
• htmlファイルに埋め込み
デバッグ方法
• ブラウザのコンソールで試してみる
• スクリプトに console.log() を埋め込む
• スクリプトに debugger を埋め込む
BMIを求めるスクリプト
• BMI: ボディマス指数(Body Mass Index)
• ヒトの肥満度を表す体格指数
ワーク
BMI =
Weight(kg)
Height(m)2
BMIを求めるスクリプト
• http://bit.ly/js-kotohajime

の「ワーク」ページから

サンプルコードをダウンロード
ワーク
やること
ワーク
• フォームに入力された値を取得する
• BMI指数を計算する
• 小数点第2位で四捨五入する
• 計算結果を表示する
∼∼ 昼休憩 ∼∼
jQuery とは
• JavaScriptライブラリ
• JavaScriptをより簡潔に記述できる
• 特にDOM操作やAjaxがやりやすい
jQuery とは
• バージョン 1系 と 2系 がある
• 1系: IE8対応
• 2系: IE8非対応・高速
jQuery 関数
• jQuery( セレクタ )
• $( セレクタ ) とも書ける
• CSSライクなセレクタで様々なDOMを選択できる
jQueryでDOM操作
新しい div 要素を生成して

.parent クラスを持つ要素の中に追加
jQueryでDOM操作
偶数番目の tr要素 に

highlightクラス を追加/削除
jQueryでイベント駆動
データ属性を操作
• HTML5のカスタムデータ属性
• 要素そのものに任意のデータを

紐付けることができる
ゲーム作ろう( ́ー`)
ワーク
エイトクイーン
• クイーンを8体ならべるゲーム
• どのクイーンも他のクイーンを取れない位置に

置かないといけない
ワーク
エイトクイーン
ワーク
サンプルコードの仕様
ワーク
.queen
クイーンを

置いたマス
.able

クイーンを

置けるマス
.disable

クイーンを

置けないマス
やること
• クリックしたマスを queen クラスにする
• 置いたクイーンの 縦・横・斜め を

disable クラスにする
• ゲームクリアしていたら「おめでとう!」的な

アラートを表示する
Ajax
Ajax とは
• Asynchronous JavaScript + XML
• 非同期通信
• jQueryを使うと便利
JSON
• ほと はここで力尽きたようだ
クロスドメイン制約
オブジェクト指向の話
まとめ
• JavaScriptはWeb開発では必須知識
• 仕組みがわかっていると安全にインターネットを

使える
• JavaScriptは簡単に書けるからこそ

スパゲティコードになりがち
• jQueryはほどほどに活用しよう

More Related Content

What's hot

メディア芸術基礎 II jQuery入門
メディア芸術基礎 II jQuery入門メディア芸術基礎 II jQuery入門
メディア芸術基礎 II jQuery入門
Atsushi Tadokoro
 
Scc2014 :jQueryの仕組みを完璧に理解する
Scc2014 :jQueryの仕組みを完璧に理解するScc2014 :jQueryの仕組みを完璧に理解する
Scc2014 :jQueryの仕組みを完璧に理解する
Jun Futakawa
 
Buildinsider OFFLINE TypeScriptの基礎から実践・利用事例まで
Buildinsider OFFLINE TypeScriptの基礎から実践・利用事例までBuildinsider OFFLINE TypeScriptの基礎から実践・利用事例まで
Buildinsider OFFLINE TypeScriptの基礎から実践・利用事例まで
Masahiro Wakame
 
TypeScript 1.0 オーバービュー
TypeScript 1.0 オーバービューTypeScript 1.0 オーバービュー
TypeScript 1.0 オーバービュー
Akira Inoue
 
Backbonejs @BuildInsiderOffline #1
Backbonejs @BuildInsiderOffline #1Backbonejs @BuildInsiderOffline #1
Backbonejs @BuildInsiderOffline #1
daisuke shimizu
 
backbone.jsの使用例 その1
backbone.jsの使用例 その1backbone.jsの使用例 その1
backbone.jsの使用例 その1
Makoto Haruyama
 

What's hot (20)

はじめよう Backbone.js
はじめよう Backbone.jsはじめよう Backbone.js
はじめよう Backbone.js
 
ノンプログラマーでも明日から使えるJavaScript簡単プログラム 先生:柳井 政和
ノンプログラマーでも明日から使えるJavaScript簡単プログラム 先生:柳井 政和ノンプログラマーでも明日から使えるJavaScript簡単プログラム 先生:柳井 政和
ノンプログラマーでも明日から使えるJavaScript簡単プログラム 先生:柳井 政和
 
メディア芸術基礎 II jQuery入門
メディア芸術基礎 II jQuery入門メディア芸術基礎 II jQuery入門
メディア芸術基礎 II jQuery入門
 
JavaScriptの落とし穴
JavaScriptの落とし穴JavaScriptの落とし穴
JavaScriptの落とし穴
 
覚醒!JavaScript
覚醒!JavaScript覚醒!JavaScript
覚醒!JavaScript
 
⑳CSSでアニメーション!その1
⑳CSSでアニメーション!その1⑳CSSでアニメーション!その1
⑳CSSでアニメーション!その1
 
⑮jQueryをおぼえよう!その1
⑮jQueryをおぼえよう!その1⑮jQueryをおぼえよう!その1
⑮jQueryをおぼえよう!その1
 
JavaScriptで出来る、あんなことこんなこと
JavaScriptで出来る、あんなことこんなことJavaScriptで出来る、あんなことこんなこと
JavaScriptで出来る、あんなことこんなこと
 
Angular js or_backbonejs
Angular js or_backbonejsAngular js or_backbonejs
Angular js or_backbonejs
 
忙しい人のためのBackbone.jsとAngular.js入門
忙しい人のためのBackbone.jsとAngular.js入門忙しい人のためのBackbone.jsとAngular.js入門
忙しい人のためのBackbone.jsとAngular.js入門
 
WebデザイナのためのjQuery入門。
WebデザイナのためのjQuery入門。WebデザイナのためのjQuery入門。
WebデザイナのためのjQuery入門。
 
JavaScript Basic 01
JavaScript Basic 01JavaScript Basic 01
JavaScript Basic 01
 
Scc2014 :jQueryの仕組みを完璧に理解する
Scc2014 :jQueryの仕組みを完璧に理解するScc2014 :jQueryの仕組みを完璧に理解する
Scc2014 :jQueryの仕組みを完璧に理解する
 
Backbone.js入門
Backbone.js入門Backbone.js入門
Backbone.js入門
 
Buildinsider OFFLINE TypeScriptの基礎から実践・利用事例まで
Buildinsider OFFLINE TypeScriptの基礎から実践・利用事例までBuildinsider OFFLINE TypeScriptの基礎から実践・利用事例まで
Buildinsider OFFLINE TypeScriptの基礎から実践・利用事例まで
 
TypeScript 1.0 オーバービュー
TypeScript 1.0 オーバービューTypeScript 1.0 オーバービュー
TypeScript 1.0 オーバービュー
 
Backbonejs @BuildInsiderOffline #1
Backbonejs @BuildInsiderOffline #1Backbonejs @BuildInsiderOffline #1
Backbonejs @BuildInsiderOffline #1
 
backbone.jsの使用例 その1
backbone.jsの使用例 その1backbone.jsの使用例 その1
backbone.jsの使用例 その1
 
実践Backbone.Marionette 現場の悩みと解決まで
実践Backbone.Marionette 現場の悩みと解決まで実践Backbone.Marionette 現場の悩みと解決まで
実践Backbone.Marionette 現場の悩みと解決まで
 
AngularJS+TypeScript - AngularJS 1周年記念勉強会
AngularJS+TypeScript - AngularJS 1周年記念勉強会AngularJS+TypeScript - AngularJS 1周年記念勉強会
AngularJS+TypeScript - AngularJS 1周年記念勉強会
 

Similar to JavaScriptことはじめ

WordBench Kobe jQueryどうでしょう
WordBench Kobe jQueryどうでしょうWordBench Kobe jQueryどうでしょう
WordBench Kobe jQueryどうでしょう
Hishikawa Takuro
 

Similar to JavaScriptことはじめ (20)

モダンJavaScript環境構築一歩目
モダンJavaScript環境構築一歩目モダンJavaScript環境構築一歩目
モダンJavaScript環境構築一歩目
 
T51 jQueryで学ぶJavaScriptでのフロント開発~ASP.NET MVC3もあるよっ!~
T51 jQueryで学ぶJavaScriptでのフロント開発~ASP.NET MVC3もあるよっ!~T51 jQueryで学ぶJavaScriptでのフロント開発~ASP.NET MVC3もあるよっ!~
T51 jQueryで学ぶJavaScriptでのフロント開発~ASP.NET MVC3もあるよっ!~
 
とあるFlashの自動生成
とあるFlashの自動生成とあるFlashの自動生成
とあるFlashの自動生成
 
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
JavaScriptCore.framework の普通な使い方 #cocoa_kansaiJavaScriptCore.framework の普通な使い方 #cocoa_kansai
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
 
Inside frogc in Dart
Inside frogc in DartInside frogc in Dart
Inside frogc in Dart
 
JavaScriptと共に歩いて行く決意をした君へ
JavaScriptと共に歩いて行く決意をした君へJavaScriptと共に歩いて行く決意をした君へ
JavaScriptと共に歩いて行く決意をした君へ
 
Web制作勉強会 #2
Web制作勉強会 #2Web制作勉強会 #2
Web制作勉強会 #2
 
Clojure
ClojureClojure
Clojure
 
Web development fundamental_v2
Web development fundamental_v2Web development fundamental_v2
Web development fundamental_v2
 
javascript を Xcode でテスト
javascript を Xcode でテストjavascript を Xcode でテスト
javascript を Xcode でテスト
 
ng-japan 2015 TypeScript+AngularJS 1.3
ng-japan 2015 TypeScript+AngularJS 1.3ng-japan 2015 TypeScript+AngularJS 1.3
ng-japan 2015 TypeScript+AngularJS 1.3
 
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
 
これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)
これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)
これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)
 
お手軽Ajaxアプリケーションの作り方
お手軽Ajaxアプリケーションの作り方お手軽Ajaxアプリケーションの作り方
お手軽Ajaxアプリケーションの作り方
 
インパス! あのこれダメッス! ~Javaコードレビューの指摘ポイント10選~
インパス! あのこれダメッス! ~Javaコードレビューの指摘ポイント10選~インパス! あのこれダメッス! ~Javaコードレビューの指摘ポイント10選~
インパス! あのこれダメッス! ~Javaコードレビューの指摘ポイント10選~
 
Web development fundamental
Web development fundamentalWeb development fundamental
Web development fundamental
 
サーバサイドエンジニアが 1年間まじめにSPAやってみた
サーバサイドエンジニアが 1年間まじめにSPAやってみたサーバサイドエンジニアが 1年間まじめにSPAやってみた
サーバサイドエンジニアが 1年間まじめにSPAやってみた
 
Startup JavaScript
Startup JavaScriptStartup JavaScript
Startup JavaScript
 
WordBench Kobe jQueryどうでしょう
WordBench Kobe jQueryどうでしょうWordBench Kobe jQueryどうでしょう
WordBench Kobe jQueryどうでしょう
 
Antのススメ
AntのススメAntのススメ
Antのススメ
 

More from Yuki Ishikawa

More from Yuki Ishikawa (20)

Introduction to GPU Programming in Python
Introduction to GPU Programming in PythonIntroduction to GPU Programming in Python
Introduction to GPU Programming in Python
 
新婚旅行を支える技術
新婚旅行を支える技術新婚旅行を支える技術
新婚旅行を支える技術
 
ラマダーン入門
ラマダーン入門ラマダーン入門
ラマダーン入門
 
ステージング環境のつくりかた
ステージング環境のつくりかたステージング環境のつくりかた
ステージング環境のつくりかた
 
マッカレル de おうちハック
マッカレル de おうちハックマッカレル de おうちハック
マッカレル de おうちハック
 
スタートアップのくせになまいきだ
スタートアップのくせになまいきだスタートアップのくせになまいきだ
スタートアップのくせになまいきだ
 
JavaScript over HTTP/2
JavaScript over HTTP/2JavaScript over HTTP/2
JavaScript over HTTP/2
 
コンポーネント時代の CSS 設計
コンポーネント時代の CSS 設計コンポーネント時代の CSS 設計
コンポーネント時代の CSS 設計
 
React+fluxを導入した話
React+fluxを導入した話React+fluxを導入した話
React+fluxを導入した話
 
闇の魔術に対する防衛術
闇の魔術に対する防衛術闇の魔術に対する防衛術
闇の魔術に対する防衛術
 
サーバを運用する時代は終わった
サーバを運用する時代は終わったサーバを運用する時代は終わった
サーバを運用する時代は終わった
 
Apple に依存する僕の生存戦略
Apple に依存する僕の生存戦略Apple に依存する僕の生存戦略
Apple に依存する僕の生存戦略
 
gulp芸
gulp芸gulp芸
gulp芸
 
アニメーションしたい
アニメーションしたいアニメーションしたい
アニメーションしたい
 
趣きのある Bot
趣きのある Bot趣きのある Bot
趣きのある Bot
 
Bot に家計を任せる
Bot に家計を任せるBot に家計を任せる
Bot に家計を任せる
 
時をかけるほと
時をかけるほと時をかけるほと
時をかけるほと
 
まだ DOM 操作で消耗してるの?
まだ DOM 操作で消耗してるの?まだ DOM 操作で消耗してるの?
まだ DOM 操作で消耗してるの?
 
( ゚∀゚)o彡° Flux! Flux!
( ゚∀゚)o彡° Flux! Flux!( ゚∀゚)o彡° Flux! Flux!
( ゚∀゚)o彡° Flux! Flux!
 
peco活用術
peco活用術peco活用術
peco活用術
 

JavaScriptことはじめ