iOSDC Japan 2020 で「Swiftで始める静的解析」というタイトルで発表しました!
タイトルの通りです。
今回で4回目の参加となるiOSDCでついにスピーカーとして登壇することができました!!
iOSDC とは🤔
年に一回、日本中のiOSアプリ開発者が集まり各々が技術についての発表をするイベントです。
例年はオフラインでの開催でしたが、今年は初のオンライン開催でした。
なんで登壇したのか?
初めてiOSDCに参加した時から、「いつかスピーカーとして登壇したい」と感じていました。
しかし、当時理系大学(院)生であった僕は連日の課題 / テスト / 研究 でなかなかiOSアプリ開発、ましてや発表のために資料を作成する時間なんて到底なかったわけです。
しかし、今年からは就職し、労働基準法という素晴らしい法律によって土日が土日として休めるわけです。
これで発表のための時間的余裕ができたので、「今回こそは...!」とプロポーザルを提出しました。
(プロポーザルとはこんな発表したいからさせてくださいってやつです。みんながみんな発表できるわけではないんです...)
なんで静的解析の発表?
端的に答えると大学院でソフトウェア工学、特に静的解析にまつわる研究をしていたからです。
(と述べていますが実はiOSの内容でオリジナリティのあるネタがなかったから...)
ソフトウェア工学とはソースコードや開発過程を対象に、「どうやったらもっと効率的に開発ができるのか」を追求する学問です。
ソフトウェア開発が好きな人は、みんな効率的に開発がしたいわけで、この学問を嫌いな人はいないと勝手に思っています。
そんなソフトウェア工学に少しでも興味を、せめてどんなことをしている学問かをiOSアプリを開発している人たちに知ってもらいたい、というのが今回の発表の裏テーマでした。
結局何を話したのか?
前半は静的解析に必須の構文木の話をし、そこからSwiftで構文木を扱うSwiftSyntaxの話につなげました。
その後、「IntelliJにはあってXcodeにはない機能を実装してみよう」ということでtype-2コードクローン検出の実装を紹介しました。
詳しくは資料をみてください。
発表では述べませんでしたが、Swiftとコードクローン検出は案外良い組み合わせだと思っています。
というのもSwiftで開発をしていると、extensionで簡単に既存の型を拡張できるので、実は別の場所ですでに作った拡張メソッドと全く同じ拡張メソッドを作ってしまう場合がありそうだからです。
実際、iOSDCの実行委員長の長谷川さんはiOSDCが始まる少し前にこんなツイートをしています。
「このクラスにこういうメソッド欲しいな」と思って定義したらIDEがエラー出して、見たら「同じ名前のメソッドがあるよ」でして。見たら過去に実装したのが見つかりました。動作から全く同じ名前をつけてる自分はブレてなくていいぞ、とご満悦です。(だけど作ったの覚えてないので0点)
— Tomoki Hasegawa (@tomzoh) 2020年9月1日
こんな場合もコードクローン検出ツールがあれば安心ですね(???)
皆さんの反応
静的解析が好きなので次はDをメインに聞きます。 #iosdc #d
— kishikawa katsumi (@k_katsumi) 2020年9月21日
個人開発で140万DLすごすぎwhttps://t.co/hBAHrs2TQF
— Objective-ひろC🍜iOS / Flutter (@hirothings) 2020年9月21日
#iosdc #d
SwiftSyntax の解説、とても分かりやすい #iosdc #d
— Yasuhiro Inami (@inamiy) 2020年9月21日
— あつや🍳 (@n_atmark) 2020年9月21日
トークン化することで、改行などの表記揺れを吸収してコードクローンを検出できる
— ウホーイ@iOSDC2冠達成 (@the_uhooi) 2020年9月21日
スライドがわかりやす過ぎる…#iosdc #d
ノード、ツリー構造、大学の離散数学やコンピュータ概論で見た内容ばかり。大学の学問ってやっぱ大事なのか。うらやましい。#iosdc #d
— ねこきち@ニートエンジニア (@nekokichi1_yos2) 2020年9月21日
Xcodeの静的解析をSwiftで進化させてて感動した👏
— Objective-ひろC🍜iOS / Flutter (@hirothings) 2020年9月21日
説明もわかりやすかったです!https://t.co/y0N8e1O3cG#iosdc #d pic.twitter.com/JSZi9YObol
静的解析の考え方が少しだけわかった。参考になる。 #iosdc #d
— 藤 治仁@㊗️増刷📖iPhoneアプリ開発集中講座 著者 アプリクリエーター (@From_F) 2020年9月21日
— あおい (@aomathwift) 2020年9月21日
静的解析わかった気になれるいい発表だった
— ターク (@tark_ann) 2020年9月21日
#iosdc #d
— だっちゃん (@dchn2904) 2020年9月21日
メモ取るより理解に集中した
— ひっか (@hicka04) 2020年9月21日
こうやって自分で独自のLintがつくれるのか… #iosdc #d
静的解析の話、初めて聞いたけどわかりやすいし面白かった#iosdc #d
— やや (@yayamochi) 2020年9月21日
#d #iosdc
— Moto++ (@Moto_0124) 2020年9月21日
静的解析ちょっとわかった。
トークやスライドがわかりやすかった
登壇してみてどうだったか
いやー、楽しかったです!!
例年は聞き手としての参加していましたが、スピーカーとして参加するのがこんなに楽しいとは思いませんでした。
準備は大変 (スライドのページ数120枚超え、時間の都合上削ったのを含めると200枚超え) でしたが、登壇できて良かったです。
来年も登壇したい!!
(おまけ) 収録風景
WWDCのように立って発表して、体を動かしたりと動きをつけたかったので、収録はキッチンで行いました。
ちょうど良い高さにカメラを持ってこれる場所がキッチンしかなかったんです...笑