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