こんにちは。Sansan事業部で 法人向け名刺管理サービス Sansan
のiOSアプリの開発を担当している栗山です。私の3度目のブログとなる今回は、先日9月5日から7日にかけて開催(9月5日は前夜祭)された、 iOSDC Japan 2019
を振り返りたいと思います。
私はありがたいことに9月6日に 画像処理におけるUIImageとCGImageとCIImageの効果的な使い分け
というタイトルで登壇しましたので、私自身の発表当日までの様子や主にスポンサーブースから見た会場の様子について書きたいと思います。
したがって、本記事は普段当ブログで繰り広げられているような専門的な内容とは少し一線を画す内容ですが、気楽にお付き合いいただければ幸いです。
Sansanブースを振り返る
私は主に前夜祭と1日目にブースにいることが多かったですが、多くの方にお越しいただきました。皆さま、ありがとうございました!
前夜祭から参加してブース設営も一部手伝っていましたが、他の会社の方や勉強会などで面識のある方とお話するはもちろんのこと、社内のブランドコミュニケーション関連の部署の方と協力してブースの準備に取り組んだりと、個人的には楽しかったです。普段話せない方と話ができるのがカンファレンスの醍醐味の1つだと改めて思いました。
アンケート結果を振り返る
当社のブースでは日替わりでアンケートを実施しました。投票いただいた皆さま、ありがとうございました!ここでは簡単にアンケート結果を振り返りたいと思います。 ※ 以下に書く内容はあくまで栗山個人の所感です。
前夜祭・1日目
【#iOSDC 出展中】
— 【公式】Sansan (@SansanJapan) 2019年9月6日
アンケートへのご参加とトークの聴講ありがとうございました!明日はちがう質問を用意してお待ちしています。1日目おつかれさまでした! #33Tech pic.twitter.com/d5aDlSRiJo
前夜祭・1日目のアンケートは 使ったことがあるクロスプラットフォーム開発フレームワークは?
という質問でした。
Flutter
や React Native
や 使ったことは無いが今後使ってみたい
が得票数が多かったものの、事前に用意した選択肢については割と満遍なく投票されている印象でした。
私は前職で使ったことがあったので PhoneGap
に思わず1票してしまいました(2票のうち1票は私です)。当時はAndroid用のPhoneGapを使ったアプリにプラグインとして機能を追加(Javaで実装)する仕事をしていたものです。PhoneGapは、Cordova含めて個人的には思い出深いフレームワークの一つです。
面白かったのが 今後使う予定はない
に投票した方々が使わないという選択をした際のエピソードや苦労を語りながら投票されていて、その一言一言に経験に裏打ちされた重みやドラマを勝手に感じてしまいました。
長期間ネイティブアプリを保守している中で、急にクロスプラットフォーム開発フレームワークをプロダクトへ入れるのはやはり簡単ではないとは思いますが、メルカリさんが昨年のカンファレンス時に出されていたカンファレンスアプリなど、用途によっては活躍の場は十分にあると思いました。
また、個人的にはFlutterはGoogleが開発中のミステリアスな新OS Google Fuchsia
のアプリケーションの実装においても使われていて、実はとても気になっています。
2日目
【#iOSDC 出展中】
— 【公式】Sansan (@SansanJapan) 2019年9月7日
まだ投票してない方はぜひブースへ!チーズとキャラメルのふたつのフレーバーの出会いが楽しめるポップコーンはのこり少ないのでお早めにお越しください🍿#33Tech pic.twitter.com/FOAqYuOSj5
2日目のアンケートは 普段使っているキーボードは?
という質問でした。iOSDCなのでMacBookのキーボードやMagic Keyboardが多数なのは想定の範囲内ですが、REALFORCEやHHKB(Happy Hacking Keyboard)を使われている方も割と居た印象でした。アンケート結果を見るに、普段からMacBookで作業される方が多いのではないかという印象をもちました(外付けモニターがあればマシン自体は開発に耐えうるだけの性能は持っているので当然といえば当然ですが)。
ちなみに、今回挙げた選択肢は私の所属するSansanアプリ開発チームのメンバー(iOS / Android エンジニア)達が普段使っているキーボードから選抜しています。私のチームでは分離キーボードが現在流行っており、アンケートの選択肢にも色濃く反映されている気がします(詳しい機種については私自身あまり詳しくありません・・)。
個人的には肩こり対策になるという話もあるのと気になる分離キーボードがあるので機会があれば使いたい気持ちがありますが、分離キーボードに慣れると他のキーボードが使えなくなるのではないかという漠然とした不安があって今に至るまで試せていません。でも秋葉原で分離キーボードを見つけたときは密かに試し打ちをしています。
ちなみに私は普段の業務ではiMacを使用しており、そのため普段使いのキーボードはMagic Keyboard(US配列)と(キーボードじゃないですが)Magic Trackpad 2を使用しています。個人的にはそこまでキーボードに対するこだわりは無いのですが、キーボードのUS配列というのは私の数少ないこだわりポイントの一つではあります。
余談ですが、このブログを書いている最中に面白い記事が流れてきました。
上記記事によると、分離キーボードで、かつ自分で配列を調整できるという夢のようなキーボードです。記事のとおり「ぼくのかんがえたさいきょうのキーボード」が手軽にできる日もそう遠くはないかもしれないですね。
自分の登壇を振り返る
ここからは私のCfPが選ばれて登壇するまでをざっくりと振り返りたいと思います。
最初に、今回の発表資料とサンプルアプリを紹介します。発表時の動画はもう少しで公開されると思いますので、ご興味のある方は動画も含めてご覧いただければと思います。
CfP応募
CfPの募集は5月8日から開始されました。6月18日の締め切りまでの間に、私は合計4つのCfPを応募しました。昨年は5分LTと15レギュラートークで同一テーマのCfPを応募するケースもあったのですが、今年は4つ全て別々のネタにしました。
非採択だったCfPについても、いくつかはどこかでお披露目できればと思っています。
今回発表したテーマについては、CfP募集と同時期にちょうど名刺撮影機能の改善を行っていて、その際に思いついたものです。
自分のCfPを見ながら他の方のCfPを見て文章構成の参考にしていました。今年は昨年以上に気合の入った文章や洗練された文章が多く、私も大いに刺激をもらいました。
スピーカーディナー
8月7日にスピーカーディナーが秋葉原で開催され、私も出席しました。ディナー中に1分間自分の発表をプレゼンするという企画があり、私はビールを1杯飲んで緊張を適度に散らしながら発表内容を紹介しました(紹介が終わってからは堰を切ったようにビールが進みました)。
私の紹介動画です。 www.youtube.com
登壇者の方々とお話ができて、最初から最後までとても楽しかったです。個人の感想で恐縮ですが、非常に良い企画だと思ったので来年も開催して欲しいなと思いました。
怒涛の追い込みの日々
諸事情により、本格的な準備に着手できたのがスピーカーディナーの前後からでした。発表構成自体はCfP提出時に書いたアジェンダをもってある程度頭の中にはあったので、発表資料へ落とし込むために細部を詰めるところからはじめました。
パフォーマンスが向上した
という趣旨の発表でしたが、プロダクトコードをそのままお見せすることまでは考えておらず、パフォーマンス検証のためのサンプルコードは必要不可欠だと考え、まずはサンプルコード作りからはじめました。
久しぶりにAVFoundationを使ったカメラアプリのコードを1から書きました。発表資料作成と常に並行していて、割と直前まで直してて結構大変だったのですが、結果的に様々な知見(プロダクトにもフィードバックできそうなアイディアも)が得られたのと、知識をアップデートできたので、大変だった分のリターンは十分に得られたかなと思っています。
サンプルコードが動いてきた時点で、今度は発表資料に落とし込む作業を開始しました。後述する 登壇練習会
という中間目標があったおかげで、本番に向けて前倒しで準備を進められました(とはいえ、練習会前日は行きつけのコワーキングスペースに籠もり、練習会当日には会場近くのカフェで練習会直前まで資料作成をしていました)。
登壇練習会
練習会は8月25日にTimersさんで開催されました。
Timersさんのあるビルは恵比寿駅前の通り沿いにあって、ランチに困らないくらい飲食店が充実していて抜群のロケーションでした(とはいえ、自分は直前まで追い込みしていたためにランチを楽しむ余裕が無かったのが少し残念でした)。
Twitterでも言及しましたが、開催2週間前の時点でかつお休みの日に練習会を開催していただけるのは、発表者側としては本当にありがたかったです。何度感謝しても感謝し足りないくらいです。Timersさん、改めて、ありがとうございました!
ここでいただいたフィードバックをもとに、内容を大幅に見直しました。登壇練習時はSansanアプリの話というよりはApple Developerのドキュメントを基にした一般的なUIImageやCIImageの話が多めだったのですが、いただいたフィードバックをもとにSansanアプリの話を大幅に追加しました。
練習会参加者のみなさまのフィードバックのおかげで良い発表ができました。参加者の皆様にも本当に感謝です。ありがとうございました!
発表当日
Track Aの部屋に入る前から緊張していましたが、入った瞬間にはすでに沢山の方にお集まりいただいていて、一気に緊張感が高まりました・・。でも、中学生のときに「緊張」というテーマで校内弁論大会に出場するくらいには昔から緊張する性格だったので、ある意味想定内だったと言えるかもしれません。
直前に発表練習したときは30秒くらいオーバーしていたので、どうなるかと思いましたが、本番はきっちり20秒くらい残して終えることができました。
発表を終えた時の大きな拍手は一生忘れられない思い出になりました。
質問やAsk The Speaker含めて多くの方とお話させていただくことができました。質問していただいた皆さま、Ask The Speakerにお越しいただいた皆さま、ありがとうございました!
発表を振り返って
発表内容については別な機会に振り返ることにして、ここでは発表資料作成や実際に発表した際に感じたことなど、発表準備面での振り返りをしたいと思います。
Deckset
昨年のiOSDCでは、私は発表前にオフィシャルのルーキーズLT練習会に参加したのですが、その際に Deckset
というツールを教えていただきました。
ざっくり言うと、DecksetはMarkdownでスライドが作れるツールです。Keynoteを使うか迷ったのですが、準備期間を考えるとKeynoteだと見た目に時間を費やしすぎるのでは、という心配があったので、機能がシンプルでかつMarkdownを使えるDecksetが効率良いと思い選択しました。
結果としては、Decksetの選択は大正解でしたが、狙い通りだった部分と狙い通りじゃなかった部分がありました。
狙い通りだった部分としては Markdownで資料を作れる
です。.mdファイルとスライドで使う画像で構成されているので、バージョン管理が圧倒的にしやすくなりましたし、ちょっとした文言の微調整もしやすかったです。
今回は会社でも家でも隙間時間を使って資料作成ができるようGithubで発表資料を管理していたので、この選択は正解だったように思います。
狙い通りじゃなかった部分としては、機能がシンプルな中でも見た目にこだわろうと色々と試行錯誤に時間を費やしてしまったことです。Decksetにまだまだ不慣れなのもありますが、Tips的な記事があまりないのもあり、限られた設定項目を使い思い通りのデザインにするための試行錯誤が発表直前まで続きました。
5分LTと30分発表の違いについて
1回通すだけで30分かかるため、やはり30分発表の練習をするための時間を捻出するのが大変でした。少ない回数で調整をしないとならず、1回1回が重要でした。ただ、30分だと発表中に話をしながら時間を見つつ内容を多少コントロールすることもでき、そこはLTと違ってやりやすかったかもしれません。
また、発表時間を考えれば当然ですが、やはりLTと比べて体力の消耗が大きかったです。直前に時間調整のために発表練習をしていましたが、発表練習を終える度に結構な疲労感がありました。30分でも結構来るので、60分発表に取り組まれた登壇者の方々の消耗はかなりのものではないかと思います(尊敬の念しかありません)。
発表練習時に普段からの体力作りの大切さを痛感しました。
サンプルアプリについて
せっかくなので、Xcode11対応したいなと思います。パーミッションの実装にRxSwift使ったので、Combineを使ってみたいです (サンプルアプリとはいえ、iOS12を切ることにはなりますが)。
宿題について
発表終了後の質問やAsk The Speakerでいただいた質問に対して、いくつかその場では回答できなかたったものがあります。特に気になったものについては宿題として調査し、結果を報告できればと思っていますので、気長にお待ちいただければと思います(自分が調査しようと思っているのは cv::Matへ変換する際の速度比較と最適解の話
と UIGraphicsImageRendererが遅い理由
の2つです)。
※ もし忘れてるものがあれば教えていただければと思います。
終わりに
昨年に引き続き、無事に発表することができました。このような素敵な場を作っていただいたiOSDC運営の皆さま、本当にありがとうございました!
それでは、来年のiOSDCでまたお会いしましょう!