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

15
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をどうやって勉強するか

Upload: yuichi-yoshida

Post on 03-Aug-2015

2.084 views

Category:

Documents


0 download

TRANSCRIPT

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をどうやって勉強するか

自己紹介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("%d\n", 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・・・・

reddiftSwift 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/

画像処理・機械学習・信号処理・自然言語処理など