SlideShare a Scribd company logo
1 of 52
ふみコード 石井将文
2016/12/17
JavaとJavaScriptは
メロンとメロンパン
ぐらい違う‼
-メロンはメロンと分かった上で、
メロンパンをおいしくいただくコツ-
対象者
• C言語系言語の基本文法(if,while,配列,関数)はわかる
&&
• Javaを習ったことはある
||
• JSを
• 使いたい
||
• Web制作で使わざるを得ない
||
• 単に興味がある!
Wikipedia /メロンパン
Wikipedia /メロンパン
Wikipedia / JavaScript
名前にあやかっただけ♡
ウッカリ\(^o^)/チャッカリ
Wikipedia / JavaScript
名前にあやかっただけ♡
ウッカリ\(^o^)/チャッカリ
JavaとJavaScriptは
全
このシリーズでは、
JavaとJavaScriptの
一体何が違うのか説明した上で、
JavaScriptのうまみを
たっぷりご紹介します。
JavaScriptはWeb開発者にとって
避けられない関門である一方、
とっつきずらい言語のようです。
正しい味わい方を知って、
一緒においしくいただきましょう。
然違う言語です。ッ
違いリスト
KANARI、違う。
違いリスト
特徴
実行環境 JavaVM
0億のデバイスで走る
ブラウザ
とは限らないけど。
コンパイラ/
インタープリタ
コンパイラ言語
javacでコンパイル
インタープリタ言語
Scriptとつく所以
変数の型付け 静的型付け
int num = 0;
動的型付け
var num = 0;
関数を
値として
扱えない
クソザコ
扱える
(関数型言語)
オブジェクト
指向
クラスベース
用意したハンコでぺったん
プロトタイプベース
その場でつくれる
複数のこと
をやるとき
マルチスレッド
同時に複数やる
シングルスレッド
少しずつ仕事をすすめる
変数の
スコープ
スタックベース スコープオブジェクト連鎖
(クロージャが使える)
うわあ。。。
Java JS
• Androidが今は人気
• Mac, Win, 組み込み
(DVDプレイヤーとか),
• Virtual Machineが
各OSの差異を吸収
• ブラウザ
のために作られたわけだからね。
• ブラウザが各OSの差
異を吸収
• NodeJS
ここ数年でできた。
• 軽量なWebサーバーとし
て活用されている
• Japanameでも使っている
特徴
実行環境 JavaVM
30億のデバイスで走る
ブラウザ
とは限らないけど。
Java JS
Java言語で書く
→javacコマンドでコン
パイル
→実行バイナリ
(.classファイル)ができる
→javaコマンドで実行
JavaScript言語で書く
→htmlの中に書く
→ブラウザで実行
JavaScript言語で書く
→nodeコマンドでjs
ファイルを実行
特徴
コンパイラ/
インタープリタ
コンパイラ言語
javacでコンパイル
インタープリタ言語
Scriptとつく所以
Java JS
• 変数に型がある
• intやらStringやら
• 変数に型がない
• なんでもvar
特徴
変数の型付け 静的型付け
int num = 0;
動的型付け
var num = 0;
Java JS
• インターフェイスを実装した
オブジェクト
• 関数そのものを変数に入れら
れる。
特徴
関数を
値として
扱えない
Java8では扱えるように見
える
扱える
(関数型言語)
Java JS
特徴
オブジェクト
指向
クラスベース
用意したハンコでぺったん
プロトタイプベース
その場でつくれる
Java JS
あらかじめクラスを設計して、それ
をインスタンス化するとオブジェク
トができる。
{}と書くだけでオブジェクトが
できる。
複数の流れを走らせる
• 並列処理の変数共有
問題がでてくる。や
やこしい。
一本の流れの中で、
ちょこちょこ仕事させる
• 変数共有問題なし
• 全ての処理を、時間を
かけずに行うという規
約を守らなければなら
ない。
特徴
複数のこと
をやるとき
マルチスレッド
同時に複数やる
シングルスレッド
少しずつ仕事をすすめる
Java JS
イントロダクション
• 違いリスト
• 基本文法はC言語系
• 出力など基本的な関数
• 名前に気を付けよう!
基本文法はC言語系
出力など基本的な関数
• console.log(“hogehoge”)
• ブラウザのCtrl+Shift+i で開く開発ツールで見れる。
• alert(“fugafuga”);
• ブラウザの動きを一度止める。
• DOMオブジェクト取得
document.getElementById(“id”);
• WORK:それぞれ、jsdo.it でためしてみよう。
JSのオブジェクト指向
JSのオブジェクト指向
• オブジェクト指向とは
• {} はいオブジェクト完成
• JSにおけるオブジェクトの正体
• プロパティアクセスの仕方二種類
[“prop”], .prop
• いろんなオブジェクトの作り方 WORK
• 配列の正体:Keyが主に整数の、lengthプロパ
ティをもつオブジェクト
オブジェクト指向とは
• 主人公→持ち物 でとらえる考え方。
• オブジェクト→プロパティ
• 犬→鼻
• 犬→歩く
• DOMオブジェクト→テキスト
• DOMオブジェクト→子要素の配列
• DOMオブジェクト→検索する
クラスベースの一般的な
オブジェクト指向
• クラスベースオブジェクト指向は、はじめに一
般的なものをつくってインスタンス化する
{} はいオブジェクト完成。
<ハハハ見たか
これがJSの力
我らJSオブジェクト
3兄弟
JSにおけるオブジェクトの正
体
• オブジェクトとはただの連想配列!
• key->value
• ハッシュテーブルともいう
• ※PHPでは、オブジェクトと連想配列は別物
アクセスの仕方二種類
• この二つは全く同じ意味!
• obj[“prop”]
• obj.prop
• プロパティは、増やせる!
いろんな作り方
• オブジェクトリテラル {}
• コンストラクタfunction(後述)
• Class (ES6の機能。シンタックスシュガー)
• WORK
• オブジェクトを定義して、
• プロパティを読み出し、
• 後から追加してみよう。
• 例題:定義、読み出し、追加、
配列の正体
• Keyが主に整数の、lengthプロパティをもつオ
ブジェクト
• に過ぎない。
JSの関数
JSの関数
• 関数が変数に入れられるだと・・・?
• 変数に入れられる。ということは・・・?
• Functionが外の変数を参照する場合
• JSにおけるメソッドの正体
• オブジェクトをコンストラクトする機能
関数が変数に入れられるだ
と・・・?
• var func = function(a,b) {return a + b } ; !?!?
• 実はCでもできるんだけど。。型が必要!
関数へのポインタ型ってやつ。
これがクソややこしい。
• JSなら変数に型がないおかげで、var funcです
むね!
変数に入れられる。
• ということは、関数
の引数に関数をいれ
ることも、関数の戻
り値として関数を返
すこともできる!
• とにかく自由自在
Functionが外の変数を参照す
る場合
• すごいことがおこる。
• 変数が一緒について
くる。
• これをクロージャと
いう。
メソッドの正体
• オブジェクトのプロパティである関数
• this 変数
• 実行するときに、どういうコンテキストで実行され
るかによって、thisの中身がかわる!
• 関数追加、実行
• イベント WORK
メソッドの応用
• メソッドは、プロパ
ティである関数に過
ぎないので、他に代
入できる。(笑)
• その結果、配列っぽ
いオブジェクトを、
さらに配列っぽくで
きる。
オブジェクトをコンストラク
トする機能
• Thisがあたらしく作
られたオブジェクト
になる。
• プロトタイプ継
承 ・・・ややこし
いから今日はやらな
い
JSの非同期処理
• 並行性についての通常のアプローチ
• JSのアプローチ
• 書いた順番通りに実行されない!?
• 処理の入れ子のイメージのちがい: スタック
かそうでないか
• いつもぐるぐる回っている
並行性についての通常のアプ
ローチ
• スレッド・・・問題が起こる。ややこしい。
JSのアプローチ
• 細かい仕事をちょこちょこ進める。
• 時間のかかる処理(ネットワーク処理)は、終
わったら知らせる
書いた順番通りに実行されな
い!?
• timeOut
• ajaxの例 xhrコード 好きなサイトのリソース
をとってこよう!
処理の入れ子のイメージのちが
い: スタックかそうでないか
いつもぐるぐる回っている
イベントループ
• 図クリックされてないかな?通信はおわったか
な?アニメーションを描画しよう
その他の注意点
• 変数がない場合はundefined 怒られるわけでは
ない!
• かならずvarをつけよう。
• || && の解釈の違い
NodeJS
NodeJS
• NodeJS
• コマンド実行
• npmの使い方
• Express
• Webのキホンおさらい
• Express generator
• Expressのディレクトリ一覧
• 掲示板をつくろう!
NodeJS
コマンド実行:インタラクティブ
環境:Pythonなどとおなじ
npmの使い方
• フォルダの中にインストール
• -Sオプション ->package.jsonが作られる
• -g グローバルにコマンドとして使えるように
なる
Express
• スタックの差 図
• Webのキホンおさらい 図
• サーバー:クライアント リクエスト:レスポンス
• Express generator
• フォルダ一覧
• app.js
• views
• routes
• Public
掲示板をつくろう!
• 続きはライブコーディングにて!
ネタ帳
• Cと基本文法は同じ if,whileとかreturn とか
• var a = 0 function(str, obj) 名前重要!!!
• イントロダクション
• 違いリスト
• 基本
• 出力 console.log alert
• DOMオブジェクト取得 document.getElementById(“id”);
• JSのオブジェクト
• オブジェクト指向とは 主人公.持ち物 でとらえる考え方。
• クラスベースオブジェクト指向は、はじめに一般的なものをつ
くってインスタンス化する
• たとえば、
• {} はいオブジェクト完成。 {a:0} {b:3} {c:1} <ハハハ見たか
DONE
• JSにおけるオブジェクトの正体 オブジェクトとはただの連
想配列!A->b c-> d
• ハッシュテーブルともいう PHPでは、オブジェクトと連想配列は
別物
• アクセスの仕方二種類 [“prop”], .prop
• プロパティ増やせる!
• いろんな作り方 WORK 例題:定義、読み出し、追加、
• リテラル, コンストラクタfunctionあとで, class(クラスっぽく見せ
るシンタックスシュガー)
• 配列の正体:Keyが主に整数の、lengthプロパティをもつオ
ブジェクト
ネタ帳
• JSの関数
• var func = function(a,b) {return a + b } ; !?!?
• 実はCでもできるんだけど。。型が必要!関数へのポインタってやつ。
これがクソややこしい。
• JSなら変数に型がないおかげで、var funcですむね!
• 変数に入れられる。
• ということは、関数の引数に関数をいれることも、関数の戻り値として関数を返すこともでき
る!
• WORK ブラウザで、イベント処理 .addEventListener(“click”, function());
• Functionが外の変数を参照する場合
• メソッドの正体:オブジェクトのプロパティとして追加された関数
• this 変数。実行するときに、どういうコンテキストで実行されるかによって、thisの中身がかわ
る!
• 関数追加、実行
• イベント WORK
• オブジェクトをコンストラクトする機能がある。
• Thisがあたらしく作られたオブジェクトになる。
• プロトタイプ継承 ・・・ややこしいから今日はやらない
• JSの非同期処理
• 並行性についての通常のアプローチ
• スレッド・・・問題が起こる。ややこしい。
• JSのアプローチ
• 細かい仕事をちょこちょこ進める。
• 時間のかかる処理(ネットワーク処理)は、終わったら知らせる
• 書いた順番通りに実行されない!?
• timeOut
• ajaxの例 xhrコード 好きなサイトのリソースをとってこよう!
• 処理の入れ子のイメージのちがい: スタックかそうでないか
• イベントループ いつもぐるぐる回っている
• 図クリックされてないかな?通信はおわったかな?アニメーションを描画しよう
• その他
• 変数がない場合はundefined 怒られるわけではない!
• || && の解釈の違い
ネタ帳
• NodeJS
• コマンド実行:インタラクティブ環境:
Pythonなどとおなじ
• npmの使い方
• フォルダの中にインストール
• -Sオプション ->package.jsonが作られる
• -g グローバルにコマンドとして使えるようになる
• Express
• スタックの差 図
• Webのキホンおさらい 図
• サーバー:クライアント リクエスト:レスポンス
• Express generator
• フォルダ一覧
• app.js
• views
• routes
• Public
• 掲示板をつくろう!
• 続きはライブコーディングにて!

More Related Content

Featured

How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
ThinkNow
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 

Featured (20)

Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 

JavaとJavaScriptはメロンとメロンパンぐらい違う!!