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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
210
API仕様書から自前でコード生成して運用した話 / DroidKaigi 2018 Reject Conference
wm3
0
940
apply() 要らなくない?
wm3
2
1.5k
Firebase Analytics で 画像ロードのパフォーマンス を測定し、改善をした話
wm3
2
1.5k
iOS の Reactive 系ライブラリ
wm3
1
980
Other Decks in Programming
See All in Programming
AI Readyの正体はデータマネジメントだ メダリオン2.0の最前線
freee
PRO
0
200
仕様書を書く前にハーネスを作る - Agent Native開発は「探索を速く、判定を固く」
gotalab555
4
1.6k
php-fpmのプロセスが枯渇した日-調査・対処・そして本当にやるべきだったこと-
shibuchaaaan
0
270
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
570
「人を評価する AI」の設計と実装
ryoyanara
0
190
2年かけて Deno に DOMMatrix を実装した話 / How I implemented DOMMatrix in Deno over two years
petamoriken
0
210
ドリフトを絶対に許さない(?)CDK運用 / CDK Ops with Zero Tolerance for Drifts (?)
akihisaikeda
1
180
そこに3びきプロダクトがいるじゃろう——生成AI時代における“価値が届かない理由”の構造
kosuket
0
470
freeeにおけるEvalsの実践例の紹介
freee
PRO
0
110
Laravel Boostに学ぶ、AIにPHPを書かせる技術 〜OSSの実装から蒸留するエージェント制御の王道〜
kentaroutakeda
3
680
GDG Korea Android: 2026 I/O Extended ~ What's new in Android development tools
pluu
0
220
AI Engineeringは、AIプロダクトだけのものか? 〜AIがソフトウェアを作る時代の新しい当たり前〜 / No AI in your product. AI Engineering in your development.
rkaga
4
400
Featured
See All Featured
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
240
RailsConf 2023
tenderlove
30
1.5k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
320
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
430
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
950
The browser strikes back
jonoalderson
0
1.5k
Faster Mobile Websites
deanohume
310
32k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
570
We Have a Design System, Now What?
morganepeng
55
8.3k
WCS-LA-2024
lcolladotor
0
790
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.4k
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 を 開発する事に
結果として 今時かつ安全 ハイパフォーマンスな 期待感の高い言語に
以上です