まつじの開発日記

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

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