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
クラウドを使う側から、作る側へ / 大吉祥寺.pm 2026前夜祭
fujiwara3
5
1.2k
発表と総括 / Presentations and Summary
ks91
PRO
0
190
Playwright × AI Agent でE2Eテストはどう変わるか AI駆動テストの可能性と実用検証の結果
taiga7543
2
810
生成AI×AWS CDK×AWS FISで"振り返れる"ミニGameDayをつくろう
yoshimi0227
2
530
AI時代におけるテストの基礎の再定義 / Rethinking the Fundamentals of Testing in the AI Era
mineo_matsuya
14
4.8k
書籍セキュアAPIについて
riiimparm
0
250
【公開用】AI_Dev_Ex2026_AI_登壇資料
matsuritechnologies
PRO
1
490
Alphaモジュール使っていいのかい!?いけないのかい!?どっちなんだいっ!?
watany
1
320
SRENEXT_2026_Chairs__Talks_in_Tamachi.sre.pdf
srenext
1
150
複数プロダクトで進めるAI機能実装 ── 実践から得たリアルな学びとロードマップ実現への挑戦 / AICon2026_yanari
rakus_dev
1
270
41歳でAWSが好きすぎてITエンジニアになったおっさんの話
yama3133
1
740
Aurora MySQL 8.4リリース! Rubyistが備えること / what-rubyist-should-prepare-for-aurora-mysql-8-4
fkmy
0
780
Featured
See All Featured
It's Worth the Effort
3n
188
29k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.7k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
Marketing to machines
jonoalderson
1
5.6k
Code Reviewing Like a Champion
maltzj
528
40k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
420
Between Models and Reality
mayunak
4
380
Large-scale JavaScript Application Architecture
addyosmani
515
110k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
67k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
810
[SF Ruby Conf 2025] Rails X
palkan
2
1.2k
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