Diverse developer blog

株式会社Diverse(ダイバース) 開発者ブログです。

Otemachi.swift #03 にて「循環的複雑度を上げないためのSwiftプログラミングTips」という発表をしてきました

こんにちは、try! Swiftの参加者との飲み会で一番盛り上がったネタは最新のAndroid端末についてでした、iOSエンジニアの @imaizume です。

さて今回は4/10に日本経済新聞社さんで行われたOtemachi.swift #03での参加・登壇報告になります。

nikkei.connpass.com

Othemachi.swift は、その名の通り大手町近辺の企業で主催されている地域Swiftイベントです。

会場提供並びに主催は日本経済新聞社さん、ホールの壁には戦後の日経平均株価の推移が書かれていたりして、まさに日本を代表する新聞社という感じの会場でした!

今回のイベントで、自分は「循環的複雑度を上げないためのSwiftプログラミングTips」というタイトルの5分LTをさせていただきました。

speakerdeck.com

循環的複雑度は、プログラムの複雑さを定量的に表す指標の1つで、言語によらず条件分岐の数をベースとした数式で表すことができます。

過去に自分は会社で「プロダクトコードの循環的複雑度(CCN)を下げる」という個人目標を設定し取り組んだことがありましたが、その際単にif文を減らすだけではCCNを下げることができませんでした。

そこでいろいろと調べたり試行錯誤したりするうちに、抽象化やデータ構造の変更といった手段が必要であることがわかりました。

実際にCCNを計測することはなくても、コードの複雑性を減らすために使えるテクニックとして、明日からの開発に取り入れていただけるような内容にまとめられたのではないかな思いました。

f:id:incheon-special:20190425180829j:plain

Otemachi.swift #3 での登壇の様子

参加者の方からもTwitterや懇親会で多くの反応をいただき嬉しい限りです。

 

またこんなご感想もいただきました。

今回はCCNを下げることを目的とした書き方を紹介しましたが、実際はオーバーエンジニアリングとなりかえって可読性や利便性が下がる可能性もあります。

そのためご指摘の通り、自分も開発効率に影響をしない範囲で複雑性を下げていくことが大切だと思いました。

 

当日の発表は日経電子版アプリの広告流入計測にまつわるお話や、アプリ内課金に関する発表のほか、テストやSwiftlint、Firebaseから、さらにはSwift 5に関するトークなど多岐にわたりどれも大変面白いものばかりでした。

特に個人的にはTsukasa Komiyamaさんの「5分でわかるSwift 5のRaw Text」での内容が気になりました。

これまで文字列リテラルを生成する際にダブルクオート(")をエスケープしたい場合にはバックスラッシュ(\)を使う必要がありました。

Swift 5のRaw Textは、バックスラッシュの代わりにシャープ(#)を使うことができるという仕様です。

自分は過去にRubyで開発をしたときに%q記法のエスケープを使っていたので、この変更は個人的にはかなり嬉しいと思いました。

発表でもあった通り、メタプログラミングやjson、xmlをStringとして直書きする場合などには特に有効な方法だと自分も思いました。

 

併設のカフェスペースで行われた懇親会でも来場した開発者の方々と発表や開発について意見交換をすることができ、大変有意義な会となりました。

今後も開発で得られた知見を積極的に外へ公開していきたいと思います。

ぜひ今回の発表やそれ以外でも何か気になったことがあれば、お気軽に @imaizume までコメントを頂ければと思います!