What is `Swifty`?
この記事は 「Swift Advent Calendar 2017」 2日目の記事です。
前置き
WWDC 2016 のいくつかのセッションで「Swifty」という言葉が使われました。
そして今年11月に try! Swift India で「『Swifty』って英和辞典に載ってないけどどういうこと?よくわからない」と少しジョークをまじえて「What is `Swifty`?」という LT をしました。
この記事はその内容を日本語にしたものです。技術記事としてわざわざ出すには気がひける内容ですが、アドベントカレンダーなのでゆるめで🎄🎅
(そういえば try! Swift India でも2番目)
では本題です。
Swifty? 🤔
「Swifty」という単語は Mac の英和辞典には載っていません。
-ty
[接尾辞]
…な性質・状態
ただ「Swift」に接尾辞「ty」を加えたものであることはなんとなくわかりますよね。インドで英語圏の方々を前にそう話しても特に指摘はなかったです。
【12月3日追記】
-y
[接尾辞]
…の性質の, …する傾向がある
星野恵瑠@今日も1日フレンズ㌠ (@lovee)さんから教えていただきました。単に「y」の接尾辞があるので「Swift」+「y」が正しいですね。ありがとうございます🙏
似たような単語として「emojify」や「emojification」があります。これらも WWDC 2016 で使われました。
WWDC Videos 🔍
「Swifty」が実際どのように使われたのか再確認するため、Transcript(発言を文字に起こしたもの)をもとに検索しました。
developer.apple.com で検索することができますね。
検索した結果は次のとおりです。
What’s New in Cocoa (2016)
[02:02]
…which of course makes our APIs more Swifty, as you might have heard yesterday.[08:07]
You’ll see that’s not very Swifty because .NSCrayonModeColorPanel is fairly wordy.
Swift API Design Guidelines (2016)
[04:18]
They feel a bit not Swifty. What’s that even mean?[04:24]
Not Swifty ? You hear it a lot.[04:50]
…to codify what it is to build a Swifty API and help everyone build more consistent, more clear APIs[20:41]
They’re used all the time to give them these Swifty makeovers to be beautiful in Swift.[29:42]
Now, method names will get you a long way towards a Swifty API, but this doesn’t quite go far enough.[29:52]
But if you look at this, this doesn’t really feel very Swifty, especially NSCalendarIdentifierGregorian,[34:42]
…and make it look Swifty? How can we make it feel Swifty? Well, for that, we revisit our friend NS Swift Name.
Platforms State of the Union (2016)
[21:08]
Swift loves clarity and it aims to define away boilerplate. On Swift 3, Cocoa APIs have an elegant feel. You could say they’re totally Swifty.
このように見てみると、API に関する説明で使われていますね。2016年といえば Swift 3 が正式リリースされ、Swift 2 系から大幅に変更されたときです。
API Design Guidelines は Swift.org にまとめられています。
API Design Guidelines
そしてこれらの元になった Swift Evolution の提案はこちらです。
SE-0023 API Design Guidelines
ところで Swift Evolution で「Swifty」を検索してみましたが、何もヒットしませんでした。
Swift の特徴
Swift の特徴を Swift.org の「About Swift」で見てみましょう。
- Safe
- Fast
- Expressive
おおざっぱに言えば、Expressive(表情の豊かな)は API Design Guidelines 寄りの話ですね。Fast(速い)はパフォーマンスの話です。
そして Safe(安全な)についてはFeatures(特徴)としてさらに説明されています。
Safety
Developer mistakes should be caught before software is in production
- Variables are always initialized before use
- Arrays and integers are checked for overflow
- Memory is managed automatically
Swift では誤ったプログラミングによる実行時エラーを未然に防ぐよう、コンパイル時に検証されます。
NOT Swifty ? 🤔
逆に「NOT Swifty」とはどういうことでしょうか。
単純に言えば Swift API Design Guidelines に従っていなければ Swift らしくないと言えるでしょう。
そのほか、GitHub の apple/swift-evolution リポジトリに「Commonly Rejected Changes」というドキュメントがあり、却下された提案がまとめられています。Swift の方向性が読み取れるので、ここに記載されている内容は Swift らしいとは言えないでしょう。
Commonly Rejected Changes
This is a list of changes to the Swift language that are frequently proposed but that are unlikely to be accepted.
Objective-Cty ? 🤔
最後に、 Swifty(Swift らしい)かどうかは何かと比較しているのでしょうが、これは Swift 2 系や Objective-C と比較しているのだと考えています。これら以外にもたくさんのプログラミング言語が存在しますが、それらすべてとの比較ではないでしょう。
そこで Objective-Cty(Objective-C らしい)とはどういうことかを考えてみました。なお Objective-Cty で検索しても何もヒットしません。
Swift API Design Guidelines と類似のものとして Design Guidelines for Cocoa というものがありますね。
Design Guidelines for Cocoa
そして Swift と大きく異なる点をあげると、動的であることです。Swift はコンパイル時に型をチェックするので静的です。
Dynamic typing
まとめ
以上のようにざっとながめてみましたが、「Swifty」とは「Swift らしい」という意味であることはもちろん、広義では Swift の特徴(たとえば型安全性)を生かしたプログラミングのことを指しているのではないでしょうか。
- Swift API Design Guidelines に従う
- (型)ご安全に!