Yuichi Yoshida
Chief engineer, DENSO IT Laboratory, Inc.
@sonson_twit
© 2014 DENSO IT Laboratory, Inc., All rights reserved. Redistribution or public display not permitted without written permission from DENSO IT Laboratory, Inc.
オールドタイプの奮闘
Programming Swift 2 (& LLDB) シンポジウム
Swiftをどうやって勉強するか
自己紹介
2tchの中の人
• iOS好きです
• 2tch(2ちゃんねるビューア)
• iOS SDK Hacksなど
• 研究・開発
• コンピュータビジョン
• 機械学習
• 画像検索サービスとか
• 車向けサービスやハードウェアとか
本業
Swiftを始めるにあたって,
どこから手を付けたらいいか,わからなくないですか?
プログラミング
• C
• C++(触るレベル)
• MATLAB
• Ruby(触るレベル)
• Javascript(適当レベル)
• Objective-C
たとえば,C→Ruby
int length = 10;
int *array = (int*)malloc(sizeof(int) * length);
// initialize array
for (int i = 0; i < length; i++) {
printf("%dn", array[i]);
}
free(array);
朝飯前だ!
たとえば,C→Ruby
var array = [10, 2, 3, 4, 5, 5, 2]
array.each{|e|
puts e
}
var array = [10, 2, 3, 4, 5, 5, 2]
for i in 0...array.count
puts array[i]
end
Before breakfast!
直訳
Piece of cake!
意訳
避けたいこと
• Rubyを始めたとき(今でも・・・だけど)
• CをそのままRubyにしただけ
• RubyでコンパイルできるC言語のコード・・・
• C→Rubyへのアドバンテージがない
• ライブラリやGemだけ
• Obj-C→Swiftの場合はそれすらない
その言語ならではの書き方を学ばなければ意味がない
Obj-Cっぽくないコード書くために
• !を使わない
• できる限り高階関数で実装する
• できる限りclassをstructに換える(意味ないのはダメ)
• protocolも使う
• Result<A>に挑戦する
• flatMapに挑戦する←イマココ
最初
• Swift,Optional,爆発しろ
現在
• Swiftかわいいよ,Swift・・・・
reddift
Swift Reddit API Wrapper
• 1億人以上のアメリカのSNS
• APIあり
• Objective-CのAPI Wrapperはあり
• OAuth2に対応してない
• Swiftじゃない
• よし,いっちょ,勉強がてら作るか!
• MIT License
https://github.com/sonsongithub/reddift
http://www.objc.io/books/
https://robots.thoughtbot.com/efficient-json-in-swift-with-
functional-concepts-and-generics
参考文献?
まとめ
• 勉強どう始める?
• Swiftっぽいコードを書かないと意味がない
• ちょっとずつSwiftっぽくしていけばいいんじゃね?
• 議論
• 何から始めればいいのか
• Swift っぽいコードとは?
• Swiftで関数型言語として実装すべきか
• 関数型と手続き型の中間だと思うけど・・・・
デンソーアイティーラボラトリでは、
         研究者,エンジニアを絶賛募集中です。
興味のある方はこちら。https://www.d-itlab.co.jp/recruit/
画像処理・機械学習・信号処理・自然言語処理など

Swift 2 (& lldb) シンポジウム