SlideShare a Scribd company logo
1 of 90
Download to read offline
今さら聞けない!
Webデザイナーのための
プログラミング講座
AED LABO 2015.1.25. sun.
TOSHIYUKI TAKAHASHI (GRAPHIC ARTS UNIT )
“コンピュータが行うべき処理を順序立てて記述したもの”
出典:プログラムとは 〔 コンピュータプログラム 〕 【 program 】 - 意味/解説/説明/定義 : IT用語辞典(http://e-words.jp/w/E38397E383ADE382B0E383A9E383A0.html)
プログラムとは
1つめの処理 実行
2つめの処理
3つめの処理
4つめの処理
……
実行
実行
実行
あらかじめ決められた処理を上から順番に実行していく
プログラムとは
3つめの処理-A
……
4つめの処理-A実行
実行
1つめの処理 実行
2つめの処理 実行
条件A B
プログラムとは
実行
実行
3つめの処理-B
4つめの処理-B
……
1つめの処理 実行
2つめの処理 実行
条件A B
プログラムとは
3つめの処理-A
……
4つめの処理-A
1つめの処理
2つめの処理
3つめの処理-B
4つめの処理-B
……条件によって処理を振り分ける
条件A B
プログラムとは
冷蔵庫を開ける
中身を確認する
牛肉がある 豚肉がある 鶏肉がある
ビーフステーキ ポークソテー グリルチキン
買いに行く肉があるか
NO
YES
夕食のメニューを決めるときの流れ
画像出典:川崎市:カモ診断テスト(http://www.city.kawasaki.jp/280/page/0000056910.html)
診断チャートや占いチャートは一種の「プログラム」と言える
我々が話す言葉が国によって異なるように
プログラム言語にもいくつかの種類があります
Web Design (Front End) JavaScript / PHP …
Web Development Ruby / Python / Perl / Scala …
Application Development Java / C++ / Objective-C / Swift …
主なプログラム言語の種類
もちろん、この他にもたくさんのプログラム言語が存在します
ウェブデザイナー的に馴染みがあるのはココ
主なプログラム言語の種類
Web Design (Front End) JavaScript / PHP …
Web Development Ruby / Python / Perl / Scala
Application Development Java / C++ / Objective-C / Swift
言語の仕様や文法などを覚えるのも大切だが、
処理の考え方(アルゴリズム)を覚える方が大切
プログラム的な思考をするには
妻「牛乳を1パック買ってきて。卵があったら6つお願い」
しばらくして、夫が《牛乳を6パック》買って帰宅
妻「なんで牛乳を6パックも買ってきたのよ」
夫「だって卵があったから」
ある妻がプログラマーの夫に買い物を頼んだら……
お前は一体何を言っているのだ
1.
2.
3.
4.
5.
6.
7.
var 牛乳の個数;
if( 卵 ) {
牛乳の個数 = 6;
} else {
牛乳の個数 = 1;
}
牛乳を買う( 牛乳の個数 );
※JavaScriptの場合
妻のお願いは夫にはこう聞こえている
コードを書くこと
プログラム的な思考をするには
プログラム
アルゴリズム(仕組みや手順)
を考えること
プログラム
プログラム的な思考をするには
Hands on
やってみよう
1.実行環境
• console.log
2.ダイアログ表示
• alert
• confirm
• prompt
3.変数
4.データ型
5.演算子
• 算術演算子
• 代入演算子
• 比較演算子
• 論理演算子
11.関数
• function
• 引数
• 戻り値
• 即時関数
• 無名関数
12.変数のスコープ
6.配列
7.連想配列(ハッシュ)
8.条件分岐
• if
• if … else
• if … else if
• 比較演算子
• switch
9.繰り返し
• while
• do … while
• for
• for … in
今日やりたいこと
ウェブブラウザ • Google Chrome、Safari
エディタ • お好きなもの(UTF-8を扱えるもの)
• デモはSublime Textを使用
コードを書く場所 • HTMLの<script> 要素内
• 外部jsファイル
言語 • JavaScript
実行環境
console.log()
デバッガの Web コンソールにメッセージを出力
Google Chrome:表示 → 開発/管理 → JavaScriptコンソール
Safari:開発 → エラーコンソールを表示
Firefox:ツール → Web開発 → Webコンソール
IE:[F12]で開発者ツールを開き、[コンソール]タブを選択
実行環境
Show dialog box
ダイアログボックス表示
alert()
警告ダイアログを表示
ダイアログボックス表示
confirm()
確認ダイアログを表示
ダイアログボックス表示
prompt()
文字入力可能なダイアログを表示
ダイアログボックス表示
Variable
変数
値を自由に入れ替えできる入れ物
?
100
"あいう"
true
変数
変数
変数を最初に使うときは「var」で宣言する
var 変数名
変数
変数の中に値を入れるには「=」を使う
変数名 = 値
このイコールは「代入演算子」という
代入
変数
Data type
データ型
データ型
データには「型」がある
データ型
文字のこと
シングルクオーテーションかダブルクオーテーションで括る
String 型
文字列
データ型
数字のこと
JavaScriptでは整数も小数(浮動小数点)も区別しない
Number 型
数値
データ型
true(真)、false(偽)のどちらか
主に条件判定などで使う
boolean 型
論理値
Expressions and operators
演算子
数値の計算に使う
算術演算子
演算子
変数に値を代入するときに使う
代入演算子
演算子
複数の対象を比較するときに使う
比較演算子
演算子
条件の真偽をするときに使う
論理演算子
演算子
Array
配列
複数の変数を1セットにしたようなもの
0
値
値
配列
1 2 3 4
値
値
値
変数 変数 変数 変数 変数
配列
最初に使うときは「new Array()」で作成する
変数名 = new Array()
配列
このように省略して書くこともできる
変数名 = []
new Array()と同じ
配列
値を代入するときは変数名に[番号]を付ける
変数名[n] = 値
この番号のことをキーと呼ぶ
代入
配列
Associative array
連想配列
番号ではなくキーワードで管理する配列
name
"山田太郎"
連想配列
age sex height weight
変数 変数 変数 変数 変数
25
"男"
170
60
連想配列
最初に使うときは「new Object()」で作成する
変数名 = new Object()
連想配列
変数名 = {}
このように省略して書くこともできる
new Object()と同じ
連想配列
変数名["key"] = 値
変数名.key = 値
値を代入するときは変数名に[”キー"]を付ける
または、変数名にドット区切りでキーを指定してもOK
代入
代入
連想配列
Conditional branch
条件分岐
if
もっとも基本的な条件分岐
条件分岐
if ( 条件 ) {
条件が真のときの処理
}
条件分岐
if … else
2パターンを分岐する
条件分岐
if ( 条件 ) {
条件が真のときの処理
} else {
条件が偽ときの処理
}
条件分岐
if … else if
3つ以上のパターンを分岐する
条件分岐
if( 条件A ){
条件Aが真のときの処理
} else if( 条件B ) {
条件Bが真ときの処理
} else {
すべてが偽ときの処理
}
条件分岐
switch
変数の値によって処理を分岐
条件分岐
switch( 変数 ){
case A :
変数の値がAのときの処理
case B :
変数の値がBのときの処理
default :
どれにも当てはまらないときの処理
}
条件分岐
Repeat
繰り返し
while
条件を満たしている間繰り返す
繰り返し
while ( 条件 ) {
繰り返す処理
}
この条件を満たしている間ずっと繰り返される
繰り返し
do … while
条件を満たしている間繰り返す(最低1回は実行する)
繰り返し
do {
繰り返す処理
} while ( 条件 )
無条件に1回だけは実行
あとはこの条件を満たしている間ずっと繰り返される
繰り返し
for
一定回数の処理を繰り返す
繰り返し
for ( var i = 0; i < n; i++ ) {
繰り返す処理
}
ここに繰り返す回数を指定する
繰り返し
for … in
配列を走査する(配列要素の個数分繰り返す)
繰り返し
for ( var 変数名 in 配列名 ) {
繰り返す処理
}
キーを格納するための変数名を指定
走査したい配列
繰り返し
Function
関数
よく使う処理に名前をつけていつでも呼び出せるようにする
「Hello!」と
表示する処理
関数名「hello」hello()
Hello!
hello()
hello()
Hello!
Hello!
関数
function 関数名() {
処理
}
「function」に続いて関数名を指定する
関数
引数
実行側から関数に渡す値
関数
関数に対して任意のデータを渡す
変数
「message」
を表示する処理
関数名「talk(message)」talk("Hello")
Hello
talk("Hey")
talk("やあ!")
Hey
やあ!
関数
関数名のあとの()内に引数名を指定しておく
function 関数名( 引数名 ) {
処理
}
ここに引数名を指定しておく
関数
複数の引数を指定することも可能
function 関数名( 引数1, 引数2, … ) {
処理
}
カンマで区切って複数指定
関数
戻り値
関数から実行側に返す値
関数
実行側に対して関数から任意のデータを返す
戻り値に
「Hello」という
文字列を指定
関数名「get()」
get()
"Hello"
get()
"Hello"
get() "Hello"
関数
「return」に続いて戻す値を指定する
function 関数名() {
return 戻り値
} 実行側に戻す値
関数
「return」は関数を強制終了するため、以降の処理は実行されない
function 関数名() {
処理A
return
処理B
} 処理Bは実行されない
関数
Scope of variables
変数のスコープ
変数は「var」で宣言する位置で有効な範囲が異なる
var 変数名
変数のスコープ
var name = "Taro"
function test() {
console.log(name);
}
test();
console.log(name);
関数の外側で宣言された変数は全体で参照できる
変数のスコープ
var name = "Taro"
function test() {
console.log(name);
}
test();
console.log(name);
変数のスコープ
var name = "Taro"
function test() {
console.log(name);
}
test();
console.log(name);
変数のスコープ
var name = "Taro"
function test() {
console.log(name);
}
test();
console.log(name);
Taro
変数のスコープ
var name = "Taro"
function test() {
console.log(name);
}
test();
console.log(name); Taro
変数のスコープ
function test() {
var name = "Taro"
console.log(name);
}
test();
console.log(name);
関数の中で宣言された変数はその関数内でしか参照できない
変数のスコープ
function test() {
var name = "Taro"
console.log(name);
}
test();
console.log(name);
変数のスコープ
function test() {
var name = "Taro"
console.log(name);
}
test();
console.log(name);
変数のスコープ
function test() {
var name = "Taro"
console.log(name);
}
test();
console.log(name);
Taro
変数のスコープ
function test() {
var name = "Taro"
console.log(name);
}
test();
console.log(name); Error !
変数のスコープ
function test() {
var name = "Taro"
console.log(name);
return name;
}
var user = test();
console.log(user); Taro
戻り値を使う
変数のスコープ

More Related Content

What's hot

error handling using expected
error handling using expectederror handling using expected
error handling using expectedAkira Takahashi
 
Xtend - Javaの未来を今すぐ使う
Xtend - Javaの未来を今すぐ使うXtend - Javaの未来を今すぐ使う
Xtend - Javaの未来を今すぐ使うTatsumi Naganuma
 
Ekmett勉強会発表資料
Ekmett勉強会発表資料Ekmett勉強会発表資料
Ekmett勉強会発表資料時響 逢坂
 
そしてjsの基礎へ戻る#4
そしてjsの基礎へ戻る#4そしてjsの基礎へ戻る#4
そしてjsの基礎へ戻る#4Shingo Inoue
 
Ekmett勉強会発表資料
Ekmett勉強会発表資料Ekmett勉強会発表資料
Ekmett勉強会発表資料時響 逢坂
 
JavaScriptクイックスタート
JavaScriptクイックスタートJavaScriptクイックスタート
JavaScriptクイックスタートShumpei Shiraishi
 
すごいConstたのしく使おう!
すごいConstたのしく使おう!すごいConstたのしく使おう!
すごいConstたのしく使おう!Akihiro Nishimura
 
Javaデザインパターン入門【第3回】
Javaデザインパターン入門【第3回】Javaデザインパターン入門【第3回】
Javaデザインパターン入門【第3回】Yukiko Kato
 
Swift 3 で新しくなったところ - 表面から見えにくいところを中心に紹介 #ISAOcorp
Swift 3 で新しくなったところ - 表面から見えにくいところを中心に紹介 #ISAOcorpSwift 3 で新しくなったところ - 表面から見えにくいところを中心に紹介 #ISAOcorp
Swift 3 で新しくなったところ - 表面から見えにくいところを中心に紹介 #ISAOcorpTomohiro Kumagai
 
Javaプログラミング入門【第2回】
Javaプログラミング入門【第2回】Javaプログラミング入門【第2回】
Javaプログラミング入門【第2回】Yukiko Kato
 
クロージャデザインパターン
クロージャデザインパターンクロージャデザインパターン
クロージャデザインパターンMoriharu Ohzu
 
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020Fujio Kojima
 
Clojure programming-chapter-2
Clojure programming-chapter-2Clojure programming-chapter-2
Clojure programming-chapter-2Masao Kato
 
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第5回 「配列 と レコード 」
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第5回 「配列 と レコード 」【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第5回 「配列 と レコード 」
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第5回 「配列 と レコード 」Kaz Aiso
 
C++0x 言語の未来を語る
C++0x 言語の未来を語るC++0x 言語の未来を語る
C++0x 言語の未来を語るAkira Takahashi
 
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~Fujio Kojima
 
Van laarhoven lens
Van laarhoven lensVan laarhoven lens
Van laarhoven lensNaoki Aoyama
 

What's hot (20)

error handling using expected
error handling using expectederror handling using expected
error handling using expected
 
初めてのSTL
初めてのSTL初めてのSTL
初めてのSTL
 
Xtend - Javaの未来を今すぐ使う
Xtend - Javaの未来を今すぐ使うXtend - Javaの未来を今すぐ使う
Xtend - Javaの未来を今すぐ使う
 
Ekmett勉強会発表資料
Ekmett勉強会発表資料Ekmett勉強会発表資料
Ekmett勉強会発表資料
 
そしてjsの基礎へ戻る#4
そしてjsの基礎へ戻る#4そしてjsの基礎へ戻る#4
そしてjsの基礎へ戻る#4
 
Ekmett勉強会発表資料
Ekmett勉強会発表資料Ekmett勉強会発表資料
Ekmett勉強会発表資料
 
Introduction Xtend
Introduction XtendIntroduction Xtend
Introduction Xtend
 
JavaScriptクイックスタート
JavaScriptクイックスタートJavaScriptクイックスタート
JavaScriptクイックスタート
 
関数
関数関数
関数
 
すごいConstたのしく使おう!
すごいConstたのしく使おう!すごいConstたのしく使おう!
すごいConstたのしく使おう!
 
Javaデザインパターン入門【第3回】
Javaデザインパターン入門【第3回】Javaデザインパターン入門【第3回】
Javaデザインパターン入門【第3回】
 
Swift 3 で新しくなったところ - 表面から見えにくいところを中心に紹介 #ISAOcorp
Swift 3 で新しくなったところ - 表面から見えにくいところを中心に紹介 #ISAOcorpSwift 3 で新しくなったところ - 表面から見えにくいところを中心に紹介 #ISAOcorp
Swift 3 で新しくなったところ - 表面から見えにくいところを中心に紹介 #ISAOcorp
 
Javaプログラミング入門【第2回】
Javaプログラミング入門【第2回】Javaプログラミング入門【第2回】
Javaプログラミング入門【第2回】
 
クロージャデザインパターン
クロージャデザインパターンクロージャデザインパターン
クロージャデザインパターン
 
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020
 
Clojure programming-chapter-2
Clojure programming-chapter-2Clojure programming-chapter-2
Clojure programming-chapter-2
 
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第5回 「配列 と レコード 」
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第5回 「配列 と レコード 」【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第5回 「配列 と レコード 」
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第5回 「配列 と レコード 」
 
C++0x 言語の未来を語る
C++0x 言語の未来を語るC++0x 言語の未来を語る
C++0x 言語の未来を語る
 
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
 
Van laarhoven lens
Van laarhoven lensVan laarhoven lens
Van laarhoven lens
 

Similar to Aedlabo program 20150125

初心者講習会資料(Osaka.r#6)
初心者講習会資料(Osaka.r#6)初心者講習会資料(Osaka.r#6)
初心者講習会資料(Osaka.r#6)Masahiro Hayashi
 
PHP, JavaScriptプログラマのためのC#入門
PHP, JavaScriptプログラマのためのC#入門PHP, JavaScriptプログラマのためのC#入門
PHP, JavaScriptプログラマのためのC#入門Tomo Mizoe
 
Gura プログラミング言語の紹介
Gura プログラミング言語の紹介Gura プログラミング言語の紹介
Gura プログラミング言語の紹介Yutaka Saito
 
Ⅰ. Rの基礎 2017
Ⅰ. Rの基礎 2017Ⅰ. Rの基礎 2017
Ⅰ. Rの基礎 2017wada, kazumi
 
初心者講習会資料(Osaka.R#7)
初心者講習会資料(Osaka.R#7)初心者講習会資料(Osaka.R#7)
初心者講習会資料(Osaka.R#7)Masahiro Hayashi
 
Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3Ransui Iso
 
新しい並列for構文のご提案
新しい並列for構文のご提案新しい並列for構文のご提案
新しい並列for構文のご提案yohhoy
 
関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)啓 小笠原
 
ノンプログラマーでも明日から使えるJavaScript簡単プログラム 先生:柳井 政和
ノンプログラマーでも明日から使えるJavaScript簡単プログラム 先生:柳井 政和ノンプログラマーでも明日から使えるJavaScript簡単プログラム 先生:柳井 政和
ノンプログラマーでも明日から使えるJavaScript簡単プログラム 先生:柳井 政和schoowebcampus
 
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2Masatoshi Tada
 
わからないまま使っている?UE4 の AI の基本的なこと
わからないまま使っている?UE4 の AI の基本的なことわからないまま使っている?UE4 の AI の基本的なこと
わからないまま使っている?UE4 の AI の基本的なことrarihoma
 
初心者講習会資料(Osaka.R#5)
初心者講習会資料(Osaka.R#5)初心者講習会資料(Osaka.R#5)
初心者講習会資料(Osaka.R#5)Masahiro Hayashi
 

Similar to Aedlabo program 20150125 (20)

初心者講習会資料(Osaka.r#6)
初心者講習会資料(Osaka.r#6)初心者講習会資料(Osaka.r#6)
初心者講習会資料(Osaka.r#6)
 
PHP, JavaScriptプログラマのためのC#入門
PHP, JavaScriptプログラマのためのC#入門PHP, JavaScriptプログラマのためのC#入門
PHP, JavaScriptプログラマのためのC#入門
 
Gura プログラミング言語の紹介
Gura プログラミング言語の紹介Gura プログラミング言語の紹介
Gura プログラミング言語の紹介
 
Introduction of Python
Introduction of PythonIntroduction of Python
Introduction of Python
 
Ⅰ. Rの基礎 2017
Ⅰ. Rの基礎 2017Ⅰ. Rの基礎 2017
Ⅰ. Rの基礎 2017
 
初心者講習会資料(Osaka.R#7)
初心者講習会資料(Osaka.R#7)初心者講習会資料(Osaka.R#7)
初心者講習会資料(Osaka.R#7)
 
Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3
 
pi-6. 繰り返し
pi-6. 繰り返しpi-6. 繰り返し
pi-6. 繰り返し
 
たのしい関数型
たのしい関数型たのしい関数型
たのしい関数型
 
[xDNCL] 配布資料
[xDNCL] 配布資料[xDNCL] 配布資料
[xDNCL] 配布資料
 
新しい並列for構文のご提案
新しい並列for構文のご提案新しい並列for構文のご提案
新しい並列for構文のご提案
 
関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)
 
C#6.0の新機能紹介
C#6.0の新機能紹介C#6.0の新機能紹介
C#6.0の新機能紹介
 
秀スクリプトの話
秀スクリプトの話秀スクリプトの話
秀スクリプトの話
 
ノンプログラマーでも明日から使えるJavaScript簡単プログラム 先生:柳井 政和
ノンプログラマーでも明日から使えるJavaScript簡単プログラム 先生:柳井 政和ノンプログラマーでも明日から使えるJavaScript簡単プログラム 先生:柳井 政和
ノンプログラマーでも明日から使えるJavaScript簡単プログラム 先生:柳井 政和
 
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
 
わからないまま使っている?UE4 の AI の基本的なこと
わからないまま使っている?UE4 の AI の基本的なことわからないまま使っている?UE4 の AI の基本的なこと
わからないまま使っている?UE4 の AI の基本的なこと
 
Tokyor23 doradora09
Tokyor23 doradora09Tokyor23 doradora09
Tokyor23 doradora09
 
Java勉強会2017.3.17
Java勉強会2017.3.17Java勉強会2017.3.17
Java勉強会2017.3.17
 
初心者講習会資料(Osaka.R#5)
初心者講習会資料(Osaka.R#5)初心者講習会資料(Osaka.R#5)
初心者講習会資料(Osaka.R#5)
 

Aedlabo program 20150125