Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
YU
Uploaded by
Yusuke Usui
2,207 views
型超ざっくり入門@ハンズラボ社内勉強会
ハンズラボ社内勉強会で実施した、型の概念に関するごく入門的なスライドです。 https://www.hands-lab.com/tech/entry/307.html
Software
◦
Read more
0
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 34
2
/ 34
3
/ 34
4
/ 34
5
/ 34
6
/ 34
7
/ 34
8
/ 34
9
/ 34
10
/ 34
11
/ 34
12
/ 34
13
/ 34
14
/ 34
15
/ 34
16
/ 34
17
/ 34
18
/ 34
19
/ 34
20
/ 34
21
/ 34
22
/ 34
23
/ 34
24
/ 34
25
/ 34
26
/ 34
27
/ 34
28
/ 34
29
/ 34
30
/ 34
31
/ 34
32
/ 34
33
/ 34
34
/ 34
More Related Content
PPTX
とある小売IT企業での新卒仮想プロジェクト(工具共有サービス)
by
Kazuo Murakami
PPTX
PHP x AWS でスケーラブルなシステムをつくろう
by
Taiji INOUE
PPTX
S3をDB利用 ショッピングセンター向けポイントシステム概要
by
一成 田部井
PPTX
JAWS-UG開催情報 20170125-8th初心者支部
by
由佳 青木
PPTX
Glt vol48
by
Masanori Hayashi
PPTX
IT女子勉強会LT_どうしようもなくてもキャリアを創れ
by
由佳 青木
DOCX
отчёт Buybrand expo 2012
by
Victoria Kazakova
PPTX
クラウドお遍路20161001LT_青木由佳
by
由佳 青木
とある小売IT企業での新卒仮想プロジェクト(工具共有サービス)
by
Kazuo Murakami
PHP x AWS でスケーラブルなシステムをつくろう
by
Taiji INOUE
S3をDB利用 ショッピングセンター向けポイントシステム概要
by
一成 田部井
JAWS-UG開催情報 20170125-8th初心者支部
by
由佳 青木
Glt vol48
by
Masanori Hayashi
IT女子勉強会LT_どうしようもなくてもキャリアを創れ
by
由佳 青木
отчёт Buybrand expo 2012
by
Victoria Kazakova
クラウドお遍路20161001LT_青木由佳
by
由佳 青木
Viewers also liked
PPTX
Symfony meetup-7
by
Masanori Hayashi
PPTX
Glt vol49
by
Masanori Hayashi
PPTX
PHP framework Phalcon
by
Masanori Hayashi
PPTX
AWSreinvent2016社内報告yuka_jyotei
by
由佳 青木
PDF
Real World PHP in pixiv
by
Kenta USAMI
PPTX
Phpstudy98
by
Masanori Hayashi
PPTX
ハンズラボの考えるIoT Innovation EGG 第6回 『IoT 今と未来』
by
一成 田部井
PDF
フルマネージドのポイントシステム
by
Masayuki Kato
PPTX
JAWS DAYS 2017直前! AWS総復習
by
Masanori Hayashi
PPTX
Amazon DynamoDBの紹介と東急ハンズでの活用について
by
Taiji INOUE
PPTX
MBSハッカソン協賛品_ハンズラボ20170211
by
由佳 青木
PPTX
Php blt-vol2
by
Masanori Hayashi
PPTX
Amazon Machine Learning Meet-up with ハンズラボ テーマ説明
by
Yusuke Usui
PDF
JAWS-UG京王線#1業務で使うAWSCLI
by
Tomoaki Imai
PDF
東急ハンズを支える技術
by
Tomoaki Imai
Symfony meetup-7
by
Masanori Hayashi
Glt vol49
by
Masanori Hayashi
PHP framework Phalcon
by
Masanori Hayashi
AWSreinvent2016社内報告yuka_jyotei
by
由佳 青木
Real World PHP in pixiv
by
Kenta USAMI
Phpstudy98
by
Masanori Hayashi
ハンズラボの考えるIoT Innovation EGG 第6回 『IoT 今と未来』
by
一成 田部井
フルマネージドのポイントシステム
by
Masayuki Kato
JAWS DAYS 2017直前! AWS総復習
by
Masanori Hayashi
Amazon DynamoDBの紹介と東急ハンズでの活用について
by
Taiji INOUE
MBSハッカソン協賛品_ハンズラボ20170211
by
由佳 青木
Php blt-vol2
by
Masanori Hayashi
Amazon Machine Learning Meet-up with ハンズラボ テーマ説明
by
Yusuke Usui
JAWS-UG京王線#1業務で使うAWSCLI
by
Tomoaki Imai
東急ハンズを支える技術
by
Tomoaki Imai
Similar to 型超ざっくり入門@ハンズラボ社内勉強会
KEY
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
by
Hiromi Ishii
PDF
実行時のデータ型の表現手法
by
Atusi Maeda
PDF
すごいHaskell読書会
by
Kosuke Usami
PDF
Java初心者勉強会(2015/08/07)資料
by
Toshio Ehara
PDF
Haskell勉強会2 in ie
by
maeken2010
PDF
Javaセキュアコーディングセミナー東京第2回講義
by
JPCERT Coordination Center
PDF
2011年11月11日
by
nukaemon
PDF
すごいH 第12章モノイド
by
Shinta Hatatani
PDF
Ruby4章後半(演算子)
by
Hiroshi Isimaru
PDF
PFI Christmas seminar 2009
by
Preferred Networks
PDF
クリエイティブコーディングのための数学 JavaScript 入門 [三角関数と行列]
by
Nobuhiro Takahashi
PDF
Pyramid
by
tomerun
PDF
Java電卓勉強会資料
by
Toshio Ehara
PDF
Usp友の会勉強会、ジャクソン構造図の巻(後編)
by
umidori
PDF
すごいHaskell 第7章 型や型クラスを自分で作ろう(前編)
by
Nozomu Kaneko
PDF
Haskell Lecture 2
by
Yusuke Matsushita
PDF
Data-Intensive Text Processing with MapReduce ch4
by
Sho Shimauchi
PPTX
2014年の社内新人教育テキスト #2(関数型言語からオブジェクト指向言語へ)
by
Shin-ya Koga
PDF
Numeric クラスについて
by
Tomoya Kawanishi
PDF
すごいHaskell読書会#1 in 大阪
by
yashigani
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
by
Hiromi Ishii
実行時のデータ型の表現手法
by
Atusi Maeda
すごいHaskell読書会
by
Kosuke Usami
Java初心者勉強会(2015/08/07)資料
by
Toshio Ehara
Haskell勉強会2 in ie
by
maeken2010
Javaセキュアコーディングセミナー東京第2回講義
by
JPCERT Coordination Center
2011年11月11日
by
nukaemon
すごいH 第12章モノイド
by
Shinta Hatatani
Ruby4章後半(演算子)
by
Hiroshi Isimaru
PFI Christmas seminar 2009
by
Preferred Networks
クリエイティブコーディングのための数学 JavaScript 入門 [三角関数と行列]
by
Nobuhiro Takahashi
Pyramid
by
tomerun
Java電卓勉強会資料
by
Toshio Ehara
Usp友の会勉強会、ジャクソン構造図の巻(後編)
by
umidori
すごいHaskell 第7章 型や型クラスを自分で作ろう(前編)
by
Nozomu Kaneko
Haskell Lecture 2
by
Yusuke Matsushita
Data-Intensive Text Processing with MapReduce ch4
by
Sho Shimauchi
2014年の社内新人教育テキスト #2(関数型言語からオブジェクト指向言語へ)
by
Shin-ya Koga
Numeric クラスについて
by
Tomoya Kawanishi
すごいHaskell読書会#1 in 大阪
by
yashigani
型超ざっくり入門@ハンズラボ社内勉強会
1.
型超ざっくり入門 @ハンズラボ社内勉強会 2015/06/12 ハンズラボ株式会社 臼井 友亮
2.
想定対象 • 型?なにそれ??おいしいの??? • 文字列とか数値とか区別はしてるつもりけど、混在し てくるとよくわかってなくて、なんとなく適当に足し たり連結したりしてる •
上記くらいのレベルの何かプログラムを書いている 方々。 • そうじゃない人は釈 に説法なので得るものないです
3.
こんなことないですか • 数字ばかりの文字列を連結するつもりが足して た • DBに数字ばかりの文字列を数値として突っ込も うとしてエラー出た •
価格や在庫の小数の扱いが思った通りにならな くて金の計算がずれてしばかれた
4.
型を意識することが必要
5.
型 is 何 •
そもそもコンピュータは0と1しか理解できない • 変数とかに入れてる数字も文字も、0と1の並び で解釈されている。 • 0と1の並びだけでは人間も取り回しがつらい • その並びが何を意味しているかを表す決まりが あるとうれしい。
6.
これが型 (大間違いしない範囲でぶっ たぎってますが)
7.
型の例(1) • 整数型 • 浮動小数型 •
文字列型 • 真偽値型 • バイナリ型
8.
型の例(2) • 配列 • 構造体 •
クラス • etc…
9.
いろいろありますが、 例(1)にフォーカスします
10.
整数型 • -1, +2,
0 • 整数の定義が分からない場合ググって下さい • 符号無し整数、符号有り整数を区別する言語も あります(符号 = プラスとかマイナス)
11.
浮動小数型 • 1.2, -7.5 •
現実の小数と異なり、正しい値は得られない • 例えばJavaScriptであれば、 0.1 - 0.00000000000002 は 0.09999999999998001 になる。 • 最後の1どこから来たよ?
12.
浮動小数型 • 浮動小数の0.1は、実数の0.1とは異なり、1より 小さい2進数の1つだけビットが立っている数の 和として、浮動小数型のデータサイズの限界ま での近似として表される • (1/16)
+ (1/32) + (1/256) + (1/512) + (1/4096) + (1/8192) + (1/65536) + …
13.
浮動小数型 • 無限に2の累乗が分母に来ているものの和にすることはできなく て、浮動小数のデータのサイズ限界(32bitまたは64bit)まで。 • 厳密には32bitとかも全部じゃなくて、 •
符号を表す部分(符号部) • 桁を表す部分(指数部) • 数字の並びを表す部分(仮数部) • に分かれてるので、仮数部のbit数に依存して和を取れる数は 減る。
14.
2進数って?浮動小数なんだこれ?? ってところまできた気がするので、いっ たんこれくらいで。 (本題ではない)
15.
文字列型 • 文字通り、文字列を格納するための型 • 数字だけだけど、0始まりとか、整数や浮動小数 として扱うとサイズ限界超えたり誤差が出るも のも、基本文字列型として扱った方がなにかと いい。EANコードとか、タイムスタンプとか
16.
真偽値型 • ブーリアン型とも • いわゆる
true, false • 真偽値型が無くて、TRUE, FALSEをある整数に 定数割り当てしてるだけとか、そういうのもあ る。
17.
バイナリ型 • バイト型、バイト列とも • バイト、つまり0-255の値をそのまま格納 •
あまり深入りしない
18.
型変換 • JavaScript処理系において、以下はどの様な値 になるか?考えてみよう。 • 1
+ 2.1 = ? (整数 + 浮動小数 = ?) • 0 + 3 = ? (整数 + 文字列 = ?) • 2 + true = ? (整数 + 真偽値 = ?)
19.
考え中
20.
答え
21.
型変換 • 1 +
2.1 = 3.1 (整数 + 浮動小数 = 浮動小数) • 0 + 3 = 03" (整数 + 文字列 = 文字列) • 2 + true = 3 (整数 + 真偽値 = 整数+(1or0)) • 言語によって異なる。 • 上記はあくまでJavaScriptでの例
22.
2つの異なる型を + した時、 何が起こっていたか •
1 + 2.1 • 1.0 + 2.1 (整数である1が、浮動小数の1.0に変 換される) • 3.1 (2つの浮動小数が足される)
23.
2つの異なる型を + した時、 何が起こっていたか •
0 + 3 • 0 + 3 (整数である0が、文字列の 0 に変換 される) • 03 (2つの文字列が連結される)
24.
2つの異なる型を + した時、 何が起こっていたか •
2 + true • 2 + 1 (真偽値であるtrueが、整数の1に変換さ れる) • 3 (2つの整数が足される)
25.
+ はなにをしたのか • +
の前後の値に対して、適切な変換を施して、 数値として足したり文字列として連結したりして 返した。 • 繰り返すが、前述の挙動はJavaScript固有で、 他の言語では異なる場合がある。 • そもそも違う型は、明示的に何もせず + できな かったりする言語もある。
26.
+ はなにものか • +
は加算演算子ともいう。 • + の直前と直後の値を引数にして、それぞれの型と値に応じ た操作をし、新しい値を返す関数のようなもの。記法が違う だけ。 • - , / , * も同様。 • C++ などは、これら演算子の挙動をプログラマが上書きする ことができる。(演算子オーバーロード) • 足すと見せかけて累乗するのもできてしまう(普通やらない)
27.
キャスト • 型変換とだいたい同義。用語の説明として。 • 語源は鋳造における
鋳型 • 型の概念を、型を鋳型、入れる値を金属とする比喩もできる。 • 例えば整数型は六角形の鋳型、浮動小数型は円形の鋳型、み たいな比喩もできる。 • 浮動小数を整数にキャストすると、小数点以下の情報が失 われるのは、この比喩でイメージできる。
28.
キャスト • + 演算子内部の処理では、これが型とその値の 組み合わせによって行われていた。 •
JavaScriptでは不適切な処理( z - 1 など)の場 合、よしなに処理してNaNを返したりするが、 他の言語ではキャストしようとしてエラーになる ものが多い。
29.
JSON形式文字列と オブジェクト • またJavaScriptで例 • 以下の2つの違いがわかりますか? •
var obj = { id :123, name":"hoge"}'; • var obj = { id :123, name":"hoge"};
30.
JSON形式文字列と オブジェクト • { id
:123, name :"hoge"}' • → JSONフォーマットの文字列 • { id :123, name :"hoge"} • → id, name というキーを持つオブジェクト • オブジェクト型と文字列型なので、違う型。
31.
JSON • JavaScript Object
Notation • 直訳で、JavaScriptでのオブジェクト表記法 • 直訳が完全に意味を説明している。 • 型ではなく、意味を持った文字列の記法である ことに注意。
32.
オブジェクト • JavaScript はじめ、いくつかのオブジェクト指 向言語での全ての基本となる型。 •
オブジェクトというと指し示す内容がいろいろ あるので注意。
33.
JSONとオブジェクトの 相互変換 • JSON.parse( {
id":123}'); // JSON文字列をオブジェク トに • JSON.stringify({ id :123}); // オブジェクトをJSON文 字列に • jQuery などで外部APIからJSONを受け取ったとき、 parseの様にオブジェクトに変換したりしている。 • ライブラリや便利関数が何をよしなに変換してくれてる か?を一度は意識しましょう。
34.
まとめ • 型を意識しない言語でも、時々意識しないと落とし 穴にはまるので、時々意識すること。 • とはいえいきなりめちゃめちゃわかるようにならな いので、文字列、整数、浮動小数、オブジェクト、 くらいの違いを意識すればまずはOK。 •
型システムは静的型付け言語ではもっとごついし、 型理論とか異常に奥が深いので、興味があれば勉強 しましょう。
Download