try! Swift 2019 に参加してきました!

今年も、北海道から try! Swift Tokyo 2019 に参加してきました。
今更感が半端ないですが、レポートします。 今年で3回目の参加になります。

2017年、2018年は新宿での開催だったのですが、今年は渋谷の「ベルサール渋谷ファースト」という場所での開催でした。 東京はいろいろな所に大きなカンファレンス会場があってうらやましい。

毎回たくさんの人が参加していて、今年は約900名の方が参加していたそうです。

気になったセッションをいくつか取り上げます。

Day 1

アクセシビリティのためのカラーコントラスト

アプリにおける色の管理、特にコントラストに注意しようという話でした。
コントラストはコントラスト比で表され、その値が一定以下だと色の区別がつきづらく見づらくなってしまうそうです。
コントラスト比というのは今まで持っていなかった概念だったので、今後機を見て意識したいポイントだと思いました。

16進数カラーコードを入力することでコントラスト比を教えてくれるサイトもあるそうです。

Keypath入門

Swift4 で取り入れられた Keypath について説明されていました。
KeyPathという名前は聞いたことがありましたが、具体的な使い方やメリットについては理解していませんでした。

残念ながら、このセッションでもなんとなく便利そう?ということはわかりましたが、いまいちピンと来ず。

こちらの記事を読んで、やっと理解できました! Swift4のKeyPathを学ぶ - Qiita

深い階層のプロパティにアクセスする必要がある場面などで使えそうですね。 (そのようなアクセスが必要になるのは、そもそも構造自体を見直した方が良さそうですが)

Siri ShortcutsとNSUserActivityによるエンゲージメント推進

iOS12 で提供された機能で、 Siri からアプリ機能が呼び出せるやつですね。

こちらも存在は知っていたものの、自分で使うことはあまり考えていませんでした。

今回の話を聞いて、アプリがアクティブじゃない時に機能を呼び出す手段としてかなり優秀なのでは?と思い、 かなり簡単に実装できそうだったのでこれも実装を試したいです。

Day 2

ポートレートモードを自作しよう

最近のフラッグシップスマホでは、ボケた画像を取れるのが当たり前になってきていますが、 それらのスマホを使って撮影したものではない「深度情報を持たない画像」でも同じ表現をさせられないか?という話でした。

マンガワンのエンジニアの方だそうで、マンガなどの二次元画像もボケさせたい!というのがきっかけだったそう。

フィルタや被写体と背景を分離するアルゴリズムなどを駆使して見事実現させていました!

問題 > 使ってみる技術 > トライ > 結果という流れで、お話も非常にわかりやすかったです。

SwiftCheckで始めるProperty-based Testing

UT は通常、ある入力に対してどんな出力がされるべきということをテストすると思いますが、 それとは異なり、「メソッドがどんな性質を持っているか?」という点に着目し、その性質が満たされているかを ランダムに生成した値でテストするという手法の紹介でした。

元々は Haskell から来ているそうで、多くのパターンのテストが必要なメソッドでは有効に使えそうです。

次へつなごう— Extending a hand to the next generation of Apple developers

以前 #rebuildfm でゲストになっていた @hellomayuko さんの発表で個人的に楽しみにしていました。

デベロッパーコミュニティをより良いものにするために自分たちができることは何か?という話でとてもいい話でした。 自分も共感するところが多かったです。

残念ながらお話することができなかったので、また来てください!!

番外編

昨年知り合った方が今年はブースを出していたのでお話してきました。

その方はデモアプリ(すでに公開されているアプリを内部だけ作り直したもの)を用意してくれていたんですが、 内容が「ものすごくたくさんのオブジェクトを同時に表示して、サクサク動かす。拡大縮小でき、キーカラーが一瞬で変えられる」 というちょっと言葉では説明しづらいんですが、実際触ると一瞬で凄さがわかるものでした。

「参加者はみんなデベロッパーなので、デベロッパーに触ってもらって技術が伝わるものを作ってきました!」といった趣旨のことをおっしゃっていて、 実際触ってテンションが上がった自分は、自分も何か見せられるものを作って来よう!とすごく刺激を受けました。

まとめ

今年はワークショップにも懇親会にも参加できなかったのが残念でした。

やはり同じ技術畑の人が集まって話をするのはすぐ打ち解けられるかつ濃い話ができるなぁというのは毎年思ってることです。

今年は iOSDC にも参加したいと思ってるので、もっといろんな方と交流できたらと思っています!!

JaSST'17 Hokkaido に参加してきました!

だいぶ間が空いてしまいましたが、9/8 にソフトウェアテストシンポジウム、通称 JaSST'17 Hokkaido に参加してきました。

JaSST は公式サイトによると

ソフトウェアテスト分野の最新の研究や実践、ツールの適用や活用、ソフトウェア品質マネジメント関連のトピックなど、幅広い情報を発信することによりソフトウェアテスト技術の向上に貢献することを目的に開催しています。

ということで、テストをテーマとしたイベントです。

基調講演は楽天の川口恭伸さんによる「ユーザーストーリーマッピングと顧客品質」でした。

  • 会議はポストイットやインデックスカードを使いながらインタラクティブにやるのが良い
  • 仕様を決める会議体はブレーンストーミング型が増えている
  • 手法として「ユーザーストーリーマッピング」がある
  • 海外の大手ソフトウェア企業でも実施している。(Facebook / Atlassian など。写真を見せてもらいました)
  • やりたいことを全て洗い出し、分類と優先順位づけをする。同じ順位はない!
  • アウトプットの評価とは、量を成果とすることがあるが、顧客にどれだけインパクトを与えられたかが重要
  • アウトプットはなるべく小さい方が良い

意外にユーザストリーマッピング的なことは普段からやっているなぁと思いました。

もう一つの基調講演が、医者である上田敬子さんの「よく生きて、よく死ぬ~緩和ケアとQuality Of Life~」でした。 JaSST 北海道では最近、ソフトウェア以外の業界の方に基調講演をしていただいて、ソフトウェア開発に刺激をもらうということをやっているそうです。

上田さんの所属する緩和ケア科では、不治の病をもつ患者さんなどのQOLが上がることを目的に治療をするそうで、治療をしない選択があったり他の科ではやらないようなこともやるそうです。 やはり目的をはっきり定めた上で、それを達成するために色々考えるというのはどの業界でも同じなのだと感じました。

他にもテストをテーマにした発表がいくつかあり、非常に勉強になりました。 参加者のほとんどがQAなど日常的にテストをしている方で、そういう方の話を聞くのは非常に勉強になりました。

iPhone Dev Sapporo 勉強会 で発表しました

先週の土曜日になりますが、iPhone Dev Sapporo 勉強会で発表を行いました。 外部の勉強会で発表するのは初めてだったのですが、緊張しすぎることもなくなんとか無事に(?)発表できたと思います。 iPhone Dev Sapporo勉強会 Sep, 2017 - connpass

自分は「RxSwift で作る UITableView」 というタイトルで発表しました。

speakerdeck.com

3月に参加した東京の勉強会で発表者のほぼ全員が RxSwift を使って当たり前のような話ぶりだったので、自分もどんなものかと興味をもち、今回 UITableView の実装にチャレンジしました。

結論から言うと、RxSwift を UITableView の構築に使うのはあまりイケてないように感じました。 設定画面などのようにセル数があまり変わらず単純なテーブルの場合はありかもしれませんが、 データ数が多くセル数が可変の場合は、結局データの Observable を自分で用意してやる必要が出てくるのでわざわざ RxSwift を使うメリットが少ないです。 これは、発表後にも他の参加者の方にアドバイスいただきました。

会社のチーム内で5-10分くらいのLTは定期的にやっているのですが、今回は外部向けの勉強会なのでよりきちんとしたスライドになるよう意識しました。 あとは、RxSwift 自体が難しくきちんと動くものを作るのがまず大変で、そこから発表できる内容を考えるまでにすごく時間がかかりました。 初めての発表は非常にいい経験になりました。

最後に、他の方の発表を簡単に紹介します。

「AVDepthDataの深みにはまる…。」 いけだじゅんじ さん

カメラで被写体の深度を測る仕組みなどについて解説されていました。 先日発表された iPhone X は、フロントカメラに深度センサがついていて顔認証でロック解除などを行います。 その方式や、深度情報を持った写真を左右に動かすことで立体的に見えるサンプルの紹介など、非常におもしろかったです。

「Swift 4で行うDTOとDAOの相互変換」 @yusuga_ さん

Realm 本を書いている方で、RealmObject (DAOと捉えられる)と DTO の相互変換についての内容でした。 Obj-C時代、Swift3 時代に行なっていた工夫を、Swift4 では Codable プロトコルを使うことで簡潔に実現できるようになることを紹介されていました。 普段の開発ではあまりデータベースをヘビーに使うことはないので勉強になりました。

アクセシビリティ対応のしくみと実装」 高橋政明 さん ennuihage さん

iPhone に実装されているアクセシビリティの使い方と実装の紹介でした。 目の見えない方でも iPhone を使えるようにする機能なのですが、通常の操作とはまったく異なる操作方法になることは知りませんでした。 現状対応されていないアプリも多く、プラスアルファの機能と考えるのではなく積極的に対応して欲しいとおっしゃっていました。

「技術系同人誌を書こう」 熊谷友宏 さん

同人とは何か?から始まって、技術系同人誌を出版するためのノウハウを紹介されていました。 自分にはあまり馴染みのない世界なので、おもしろく聞いたのと同時に同人誌に興味を持ちました。 東京では技術系の同人誌だけが出店される技術書典というイベントがあるらしいのですが、北海道だとなかなか目にする機会自体が少なそうなので、機会があれば行ってみたいと思いました。

「巨大なモバイルゲーム市場 - 中国を狙え!」 Mobvista 朱赫 さん

最後に主に中国市場でモバイル広告のコンサル?をしている方が中国のモバイルゲーム市場の話をしてくだいました。 Android の方がシェアは多いが、それでも iPhone の台数は日本の3倍とか、今年一番稼いでいるWeChatのアプリは一日で数十億稼いでるとか中国市場のスケールの大きさにびっくりしました。 中国ローカライズする場合、簡体字が望ましいが、繁体字でも読める。とか、翻訳の細かい間違いは気にしないとか、日本発であることがわかるようあえて、日本語を残しても良いなど、細かい話もおもしろかったです。

名前を覚えてもらえたかは微妙ですが、何人かの方とお話もさせてもらって非常に有意義な時間になりました。 次回もぜひ参加したいです!