Swiftポエム その2

僕も @mono0926 さん[同様](http://qiita.com/mono0926/items/15a407cb33914be278e7) Swift で人生が豊かになったのでポエムを書くことにしました。

## Swiftとの出会い

あの朝、いつもより少し早く目覚めてた僕は、「そういえば昨晩は WWDC だったんだよなぁ」と思って布団の中で Safari を開きました。そしたら「アップルが新言語」の文字が。

衝撃でした。

最初はあまり好きになれなかった Objective-C とも仲良くなり、 ARC はもちろん `NSArray` や `NSDictionary` のリテラルが導入されるなど、実は結構いい言語になってきたなぁと思っていたところでした。その時点では、 Obj-C は長年やってきた Java の次に使える言語になっていました。新言語がイケてなかったらどうしようと不安に思いながら、 The Swift Programming Language のページをめくりました。

最初に

```swift
var myVariable = 42
```

というサンプルを目にして、「動的型付けかよ。オワタ・・・。」と思いました。

もちろん、その心配は杞憂に終わりました。 Swift は静的型付けで型推論のあるイケてる言語でした。そのときのツイートが↓です。

<blockquote class="twitter-tweet" lang="ja"><p lang="ja" dir="ltr">iOSに新開発言語Swift。静的型付けでオブジェクト指向。ジェネリクス・型推論・第一級関数・クロージャ・structあり。GCはなくARC。letで定数、varで変数宣言。変数の型に?がないとnil代入不可。structやenumにもメソッド宣言可。全体的にいい感じ！</p>&mdash; koher (@koher) <a href="https://twitter.com/koher/status/473585591234215937">2014, 6月 2</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

僕はその頃、自分で理想の言語を作りたいと思っていましたが、 Swift はそれに近いものでした。僕はすぐに Swift に夢中になりました。

## Swiftに対する評価の変遷

とは言え、当初は Swift より [Ceylon](http://ceylon-lang.org/) の方がいい言語なんじゃないかと思っていました。Ceylon の持つ _Union type_ や、それを使って `Foo|Null` によって _Optional type_ を表すのはキレイな設計に思えたし、値型が存在せずすべてクラスで表せるのも美しいと思っていました。 Swift の初期の `Array` は[ヤバかった](http://qiita.com/koher/items/6f54eafac59793e7c364)し、コレクションが値型なのもどうなのかと思っていました。

しかし、 `Array` が[素晴らしくなり](http://qiita.com/koher/items/47f444200d4e02b6414e)、自分の考えが浅はかだったことを知りました。また、関数型言語的な手法を学ぶ中で Swift の素晴らしさは際立ってきました。特に、 `Optional` とそれを支える構文（ _Optional binding_, _Optional chaining_, _Forced unwrapping_ など ）は _Null safe_ と快適なコーディングを両立してくれる頼もしい存在です。また、それでも避けられない面倒なケースも、 `map` や `flatMap` を[使いこなせば乗り越えられる](http://qiita.com/koher/items/c6f446bad54442a28bf4)ことがわかってきました。

演算子を定義できることから、 Haskell のように[アプリカティブスタイルでコードを書く](http://qiita.com/koher/items/95583f58a443f6a33c28)など、遊べる言語であることも魅力的でした。

今では、間違いなく僕にとってのベスト言語です。その Swift が[オープンソース化](https://swift.org/)され、今後利用シーンが拡大していきそうなことはとてもうれしいことです。

個人的には、書き心地がいいので Python の代わりになってくれたりするといいなぁと思っています。今後、数値計算や機械学習系のライブラリが充実してくるとうれしいですね。時間ができたら、 [libsvm](https://github.com/cjlin1/libsvm) のラッパーとか書きたいなぁと思っています。

## SwiftとQiita

僕が始めて Qiita に投稿した ["SwiftのArrayがヤバイ"](http://qiita.com/koher/items/6f54eafac59793e7c364) は、初めは別のブログに投稿したものでした。が、新設ブログだったこともあり、まったく注目されることなく一週間が過ぎました。そこで、「最近 Qiita とやらが流行ってるみたいだから試しに投稿みるか」と思って投稿したところ、一気に 200 以上のストックを獲得することができました。

それは衝撃的な体験でした。まったく同じ内容なのに、投稿する場所によってこうも違うのかと。その経験から、特定のカテゴリー（この場合はプログラミング）に特化したサービスの、ユーザー密度の高さがもたらすパワーについて学びました。それ以来、僕はプログラミングのことは Qiita に投稿するようになりました。

Swift の発表とほぼ同時期に Qiita を書き始めたので、僕は必然的に Swift を中心として投稿するようになりました。

Qiita を書き始めて一番良かったことの一つは、以前よりも勉強するようになったことです。初めの頃は内容や書き方もいいかげんなことが多かったですが、いくつかの投稿が注目されるにつれ、できるだけ正確なことを書きたいと思うようになりました。「おそらく〇〇です。」や、「間違えていたら指摘して下さい。」と書くことは簡単ですが、自分が読者だったらそういう投稿を読むと内容の確かさに不安を覚えるだろうなと思いました。しかし断言して書くからにはできるだけ間違ったことを書かないよう注意が必要です。もちろん完璧なものなんて書けないですし、必要以上に間違いを恐れたら何も書けなくなってしまいます。しかし、最低限自分が自信を持って書ける程度にはなろうと思い、その結果、それまでよりも勉強するようになりました。関数型の考えを知るために、[すごいH本](http://www.amazon.co.jp/dp/B009RO80XY)で Haskell も学びました。

そして、 Qiita に Swift について書いていたのがきっかけで、来年の春には [try! Swift](http://blog.kishikawakatsumi.com/entry/2015/12/02/193302) で発表する機会をいただくことになりました。発表者の面々がすごすぎて若干恐縮してますが、このような素晴らしい機会は Swift と Qiita がなければなかったでしょう。

僕は、 Swift から人生にもっとも良い影響を受けた一人かもしれません。

## Swiftとの今後

前述の通り Swift はオープンソースになりました。現在、 Swift 3.0 の仕様について[コミュニティで議論](https://lists.swift.org/pipermail/swift-evolution/)がされています。膨大な量のメールが飛んで来るし、もちろん全部英語なので、とても全部は追いきれませんが、がんばって何か議論に参加できたらいいなぁと思っています。

また、 Swift ユーザーとしては、 iOS アプリ開発だけでなく色んな用途に Swift を使っていきたいです。実は、今も個人プロジェクトのバッチを Swift で書いています。 Swift だと複雑な非同期処理が簡単に書けすぎて開発も爆速です。もうほぼほぼ出来上がったので、年明け早々にでもサービスを公開出来そうです。

-------------------------------

というわけで、 @mono0926 さんに触発されて、またカレンダーに穴が空いてしまっていたので、僕も Swift への感謝を込めてポエムを書いてみました。今後もますます活発化している Swift から目が離せません😊