まつじの開発日記

何か学んだ時のアウトプット用

iOSDC2021に参加した話

お久しぶりです。
1年に1回、iOSDCの時だけ更新するブログです。

タイトルの通りiOSDCに参加しました。

今年の関わり方

去年はスピーカーとして参加したので、今年も何か話たいと思ったのですが、プロポーザルが落ちてしまい...笑
なので、単なる参加者として参加しましたが、今年は単に話を聞く以外にも色々できました。

  • Podcast
  • アンカンファレンス
  • iOSDCチャレンジ

Podcast

会社の先輩に誘われて、会社のPodcastでiOSDCについて話しました。
技術的な話とかではなくて、「iOSDCって楽しいよな」って雑談を収録をしました。
Podcastを聞いてくださった方ありがとうございます。

Podcastの中でも「iOSDC終わりにまたrecapしたいよね」って言っていたので、またrecapを出すかもなので、お楽しみに!笑

アンカンファレンス

今年からはアンカンファレンスというのがありました。
アンカンファレンスとは何かちょっとしたことを話したい時に自由に予約して話せる場のことで、今年からの取り組みとのことです。
「プロポーザル落ちたけど、何かやっぱり話したい!」と思っていたので利用して、iOSDC前日にできたResizableSheetというライブラリについて話をしました。

fortee.jp

少しだけResizableSheetの話すと、これはハーフモーダルをSwiftUIで簡単に利用できるようにしたライブラリです。

これについてはまたどこかで詳しく書きたいと思うのですが、もう少しAPIを手直ししてから、書きたいと思います。
(本当にiOSDC前日にできたので、まだ色々と雑なのです...)

Twitterとかで「ResizableSheet使ってみたい」みたいなツイートも見て、嬉しかったです。

iOSDCチャレンジ

今年のiOSDCでめちゃくちゃ流行った企画です。
# から始まるトークンというものを、パンフレットやスポンサーのサイト、ノベルティから探し、入力するとポイントがもらえ、そのスコアを競うイベントです。
正直なところ、去年まではそこまでやっている人は多くないイメージでしたので、「ガチでやれば、そこそこのところまでいけるのでは」と思ったのが、沼の始まりでした。
ノベルティが届いた時にトークンを探し、それをnotionのデータベースでまとめてました。

f:id:mtj0928:20210920085355p:plain

しかし、今年は同じように考える人が多く、 さらに上には上がいて、上位陣の方はもっとしっかりとまとめていました。
一番調子がよかったときでさえ4位で、最終日には心が折れてしまって、最終的には12位でした。 11位の人はキリ番賞があったみたいで「惜しい!!!!」って思いましたw

f:id:mtj0928:20210920085730p:plain iOSDCチャレンジランキング最終結果 - YouTube

ちなみに順位の遷移が見れるものがYouTubeに上がっています。
mtj0928が僕ですので、見てください。

www.youtube.com

トーク

さすがにトークンで終わるのもあれなので、今年特に面白かったトークも紹介します。
意識したわけではないのですが、二つともプロジェクト構成になりました。

大規模なアプリのマルチモジュール構成の実践

最近マルチモジュール構成が流行っていて、僕も強く興味があったので、聞いてみました。
技術的な話だけでなく、会社としてどう取り組むかまで丁寧に説明してあり、知見の塊でした。
発表の本題ではないですが、GenesisというOSSは知らなかったので、この機会に知れてよかったです。

fortee.jp speakerdeck.com

Swift Package中心のプロジェクト構成とその実践

あまりビルド周りの知識がない僕でも理解できるわかりやすさ、そして今すぐ使いたくなるプロジェクト構成、正直もうすごすぎました。
一度自分でも小さいサンプルプロジェクトでこの構成を試してみて、色々と検証してみようと思います。

fortee.jp speakerdeck.com

その他の思い出

雑談チャンネルで、「Twitterウィジェットってないよな」って話になったので、僕が個人開発しているWdigetterを紹介しました。

apps.apple.com

すると一瞬でリンクが共有され、みんなすぐにインストールして、iOSエンジニアの皆様がそれを触って感想を言い合う時間が突然始まりました。
ネガティブな意見はあまりなく、「おーUIきれいー」とか「ウィジェット使ってこなかったけど、これは使おうかな」など良い意見をたくさんもらえたのが嬉しかったです。

最後に

来年こそは登壇したい、そしてiOSDCチャレンジの上位に食い込みたい!

iOSDC Japan 2020 で「Swiftで始める静的解析」というタイトルで発表しました!

タイトルの通りです。
今回で4回目の参加となるiOSDCでついにスピーカーとして登壇することができました!!

iOSDC とは🤔

年に一回、日本中のiOSアプリ開発者が集まり各々が技術についての発表をするイベントです。
例年はオフラインでの開催でしたが、今年は初のオンライン開催でした。

なんで登壇したのか?

初めてiOSDCに参加した時から、「いつかスピーカーとして登壇したい」と感じていました。
しかし、当時理系大学(院)生であった僕は連日の課題 / テスト / 研究 でなかなかiOSアプリ開発、ましてや発表のために資料を作成する時間なんて到底なかったわけです。
しかし、今年からは就職し、労働基準法という素晴らしい法律によって土日が土日として休めるわけです。
これで発表のための時間的余裕ができたので、「今回こそは...!」とプロポーザルを提出しました。
(プロポーザルとはこんな発表したいからさせてくださいってやつです。みんながみんな発表できるわけではないんです...)

なんで静的解析の発表?

端的に答えると大学院でソフトウェア工学、特に静的解析にまつわる研究をしていたからです。
(と述べていますが実はiOSの内容でオリジナリティのあるネタがなかったから...)
ソフトウェア工学とはソースコードや開発過程を対象に、「どうやったらもっと効率的に開発ができるのか」を追求する学問です。
ソフトウェア開発が好きな人は、みんな効率的に開発がしたいわけで、この学問を嫌いな人はいないと勝手に思っています。
そんなソフトウェア工学に少しでも興味を、せめてどんなことをしている学問かをiOSアプリを開発している人たちに知ってもらいたい、というのが今回の発表の裏テーマでした。

結局何を話したのか?

前半は静的解析に必須の構文木の話をし、そこからSwiftで構文木を扱うSwiftSyntaxの話につなげました。
その後、「IntelliJにはあってXcodeにはない機能を実装してみよう」ということでtype-2コードクローン検出の実装を紹介しました。
詳しくは資料をみてください。

speakerdeck.com

発表では述べませんでしたが、Swiftとコードクローン検出は案外良い組み合わせだと思っています。
というのもSwiftで開発をしていると、extensionで簡単に既存の型を拡張できるので、実は別の場所ですでに作った拡張メソッドと全く同じ拡張メソッドを作ってしまう場合がありそうだからです。
実際、iOSDCの実行委員長の長谷川さんはiOSDCが始まる少し前にこんなツイートをしています。

こんな場合もコードクローン検出ツールがあれば安心ですね(???)

皆さんの反応

登壇してみてどうだったか

いやー、楽しかったです!!
例年は聞き手としての参加していましたが、スピーカーとして参加するのがこんなに楽しいとは思いませんでした。
準備は大変 (スライドのページ数120枚超え、時間の都合上削ったのを含めると200枚超え) でしたが、登壇できて良かったです。
来年も登壇したい!!

(おまけ) 収録風景

WWDCのように立って発表して、体を動かしたりと動きをつけたかったので、収録はキッチンで行いました。
ちょうど良い高さにカメラを持ってこれる場所がキッチンしかなかったんです...笑 f:id:mtj0928:20201003110119j:plain:w400