こんにちは、try! Swiftの参加者との飲み会で一番盛り上がったネタは最新のAndroid端末についてでした、iOSエンジニアの @imaizume です。
さて今回は4/10に日本経済新聞社さんで行われたOtemachi.swift #03での参加・登壇報告になります。
Othemachi.swift は、その名の通り大手町近辺の企業で主催されている地域Swiftイベントです。
会場提供並びに主催は日本経済新聞社さん、ホールの壁には戦後の日経平均株価の推移が書かれていたりして、まさに日本を代表する新聞社という感じの会場でした!
今回のイベントで、自分は「循環的複雑度を上げないためのSwiftプログラミングTips」というタイトルの5分LTをさせていただきました。
循環的複雑度は、プログラムの複雑さを定量的に表す指標の1つで、言語によらず条件分岐の数をベースとした数式で表すことができます。
過去に自分は会社で「プロダクトコードの循環的複雑度(CCN)を下げる」という個人目標を設定し取り組んだことがありましたが、その際単にif文を減らすだけではCCNを下げることができませんでした。
そこでいろいろと調べたり試行錯誤したりするうちに、抽象化やデータ構造の変更といった手段が必要であることがわかりました。
実際にCCNを計測することはなくても、コードの複雑性を減らすために使えるテクニックとして、明日からの開発に取り入れていただけるような内容にまとめられたのではないかな思いました。
参加者の方からもTwitterや懇親会で多くの反応をいただき嬉しい限りです。
enum分割良いな #otemachi_swift
— kariad/かりあど (@kariad_uu) April 10, 2019
「コードの声を聞く」は名言すぎる。。。
— やまたつ(25)@Swiftエンジニア@アプリ開発中 (@ta__ta01) April 10, 2019
実装に詰まった時はコードの声を聞こう。
今まではxcodeがエラーという悲鳴をあげていたけど。#otemachi_swift
またこんなご感想もいただきました。
CCNを減らすのも大事だけど、可読性とのバランスも大事だと思う〜〜 #otemachi_swift
— ウホーイ (@the_uhooi) April 10, 2019
今回はCCNを下げることを目的とした書き方を紹介しましたが、実際はオーバーエンジニアリングとなりかえって可読性や利便性が下がる可能性もあります。
そのためご指摘の通り、自分も開発効率に影響をしない範囲で複雑性を下げていくことが大切だと思いました。
当日の発表は日経電子版アプリの広告流入計測にまつわるお話や、アプリ内課金に関する発表のほか、テストやSwiftlint、Firebaseから、さらにはSwift 5に関するトークなど多岐にわたりどれも大変面白いものばかりでした。
特に個人的にはTsukasa Komiyamaさんの「5分でわかるSwift 5のRaw Text」での内容が気になりました。
4.10 Otemachi.swift 日経 小宮山さんの登壇資料はこちらです。 https://t.co/Aky5C5NcW5 #otemachi_swift
— NIKKEI Developers (@nikkeideveloper) April 11, 2019
これまで文字列リテラルを生成する際にダブルクオート(")をエスケープしたい場合にはバックスラッシュ(\)を使う必要がありました。
Swift 5のRaw Textは、バックスラッシュの代わりにシャープ(#)を使うことができるという仕様です。
自分は過去にRubyで開発をしたときに%q記法のエスケープを使っていたので、この変更は個人的にはかなり嬉しいと思いました。
発表でもあった通り、メタプログラミングやjson、xmlをStringとして直書きする場合などには特に有効な方法だと自分も思いました。
併設のカフェスペースで行われた懇親会でも来場した開発者の方々と発表や開発について意見交換をすることができ、大変有意義な会となりました。
懇親会も盛り上がってますー #otemachi_swift pic.twitter.com/ZyoBGNj811
— NIKKEI Developers (@nikkeideveloper) April 10, 2019
今後も開発で得られた知見を積極的に外へ公開していきたいと思います。
ぜひ今回の発表やそれ以外でも何か気になったことがあれば、お気軽に @imaizume までコメントを頂ければと思います!