Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Tunnel 社内勉強会 Swift の紹介
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Motoi Washida
August 03, 2016
Programming
340
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Tunnel 社内勉強会 Swift の紹介
Motoi Washida
August 03, 2016
More Decks by Motoi Washida
See All by Motoi Washida
CLIPでマルチモーダル画像検索 →とても良い
wm3
3
1.1k
アプリのための「レイヤー化」アーキテクチャ / Droid Meetup 2019-03
wm3
0
2.6k
Material Design の社内勉強会を行った / Android Engineer Design 1
wm3
1
220
API仕様書から自前でコード生成して運用した話 / DroidKaigi 2018 Reject Conference
wm3
0
940
apply() 要らなくない?
wm3
2
1.5k
Firebase Analytics で 画像ロードのパフォーマンス を測定し、改善をした話
wm3
2
1.5k
iOS の Reactive 系ライブラリ
wm3
1
990
Other Decks in Programming
See All in Programming
Hello, Hiroshima Geospatial Data! — Exploring DoboX with Python
ra0kley
0
160
高専キャリア LT 発表内容
crysta1221
6
5.5k
PHPプロジェクトの結合バランスを可視化する #php_night
kajitack
0
200
FastAPI の並行処理モデルを完全に理解する
hoto17296
9
3.7k
AIの中の人になってみる
htkym
0
160
【デモ】Kiroで体験する仕様駆動開発|設計からコーディングまでAIと進める開発フロー
cmkudo
0
570
不幸な GC
chencmd
0
870
【DroidKaigi 2026】「アクセシビリティを利用するとき、 アクセシビリティもまたこちらを利用している」 〜マルウェアによる攻撃と防衛について〜
halunoyo
0
330
ALB ログから Trace を気合で繋げる技術
fohte
7
860
MySQLとPostgreSQLって何が違うの?
akagami
PRO
0
160
DynamoDBの基礎を振り返りながらベクトル検索機能を理解する
musan
3
260
Discordを用いたラボオートメーション関連情報収集の自動化
noguhiro2002
0
500
Featured
See All Featured
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
390
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
640
Utilizing Notion as your number one productivity tool
mfonobong
4
570
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
590
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
520
Music & Morning Musume
bryan
47
7.4k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
The Spectacular Lies of Maps
axbom
PRO
1
970
Product Roadmaps are Hard
iamctodd
55
13k
The Curse of the Amulet
leimatthew05
2
14k
Transcript
Swift の紹介 鷲田 基
始まり
2014 年 6 月
Apple WWDC で発表
(当時発表された) 特徴
モダン
安全
インタラクティブ
逆に言うと
Objective-C
古臭い
壊れやすい
手軽に試せない
質問
• Swift 使った事ある人いますか? • Objective-C 使った事ある人いますか? • Objective-C のコード見た事ある人いますか?
最初どう思いました?
None
Swift のモダンな所
1. 親しみやすい 2. 今時の機能
親しみやすい
Objective-C
Swift
親しみやすい
Objective-C からすると • API 呼び出し可能(相互で) • 似たようなオブジェクト指向の機能 ◦ Protocol、Protocol Extension(Category)
• ARC
Java
Swift
親しみやすい
Java からすると • 安全さ ◦ 静的型付け、ジェネリクス、アクセスコントロール、例外処 理 • (そもそもObjective-C と
Java はかなり近い)
LLからすると • 簡易な記述 ◦ 変数の省略(型推論)、高機能なコレクション処理 ◦ 配列、マップ、関数オブジェクトのリテラル • インタラクティブな環境(Playground)
静的型付け・オブジェクト指向を 基盤にしつつ LL の利便性や関数型言語の 手法を取り入れた
今時の言語
Scala や Kotlin, Go が近い
• 若干不便 • 低レベルの動作が推測しやすい ただし GC が無い
Swift の安全な所
Java と類似の安全性担保の機能 • 静的型付け、ジェネリクス • アクセスコントロール • 例外処理(チェック例外など)
他にもたくさん
安全を担保する機能を どんどん使ってバグを 減らしましょう!
⚠ 安全じゃない物
その1
nil / null
ぬるぽ (^^)
nil かもしれない。ビルドできない
Optional にすればビルド可能
if let … で中身を安全に取り出す
guard let … で nil の場合に return
• Optional ◦ nil の可能性があるものと無い物をコンパイル時に区別 • if let … /
guard let … ◦ 安全に nil じゃないものを取り出す
⚠ 安全じゃない物
その2
キャスト
キャスト、危険!
as? で安全にキャスト
switch 文で複数の分岐をシンプルに
enum でより明白に
• 強制なキャスト(as!) とオプショナルな as? ◦ as? を使うのが推奨 • パターンマッチ •
Swift の enum はとても柔軟
⚠ 安全じゃない物
その3
変数 (var)
• var … 変数 • let … 定数、Java の final
定数 (let) を使いましょう
var はバグを作りやすい
for … in … でわかりやすいループ
map でループで使う var も削除
• なるべく var を使わない • 言語の機能を使うと var を使わずに済む事が多 い
⚠ 安全じゃない物
その4
class
class
struct
struct の class との違い • インスタンス変数やメソッド定義などは一緒 ◦ 継承できないなど、幾つかの制限がある • 代入に対して
ARC では無くコピーがされる ◦ 循環参照などの問題が無いので比較的安全
その他の機能
いろいろ
タプル, Protocol Extension, typedef
@noesape, @autoclosure など
略
コミュニティ
公式ページ swift.org
仕様の提案とディスカッショ ン
[email protected]
決まった事
github.com/apple/swift- evolution
新機能の提案やその議論が 見れる
swift-evolution での提案例
プラットフォーム
macOS / iOS
Linux
Server Side Swift など という事をやろうとしている 人達もいるらしい
Android, Windows
一応あるらしい
Swift の今後について
最近のニュース
http://qiita. com/mono0926/items/c51b74fae679e1e39d2 b
Swift 4 の開発ロードマップ 発表
2017 年秋 リリース予定
Swift 3 の(非互換な)仕様は 確定
Swift 3 の変更
Swift 2系と非互換!
中にはアグレッシブな 変更点も
for …; …; … { … } 構文禁止
++/-- 演算子禁止
多くは細かい構文の改善
おまけ Apple と開発言語
Objective-C
macOS の前身 NeXTSTEP の 開発用言語
C 言語の Smalltalk 風オブジェクト指向 拡張
C 言語とオブジェクト指向 の部分が分離
[object method: arg]
@interface … @end
最小限の修正で最大限の機 能の提供
Java
Apple は Java が好き?
Objective-C の Java 風の 「Modern syntax」の検討 (1997)
やめた
Mac OS X 発表 Cocoa が Java で書けた (2000)
10.4 でサポート外に
Java を Apple が独自提供
Oracle が提供する事に (いつかは忘れた)
いまいちモダンじゃない Objective-C
Java に対する期待は 一定数あった
しかし実現せず
最終的に独自言語 Swift を 開発する事に
結果として 今時かつ安全 ハイパフォーマンスな 期待感の高い言語に
以上です