こんにちは。freeeでモバイルエンジニアとして働いている kohirose です。 私の所属しているモバイルチームのiOSメンバーで iOSDC2018 に参加してきました。私自身は主にAndroid界隈で生きているエンジニアですが、iOSにも興味があるため今回のiOSDCに潜入してきました。
また、弊社は try!Swift や DroidKaigi といった技術カンファレンスでもスポンサーとして参加をしてきており、今回のiOSDCでもスポンサーブースを会場で出展しておりました。
iOSDCとは
2018年8月30日(木)〜9月2日(日)に3日+前夜祭の計3.5日間で開催されたiOS関連技術をコアのテーマとした技術者のためのカンファレンスです。 昨年の開催では計2.5日だったため、1日増えたことになります。
私は国内国外問わずモバイル関連のカンファレンスには頻繁に参加するのですが、iOSDCはその中でもセッション<数もとても多かったと思います。
8/30(木) | 8/31(金) | 9/1(土) | 9/2(日) |
---|---|---|---|
12 | 35 | 49 | 38 |
また、毎年お酒が振舞われ、LTでは参加者が飲みながらワイワイと参加する形となっているのがiOSDCの特徴かと思います。
ブース出展
先述の通り、今回は弊社ではブーススポンサーとして参加したため、4日間会場でブースを出展しておりました。
昨今、働き方改革という流れもあって「副業やってみたいのですが・・・」「個人事業主として働こうと思ってます。」といった声が多くあった印象でした。また、今回弊社のブースでは確定申告についてお話しさせて頂きながら、私たちが開発しているiOSアプリを体験して頂きました。なお、こちらのアプリは開発中のものとなります。
上の動画と同じ、領収書の撮影から取引の登録までを体験して頂いていたのですが、その中でも私たちのiOSアプリでは、撮影時に OpenCV を利用して領収書矩形を切り抜いたり、取引登録時に OCR を実現していたりと、確定申告準備をより楽にしようとして開発をしております。
「どうやって実現しているのか?」「OCRはクライアントでやっているのか?サーバー側でやっているのか?」といった技術的なお話も多くすることができ私たちのiOSアプリに興味を持って頂いてとても嬉しく思いました。また、実際に体験して頂くことにより、UI/UX面での気づきもあり、今後より使いやすくなるようにより改善を続けていく必要があるなと改めて感じました。
また、今回もキートップノベルティは健在で人気を集めていました。弊社のブースで展示していた自作キーボードはブーススタッフの作成物であったため、自作キーボードの作り方や、種類、部品の発注方法まで多くのことを語られていました。私自身は作成したことなかったため、こんなに多くのキーボード自作ファンがいるのかと驚かされました。またノベルティを配布することがあればキートップも配布するかと思いますのでご興味ある方は是非スタッフに話しかけてみてください。弊社にはキーボード部があるくらいなのできっと喜ぶかと思います。
セッションについて
iOSDC2018のセッションは先述の通りとても多く、内容もコアな部分から現場でのテクニックまでとても幅広く扱っていました。今年のWWDCで注目を浴びた ARKit の話であったり、差分更新アルゴリズムの話であったり、圏論 の話であったり、本当に多種多様なセッションが揃っていました。参加させて頂いたものの中からいくつか紹介させて頂きます。
ARKitと3D数学
前夜祭である初日の1発目のセッションはARKitでした。ARKitを利用するにあたって必要となった3D数学を説明してくれるという、数学好きな私としては楽しみなものでした。
定義されたあらゆる体系の座標系があり、その座標系の中での座標を最終的にスクリーンに落とし込むことにより、スクリーンの任意の場所へ3Dオブジェクトを配置できるとのことです。この座標系の知識があれば、あとはARKitが用意しているAPIでiOS上でのARが実現できます。物体を30cm奥に表示するという簡単なところから説明してくださっていたのでARって難しそうで敷居が高いと思っている方におすすめです。今回のスライドでは行列の話がなかったので残念でしたが、Qiitaに追加として書かれていたのでそれも見るとより理解が深まるかと思います。
MicroViewControllerで無限にスケールするiOS開発
複数人開発を行っていると避けては通れないコンフリクトやオーバーヘッドを無くして多くの人数でプロダクトを効率的に開発していこうという目的に向けて、1画面のViewControllerの中の各々の部品をViewControllerとして実装していこうというお話でした。各々の開発者が触る領域が決まりやすいため、確かに人数が多ければ多いほどこの開発手法は生きてくるなと感じました。ただし、大量のViewControllerを作成していくことになるので負担をより軽減させるためにテンプレートが多くあると良いとのことです。一つ一つのViewControllerの責務が分かりやすく分割されるのでテストも書きやすくて良いなという印象を受けました。
iOSと(深層)強化学習
本セッションでは、そもそも強化学習とはどういったものなのかから始まり、ニューラルネットワークをSwiftで実装しCartPole問題を題材にiOS上でデモを行うというものでした。
ニューラルネットワークを自作するには行列演算が必要で、そこにはBLAS(Basic Linear Algebra Subprograms)を利用するとのことでした。私自身このBLASを存じていなかったのでこのセッションが終わった後一番試してみたかったものでした。その場のデモでロボットが学習していき最終的にロボットが解決していく姿を見ていて会場も盛り上がっていました。
Depth in Depth
iOSでは深度は AVDepthData というクラスで表さられ iOS11から利用できます。このAVDepthDataの取得には
- 撮影済みの写真から取得
- カメラからリアルタイムに取得
- ARKitから取得
のパターンがあり、各々は用途によって使い分けると良いとのことです。
実際に本セッションではカメラからリアルタイムに取得して切り取られた自分自身の顔と任意の画像を合成するデモがあり、徐々に改善していくという実践的な発表となっていて惹きつけられました。また、今月リリースされるであろうiOS12からは Portrait Matte という、静止画かつ人物に限定されるがより従来の深度マップより人物と背景の深度差が的確に表現できるフォーマットが利用できるとのことで、ますます実用的なものになっていくなという印象を受けました。今回は被写体が静止画なのかリアルタイムなのかや、フロントカメラなのかリアカメラなのか、はたまたOSのVersionは幾つなのかなどといった多くのパターンがあるため、対象のアプリにおいて何が実現できるのかを整理することで自分自身の開発するアプリにも何かしらの機能として盛り込めるかなと思います。
まとめ
私自身iOSDCへは2回目の参加でしたがブーススタッフとしては初めての参加となりました。個人事業主の方で「freee使ってます!」といったとても嬉しい声や、同じくブーススポンサーとして参加された企業との情報共有などあり、セッションだけでなく他のところにも楽しみがあった良い機会だったと思います。今回実際にお話しさせて頂いた多くのエンジニアの方々や運営スタッフの方々に大変感謝しております。また、アプリを体験して頂いたことで得られたフィードバックについては改善として今後の開発とさせて頂きます!
最後に
freee ではモバイルエンジニアを募集中です。 今回に限らず、弊社ではエンジニア向けカンファレンスに精力的にスポンサーとして参加しており、内容にもよりますが、大抵のエンジニア向けイベントには業務の一環として、業務時間にチケット会社負担で参加することができます。 今回は土日開催であったため代休を2日もらいました。私はその代休(と有給休暇)で沖縄にダイビングをしに今月行ってきます!ご興味がある方は是非一度弊社に遊びにいらしてください!