try! Swift Tokyo 2017 に参加した

try! Swift にDay 1, 2 へ行ってきたので感想を書きます。 すべてのセッションを拝聴できたわけではなく、一部だけ聞きに会場へ足を運びました。 あとから資料と他の人のレポート見れば補完できるかなーと甘えた気持ちでいたのですが、結論としては全部聞けばよかったと後悔しています。 (勉強会スタイルの「スライド資料」大規模イベントでの「プレゼンテーションのトーク」の性質の違いをよく分ってなかった)

イベントの感想

  • 様々なテーマのトークが聞けるよう設計されておりSwift言語のコアな話題以外も聞けました
  • 国内外の他の参加者との交流が促進されるような仕組みがありました。通訳、Q&A, ハッカソンイベント
  • 世界的に活躍しているデベロッパーの生の話を聞けました。日本に居ながらこの規模・質のイベントに参加できるのはたいへん貴重でした

コンピュータビジョン

スマートフォンのカメラを通じた画像認識関連の話題がいくつかありました。

業務で実世界の数字検出するコードを書いていたので参考になりました。

try! Swift 2017で「クライアントサイド・ディープラーニング」というLTをしました #tryswiftconf - Over&Out その後

AppleがCNNモデルによる手書き文字認識のサンプルコードなどを公開していることを今回知りました

https://developer.apple.com/library/content/samplecode/MPSCNNHelloWorld/Introduction/Intro.html

名刺管理アプリWantedly Peopleでの話

リアルタイム物体検出アプリでよりよいフィードバックを提供する | try! Swift Tokyo 2017 #tryswiftconf Day1-15 - niwatakoのはてなブログ

物体検出のスキャンビューの具体的な実装の話があり参考になりました

機械学習

機械学習の話もありました

Swift開発者が知りたかったけど聞きにくい機械学習のすべて | try! Swift Tokyo 2017 #tryswiftconf Day1-1 - niwatakoのはてなブログ

ユーザーインタフェイスとAI技術の共通点に関してはうなずくところがありました。

Googleの「AIファースト宣言」が示すように、機械学習、Deep Learningによるデータ革命はモバイルのユーザーインターフェイス開発にも影響を与えると思います

Googleは「モバイルファーストからAIファーストへ」。その理由は、いずれデバイスという概念は消え去り、インテリジェントなアシスタントになるから - Publickey

「1クリックを0クリック」にするのがUIデザインの力だとすると、クリックの必要性をマイナスにするのがデータ革命の力です。

テスト

前回のtry! Swiftと比べて印象に残ったのはテストや品質管理関連のセッションの多さです

try! Swift Tokyo 2017 テスト系セッションまとめ #tryswiftconf - やらなイカ?

クックパッドアプリに長年テストエンジニアとして携っているkazucocoaさんのお話は圧巻でした

クックパッドアプリのテストを味わう | try! Swift Tokyo 2017 #tryswiftconf Day1-8 - niwatakoのはてなブログ

Appiumなどを活用したUIレイヤーの高度に自動化されたテストをここまで大規模に行っている例は見たことがありません。 プロダクトが成長し、組織にテストエンジニアリングに取り組む人が出現することがスタート地点であるので、 多くのエンジニアにとって大規模テストのスケールへの仕組みの話は貴重な情報となることでしょう。

以下は聞き逃しました(聞きたかった)

テスト可能なコードを書くということの2つの側面 | try! Swift Tokyo 2017 #tryswiftconf Day1-1 - niwatakoのはてなブログ

OCHamcrest/OCMockitoの作者の人が来てるぞ、というのを発表直前に気付いてサプライズでした。モックオブジェクトの話でした

モックオブジェクトをより便利にする (Try! Swift2017) - Qiita

JUnit系のモックとスタブ、フェイク、スタブオブジェクトなど類似用語がたくさんありiOSコミュニティでは混同されがちだったのです、モックオブジェクトをテスト対象の依存として差し込む正統派の例で他の人にモックとスタブ化の違いを教える時にお手本になりそうな内容でした。

最近Swiftを書きはじめて、Objective-C時代のProxyオブジェクトやメソッドディスパッチングのdynamicなテスト手法をSwiftにあわせて安全に最適化していなないといけないなと感じるところでした。

サーバーサイド*Swift

イベント的にも今回サーバーサイドSwiftは1大セクションとしてプッシュされていたように思います。運営コミュニティの一角のRealmやIBMも近頃はサーバーサイドのソリューションに熱心です。

今回CocoaPodsコミュニティでよく見かける開発者が多く居ました。Web APIの設計・開発の話をしてくれた kylef さんもその一員です

SwiftのWeb APIとアプリをともに構築する | try! Swift Tokyo 2017 #tryswiftconf Day1-11 - niwatakoのはてなブログ

個人的に興味のある分野だったこともあり疑問点を質問しました。「APIドキュメンテーションの例にAPI Blueprintをあげているのはなぜ?」といった内容です。僕ならSwaggerを第一に候補にすると思われたからです。 しかし後程彼のプロフィールを見ると彼の現在の職がAPI Blueprint開発元のApiary社だということに気付きました。意図せず意地の悪い質問になってしまいました。

Realmのmrackwitz(彼もCocoaPodsコミッタの1人です)からはRealm Mobile PlatformというローカルDBのsynchronizeソリューションを使ったアプリ開発について話がありました

Realmを使ってコラボレーションアプリを作る | try! Swift Tokyo 2017 #tryswiftconf Day1-13 - niwatakoのはてなブログ

RealmとNode.jsを使ったサーバーサイド連携についてリリース時よりいろいろ遊んでいたので興味深く聞きました。 realmデータの外部システム(Railsアプリとか)との対話やNode以外のプログラミング言語への対応+Webブラウザのクライアントサイドの連携は引き続き気になるところです。

noviさんが関るデータ基盤のクローラー実装をscrapyからSwiftに置き換えるプロジェクトの話もありました

様々な場面でSwiftを使う | try! Swift Tokyo 2017 #tryswiftconf Day1-3 - niwatakoのはてなブログ

NSURL系のHTTPクライアントに使うコア実装は僕が以前チェックした時は絶賛開発中といった状況でしたが今は libcurl で実装されているようです(Cocoa版はCFSocket系でC++独自実装だったかと思います)。 libmysqlclientベースのコネクターを開発されているのは知っていましたが、nkfで文字エンコーディングを処理している話も聞けました。

全体としては「ほとんどC」でがんばっているという印象でしたが、今後pure Swift実装でパフォーマンスが出たりするとサーバーサイドSwiftコミュニティはさらなる発展しそうだと感じました。

クロスプラットフォーム

サーバーサイドSwift以外にもiOS/macOS由来技術とか別のアプローチでアプリを開発する話が盛んでした

中でもSwiftでAndroidアプリを実装する発表は変態性が高かったらしく私の周りでも「ほとんどC」と評判でした

try! Swift Tokyo 2017 - Swift on Android(1) - Qiita

確かにWebクライアントサイドの世界でもWebAssemblyが控えていますし、LLVM関連技術の重要性は今後増してゆくばかりです

A WebAssembly Milestone: Experimental Support in Multiple Browsers ★ Mozilla Hacks – the Web developer blog

またしてもCocoaPodsコミュニティでお馴染のortaさんの話すArtsyのネイティブアプリケーション開発についての物語について話がありました

独自のツールを構築する | try! Swift Tokyo 2017 #tryswiftconf Day1-14 - niwatakoのはてなブログ

個人的にかなり刺さる内容でした。Swiftカンファレンスで「Swiftをやめてしまった」話をするのにはかなりの勇気が必要だったことでしょう。 思えばネイティブアプリ開発がウェブ開発に比べ作業コストが重く時間がかかる事実を私たちは暗黙的に受け入れてしまっていました。 ここに疑問を見出して、組織として製品としての開発環境の改善に挑むのがArtsyのストーリーの見所です。

この講演でReact Nativeが提供するJavaScriptエコシステムのパワーに注目した人は多いと思います。 しかしAppStoreで “Artsy” のアプリをインストールした人は居たでしょうか? 触っていて「適材適所」のフレーズが頭に浮んだら、私たちは同士です。

「UI開発をSwiftで加速する」については先日公開されたKickstarterのOSSコードに見られるPlaygroundを活用したUI開発にも可能性があると思っています

kickstarter/ios-oss: Kickstarter for iOS. Bring new ideas to life, anywhere.

PAY.JPについて

イベント開催の直前の土壇場になってスポンサー参加を受け入れてくれ、各所の協力を得て無事シルバースポンサーになることができました(その節は誠にありがとうございました)。

最近の我等がPAY.JPについてもB2C領域を本腰入れてやっていくぞ! ということでtry! SwiftやDroidKaigiにスポンサー参加してiOSやAndroidアプリを開発する人デザインする人を募集しているのですがいまいち採用状況の進捗が「無」に等しい。無 to 在 のフェーズなんですが、リサーチによるとそもそもモバイルのデベロッパーコミュニティでの知名度もなく、ブランディングがうまくいってなくて

PAY.JP からイメージするものって

  1. 社外取締役の家入氏
  2. BASEさん。モバイルBASEアプリ
  3. ウェブに露出の多いCEO, CTOなどの要職の人々
  4. なんかそれ以外(のうちの10%ぐらいがPAY.JP)

といった具合でした。

家入さんなんかは最近CAMPFIREの人なので見たこともないけど影響力強過ぎだろうと参っています。 そして、ことモバイルデベロッパーに関してはあれだけ炎上バズっているえふしんさんのブログ知らない人も何人か居て、ブランディングというのは難しいものだなーと思っている次第です。

なので今 #rebuildfm に広告を投入しようか、と奇策をねっているところです。