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
330
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
930
apply() 要らなくない?
wm3
2
1.5k
Firebase Analytics で 画像ロードのパフォーマンス を測定し、改善をした話
wm3
2
1.5k
iOS の Reactive 系ライブラリ
wm3
1
980
Other Decks in Programming
See All in Programming
スマートグラスで並列バイブコーディング
hyshu
0
270
AI がコードを書く時代における新卒エンジニアの仕事風景 (2026) / New Graduate Engineers in the Era of AI Coding (2026)
sushichan044
0
190
Spring Security 実践 ─ GraphQL APIで実務に役立つ 認証・認可 を学ぶ
wagyu
0
270
Oxcを導入して開発体験が向上した話
yug1224
4
370
Vite+ Unified Toolchain for the Web
naokihaba
0
410
自作OSでスライド発表する
uyuki234
1
3.6k
Even G2とAWSで推しのエージェントを召喚しよう!
har1101
1
140
「正の参照」と 「負の導出」で組む ハーネスエンジニアリング
cottpan
1
100
吝嗇家のためのAI活用 / AI development for miser - ChatGPT + Issue Driven Development
tooppoo
0
150
Signal Forms: Details & Live Coding @enterJS 2026 in Mannheim
manfredsteyer
PRO
0
210
Honoでのサプライチェーン侵害対策 〜 3つのライブラリに学ぶ
yusukebe
7
1.7k
Go1.27で導入されるジェネリクスメソッドでできること
mackee
0
230
Featured
See All Featured
Building the Perfect Custom Keyboard
takai
2
810
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.6k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Thoughts on Productivity
jonyablonski
76
5.2k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.5k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
A Modern Web Designer's Workflow
chriscoyier
698
190k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
1.1k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
800
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
410
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.8k
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 を 開発する事に
結果として 今時かつ安全 ハイパフォーマンスな 期待感の高い言語に
以上です