みんなで Swift 復習会 - 1st @ 渋谷

1
熊谷 友宏 @es_kumagai

せっかくの復習だから、再び基礎をなぞるのでなくて、一周回って戻った感じの基礎を目指してみようかしら。 #minna_de_swift

2016-08-31 02:07:09
熊谷 友宏 @es_kumagai

ああ、それ良いかもしれない。 #minna_de_swift

2016-08-31 02:12:49
熊谷 友宏 @es_kumagai

それと七島さんの『熊谷さんの休憩はテクニカルタイムアウトみたいなもの』発言が面白かった。なるほど、でもそれを自覚してやれたら面白いかも。良い発想ね。#minna_de_swift

2016-08-31 02:24:55
熊谷 友宏 @es_kumagai

昨日の中で出てきたコード、記載しておきますね。 #minna_de_swift

2016-08-31 08:20:02
熊谷 友宏 @es_kumagai

まず、暗黙的に Swift モジュールがインポートされている、というお話。 gist.github.com/c3b7c48f8e37cc… #swift #minna_de_swift pic.twitter.com/PXqa2OvcIt

2016-08-31 08:21:33
拡大
熊谷 友宏 @es_kumagai

話していて、そういえば print とかの標準機能が『Swift 標準ライブラリに入っている』というのをはっきり認識するのに時間がかかったな、というのを思い出しました。 #minna_de_swift

2016-08-31 08:22:56
熊谷 友宏 @es_kumagai

print 関数は標準ライブラリに入っているので Swift.print("A") と書けるということでもあったりします。稀に便利。 #minna_de_swift

2016-08-31 08:31:59
熊谷 友宏 @es_kumagai

ところで今に気づいたんですけど、名前空間の有無で Playground 右側の結果が違う print の不思議。コンソールへの出力は同じ。 gist.github.com/8977892632a4e2… #swift #minna_de_swift pic.twitter.com/CP055Z9Fsh

2016-08-31 08:35:12
拡大
熊谷 友宏 @es_kumagai

呼ばれる print は絶対にどちらも同じ。きっと、print は戻り値 Void なのに出力が右側に表示されるので、きっと特別扱いされているのかな? #minna_de_swift

2016-08-31 08:36:41
熊谷 友宏 @es_kumagai

あと、質問に対して言葉だけで紹介した Playground 右側の表示は調整できるというお話の例。 gist.github.com/eb2fe580301545… #swift #minna_de_swift pic.twitter.com/iCVkusF6QH

2016-08-31 08:47:58
拡大
熊谷 友宏 @es_kumagai

ああ、実行例を添え忘れました。こんな感じに Playground の右側結果が大きく様変わりします。 gist.github.com/ba051e0a7a0062… #swift #minna_de_swift pic.twitter.com/jmfRnS8PCW

2016-08-31 08:50:11
拡大
熊谷 友宏 @es_kumagai

そういえばこういう話のときの反応、よかったですね。自分もこういうの好きなのですけど。SequenceType とかの話も普通にあがる印象でしたし、 #minna_de_swift

2016-08-31 08:54:44
熊谷 友宏 @es_kumagai

談笑形式ならその場で補足を添えられるから、もしかして『あるひとつから広がる世界を見ていく』方が、自分としても面白そうだし、有意義に復習できるかもしれないなって思ってきました。次回はそんな感じにしてみようかな。 #minna_de_swift

2016-08-31 08:55:48
熊谷 友宏 @es_kumagai

Swift 3 から dynamicType が type(of: ) に変わる。Swift 2 にはない、なら作ってしまう?というお話。 gist.github.com/0227e300751592… #swift #minna_de_swift pic.twitter.com/eByflJanBz

2016-08-31 09:06:51
拡大
熊谷 友宏 @es_kumagai

ちなみに Swift 3 の type(of: ) は関数でなはいみたい。なら、Swift 3 でも自前で作るとどうなるんだろう? #minna_de_swift

2016-08-31 09:08:57
熊谷 友宏 @es_kumagai

みたいに思ってやってみると、自前で作った type(of:) 関数は『エラー』にもならず『無視』されるみたい。 gist.github.com/16be7af3ba33e1… #swift #minna_de_swift pic.twitter.com/13I2cTwHXH

2016-08-31 09:15:51
拡大
熊谷 友宏 @es_kumagai

メソッドとして type(of:) を定義した場合は『レシーバーさえ明記すれば』実行できる様子でした。省略可能な self では注意かも。 gist.github.com/4d8e2edc098d77… #swift #minna_de_swift pic.twitter.com/WsJGItKoth

2016-08-31 09:25:35
拡大
熊谷 友宏 @es_kumagai

型推論できる状況を作ってみたらどうなるんだろう、と思って試してみましたが、切り替えられないみたい。 gist.github.com/ff4a35c55fad1e… #swift #minna_de_swift pic.twitter.com/RCMjs4FYXK

2016-08-31 09:29:15
拡大
熊谷 友宏 @es_kumagai

ついつい話が、カジュアル Swift 勉強会っぽく傾いてしまったような。深追いしすぎね。 #minna_de_swift

2016-08-31 09:33:34
熊谷 友宏 @es_kumagai

話を戻しながら…ちなみに名前空間をしてみしてみると、関数ではないことが分かったりして。なんで関数にしなかったんでしょうね。 gist.github.com/5d747fca8ce30b… #swift #minna_de_swift pic.twitter.com/5xsSMGJckn

2016-08-31 09:34:24
拡大
熊谷 友宏 @es_kumagai

配列と辞書の定義方法と、let と var による中身の保護まわりのお話。 gist.github.com/ee4c0e184f0b80… #swift #minna_de_swift pic.twitter.com/vyWJ5lxHb7

2016-08-31 09:42:21
拡大
熊谷 友宏 @es_kumagai

そして var で辞書を入れ子にして書き換えられないのはなぜ?という質問。辞書は構造体なので参照時に複製される。中を直接書き換えられない。 gist.github.com/213d62923636d1… #swift #minna_de_swift pic.twitter.com/XUsguBvSTl

2016-08-31 09:46:19
拡大
熊谷 友宏 @es_kumagai

あとは、基本構文ね。fallthrough は怖い、switch お勧め、for ... in を良く使うとか、巻でざくざく話して終了。 gist.github.com/2611bb50f01944… #swift #minna_de_swift pic.twitter.com/rmyEo6YsPD

2016-08-31 09:50:26
拡大
熊谷 友宏 @es_kumagai

もしかして基本構文みたいなのをを軸に『この構文は、どこに気を配って使うと良さそうかとか、どんなプロトコルを活かせるのか』みたいな話を腰を据えてするのも面白いかもしれないですね。たっぷり話せそうだし、世界が広がりそう。復習にもちょうど向いてそうかも。 #minna_de_swift

2016-08-31 09:54:24