Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
いまどきの JavaScript入門 - ES6/TypeScript/Vue.js
Search
たにぐちまこと(ともすた)
May 06, 2020
Technology
880
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
いまどきの JavaScript入門 - ES6/TypeScript/Vue.js
たにぐちまこと(ともすた)
May 06, 2020
More Decks by たにぐちまこと(ともすた)
See All by たにぐちまこと(ともすた)
Flexboxを学ぼう - HTML/CSS入門
tomostajp
0
280
Other Decks in Technology
See All in Technology
大量データに対しても、生成AIを用いてリーズナブルにデータ加工をしたい!Databricksのai_queryについて調べてみた
kamoshika
2
280
データエンジニアリングとドメイン駆動設計
masuda220
PRO
14
2.5k
41歳でAWSが好きすぎてITエンジニアになったおっさんの話
yama3133
1
740
Amplify Gen2でbackend.tsにCDKを定義する/しない事によるCDKの挙動の違いとユースケース
smt7174
1
490
AI Native なプロダクト組織の立ち上げ方 : 生産性 100 倍への挑戦
mikesorae
0
1.3k
文字起こし基盤の信頼性
abnoumaru
0
120
AI時代におけるエンジニアの新たな役割──FDEとクオリアの探求/登壇資料(戸井田 裕貴)
hacobu
PRO
0
330
第67回コンピュータビジョン勉強会CVPR2026読会前編
tsukamotokenji
0
170
なぜ、あなたのAPIは使われないのか? AX時代の設計原則、ガードレール、運用体制
yokawasa
1
210
事業成長とAI活用を止めないデータ基盤アーキテクチャの設計思想
hiracky16
0
540
2年前に削除したPHPクラスが、 ある日突然決済をエラーにした
ykagano
1
790
AI時代の開発生産性は、個人技からチーム設計へ
moongift
PRO
4
2.5k
Featured
See All Featured
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
270
The Curse of the Amulet
leimatthew05
2
13k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
390
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
420
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.7k
Producing Creativity
orderedlist
PRO
348
40k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
410
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.3k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
640
Transcript
None
谷口 允 たにぐち まこと @seltzer 01w.me/tomo
None
None
None
None
None
ウェブのしくみ HTML CSS
ウェブのしくみ …
サーバーサイド言語 PHP Ruby
サーバーサイド言語 PHP Ruby いちいち通信が必要
JavaScript JavaScript
JavaScriptの特徴 •通信がなくても動作できるので早い •時間・マウスの動きなど クリック以外の動作に対応できる •データの共有や保存などはできない
Ajax 非同期通信
Ajaxとは Synchronous 同期通信 Asynchronous 非同期通信
None
None
None
None
拡がるJavaScript
拡がるJavaScript
拡がるJavaScript
準備するもの
JavaScriptをはじめよう
キホンのプログラム let day = prompt('何日の秒数を計算しますか?'); document.write(60*60*24*day);
キホンのプログラム let day = prompt('何日の秒数を計算しますか?'); メソッド(Method) どうする? パラメーター(Parameter) なにを? どのように?
キホンのプログラム let day = prompt('何日の秒数を計算しますか?'); 変数 戻り値・返り値
キホンのプログラム document.write(60*60*24*day); オブジェクト ~が メソッド どうする
キホンのプログラム let day = window.prompt('何日の秒数… windowオブジェクト
犬でおぼえる オブジェクト指向
フル版はこちらで
メソッド(Method) 命令・お願い
パラメーター(Parameter) 細かい指定
戻り値 戻ってきたボール
プロパティ(Property) 性質・特性
インスタンス(Instance) 実体
オブジェクト(Object) 物・概念
クラス(Class) 分類
応用JavaScript <button id="buy">決済する</button> <script> const btn = document.getElementById('buy'); btn.addEventListener('click', ()
=> { btn.disabled = true; }); </script>
イベントドリブン ユーザーの操作など(イベント) に応じてプログラムが動作
ECMAScript
ウェブブラウザーの誕生
Internet Explorerの登場
スクリプト技術の競合 JavaScript VBScript
スクリプトの競合 JavaScript VBScript ブラウザーの開発戦争が勃発
国際標準規格の登場 ECMAScript
標準規格って? A4
標準規格って? A4 規格に沿うからメーカー問わず
ECMAScript準拠言語 ECMAScript
None
<div id="timer"></div> <script> function timer() { var now = new
Date(); document.getElementById('timer').innerHTML = now.getSeconds() + '秒'; } var timerID = setInterval(timer, 500); </script> <div id="timer"></div> <script> const timer = () => { let now = new Date(); document.getElementById('timer').innerHTML = `${now.getSeconds()}秒'; } let timerID = setInterval(timer, 500); </script>
古いブラウザーで動作しない… …
トランスパイル
トランスパイルとは <div id="timer"></div> <script> function timer() { var now =
new Date(); document.getElementById('timer').innerHTML = now.getSeconds() + '秒'; } var timerID = setInterval(timer, 500); </script> <div id="timer"></div> <script> const timer = () => { let now = new Date(); document.getElementById('timer').innerHTML
トランスパイルとは <div id="timer"></div> <script> function timer() { var now =
new Date(); document.getElementById('timer').innerHTML = now.getSeconds() + '秒'; } var timerID = setInterval(timer, 500); </script> <div id="timer"></div> <script> const timer = () => { let now = new Date(); document.getElementById('timer').innerHTML
トランスパイルとは <div id="timer"></div> <script> function timer() { var now =
new Date(); document.getElementById('timer').innerHTML = now.getSeconds() + '秒'; } var timerID = setInterval(timer, 500); </script> <div id="timer"></div> <script> const timer = () => { let now = new Date(); document.getElementById('timer').innerHTML 古い書き方に巻き戻す
トランスパイルのメリット •プログラマーは便利な書き方で書ける •利用者は古い環境でも利用できる •環境のことを気にせずに、最新機能を利用できる
トランスパイラー
トランスパイラー
TypeScriptとは •Microsoftが開発したプログラミング言語 •JavaScriptと完全互換性 •TypeScript→JavaScriptへの変換の際に トランスパイルを設定可能
「型」とは let x = 1; let y = 2; x
= '文字列を代入します'; console.log(x * y); // NaN
「型」とは let x = 1; let y = 2; x
= '文字列を代入します'; console.log(x * y); // NaN 数字 文字
「型」とは let x = 1; let y = 2; x
= '文字列を代入します'; console.log(x * y); // NaN let x: number = 1; let y: number = 2; x = '文字列を代入します'; console.log(x * y); // NaN ここでエラー
TypeScriptのメリット •厳密な型チェックで変数の誤用を防ぐ •コンパイルエラーで、実行時のトラブルを防ぐ •チーム開発時の曖昧な仕様によるトラブルを防ぐ
ライブラリー
None
JavaScriptライブラリー
JavaScriptライブラリー
jQueryが得意なこと •画面内のテキストフィールドなどを指定しやすい •柔軟なイベント定義 •作業手順を指定できる(メソッドチェーン) •豊富なプラグイン
jQueryが苦手なこと •ページ内に新しい要素を登場させる •複数の要素を連携させる •非同期通信を利用したデータ操作
新たなJavaScriptプロダクト
新たなJavaScriptプロダクト
Reactの特徴 •大規模サイトでも、しっかりした設計で開発 •アプリ開発などにも活用可能 •習得に時間がかかり、若干難しい
Vue.jsの特徴 •HTMLに簡単に組み込んで利用可能 •コードを極力書かずに開発が可能 •大規模な開発には向かない
None
要素の生成 <div id="app"> {{ message }} </div> <script> let app
= new Vue({ el: "#app", data: { message: "Vue.jsを勉強中です" } }); </script> Vue.jsを勉強中です
イベント制御 <div id="app"> <button @click="checkClick" :disabled="clicked">決済する </button> </div> <script> var
app = new Vue({ el: "#app", data: { clicked: false }, methods: { checkClick: function() { this.clicked = true } } }) </script>
フォームの制御 <div id="app"> <clock></clock> <clock style="color: blue">現在時刻</clock> </div> <script> Vue.component('clock',
{ data: function () { return { time: '' } }, mounted: function () { var timerID = setInterval(this.refresh, 500); }, methods: { refresh: function () { var now = new Date(); this.time = `${now.getHours()}:${now.getMin utes()}:${now.getSeconds()}` } }, ... template: '<div :style=""><h2><slot>時計 </slot></h2>{{ time }}</div>' }) var app = new Vue({ el: "#app" }) </script>
Vue.jsのこれから
Vue 3の特徴 •大規模な開発が可能になるように •Vue 2以前の不満点を解消 •TypeScriptとの相性の向上
JSを学習しよう
JSを学習するために •HTML/CSSはしっかりマスターしよう •良いエディター(Visual Studio Code)を使おう •サーバーサイドも(少し)理解しよう
None
None