Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
いまどきの JavaScript入門 - ES6/TypeScript/Vue.js
Search
たにぐちまこと(ともすた)
May 06, 2020
Technology
890
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
あるけみー式LTスライド作成術
alchemy1115
1
100
作り直せるコードは迅速に 作り直せないDBは慎重に - AI時代のプロダクトエンジニアが「判断の不可逆性」で開発速度を変える話
kinosuke01
0
280
2026-09-04 SRE Tech Talk #15 怠惰なTerraform / Lazy Terraform
masasuzu
0
230
2026-09-11 【Snowflake World Tour Tokyo 2026】Snowflakeを起点に、AI Agentが自律稼働し続ける未来へ / Driving AI Agents with Snowflake
civitaspo
0
240
Reactの設計論
uhyo
12
4.2k
Amazon Quick on DesktopがIAM Identity Centerで動かない理由
yukiogawa
0
130
Redmine 7.0で私が開発した新機能の狙いと背景
vividtone
1
130
20260912_スクフェス三河
kgnkhkr
0
120
幾何アルゴリズムで なめらかなピン操作を / iOSDC Japan 2026 / smoothpin
kazumanagano
0
230
DEFCON34-Write-up_HYCu-MYCu
daikiokazaki
0
110
Podは生きているのにGoだけが落ちる:GOGCとGOMEMLIMITで追うInvisible OOM Killの謎
tkc66buzz
1
230
OpenTelemetry eBPF Instrumentationの舞台裏 / Behind the Scenes of OpenTelemetry eBPF Instrumentation
ymotongpoo
3
450
Featured
See All Featured
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
680
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
410
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Bash Introduction
62gerente
615
220k
Optimising Largest Contentful Paint
csswizardry
37
3.9k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
The Invisible Side of Design
smashingmag
301
52k
Discover your Explorer Soul
emna__ayadi
2
1.3k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
What's in a price? How to price your products and services
michaelherold
247
13k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
600
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