Help us understand the problem. What is going on with this article?

Swiftポエム その2

More than 3 years have passed since last update.

僕も @mono0926 さん同様 Swift で人生が豊かになったのでポエムを書くことにしました。

Swiftとの出会い

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

衝撃でした。

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

最初に

var myVariable = 42

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

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

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

Swiftに対する評価の変遷

とは言え、当初は Swift より Ceylon の方がいい言語なんじゃないかと思っていました。Ceylon の持つ Union type や、それを使って Foo|Null によって Optional type を表すのはキレイな設計に思えたし、値型が存在せずすべてクラスで表せるのも美しいと思っていました。 Swift の初期の Arrayヤバかったし、コレクションが値型なのもどうなのかと思っていました。

しかし、 Array素晴らしくなり、自分の考えが浅はかだったことを知りました。また、関数型言語的な手法を学ぶ中で Swift の素晴らしさは際立ってきました。特に、 Optional とそれを支える構文( Optional binding, Optional chaining, Forced unwrapping など )は Null safe と快適なコーディングを両立してくれる頼もしい存在です。また、それでも避けられない面倒なケースも、 mapflatMap使いこなせば乗り越えられることがわかってきました。

演算子を定義できることから、 Haskell のようにアプリカティブスタイルでコードを書くなど、遊べる言語であることも魅力的でした。

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

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

SwiftとQiita

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

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

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

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

そして、 Qiita に Swift について書いていたのがきっかけで、来年の春には try! Swift で発表する機会をいただくことになりました。発表者の面々がすごすぎて若干恐縮してますが、このような素晴らしい機会は Swift と Qiita がなければなかったでしょう。

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

Swiftとの今後

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

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


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

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away