狠狠撸

狠狠撸Share a Scribd company logo
EZ-‐??NET ?熊?谷友宏 ?
http://ez-‐??net.jp/
Swift 2.0 ?の
2015.06.20 ?
@ ?横浜へなちょこ ?iOS ?勉強会 ?#35
ERROR HANDLING
熊谷友宏
http://ez-net.jp/
@es_kumagai
Xcode 5 徹底解説
IP Phone 音でダイヤル 音で再配達ゴッド
いつもの電卓
with 割勘ウォッチ
MOSA
Error Handling ってなに?
NSError を
使いやすくするってコト!
エラーの话
これまでの NSError
Swift 1.2
たとえば NSFileManager
これまでの NSError
Swift 1.2
// オプショナルな NSError を状態として用意
var error:NSError? = nil
// 用意した NSError を inout で渡す
let succeeded =
fm.removeItemAtPath(path, error: &error)
// エラーを検査する
if !succeeded, let error = error {
}
func removeItemAtPath(
path:String, error: NSErrorPointer)
-> BOOL
? 戻り値で目的の結果を返す
? エラーのときは?
NSErrorPointer で詳細を返す
? つまりエラーの詳細を知りたければ?
NSError? を事前に別途用意する
これまでの NSError
Swift 1.2
func contentsOfDirectoryAtPath(
path:String, error: NSErrorPointer)
-> [AnyObject]?
? 戻り値で目的の結果を返す
? コンテンツが無ければ空の配列を返す
? エラーがあったときは
? 戻り値で nil を返す
? NSErrorPointer で詳細情報を返す
これまでの NSError
Swift 1.2
これからの NSError
Swift 2.0
これからの NSError
Swift 2.0
// 正常処理のスコープを決める
do {
// 目的をまっすぐ達成する
try fm.removeItemAtPath(path)
}
catch let error as NSError {
// エラーならここで処理する
}
func removeItemAtPath(
path:String) throws -> Void
? 目的を遂行する
? エラーが発生するかもネ!
これからの NSError
Swift 2.0
func contentsOfDirectoryAtPath(
path:String) throws -> [String]
? 戻り値で目的の結果を返す
? コンテンツが無ければ空の配列を返す
? エラーが発生するかもネ!
これからの NSError
Swift 2.0
正常系とエラー系とを分離
Error Handling で
ところで
これまでの NSError は
これまでの NSError
Swift 1.2
// NSError を用意しなくても実行可能
fm.removeItemAtPath(path, error: nil)
? 成否を戻り値だけで判定する
? 成功したものとして突き進むも可能?
それって安全じゃない
Swift は
そんなことはさせません
Swift は「安全」がお好き
たとえば
func setAttributes(attributes,?
ofItemAtPath:path) throws
Error Handling
Swift 2.0
fm.setAttributes(attr,ofItemAtPath:path)
エラーを未想定ならエラー
Error Handling
Swift 2.0
try fm.setAttributes(attr,ofItemAtPath:path)
エラーを想定!
Error Handling
Swift 2.0
try fm.setAttributes(attr,ofItemAtPath:path)
エラーを想定!
正常系はこれ以降のスコープ全体
Error Handling
Swift 2.0
do {
try fm.setAttributes(attr,ofItemAtPath:path)
}
正常系のスコープを明記!
Error Handling
Swift 2.0
do {
try fm.setAttributes(attr,ofItemAtPath:path)
}
正常時の処理をこの中で決着する
正常系のスコープを明記!
Error Handling
Swift 2.0
do {
try fm.setAttributes(attr,ofItemAtPath:path)
}
catch let error as NSError {
}
エラーが発生したらキャッチ!
Error Handling
Swift 2.0
do {
try fm.setAttributes(attr,ofItemAtPath:path)
}
catch let error as NSError {
}
エラーが発生したらキャッチ!
エラー時の処理をこの中で決着する
Error Handling
Swift 2.0
do {
try fm.setAttributes(attr,ofItemAtPath:path)
}
catch let error as NSError {
}
エラーが発生したらキャッチ!
エラー時の処理をこの中で決着する
エラー時はここは処理されない
まとめると
Error Handling
Swift 2.0
do {
try fm.setAttributes(attr,ofItemAtPath:path)
}
catch let error as NSError {
}
エラーが発生したらキャッチ!
エラー時の処理をこの中で決着する
エラー時はここは処理されない
正常時の処理をこの中で決着する
正常系のスコープを明記!
エラーを想定!
つまり
エラーを确実に扱えるってコト!
next
絶対エラーにならなくない?
絶対にエラーにならない
場合だってあるかもしれない
これまでの NSError
Swift 1.2
これまでの NSError
Swift 1.2
// エラーチェックを記載しない
fm.setAttributes(attr,
ofItemAtPath:path, error:nil)
成否に関わらず以下が実行される
Error Handing
Swift 2.0
Error Handling
Swift 2.0
// エラーはない ! と明記する
try! fm.setAttributes(attr,
ofItemAtPath:path)
エラーのときは以下に進まず 強制終了
つまり
無視するにも?
覚悟が要るってコト!
next
エラーのときの后始末
Error Handling
do {
let handle = try file.open()
try fm.setAttributes(attr,ofItemAtPath:path)
handle.close()
処理が終わったら閉じたい
}
catch {
}
でもエラーが発生すると…
ここまでたどり着けない
Error Handling
do {
let handle = try file.open()
defer {
handle.close()
}
try fm.setAttributes(attr,ofItemAtPath:path)
}
catch {
}
最後に処理したいことを先に書く
ここでエラーが発生しても…
ブロックを抜ける直前に処理される
処理が終わったら閉じたい
余谈
もしも Swift の Error Handling が
@try-catch-?nally だったとしたら
もし try-?nally だったとしたら…
var stream:Stream? = nil
@try {
stream = Stream.open(path)
fm.setAttributes(attr,ofItemAtPath:path)
}
@catch let error {
}
@finally {
stream?.close()
}
初期化と後始末のスコープ分断を考慮して外側に定義
未初期化を考慮してオプショナルチェイニング
そもそも、どこでエラーが起こるの…?
つまり
こうではなく
var stream:Stream? = nil
@try {
stream = Stream.open(path)
fm.setAttributes(attr,ofItemAtPath:path)
}
@catch let error {
}
@finally {
stream?.close()
}
? 入れ物の事前準備が必要
? 3つのブロックに着目
? 流れよりも構文が主役
? どこでエラーになるかが?
コードから読めない
こうなる
do {
let handle = try file.open()
defer {
handle.close()
}
try fm.setAttributes(attr,ofItemAtPath:path)
}
catch {
}
? 事前準備が不要
? 流れが主役?
原則成功、ときどき失敗
? コードからエラーが?
発生する箇所がわかる
Error Handling は?
美しいってコト!
next
Swift でエラーを扱う方法
Optional<T>
Optional<T>
値があるかないかを扱う型
if let value = optional {
}
else {
// 値がなかったときにエラーとするかは状況次第
}
? 値の有無による判断を強制
? 値がないときがエラーとは限らない
Optional のイメージ
?
Optional<T>
使いどころ
// 例えば、リストの中から値を検索する関数
func find(list, value) -> Index? {
}
? 単純に値の有無を提示する
? エラーかどうかを決め付けない
いわゆる Either 型
いわゆる Either 型
どちらかの状況を表現する型
enum Result<T> {
case Success(T)
case Failure(Error)
}
? 成功値か失敗値かを取る列挙型
? 成否というより状況の切り分けに着目
いわゆる Either 型
どちらかの状況を表現する型
switch getResult() {
case .Success(let value):
case .Failure(let error):
}
? 戻り値ひとつで状況の切り分けが可能
? 両者を同じ重みで扱う
Either 型のイメージ
いわゆる Either 型
使いどころ
? 戻り値で二つの場面を提示する
? 背反する分岐点を表現する
// 成功したか失敗したかで進路を分岐する
enum Result<T,U> {
case Succeeded<T>
case Failed<U>
}
switch getResult() {
case .Success(let value):
case .Failure(let error):
}
Fatal Error
Fatal Error
致命的なエラー
fatalError("もうムリ…")
? 処理が継続できない状況を表現
? 想定外を持ち越さない
以降の処理は実行させない!
Fatal Error のイメージ
Fatal Error
使いどころ
? Optional で絶対に値が入っているとき
? Optional で値が入っていないと困るとき
? try が絶対にエラーにならないとき
? 処理を継続できないと判断したとき
? 相手に責任を取らせたいとき
などなど
活用の場面は幅広い
実际
Fatal Error
Swift でも積極的に使われている
// 強制アンラップ
let value = optional!
// 暗黙アンラップなオプショナル
var value:String!
値がなければ fatalError
nil が入っているのに操作したら fatalError
Fatal Error
Swift でも積極的に使われている
// 強制キャスト
let subObj = obj as! SubClass
// エラーを想定しない
try! execute()
キャストできなければ fatalError
エラーが起これば fatalError
Fatal Error で
想定外を想定内へ転換する
Swift の Error Handling
New!
エラー型の定义
Error Handling
protocol ErrorType {
}
? エラー型を ErrorType で表現
? 実装を求められないプロトコル
? 列挙型と NSError が準拠できる
ErrorType プロトコル
Error Handling
enum OpenError : ErrorType {
case NotFound
case Readonly
case Busy(reason:String)
}
? エラー型は 列挙型 で表現
? 列挙型を ErrorType に準拠させる
? 起こり得るエラーを列記
値付き列挙子も使える
Error 型
関数やメソッドで使う
Error Handling
func open(file:FILE) throws -> Stream {
:
:
? エラーが有り得る機能に throws を付与
? エラーになるかもしれないことが?
プログラマーとコンパイラの両者に伝わる
エラーを示唆する
Error Handling
func open(file:FILE) throws -> Stream {
guard _exists(file) else {
throw OpenError.NotFound
}
:
:
? エラーは throw で通知する
? エラーは列挙子で指定する
? throws を指定した機能でだけ通知可能
エラーを通知する
確実にエラーを想定
使う側は
Error Handling
do {
let stream = try open(file)
}
catch {
}
? 正常処理の範囲を do で表現
? エラーが発生し得る場所に try を明記
? エラーは catch で補足する
エラーに挑む!
エラーを想定する
Error Handling
do {
let stream = try open(file)
}
catch OpenError.NotFound {
}
catch OpenError.ReadOnly {
}
catch OpenError.Busy(let reason) {
}
全てのエラーに対処する
Error Handling
do {
let stream = try open(file)
}
catch OpenError.Busy {
}
catch is OpenError {
}
値付き列挙子の値を加味しないことも可能
列挙子を加味せずに捕獲することも可能
全てのエラーに対処する
おさらい
Error Handling
? エラーを列挙型で表現?
起こり得るエラーが一目瞭然
? エラーの可能性を throws で示唆?
プログラマーとコンパイラに意思が伝わる
? エラーが起こり得る箇所に try を明記?
どこでエラーを想定しているかが明確
? エラーを想定したコードが必須?
強制されると悩まずに済むので楽になる
おさらい
つまり
Error Handling で?
とっても楽になるってコト!
Error Handling のイメージ
Error Handling
使いどころ
? 達成すべき目的があり?
それを達成できない可能性があるとき
? 原因が実行時エラーに限られるとき
? 原因がいくつか考えられるとき
? 原因を提示し、対応を求めたいとき
// 目的が明確で、エラーも有り得る複合的な機能
func open(file:FILE) throws -> Stream
まとめ
エラーを扱う手段
Optional 型
? 単純に値の有無を提示?
いわゆる Either 型
? 戻り値で分岐点を提示
Fatal Error
? 強制終了して根本的な改善を迫る
Error Handling
? 目的を遂行できない時に原因を提示
Swift はこれらの使用を強要する
?
強要されると
プログラミングが楽になる
つまり
Swift は
すごいってコト!
おしまい。
? Error Handling ってなに?
? NSError を使いやすくするってコト!
? エラーを确実に扱えるってコト!
? 無視するにも覚悟が要るってコト!
? Error Handling は美しいってコト!
? Error Handling でとっても楽になるってコト!
? Swift はすごいってコト!
おまけ
Objective-C のことも
Swift は見捨てない
Objective-C からの自動変換
Objective-C からの自動変換
// このような Objective-C コードが
- (NSString*)getNameFromPath:(NSString*)path
error:(NSError**)error;
// このような Swift コードになる
func getNameFromPath(path:String!)
throws -> String
? 戻り値がクラスの場合
? 最後の引数が NSError** の場合
末尾の NSError を throws に変換
Objective-C からの自動変換
// このような Objective-C コードが
- (BOOL)prepareWithOptions:(NSArray*)opts
error:(NSError**)error;
// このような Swift コードになる
func prepareWithOptions(opts:[AnyObject]!)
throws -> Void
? 戻り値が BOOL の場合
? 最後の引数が NSError** の場合
末尾の NSError を throws に変換
Objective-C への自動変換
Objective-C への自動変換
// このような Swift コードが
func getName(path:String) throws -> String
// このような Objective-C コードになる
- (NSString*)getName:(NSString*)path
error:(NSError**)error;
? 戻り値が @objc 互換オブジェクトの場合
? throws が指定されている場合
throws を NSError に変換
Objective-C への自動変換
// このような Swift コードが
func prepare(options:[String]?) throws
// このような Objective-C コードになる
- (BOOL)prepare:(NSArray**)options
error:(NSError**)error;
? 戻り値が Void の場合
? throws が指定されている場合
throws を NSError に変換
安心して
Error Handling を活用できる
つまり
Swift は
かっこいいってコト!
おしまい。

More Related Content

What's hot (20)

【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
Unity Technologies Japan K.K.
?
今日からはじめる骋笔补谤蝉
今日からはじめる骋笔补谤蝉今日からはじめる骋笔补谤蝉
今日からはじめる骋笔补谤蝉
fumokmm
?
Em synchrony について
Em synchrony についてEm synchrony について
Em synchrony について
Tomoya Kawanishi
?
Swift 2.0 大域関数の行方から #swift2symposium
Swift 2.0 大域関数の行方から #swift2symposiumSwift 2.0 大域関数の行方から #swift2symposium
Swift 2.0 大域関数の行方から #swift2symposium
Tomohiro Kumagai
?
メタプログラミング搁耻产测はこの付録が美味しい
メタプログラミング搁耻产测はこの付録が美味しいメタプログラミング搁耻产测はこの付録が美味しい
メタプログラミング搁耻产测はこの付録が美味しい
Shigeru UCHIYAMA
?
叠辞辞蝉迟础蝉颈辞で可読性を求めるのは间违っているだろうか
叠辞辞蝉迟础蝉颈辞で可読性を求めるのは间违っているだろうか叠辞辞蝉迟础蝉颈辞で可読性を求めるのは间违っているだろうか
叠辞辞蝉迟础蝉颈辞で可読性を求めるのは间违っているだろうか
Yuki Miyatake
?
Effective Modern C++ 勉強会#3 Item16
Effective Modern C++ 勉強会#3 Item16Effective Modern C++ 勉強会#3 Item16
Effective Modern C++ 勉強会#3 Item16
Mitsuru Kariya
?
Visual C++で使えるC++11
Visual C++で使えるC++11Visual C++で使えるC++11
Visual C++で使えるC++11
nekko1119
?
Kanazawa.js.Next
Kanazawa.js.NextKanazawa.js.Next
Kanazawa.js.Next
dynamis
?
组み込みでこそ颁++を使う10の理由
组み込みでこそ颁++を使う10の理由组み込みでこそ颁++を使う10の理由
组み込みでこそ颁++を使う10の理由
kikairoya
?
final int をFINAL しやがれ!
final int をFINAL しやがれ!final int をFINAL しやがれ!
final int をFINAL しやがれ!
Keiichi Nagaoka
?
可変値変数 var を極力避けることを模索するための事前知識 #cswift
可変値変数 var を極力避けることを模索するための事前知識 #cswift可変値変数 var を極力避けることを模索するための事前知識 #cswift
可変値変数 var を極力避けることを模索するための事前知識 #cswift
Tomohiro Kumagai
?
PHP AST 徹底解説
PHP AST 徹底解説PHP AST 徹底解説
PHP AST 徹底解説
do_aki
?
プロトコル指向 - 夢と現実の狭間 #cswift
プロトコル指向 - 夢と現実の狭間 #cswiftプロトコル指向 - 夢と現実の狭間 #cswift
プロトコル指向 - 夢と現実の狭間 #cswift
Tomohiro Kumagai
?
贰虫迟.诲颈谤别肠迟ことはじめ
贰虫迟.诲颈谤别肠迟ことはじめ贰虫迟.诲颈谤别肠迟ことはじめ
贰虫迟.诲颈谤别肠迟ことはじめ
Shuhei Aoyama
?
第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」
yoshiaki iwanaga
?
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
Ryo Suzuki
?
lazy var の特徴を知る #cocoa_kansai #cswift
lazy var の特徴を知る #cocoa_kansai #cswiftlazy var の特徴を知る #cocoa_kansai #cswift
lazy var の特徴を知る #cocoa_kansai #cswift
Tomohiro Kumagai
?
Effective Modern C++ 読書会 Item 35
Effective Modern C++ 読書会 Item 35Effective Modern C++ 読書会 Item 35
Effective Modern C++ 読書会 Item 35
Keisuke Fukuda
?
耻苍颈辩耻别冲辫迟谤にポインタ以外のものを持たせるとき
耻苍颈辩耻别冲辫迟谤にポインタ以外のものを持たせるとき耻苍颈辩耻别冲辫迟谤にポインタ以外のものを持たせるとき
耻苍颈辩耻别冲辫迟谤にポインタ以外のものを持たせるとき
Shintarou Okada
?
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
Unity Technologies Japan K.K.
?
今日からはじめる骋笔补谤蝉
今日からはじめる骋笔补谤蝉今日からはじめる骋笔补谤蝉
今日からはじめる骋笔补谤蝉
fumokmm
?
Swift 2.0 大域関数の行方から #swift2symposium
Swift 2.0 大域関数の行方から #swift2symposiumSwift 2.0 大域関数の行方から #swift2symposium
Swift 2.0 大域関数の行方から #swift2symposium
Tomohiro Kumagai
?
メタプログラミング搁耻产测はこの付録が美味しい
メタプログラミング搁耻产测はこの付録が美味しいメタプログラミング搁耻产测はこの付録が美味しい
メタプログラミング搁耻产测はこの付録が美味しい
Shigeru UCHIYAMA
?
叠辞辞蝉迟础蝉颈辞で可読性を求めるのは间违っているだろうか
叠辞辞蝉迟础蝉颈辞で可読性を求めるのは间违っているだろうか叠辞辞蝉迟础蝉颈辞で可読性を求めるのは间违っているだろうか
叠辞辞蝉迟础蝉颈辞で可読性を求めるのは间违っているだろうか
Yuki Miyatake
?
Effective Modern C++ 勉強会#3 Item16
Effective Modern C++ 勉強会#3 Item16Effective Modern C++ 勉強会#3 Item16
Effective Modern C++ 勉強会#3 Item16
Mitsuru Kariya
?
Visual C++で使えるC++11
Visual C++で使えるC++11Visual C++で使えるC++11
Visual C++で使えるC++11
nekko1119
?
Kanazawa.js.Next
Kanazawa.js.NextKanazawa.js.Next
Kanazawa.js.Next
dynamis
?
组み込みでこそ颁++を使う10の理由
组み込みでこそ颁++を使う10の理由组み込みでこそ颁++を使う10の理由
组み込みでこそ颁++を使う10の理由
kikairoya
?
final int をFINAL しやがれ!
final int をFINAL しやがれ!final int をFINAL しやがれ!
final int をFINAL しやがれ!
Keiichi Nagaoka
?
可変値変数 var を極力避けることを模索するための事前知識 #cswift
可変値変数 var を極力避けることを模索するための事前知識 #cswift可変値変数 var を極力避けることを模索するための事前知識 #cswift
可変値変数 var を極力避けることを模索するための事前知識 #cswift
Tomohiro Kumagai
?
PHP AST 徹底解説
PHP AST 徹底解説PHP AST 徹底解説
PHP AST 徹底解説
do_aki
?
プロトコル指向 - 夢と現実の狭間 #cswift
プロトコル指向 - 夢と現実の狭間 #cswiftプロトコル指向 - 夢と現実の狭間 #cswift
プロトコル指向 - 夢と現実の狭間 #cswift
Tomohiro Kumagai
?
贰虫迟.诲颈谤别肠迟ことはじめ
贰虫迟.诲颈谤别肠迟ことはじめ贰虫迟.诲颈谤别肠迟ことはじめ
贰虫迟.诲颈谤别肠迟ことはじめ
Shuhei Aoyama
?
第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」
yoshiaki iwanaga
?
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
Ryo Suzuki
?
lazy var の特徴を知る #cocoa_kansai #cswift
lazy var の特徴を知る #cocoa_kansai #cswiftlazy var の特徴を知る #cocoa_kansai #cswift
lazy var の特徴を知る #cocoa_kansai #cswift
Tomohiro Kumagai
?
Effective Modern C++ 読書会 Item 35
Effective Modern C++ 読書会 Item 35Effective Modern C++ 読書会 Item 35
Effective Modern C++ 読書会 Item 35
Keisuke Fukuda
?
耻苍颈辩耻别冲辫迟谤にポインタ以外のものを持たせるとき
耻苍颈辩耻别冲辫迟谤にポインタ以外のものを持たせるとき耻苍颈辩耻别冲辫迟谤にポインタ以外のものを持たせるとき
耻苍颈辩耻别冲辫迟谤にポインタ以外のものを持たせるとき
Shintarou Okada
?

Similar to Swift 2.0 の Error Handling #yhios (20)

辫别肠濒-础翱笔の绍介
辫别肠濒-础翱笔の绍介辫别肠濒-础翱笔の绍介
辫别肠濒-础翱笔の绍介
Hiraku Nakano
?
Norikraて?作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
Norikraて?作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LTNorikraて?作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
Norikraて?作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
Masahiro Nagano
?
闯补惫补セキュアコーディングセミナー东京第3回讲义
闯补惫补セキュアコーディングセミナー东京第3回讲义闯补惫补セキュアコーディングセミナー东京第3回讲义
闯补惫补セキュアコーディングセミナー东京第3回讲义
JPCERT Coordination Center
?
Programming camp Codereading
Programming camp CodereadingProgramming camp Codereading
Programming camp Codereading
Hiro Yoshioka
?
Flow.js
Flow.jsFlow.js
Flow.js
uupaa
?
厂飞颈蹿迟おさらい
厂飞颈蹿迟おさらい厂飞颈蹿迟おさらい
厂飞颈蹿迟おさらい
Hidenori Takeshita
?
90分間濃縮 PHPエラーの教室
90分間濃縮 PHPエラーの教室90分間濃縮 PHPエラーの教室
90分間濃縮 PHPエラーの教室
Yusuke Ando
?
GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法
博文 斉藤
?
What is Metasepi?
What is Metasepi?What is Metasepi?
What is Metasepi?
Kiwamu Okabe
?
Buffer overflow
Buffer overflowBuffer overflow
Buffer overflow
ionis111
?
Ruby&Active Support for expert 3
Ruby&Active Support for expert 3Ruby&Active Support for expert 3
Ruby&Active Support for expert 3
xibbar
?
Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~
CHY72
?
ひのきのぼうだけで全クリ目指す
ひのきのぼうだけで全クリ目指すひのきのぼうだけで全クリ目指す
ひのきのぼうだけで全クリ目指す
AromaBlack
?
Lispmeetup #53 PythonベースのLisp方言、 Hyのすすめ
Lispmeetup #53 PythonベースのLisp方言、 HyのすすめLispmeetup #53 PythonベースのLisp方言、 Hyのすすめ
Lispmeetup #53 PythonベースのLisp方言、 Hyのすすめ
Satoshi imai
?
Rust Error Handling
Rust Error HandlingRust Error Handling
Rust Error Handling
ShunsukeNakamura17
?
from old Java to modern Java
from old Java to modern Javafrom old Java to modern Java
from old Java to modern Java
心 谷本
?
Java SE 8 lambdaで変わる プログラミングスタイル
Java SE 8 lambdaで変わる プログラミングスタイルJava SE 8 lambdaで変わる プログラミングスタイル
Java SE 8 lambdaで変わる プログラミングスタイル
なおき きしだ
?
辫别肠濒-础翱笔の绍介
辫别肠濒-础翱笔の绍介辫别肠濒-础翱笔の绍介
辫别肠濒-础翱笔の绍介
Hiraku Nakano
?
Norikraて?作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
Norikraて?作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LTNorikraて?作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
Norikraて?作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
Masahiro Nagano
?
闯补惫补セキュアコーディングセミナー东京第3回讲义
闯补惫补セキュアコーディングセミナー东京第3回讲义闯补惫补セキュアコーディングセミナー东京第3回讲义
闯补惫补セキュアコーディングセミナー东京第3回讲义
JPCERT Coordination Center
?
Programming camp Codereading
Programming camp CodereadingProgramming camp Codereading
Programming camp Codereading
Hiro Yoshioka
?
Flow.js
Flow.jsFlow.js
Flow.js
uupaa
?
90分間濃縮 PHPエラーの教室
90分間濃縮 PHPエラーの教室90分間濃縮 PHPエラーの教室
90分間濃縮 PHPエラーの教室
Yusuke Ando
?
GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法
博文 斉藤
?
Buffer overflow
Buffer overflowBuffer overflow
Buffer overflow
ionis111
?
Ruby&Active Support for expert 3
Ruby&Active Support for expert 3Ruby&Active Support for expert 3
Ruby&Active Support for expert 3
xibbar
?
Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~
CHY72
?
ひのきのぼうだけで全クリ目指す
ひのきのぼうだけで全クリ目指すひのきのぼうだけで全クリ目指す
ひのきのぼうだけで全クリ目指す
AromaBlack
?
Lispmeetup #53 PythonベースのLisp方言、 Hyのすすめ
Lispmeetup #53 PythonベースのLisp方言、 HyのすすめLispmeetup #53 PythonベースのLisp方言、 Hyのすすめ
Lispmeetup #53 PythonベースのLisp方言、 Hyのすすめ
Satoshi imai
?
from old Java to modern Java
from old Java to modern Javafrom old Java to modern Java
from old Java to modern Java
心 谷本
?
Java SE 8 lambdaで変わる プログラミングスタイル
Java SE 8 lambdaで変わる プログラミングスタイルJava SE 8 lambdaで変わる プログラミングスタイル
Java SE 8 lambdaで変わる プログラミングスタイル
なおき きしだ
?

More from Tomohiro Kumagai (20)

最近気づいた勉強法 — 勉強会開催の習慣化 #yumemi_grow
最近気づいた勉強法 — 勉強会開催の習慣化 #yumemi_grow最近気づいた勉強法 — 勉強会開催の習慣化 #yumemi_grow
最近気づいた勉強法 — 勉強会開催の習慣化 #yumemi_grow
Tomohiro Kumagai
?
Swift 所有権 要諦 #ゆるちとせ
Swift 所有権 要諦 #ゆるちとせSwift 所有権 要諦 #ゆるちとせ
Swift 所有権 要諦 #ゆるちとせ
Tomohiro Kumagai
?
_Function Builders in Swift #love_swift
_Function Builders in Swift #love_swift_Function Builders in Swift #love_swift
_Function Builders in Swift #love_swift
Tomohiro Kumagai
?
Property Wrappers の特徴を眺める #swiftzoomin
Property Wrappers の特徴を眺める #swiftzoominProperty Wrappers の特徴を眺める #swiftzoomin
Property Wrappers の特徴を眺める #swiftzoomin
Tomohiro Kumagai
?
みんなで Swift 復習会 GO! in "Swift Days Fukuoka" – 12nd′ オープニング&資料
みんなで Swift 復習会 GO! in "Swift Days Fukuoka" – 12nd′ オープニング&資料みんなで Swift 復習会 GO! in "Swift Days Fukuoka" – 12nd′ オープニング&資料
みんなで Swift 復習会 GO! in "Swift Days Fukuoka" – 12nd′ オープニング&資料
Tomohiro Kumagai
?
みんなで Swift 復習会?GO! in 札幌 – 10th′′
みんなで Swift 復習会?GO! in 札幌 – 10th′′みんなで Swift 復習会?GO! in 札幌 – 10th′′
みんなで Swift 復習会?GO! in 札幌 – 10th′′
Tomohiro Kumagai
?
イニシャライザー Part 2.5 #hakataswift
イニシャライザー Part 2.5 #hakataswiftイニシャライザー Part 2.5 #hakataswift
イニシャライザー Part 2.5 #hakataswift
Tomohiro Kumagai
?
ニコニコ超会議?文化の交差点 #techpub #ニコニコ超会議 #さくらシンデレラ
ニコニコ超会議?文化の交差点 #techpub #ニコニコ超会議 #さくらシンデレラニコニコ超会議?文化の交差点 #techpub #ニコニコ超会議 #さくらシンデレラ
ニコニコ超会議?文化の交差点 #techpub #ニコニコ超会議 #さくらシンデレラ
Tomohiro Kumagai
?
Swift クラスのイニシャライザー #devsap
Swift クラスのイニシャライザー #devsapSwift クラスのイニシャライザー #devsap
Swift クラスのイニシャライザー #devsap
Tomohiro Kumagai
?
iOSCon 2019 in London #ioscon #love_swift
iOSCon 2019 in London #ioscon #love_swiftiOSCon 2019 in London #ioscon #love_swift
iOSCon 2019 in London #ioscon #love_swift
Tomohiro Kumagai
?
Around the 変数 let #love_swift
Around the 変数 let #love_swiftAround the 変数 let #love_swift
Around the 変数 let #love_swift
Tomohiro Kumagai
?
もくもく執筆会 #技術同人誌再販Night
もくもく執筆会 #技術同人誌再販Nightもくもく執筆会 #技術同人誌再販Night
もくもく執筆会 #技術同人誌再販Night
Tomohiro Kumagai
?
みんなで Swift 復習会 GO! in 岩手 – 9th′
みんなで Swift 復習会 GO! in 岩手 – 9th′みんなで Swift 復習会 GO! in 岩手 – 9th′
みんなで Swift 復習会 GO! in 岩手 – 9th′
Tomohiro Kumagai
?
macOS アフ?リて? Swift Package Manager を使ってみる #love_swift #hakataswift
macOS アフ?リて? Swift Package Manager を使ってみる #love_swift #hakataswiftmacOS アフ?リて? Swift Package Manager を使ってみる #love_swift #hakataswift
macOS アフ?リて? Swift Package Manager を使ってみる #love_swift #hakataswift
Tomohiro Kumagai
?
みんなで Swift 復習会 GO! in 福岡 – 8th′ #minna_de_swift
みんなで Swift 復習会 GO! in 福岡 – 8th′ #minna_de_swiftみんなで Swift 復習会 GO! in 福岡 – 8th′ #minna_de_swift
みんなで Swift 復習会 GO! in 福岡 – 8th′ #minna_de_swift
Tomohiro Kumagai
?
Getting Started with Attending iOSCon in London 高画質?追記版 #love_swift #ioscon
Getting Started with Attending iOSCon in London 高画質?追記版 #love_swift #iosconGetting Started with Attending iOSCon in London 高画質?追記版 #love_swift #ioscon
Getting Started with Attending iOSCon in London 高画質?追記版 #love_swift #ioscon
Tomohiro Kumagai
?
みんなで Swift 復習会?GO! in 京都 – 6th′
みんなで Swift 復習会?GO! in 京都 – 6th′みんなで Swift 復習会?GO! in 京都 – 6th′
みんなで Swift 復習会?GO! in 京都 – 6th′
Tomohiro Kumagai
?
みんなで Swift 復習会 GO! in 福岡 – 5th′
みんなで Swift 復習会 GO! in 福岡 – 5th′みんなで Swift 復習会 GO! in 福岡 – 5th′
みんなで Swift 復習会 GO! in 福岡 – 5th′
Tomohiro Kumagai
?
勉強会の東京外開催の気持ち #yuru_bounen2017
勉強会の東京外開催の気持ち #yuru_bounen2017勉強会の東京外開催の気持ち #yuru_bounen2017
勉強会の東京外開催の気持ち #yuru_bounen2017
Tomohiro Kumagai
?
みんなで Swift 復習会 GO! in 福岡?発表資料
みんなで Swift 復習会 GO! in 福岡?発表資料みんなで Swift 復習会 GO! in 福岡?発表資料
みんなで Swift 復習会 GO! in 福岡?発表資料
Tomohiro Kumagai
?
最近気づいた勉強法 — 勉強会開催の習慣化 #yumemi_grow
最近気づいた勉強法 — 勉強会開催の習慣化 #yumemi_grow最近気づいた勉強法 — 勉強会開催の習慣化 #yumemi_grow
最近気づいた勉強法 — 勉強会開催の習慣化 #yumemi_grow
Tomohiro Kumagai
?
Swift 所有権 要諦 #ゆるちとせ
Swift 所有権 要諦 #ゆるちとせSwift 所有権 要諦 #ゆるちとせ
Swift 所有権 要諦 #ゆるちとせ
Tomohiro Kumagai
?
_Function Builders in Swift #love_swift
_Function Builders in Swift #love_swift_Function Builders in Swift #love_swift
_Function Builders in Swift #love_swift
Tomohiro Kumagai
?
Property Wrappers の特徴を眺める #swiftzoomin
Property Wrappers の特徴を眺める #swiftzoominProperty Wrappers の特徴を眺める #swiftzoomin
Property Wrappers の特徴を眺める #swiftzoomin
Tomohiro Kumagai
?
みんなで Swift 復習会 GO! in "Swift Days Fukuoka" – 12nd′ オープニング&資料
みんなで Swift 復習会 GO! in "Swift Days Fukuoka" – 12nd′ オープニング&資料みんなで Swift 復習会 GO! in "Swift Days Fukuoka" – 12nd′ オープニング&資料
みんなで Swift 復習会 GO! in "Swift Days Fukuoka" – 12nd′ オープニング&資料
Tomohiro Kumagai
?
みんなで Swift 復習会?GO! in 札幌 – 10th′′
みんなで Swift 復習会?GO! in 札幌 – 10th′′みんなで Swift 復習会?GO! in 札幌 – 10th′′
みんなで Swift 復習会?GO! in 札幌 – 10th′′
Tomohiro Kumagai
?
イニシャライザー Part 2.5 #hakataswift
イニシャライザー Part 2.5 #hakataswiftイニシャライザー Part 2.5 #hakataswift
イニシャライザー Part 2.5 #hakataswift
Tomohiro Kumagai
?
ニコニコ超会議?文化の交差点 #techpub #ニコニコ超会議 #さくらシンデレラ
ニコニコ超会議?文化の交差点 #techpub #ニコニコ超会議 #さくらシンデレラニコニコ超会議?文化の交差点 #techpub #ニコニコ超会議 #さくらシンデレラ
ニコニコ超会議?文化の交差点 #techpub #ニコニコ超会議 #さくらシンデレラ
Tomohiro Kumagai
?
Swift クラスのイニシャライザー #devsap
Swift クラスのイニシャライザー #devsapSwift クラスのイニシャライザー #devsap
Swift クラスのイニシャライザー #devsap
Tomohiro Kumagai
?
iOSCon 2019 in London #ioscon #love_swift
iOSCon 2019 in London #ioscon #love_swiftiOSCon 2019 in London #ioscon #love_swift
iOSCon 2019 in London #ioscon #love_swift
Tomohiro Kumagai
?
Around the 変数 let #love_swift
Around the 変数 let #love_swiftAround the 変数 let #love_swift
Around the 変数 let #love_swift
Tomohiro Kumagai
?
もくもく執筆会 #技術同人誌再販Night
もくもく執筆会 #技術同人誌再販Nightもくもく執筆会 #技術同人誌再販Night
もくもく執筆会 #技術同人誌再販Night
Tomohiro Kumagai
?
みんなで Swift 復習会 GO! in 岩手 – 9th′
みんなで Swift 復習会 GO! in 岩手 – 9th′みんなで Swift 復習会 GO! in 岩手 – 9th′
みんなで Swift 復習会 GO! in 岩手 – 9th′
Tomohiro Kumagai
?
macOS アフ?リて? Swift Package Manager を使ってみる #love_swift #hakataswift
macOS アフ?リて? Swift Package Manager を使ってみる #love_swift #hakataswiftmacOS アフ?リて? Swift Package Manager を使ってみる #love_swift #hakataswift
macOS アフ?リて? Swift Package Manager を使ってみる #love_swift #hakataswift
Tomohiro Kumagai
?
みんなで Swift 復習会 GO! in 福岡 – 8th′ #minna_de_swift
みんなで Swift 復習会 GO! in 福岡 – 8th′ #minna_de_swiftみんなで Swift 復習会 GO! in 福岡 – 8th′ #minna_de_swift
みんなで Swift 復習会 GO! in 福岡 – 8th′ #minna_de_swift
Tomohiro Kumagai
?
Getting Started with Attending iOSCon in London 高画質?追記版 #love_swift #ioscon
Getting Started with Attending iOSCon in London 高画質?追記版 #love_swift #iosconGetting Started with Attending iOSCon in London 高画質?追記版 #love_swift #ioscon
Getting Started with Attending iOSCon in London 高画質?追記版 #love_swift #ioscon
Tomohiro Kumagai
?
みんなで Swift 復習会?GO! in 京都 – 6th′
みんなで Swift 復習会?GO! in 京都 – 6th′みんなで Swift 復習会?GO! in 京都 – 6th′
みんなで Swift 復習会?GO! in 京都 – 6th′
Tomohiro Kumagai
?
みんなで Swift 復習会 GO! in 福岡 – 5th′
みんなで Swift 復習会 GO! in 福岡 – 5th′みんなで Swift 復習会 GO! in 福岡 – 5th′
みんなで Swift 復習会 GO! in 福岡 – 5th′
Tomohiro Kumagai
?
勉強会の東京外開催の気持ち #yuru_bounen2017
勉強会の東京外開催の気持ち #yuru_bounen2017勉強会の東京外開催の気持ち #yuru_bounen2017
勉強会の東京外開催の気持ち #yuru_bounen2017
Tomohiro Kumagai
?
みんなで Swift 復習会 GO! in 福岡?発表資料
みんなで Swift 復習会 GO! in 福岡?発表資料みんなで Swift 復習会 GO! in 福岡?発表資料
みんなで Swift 復習会 GO! in 福岡?発表資料
Tomohiro Kumagai
?

Swift 2.0 の Error Handling #yhios