はじめてのはてなブログ。
去る2016/3/2 ~ 3/4, iOS界隈の人たちを賑わせた try! Swift (#tryswiftconf)に参加してきました。
リアルタイム翻訳のレベルの高さや3日間聞き起こしをして下さった@niwatakoさんの超人っぷり、海外勢のポケモンネタ率の高さなどは色んな方が話題にしているのでそちらにお任せしようと思います(手抜k
個人的に気になったトピックや感想とか書いていこうかと!
ひとまず参加しての感想をば
とにかく楽しかった、というのが真っ先に出てくる感想です。
国内外の有名な方々が登壇し、参加者は500名を超える、そして海外からの参加者も150を超えている。これだけ大規模なカンファレンスが国内で行われたことにまず興奮するし、まだまだ若いSwiftコミュニティの今後を担っていくであろう多くの方々の発表を聞け、そして会話できて、本当に有意義な時間でした。
そして、外国人プレゼンうめぇってのもかなり感じたことですね。
アイスブレイクも上手いし、スライド1枚1枚の役割がすごくわかりやすくて、聴きやすいなぁと思ってました(1枚の情報量があまりにも少ないのは聴いて理解するのが大変ですが…w)。
あとは、やはりもっともっと経験が必要だと感じました。
話を聞いていても、やはり経験が無いとイマイチよくわからない、となってしまったり、質問が思いつかないことが多々ありました。
自分が本当にわからない、ハラオチしない部分がどこなのかってのがわからないまま終わってしまうというのが非常にもったいないと感じたのが正直なところ。
仕事でもプライベートの開発でも、新しいトピックを見つけたらとりあえず試してみる、そして疑問点や問題点を絶えず記録しておく、というのがどれだけ大切か思い知らされました。
↑は本カンファレンスに限った話ではないですが、Swiftはまだまだ若い言語で、経験の長い人でも2年経っていないくらいです。
これから第一線でやっていくには今のうちに遅れをとらないことが重要だと感じてるので、改めて思った次第。
さて、ここからは気になったトピックを紹介!
設計まわりの話
文化を調和させる
Daniel Steinberg(@dimsumthinking)さんによる、UITableViewを使った簡単なアプリケーションをSwiftライクに書き換えていくセッション。
OOP, POP, FPを取り入れながら、Swiftらしい、綺麗な設計にしましょうという話でした。ライブプログラミングというわけでは無いですが、スライド上で徐々に生まれ変わっていく過程が見られてそこそこ頭に入ってきました。
家に帰ってから、↓の書き起こしてみた記事を見たので触発され、Before/Afterのコードを自分で書いてみました。
try! Swift 1日目 "Blending Cultures"の内容をサンプルアプリに起こしてみた - Qiita
Before/Afterのリポジトリ
ちなみに、私2013年にアトランタで開催されたcocoaconfというカンファレンスに参加したのですが、そのときにDanielさんが話していた下記の言葉が非常に心に残っています。
We cannot change the world, but we can change the world of one person.
英語が厳密には違うかも…w
Danielさんが話していた内容は少し悲しい話しだったんですが、この言葉にとても勇気をもらったのを覚えてます。
実践的 Boundaries
Ayaka Nonaka(@ayanonagon)さんによる、Gary BernhardtさんのBoundariesという講演について、Swiftでどのように実現するか、というお話。
Boundaries — Destroy All Software Talks
関数型プログラミングの講演でよく言及されている様でしたが、関数型初心者の自分は聞いたことがなく…(汗
内容としては
1. ViewControllerをimmutableにし、ネットワーク通信部分とViewController生成をprividorとして別途structで作成する
2. Coordinatorパターンを使い、ViewController同士は互いを知らず、独立したものとして作る(そしてその結果、木構造になっていく)
てな感じの話があったかなと理解してます。
Coordinatorパターンについてはまだちゃんと理解できてないし実践もできてません。
コーディネータパターンが気になる方はVIPER アーキテクチャを調べてみると良いです。 #tryswiftconf
— りず (r.izumita) (@rizumita) 2016, 3月 3
と仰ってる方がいらしたので、下記資料とか見てそちらも勉強してみようかなと思います。
開発tips的な話
プロトタイピングの魔法
Adam Bell(@b3ll)さんによる、Playgroundでインタラクティブにプロトタイプを作っていくお話。そもそもアニメーションを作る意味があるの?と思っている人が考えている3つの問題(そもそもアニメーションは必要ない・パフォーマンスが落ちる・作るのに時間がかかる)に対して答えていく形で進み、最終的には「こんなに簡単にプロトタイプは作れる!」ということをライブプログラミングで示していきます。
Xcode7.3からPlaygroundがインタラクティブになった(ジェスチャにも対応)ことを初めて知り、実際にAdamさんがポケモン図鑑的なアプリを作っているのを見ながら、これは使えそうだと感じました。使わねば!
あと、
「アニメーションはストーリーを展開する。意図が無ければいけない。」
「CoreAnimationは基本的にパフォーマンスを落とさない」
など、実装面のみならずアニメーションについての考え方についても考えさせられるセッションでした。
SwiftコンパイラとLLDBの連携
Novall Khan (@novallkhan)さんによる、LLDBを使ったデバッグテクニックの紹介。
正直LLDBを使ったデバッグって全然ちゃんとできてない、というかpoくらいしか使ったこと無い (汗 ので、非常に勉強になった&予習が必要だなと感じました。
ブレークポイントのカスタマイズとか、全然知らなかったけど使えそう!
Swiftヒップスター
iOS開発、というよりはSwiftのわかりづらいattributeやあまり知られていないキーワードについて解説するセッションでした。
正直全然わからなくて恥ずかしい!というのが感想です。要予習!
日本語訳記事がQiitaにアップされていますね!
テストの話
テストに関するセッションは2つありましたが、正直なところ自分がほとんどテスト書いてない、というか書いてもまぁできるところだけ…みたいな感じだったので、経験をもとに「こういうときはこうすればいいのか!」とか「じゃあこういうときはどうしたら?」みたいな考えがあまり浮かばなかったというのが正直なところです。
仕事にしろプライベートで作ってるアプリにしろ、少しずつでもテストを書くようにしていかないとどんどん遅れていく!と焦ったセッションたちでした。
Swiftにおける実践的なモック化について
Artsyにおけるテスト手法の紹介
最後に
長々書いてしまいましたが、冒頭にも書いたとおり本当に楽しくてエキサイティングな3日間でした。
try! Swift2017開催が決まったら、一瞬で参加申し込みしようと思います。
登壇できるくらいのエンジニアにならなきゃな!