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
AA
Uploaded by
Akinori Abe
7,941 views
型安全性入門
型安全性に関するカジュアルな解説です。
Technology
◦
Read more
5
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 19
2
/ 19
Most read
3
/ 19
4
/ 19
5
/ 19
6
/ 19
Most read
7
/ 19
8
/ 19
9
/ 19
10
/ 19
11
/ 19
12
/ 19
13
/ 19
14
/ 19
Most read
15
/ 19
16
/ 19
17
/ 19
18
/ 19
19
/ 19
More Related Content
PDF
目grep入門 +解説
by
murachue
PDF
テスト文字列に「うんこ」と入れるな
by
Kentaro Matsui
PDF
Pythonによる黒魔術入門
by
大樹 小倉
PDF
初心者向けCTFのWeb分野の強化法
by
kazkiti
PDF
PWNの超入門 大和セキュリティ神戸 2018-03-25
by
Isaac Mathis
PDF
オブジェクト指向の設計と実装の学び方のコツ
by
増田 亨
PDF
今日からできる!簡単 .NET 高速化 Tips
by
Takaaki Suzuki
PDF
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
by
Preferred Networks
目grep入門 +解説
by
murachue
テスト文字列に「うんこ」と入れるな
by
Kentaro Matsui
Pythonによる黒魔術入門
by
大樹 小倉
初心者向けCTFのWeb分野の強化法
by
kazkiti
PWNの超入門 大和セキュリティ神戸 2018-03-25
by
Isaac Mathis
オブジェクト指向の設計と実装の学び方のコツ
by
増田 亨
今日からできる!簡単 .NET 高速化 Tips
by
Takaaki Suzuki
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
by
Preferred Networks
What's hot
PDF
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
by
Yoshiki Hayama
PDF
RSA暗号運用でやってはいけない n のこと #ssmjp
by
sonickun
PDF
レコメンドアルゴリズムの基本と周辺知識と実装方法
by
Takeshi Mikami
PDF
オブジェクト指向エクササイズのススメ
by
Yoji Kanno
PPTX
BuildKitによる高速でセキュアなイメージビルド
by
Akihiro Suda
PPTX
本当は恐ろしい分散システムの話
by
Kumazaki Hiroki
PDF
Marp Tutorial
by
Rui Watanabe
PDF
例外設計における大罪
by
Takuto Wada
PDF
それはYAGNIか? それとも思考停止か?
by
Yoshitaka Kawashima
PDF
SAT/SMTソルバの仕組み
by
Masahiro Sakai
PPTX
DockerコンテナでGitを使う
by
Kazuhiro Suga
PDF
40歳過ぎてもエンジニアでいるためにやっていること
by
onozaty
PDF
オブジェクト指向できていますか?
by
Moriharu Ohzu
PDF
Javaのログ出力: 道具と考え方
by
Taku Miyakawa
PDF
新入社員のための大規模ゲーム開発入門 サーバサイド編
by
infinite_loop
PDF
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
by
Fixstars Corporation
PDF
CTF for ビギナーズ ネットワーク講習資料
by
SECCON Beginners
PDF
ドキュメントを作りたくなってしまう魔法のツールSphinx
by
Takayuki Shimizukawa
PDF
SpectreとMeltdown:最近のCPUの深い話
by
LINE Corporation
PDF
Rustに触れて私のPythonはどう変わったか
by
ShunsukeNakamura17
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
by
Yoshiki Hayama
RSA暗号運用でやってはいけない n のこと #ssmjp
by
sonickun
レコメンドアルゴリズムの基本と周辺知識と実装方法
by
Takeshi Mikami
オブジェクト指向エクササイズのススメ
by
Yoji Kanno
BuildKitによる高速でセキュアなイメージビルド
by
Akihiro Suda
本当は恐ろしい分散システムの話
by
Kumazaki Hiroki
Marp Tutorial
by
Rui Watanabe
例外設計における大罪
by
Takuto Wada
それはYAGNIか? それとも思考停止か?
by
Yoshitaka Kawashima
SAT/SMTソルバの仕組み
by
Masahiro Sakai
DockerコンテナでGitを使う
by
Kazuhiro Suga
40歳過ぎてもエンジニアでいるためにやっていること
by
onozaty
オブジェクト指向できていますか?
by
Moriharu Ohzu
Javaのログ出力: 道具と考え方
by
Taku Miyakawa
新入社員のための大規模ゲーム開発入門 サーバサイド編
by
infinite_loop
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
by
Fixstars Corporation
CTF for ビギナーズ ネットワーク講習資料
by
SECCON Beginners
ドキュメントを作りたくなってしまう魔法のツールSphinx
by
Takayuki Shimizukawa
SpectreとMeltdown:最近のCPUの深い話
by
LINE Corporation
Rustに触れて私のPythonはどう変わったか
by
ShunsukeNakamura17
Similar to 型安全性入門
PDF
Scalaで型クラス入門
by
Makoto Fukuhara
PDF
TAPL 勉強会(紹介編)
by
none_toka
PDF
TAPL勉強会 第1章 (2012-07-17)
by
none_toka
KEY
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
by
Hiromi Ishii
ODP
Haskellの型安全性の力よ〜参照透明性編〜
by
aiya000
PDF
Sapporocpp#2 exception-primer
by
Kohsuke Yuasa
Scalaで型クラス入門
by
Makoto Fukuhara
TAPL 勉強会(紹介編)
by
none_toka
TAPL勉強会 第1章 (2012-07-17)
by
none_toka
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
by
Hiromi Ishii
Haskellの型安全性の力よ〜参照透明性編〜
by
aiya000
Sapporocpp#2 exception-primer
by
Kohsuke Yuasa
Recently uploaded
PDF
PCCC25(設立25年記念PCクラスタシンポジウム):コアマイクロシステムズ株式会社 テーマ 「AI HPC時代のトータルソリューションプロバイダ」
by
PC Cluster Consortium
PDF
PCCC25(設立25年記念PCクラスタシンポジウム):日本ヒューレット・パッカード合同会社 テーマ1「大規模AIの能力を最大限に活用するHPE Comp...
by
PC Cluster Consortium
PDF
PCCC25(設立25年記念PCクラスタシンポジウム):Pacific Teck Japan テーマ2「『Slinky』 SlurmとクラウドのKuber...
by
PC Cluster Consortium
PDF
PCCC25(設立25年記念PCクラスタシンポジウム):Pacific Teck Japan テーマ3「『TrinityX』 AI時代のクラスターマネジメ...
by
PC Cluster Consortium
PDF
PCCC25(設立25年記念PCクラスタシンポジウム):日本ヒューレット・パッカード合同会社 テーマ3「IT運用とデータサイエンティストを強力に支援するH...
by
PC Cluster Consortium
PDF
論文紹介:DiffusionRet: Generative Text-Video Retrieval with Diffusion Model
by
Toru Tamaki
PDF
論文紹介:HiLoRA: Adaptive Hierarchical LoRA Routing for Training-Free Domain Gene...
by
Toru Tamaki
PDF
論文紹介:MotionMatcher: Cinematic Motion Customizationof Text-to-Video Diffusion ...
by
Toru Tamaki
PDF
PCCC25(設立25年記念PCクラスタシンポジウム):エヌビディア合同会社 テーマ1「NVIDIA 最新発表製品等のご案内」
by
PC Cluster Consortium
PDF
PCCC25(設立25年記念PCクラスタシンポジウム):富士通株式会社 テーマ1「HPC&AI: Accelerating material develo...
by
PC Cluster Consortium
PPTX
2025年11月24日情報ネットワーク法学会大井哲也発表「API利用のシステム情報」
by
Tetsuya Oi
PDF
膨大なデータ時代を制する鍵、セグメンテーションAIが切り拓く解析精度と効率の革新
by
Data Source
PPTX
ChatGPTのコネクタ開発から学ぶ、外部サービスをつなぐMCPサーバーの仕組み
by
Ryuji Egashira
PDF
AI開発の最前線を変えるニューラルネットワークプロセッサと、未来社会における応用可能性
by
Data Source
PDF
ニューラルプロセッサによるAI処理の高速化と、未知の可能性を切り拓く未来の人工知能
by
Data Source
PCCC25(設立25年記念PCクラスタシンポジウム):コアマイクロシステムズ株式会社 テーマ 「AI HPC時代のトータルソリューションプロバイダ」
by
PC Cluster Consortium
PCCC25(設立25年記念PCクラスタシンポジウム):日本ヒューレット・パッカード合同会社 テーマ1「大規模AIの能力を最大限に活用するHPE Comp...
by
PC Cluster Consortium
PCCC25(設立25年記念PCクラスタシンポジウム):Pacific Teck Japan テーマ2「『Slinky』 SlurmとクラウドのKuber...
by
PC Cluster Consortium
PCCC25(設立25年記念PCクラスタシンポジウム):Pacific Teck Japan テーマ3「『TrinityX』 AI時代のクラスターマネジメ...
by
PC Cluster Consortium
PCCC25(設立25年記念PCクラスタシンポジウム):日本ヒューレット・パッカード合同会社 テーマ3「IT運用とデータサイエンティストを強力に支援するH...
by
PC Cluster Consortium
論文紹介:DiffusionRet: Generative Text-Video Retrieval with Diffusion Model
by
Toru Tamaki
論文紹介:HiLoRA: Adaptive Hierarchical LoRA Routing for Training-Free Domain Gene...
by
Toru Tamaki
論文紹介:MotionMatcher: Cinematic Motion Customizationof Text-to-Video Diffusion ...
by
Toru Tamaki
PCCC25(設立25年記念PCクラスタシンポジウム):エヌビディア合同会社 テーマ1「NVIDIA 最新発表製品等のご案内」
by
PC Cluster Consortium
PCCC25(設立25年記念PCクラスタシンポジウム):富士通株式会社 テーマ1「HPC&AI: Accelerating material develo...
by
PC Cluster Consortium
2025年11月24日情報ネットワーク法学会大井哲也発表「API利用のシステム情報」
by
Tetsuya Oi
膨大なデータ時代を制する鍵、セグメンテーションAIが切り拓く解析精度と効率の革新
by
Data Source
ChatGPTのコネクタ開発から学ぶ、外部サービスをつなぐMCPサーバーの仕組み
by
Ryuji Egashira
AI開発の最前線を変えるニューラルネットワークプロセッサと、未来社会における応用可能性
by
Data Source
ニューラルプロセッサによるAI処理の高速化と、未知の可能性を切り拓く未来の人工知能
by
Data Source
型安全性入門
1.
型安全性入門 2017.4.6 LT Thursday
2.
自己紹介 ● 名前:阿部晃典(あべあきのり) ● 2016
年新卒入社 ○ 広告配信の設定自動化( Scala) ○ DSP の CTR 予測(C++) ● 興味のある分野 ○ 機械学習 ○ プログラミング言語理論(型理論、メタプログラミング)
3.
LT のきっかけ ● 最近、「型安全」って単語をよく聞きます ○
Scala のライブラリとか type safe の謳い文句が多い ● それ、ほんとに型安全なの? ○ 安全って何? ○ ちゃんと証明したの?自明なの? ● 今日は静的型安全性の話をします ○ 「型安全性」をざっくり理解してもらうことが目的 ○ 静的型付き言語を前提に話します ○ 厳密な話はしないので、興味のある人は後で聞いて下さい
4.
お品書き 今日話すこと ● 型安全性とは何か ● 型安全性で保証されるもの ●
健全性と完全性 ● テストとの違い 話さないこと ● 厳密な型安全性の定義と証明 ● 高度な型システム
5.
型安全性とは?
6.
型安全とは、どういうこと? (Milner 1978) Well-typed programs
can’t go wrong. 型付けできるプログラム = 型検査を通過したプログラム 間違った状態に陥らない = ある種のバグが存在しない
7.
型安全性 ● コンパイル時に「ある種のバグが存在しない」ことを数学的に証明 ○ 型安全性を持つように、型システム・型検査器を設計・証明してある ●
検査済みのバグは実行時には絶対に起こらない ● プログラムの信頼性を数学的に保証 「型検査(コンパイル)を通過したなら、 ある種のバグが存在しない」 という性質
8.
強い型付け、弱い型付け ● 強い型付け:型安全性が型検査で保証される ○ e.g.,
Java, Scala, OCaml, Haskell, etc. ○ 「強い」とは「安全性の保証がある」ということ ○ 型システムが高度であるかどうかとは別の話 ● 弱い型付け:型安全性が保証されない ○ e.g., C, C++ , etc. ○ 型検査に通過しても、特に何も保証しない
9.
ある種のバグって何?
10.
安全性(バグの定義)は言語による ● だいたい言語 (Java,
Scala, Go, OCaml, Haskell, etc.) ○ メモリ安全とか null 安全が多い(と思う) ● より高度な言語や型システム (ATS, Coq, etc.) ○ 配列の境界検査 ○ Termination check(反復・再帰が常に停止することを検査) ○ Dead-lock freedom(絶対にデッドロックしないことを検査) ○ など ● ライブラリが +α の安全性を提供することも ○ DB クエリ言語の実行時型エラーを防ぐ (Slick, Rogue) ○ 行列演算のサイズ検査 ○ など
11.
型検査の恩恵が薄いことも List x =
null x.add(42) // NullPointerException ● Java はメモリのアクセス違反は起こさない ● でも、コンパイル時には検出せず、実行時に例外を投げる ● Java は「実行時に補足されたエラーだから OK」というスタンス(たぶん) ○ C, C++ だと(言語レベルで補足されない)セグメンテーション違反を起こす ● いわゆる null 安全な言語は、この手のエラーを型検査で検出
12.
要するに ● 言語・ライブラリで安全性(検査できるバグの種類)が違う ● どんな安全性を保証してくれるのか把握しておくことが大事
13.
健全性と完全性
14.
健全性と完全性 型安全性 (type safety),
健全性 (soundness) ● 「型が付くならば、ある種のバグは絶対にない」(偽陰性の排除) ● 「型エラーならば、バグがあるかもしれない」(偽陽性の許容) ○ バグがないのに、間違って型エラー出しちゃうかも ○ バグがあるのに型検査を通過させるリスクが大きい 完全性 (completeness) ● 「型エラーがあれば、バグが絶対にある」(偽陽性の排除) ● 健全かつ完全な型検査は難しい ○ チューリング完全な言語では決定不能問題
15.
テストとは何が違うの?
16.
テストと型検査 テスト ● 有限個の入力(テストケース)でプログラムが仕様を満たすか実行して確認 ● (あるテストケースで)バグが存在することを保証 ●
検査対象のバグの種類を増やすことは比較的簡単 型検査 ● 任意の入力について、プログラムが仕様を満たか実行せずに確認 ● (ある種の)バグが存在しないことを証明 ● 検査対象のバグの種類を増やすのは難しい
17.
テストと型検査どっちがいいの? 私見ですが、 ● それぞれの特徴を踏まえて、どっちもやるのが現実的に良い ● 可能なところは型検査、難しいところはテストが一番楽 ○
型検査で「可能なところ」を見極めるには、「型安全性」を知る必要がある 型検査の範囲を増やすには? ● 型レベルトリック(GADT、幽霊型などで頑張る) ● 依存型のある言語を使う(Coq、ATS など)
18.
まとめ
19.
まとめ ● 型安全性:型検査で特定のバグが存在しないことを保証する性質 ○ 言語・ライブラリで安全性(検査できるバグの種類)が違う ○
どんな安全性を保証してくれるのか把握しておくことが大事 ● 強い型検査とテストは特徴が違う ○ 組み合わせるといい感じ ● 上手に使って、バグを殺しましょう!
Download