Hatena Engineer Seminar #9 @ Tokyoに参加しました!

f:id:cluex-developers:20171031080636p:plain

こんにちは。iOSエンジニアの高島(Takasy (@takattata) | Twitter)です。

今回参加した勉強会ではブログ枠ではなかったものの、すごく面白かったので記事を書かせて頂こうと思います。 hatena.connpass.com

会場はサポーターズさん提供でした。
存じ上げなかったのですが、こちら、イベントスペースを無料貸出されているとのことで、覚えておこうと思いました。

間違えていたらそっと教えてくださると嬉しいです!

GUIアプリケーションの構造と設計

Hiroki Kato (@cockscomb) | Twitterさん

speakerdeck.com

togetter.com

peaks.cc こちらの本の6, 7章を書かれている方でした。宣伝されていたので紹介しておきますね。
ちなみに次の発表者のいけしょーさんは4章を書かれています。
ベータ版が既に配信されていて、入手はしたものの未だ読んでいないので、早く読もうと思います。

それはさておき、発表の内容としては、GUIアプリケーションを作る際に必要になる3つのパターンについての話でした。
GUIアプリケーションの特性として、

  • モデルの状態をもとにUIを常に更新し続ける
  • 画面間でのデータのやりとりが必要
  • メインスレッドを止めてはいけない

があり、それを解決する為に

  • Observerパターン
  • オブジェクトの生成・管理
  • 非同期処理の抽象化

の3つのパターンをうまく使おうという内容です。
このパターンを1つずつ、Android, iOS, Webだと何に当たるかを並べて紹介され、実際にどの様なものなのかをKotlinで説明して下さる、という流れです。
どのアーキテクチャを使ってもどれにもこれらが入ってくると思うし、うまく使えば整理することができるのではないか、と締めくくられていました。

この3つのパターン、ここをまず抑えたら初級レベルから抜け出せそうだな、と感じました。
学ぶべき要点が分かって非常にありがたかったです。
また、Android開発を未だしたことがないので、そういうのがあるのかーという程度にしか分からならかった点もあったので、しっかりスライドで学ばせて頂こうと思います。

そういえば、話の中でCoreDataがすごく好きと仰っていたので、その理由を詳しく懇親会でお聞きできれば良かったなぁ、と今書いていて思いました。

Swift4を振り返りSwift5の夢を見る

いけしょー (@ikesyo) | Twitterさん

speakerdeck.com

togetter.com

すごく面白かったです!
が!理解とメモが追いつかなかった...!是非スライドをご覧ください。
どの発表もそうでしたが、この発表のスライドでちゃんと復習したいと思います。

流れとしては

  • Swift 4.0
  • Swift 4.1
  • Swift 5.0

の順に、特筆すべき新機能や特徴、それが入るとなぜ良いのかなどの説明をしてくださっていました。 1つずつ挙げるとかなりの長さになってしまいそうなので割愛します。

Swift5でメインになってくるABI Stabilityですが、これが入るのは知っていたものの、入ると何が嬉しいのかは分かっておらず、懇親会で質問させていただきました。
(※内容に誤りがある場合、自分の記憶違い+うろ覚え故ですので、コメント頂けると幸いです!)

そもそも現状Swiftでアプリを作るとSwiftの標準ライブラリなどがアプリに含まれる為、Objective-Cでアプリを作る時より大きくなっている。  
iOSにSwiftの標準ライブラリなどを入れられると良いけれど、ABI Stabilityが実装されていない状態でそれをしようとすると、例えばiOSに古いバージョンのものが入っていて、アプリは最新のSwiftのバージョンのものをコンパイルしてiOSで起動させようとすると起動しない、ということが起こる。  

以上を踏まえて、Swift 4 ABI安定化への道を読むと多少理解出来るかと思います。

何度か紹介されていたSwift Tweets - connpassはちゃんと後追いしようと思います。
次回はこちらです。
swift-tweets.connpass.com

あと、プロポーザルを見たことはほぼないので、確認してみようと思いました。
プロポーザルの番号もあげてくださっているので、そこから見てみようと思います。
チームの人とこんなプロポーザルあったね、という話が出来る環境、すごく面白そうですよね。

Kotlinの言語機能をフル活用したAndroidアプリの開発

たくじ (@takuji31) | Twitterさん

speakerdeck.com

togetter.com

可愛いうさぎの写真(飼っていらっしゃるそう)と、
「Kotlin、まさかNull安全だけで満足していませんか?」 という煽り気味なセリフ(ご本人談)から始まりました。

はてなでの新技術導入の流れからKotlinを導入する話、Kotlinの言語機能でこれが良い、という流れでした。
Kotlinを導入する時はGoogleI/Oの発表直後から1日半ほどで決定したそうです。

紹介されていたのは、

  • data class
  • 拡張関数 / 拡張プロパティ
  • Delegated property

などです。

特に拡張関数ではKotlin化の手順も紹介されていて、JavaからKotlinに一部的にでも書き換えている場合には非常に参考になりそうでした。

また、質疑応答では、
Q:「拡張関数は便利ですが、使うルールはどう決まっていますか?」
A: 「厳格には決まっていません。チーム的にも結構、使って良いよね、という感じです。レビューでダメだったら指摘します。
Androidフレームワークを拡張する時とか、引数4つのメソッドだけど使うのは1つだけの時とかに1つだけ設定する拡張関数作るとかで使ってます。
長くなりそうなコード且つよく使う時に使います。」
Q: 「どのファイルに何を書くとかは?」
A: 「ViewならViewの拡張関数をまとめているファイルがあったりするので、そんな感じにまとめています。」
とのことでした。

はてなブックマークアプリにおけるチーム開発について

ペロペロ (@experopero) | Twitterさん

speakerdeck.com

togetter.com

東京にディレクター、デザイナー、プランナーがいて、京都にエンジニアがいるというチーム構成になっている為、互いの認識のずれを防ぐ工夫をしていらっしゃいました。
リリースに至るまでの流れと工夫している取り組みの紹介という内容でした。

ビジョンの共有をしっかりとしているとのことで、エンジニアだとしても技術だけでなく、プロジェクトにも主体的にならないといけない、という主旨の話をされていました。
本当にその通りだと思います。
そもそもビジョンと合致しているならば、エンジニアだからこそ湧く発想などをどんどんコミットしていきたいと思いそうですが、意識していないとその感覚も薄れていくので、こういう共有は定期的にしっかりとするべきだと改めて感じました。

特に面白かったのは、内側タイムと、見積もり時に日数をピザで例えるところですね。
インターン生用のタスクを準備する時の話も興味深かったですね。
長くなりそうなので割愛しますが、スライドに分かりやすくまとめられていましたので、是非ご覧ください。

おわりに

総じて内容が濃く、非常に面白かったです!
懇親会も非常に盛り上がっていたように感じます。
iOSだけでなく、Androidの発表もある勉強会に参加する度にAndroidを少しでも分かっていたら、もっと楽しめるんだろうなぁ...!と若干悔しくもあるので、そろそろAndroidも触ってみようかな、と思いました。
勉強会、色々な刺激を受けて良いですね。
今後も積極的にHatena Engineer Seminarの参加狙っていこうと思いました。
はてなさん、ありがとうございました!

We're hiring!!

弊社ではWeb / ネイティブアプリエンジニアを募集しております。
ご興味がありましたらお気軽にご連絡下さいませ!
エンジニアの方、ぜひ情報交換しましょう!

www.wantedly.com

www.wantedly.com