(dev)juginon-blog

勉強したこと、趣味のこと。

iOSDC Japanに3年連続で登壇しました(LTのウラ話)

iOSDC Japan 2024にLTで登壇しました

お久しぶりです、Ogijunことjuginonことおぎじゅんです。X (formerly Twitter) ではJun Ogino(@juginon)という名前で活動しています。

今年の8/22-24に行われたiOSDC Japan 2024のLT枠で登壇させていただいたので、今回はその報告です(I did blog!)。

fortee.jp

全力の跳躍を捉える計測アプリを作る - Speaker Deck

まずは、今年のiOSDC Japan 2024で僕の発表を会場・配信で見てくださった皆様、そしてSNSやfortee上でフィードバックを書いてくださった皆様、本当にありがとうございました。

僕のLTは趣味全開で、かなり勢いで押し切るタイプの発表なので、聴衆の方を置いてけぼりにしてしまうような発表かもしれません。そんな発表でも温かく見守ってくださり、盛り上げに協力してくださるiOSDC参加者の皆様には頭が上がりません。

今年は「全力の跳躍を捉える計測アプリを作る」というテーマで登壇させていただきましたが、実は昨年も「続・全力疾走中でも使えるストップウォッチアプリを作る 〜LiDARを使った精度への挑戦〜」というテーマでLTの登壇をしていました。

fortee.jp

なので、2022年の20分トークを含めると今回で3年連続のプロポーザル採択となりました。

2022年の初登壇の時の記事はこちら。

ogijunchang.hatenablog.com

今回は「LTのウラ話」ということでLTを発表するまでに起きたもろもろをお話しできればと思います。

LTのウラ話

さて、さっそく今年のLTのウラ話をしようと思います。2022年・2023年はどちらも「ストップウォッチアプリを作る」というテーマで、UX目線のトークと記録の精度目線のLTという二つの視点でお話しました。

2023年のiOSDCが終わって早稲田大学から会社の同期と帰宅する途中、こんな発言をしたのを覚えています。

「多分俺、大学の頃やってた十種競技の種目全部こすれば陸上ネタで永遠にLTできる気がするんだよね」

Twitterのbioにも記載していますが、僕は高校では八種競技、大学では十種競技という2日間で10種目(8種目)の競技を行い、各種目の記録を点数に換算しその合計点数を競うという陸上の中でもかなりマイナーでかつ過酷な競技をやっていました。

十種目にどんな種目があるかは今まで散々聞かれてきたのでここでは紹介しないですが(Wikipediaに書いてあります)、自分は陸上競技者の中でもかなり幅広いジャンルの種目をやってきています。なので、自分の陸上ネタの引き出しの中には走りだけでなく跳躍や投擲もありました。(今まで経験のある公式種目は、100m/200m/400m/800m/1500m/3000m/5000m/ハーフマラソン/110mH/400mH/走高跳/棒高跳/走幅跳/砲丸投/やり投/円盤投/十種競技/八種競技)

この時点で今年登壇したテーマの「幅跳びみたいな長さを競う種目でステレオカメラを使って距離計測する」というネタは頭の中にぼんやりありました。ただ、これを実際に発表するかどうかは当時はまったく考えていませんでした。

弊社(ZOZO)では毎年iOSDC CfP提出期限の数週間前に社内レビュー会をやるのですが、そこで何も検証できていない段階のCfPとして今回発表した走幅跳の計測をするというテーマを書いてみました。

レビューを受ける前にさすがに実現可能なのか(ちゃんと計測することができるのかどうか)を計算したところ、手元で計算した段階で誤差が大きすぎて計測不可能であることは判明していました。

なので、「うまくいかないことは明らかだし、プロポーザルを出すのはやめときます」と共有したところ、技術顧問である岸川さん( https://x.com/k_katsumi )から「うまくいかなくてもその知見を共有するのは面白いと思う。陸上を絡めたネタはおぎじゅんさんにしかできないんだし、毎年の恒例になりつつあるから出してみてもいいんじゃないかな」と背中を押していただきました。

まあ研究でも卒論・修論発表でうまくいかなかったことを発表することは今までも何度かあったし、その過程を共有するというのも一理あるなと思い、その時書いた概要文ほぼそのままで提出したところ、採択されました。

2023年は大トリの1個前、今年は大トリということで運営からの何かしらの期待がかかっているのかもしれないと勝手に思い込みながら準備しましたが、正直今年は去年までの比にならないくらい大変でした。

「失敗した」をどう面白くするか

2022年・2023年はどちらも「うまくいきました」という結果に落ち着いた発表でした。だからこそ発表に対して「これは面白い発表になった」と自信も持てましたが、今年はスタート地点から失敗することが前提でした。

うまくいかないことを前提としたとき、発表のオチはどうしよう、、と不安を抱えたままとりあえず計測アプリの実装に取り組みました。

実際に作った結果を見てみると自分の想像以上に結果が悪く、ほぼなんの意味も持たない結果が出力されてしまい正直めちゃくちゃ冷や汗をかいていました(特に、参考にしていたpython/OpenCVを使った視差の導出をしている記事によるとレンズ間の距離はほんの少しでも十分に視差が出ると記載されていたので)。

実はあのオチ(iPhoneのカメラ部分の横幅が死ぬほど長ければ十分に距離の推定ができるよね)は僕がイチから生み出したのではなく、弊社にアルバイトで参加している内定者からのアドバイスが効いています。

「失敗したって結果なら、じゃあどういう状況だったら成功できる可能性があるのかが最後にわかると嬉しいです」という彼の発言のおかげで今年もなんとか話のオチを作ることができました。本当にありがとう。

撮影場所の確保の問題

発表の中で「今回は陸上競技場で撮影しました」とサラッと言いましたが、撮影場所を確保するのも正直めちゃくちゃ焦ってました。

走幅跳は競技の特性上ただの道路や公園などでは実施不可能で、競技場の設備を使わないといけません(砂場があっても踏切板がない、助走距離が確保できない)。

これは陸上界隈の人しか知らないことなんですが、今年は都内のいろんな陸上競技場が改修工事をしており、いつも練習場として使っている府中・夢の島済美山などが軒並み使えない状況でした。

また、仮に陸上競技場が使えたとしても走幅跳はピットがせいぜい2つしかなく、その中でいろんな学校・個人が使います。

その中でスライドで映していたように綺麗な画角で計測・撮影ができる環境を作るのはめちゃくちゃ大変そうで気が滅入っていました(一瞬個人で陸上競技場を貸し切ることも考えましたが、さすがに高すぎるので断念)。

どうしようか焦っていたとき、僕が所属していた電気通信大学陸上競技部のDiscordでこんな投稿がされていました。

救世主あらわる

僕が陸上部にいた頃には大学で競技場の貸し切りをすることなんて一度もなかったのに、超絶ベストタイミングで貸切の話が流れてきました。もうこのタイミングで撮影するしかないと思い、去年と同じく大学陸上部にお願いして練習に参加させていただき、無事に撮影を行うことができました(電通大陸上部、いつもありがとう)。

走幅跳をするの実は(ほぼ)3年ぶり

撮影場所の確保は無事できたんですが、次の問題として「走幅跳自体するのが3年ぶり」というのがありました。

大学時代は十種競技をやっていたと言いましたが、もちろん大学時代までの話なので社会人になってからは専門種目の走高跳と100mしかほとんど試合に出ていません。

跳躍種目の方が得意です、とかプロポーザルに書いておきながらゴミみたいな跳躍しかできなかったらどうしよう、やってる途中に肉離れとかして撮影素材が撮れなかったらどうしようという不安もありました。

ただそこに関しては当日なんとか持ちこたえ、記録も想像していたより全然良かったので本当に安心です(スライドでは6m43cmでしたが、自己ベストは7m14cmですイキリ)。

正直自分の発表はスライドを作ることよりもスライドの素材の準備に時間と労力が死ぬほどかかるので、5分のLTのためにアプリ開発・競技場の押さえ・撮影協力者の押さえ・実際に動画を撮影だけで数十時間はかかってます(盛りすぎかもしれないけど気持ち的にはそれくらい)。

あとになって公式APIがあることが判明

陸上競技場での撮影も無事終わり、あとはスライドを作るだけになったタイミングで、Apple公式にこんなページがあるのを発見しました。

developer.apple.com

こちらはスライドの中でも共有しているページですが、写真の奥行きをキャプチャーするためのデータの取得方法が書かれています。

実は撮影の段階ではこのページの存在に気づいておらず、自分で「同時撮影の2枚の焦点距離の違う写真を位置合わせし、OpenCVを使って視差を計算して返す」という実装をObjective-C++とかいう古謎言語みたいなもので実装していました。

このページで言っている「AVDepthData」は自分の自前実装をほぼ自動でやってくれたあとのデータ型のようで、これを見た瞬間に心臓が爆発するかと思いました。

ただ、ステレオカメラ方式で取得できるこの型のデータはあくまで相対的な深度のみであり、絶対的な深度を計算するには自前で計算するしかないようでした。

とはいえ、公式APIを使ってやった方が上手くいくんじゃないかということも思い、翌日に陸上の試合があるのにも関わらず朝6時くらいまで実装を行い、試合の結果もボロボロ・結局実装も間に合わない、という最悪な結果になりました。

結局実装したところ絶対的な深度は計算できないと判明したので徒労となりましたが、この時期が一番しんどかったです。

スライドができてからLiDARの照射範囲がiPhone 15 Proから増えていることが判明

スライドが完成・チーム内での発表レビューも終わり、あとは当日を迎えるだけという段階で、弊社ではDevRel・広報の方にスライドの最終チェックをお願いしています。

そこでまたしても驚きの事実が判明。どうやらiPhone 15 ProからはLiDARが測定できる距離が増えているとのこと。

スライドの中でステレオカメラ方式を使う理由として、「iPhoneのLiDARの照射範囲内では幅跳びの画角を収めることはできない」といっています。

自分が開発機として持っている(LiDARのついた)端末はiPhone 13 Pro Maxなのですが、DevRelの持っているiPhone 15 Proを使って10m近くの奥行きがあっても正確に距離を測れているスクショが送られてきました。

そもそもの前提が覆されてしまい、ここでも心臓が爆発しそうになりました。

とはいえもう発表までの時間はなく、チーム内のレビューも完了している状態だったためLT内で共有したように補足情報を共有するに留まりました。やっぱりiOSエンジニアとして最新端末は持っていないといけないですね、、そんなにお金はないけど。。。


そんなこんなで2022年・2023年とは違いスムーズにはいかない準備となりましたが、なんとか当日を迎え発表することができました。

今年のLT大会は正直みんなとてもクオリティが高く自分も発表前に面食らってしまいましたが(特にまつじさんの「iOS怪談 シングルトンがふたつ…」は個人的MVPトークです)、おそらく全員5分という短い時間のトークのためにたくさんの時間を投下しているはずです。

3年連続(LTは2年連続)で僕もその中の1人になれているということは誇りに思います。

3年連続で登壇してわかったこと

ということで、3年連続でこんなに大きい場所でマイクを握らせていただいた経験を通してわかったことを記録しておきます。

「面白い」と言ってもらえる発表にするには

個人的に発表するときに一番大事だと思っていることは、自信を持つ・恥ずかしさを捨てることだと思います。

「面白い」には技術的な面で興味深い・ネタとして笑えるという2軸があるかなと思いますが、どちらも自信がないと中途半端に終わってしまうなと感じました。

自分は社会人になってからiOSの開発を始めたので、実はまだiOSエンジニア歴は3,4年程度しかありません。正直技術的にはLTで登壇されていた他の方々よりも圧倒的に足りていない部分も多いと思っています。

ただ、陸上競技にかける情熱はこのイベント内で間違いなく1番だし、発表をするために調べたたくさんのことは自信を持って高い技術力を持つ方にも共有したいと言えます。

自分にとっては前者の自信があるだけで正直最初の1歩はいいんじゃないかなと思っていて、技術力に格差があることは当たり前で、iOSDCはそれを比較的許容してくれるイベントだと思ってます。

自分の個性を最大限に出すことが面白みに繋がるんじゃないかなと。

ネタとして笑えるかどうかに関してはその人の性格によるのでアレですが、自分はこういう人前で恥ずかしげもなく変なことするの得意なので。

いつの間にか名前を覚えてもらえる存在になれた

今年のLTメンバーはみんなiOS界隈の中でも超有名な方ばかりでしたが、特にLT直前にウホーイさんに「僕が失敗してもおぎじゅんさんが回収してくれるから大丈夫ですよね」って言ってくださいました。

その時はイキって「もちろんです、どんなボール転がってきても全部拾うんで任せてください笑」みたいなこと言いましたが、自分の名前が覚えられていること自体に正直驚いてました。去年の僕の発表を覚えてくれていたことも。

また、今年初めて参加した懇親会で「最後のLTされていた方ですよね」と話しかけてくださる方が数名いました。

直接面白かったと言ってくださる方や、SNSで「このテーマは興味深い」と言ってくださる方も前より増えて、自分の名前がちょっとだけ誰かの頭の中にあることが嬉しいです(別に有名になりたいとかはないんですけど)。

今後について

ここまで読んでくださる方はどれくらいいるのだろうか。またしても長文になってしまいましたが、最後にちょっとだけ今後について今の自分の気持ちを書いておきます。

今年のLTの準備をしている中でちょっとだけネガティブな感情がありました。それは、「陸上競技の発表をするために陸上競技のことを犠牲にしてしまっている」ことです。

事前に準備してればそんなこと起きないんだから自業自得だろ、と言われればそれまでなんですが、撮影を間に合わせるためにほぼ徹夜した状態で練習に参加したり、試合が控えているのにうまく調整できなかったりということが今回結構ありました。

夏はiOSDCの時期ですが、陸上競技のシーズンでもあるので個人的には結果を残すための大事な時期でもあります。

来年以降ももちろん登壇を目指したいという気持ちはありますが、自分が本当に共有したいネタに厳選してやっていければなと思います(別に陸上のテーマ以外でも発表したい気持ちもめっちゃあるので)。

おわりに

ということで、iOSDCのあの発表にはこんなウラ話があったんだよ、のお話でした。

めっちゃ正直な気持ち、入社してから3年連続で登壇するとは思ってませんでした。社内では「iOSDCマスター」と呼ばれています。

実は去年のLiDARセンサーを使った赤外線ゴールライン検出の発表も面白いと思ってもらえるウラ話があるんですが、長くなりすぎたので割愛します。

興味があればどこかでお会いしたときに言ってもらえれば喜んでお話しするので、また来年のiOSDCなり、他のイベントでお会いしましょう!改めて、LT見てくださった皆様ありがとうございました!