開発者にとっても、ユーザーにとっても健全なシステム設計とは?〜VASILY DEVELOPERS BLOGを公開しました〜

こんにちは、広報の坂井です。

本日2月5日(月)、 VASILY DEVELOPERS BLOG が公開されました。

タイトルは “ 大規模リファクタリングで痛感したSwiftのOptionalとの正しい付き合い方” 、担当はiOSエンジニアの平山です。

tech.vasily.jp

f:id:vasilyjp:20180202164445j:plain

さっそくインタビューです!

ー まず、「リファクタリング」とは、なんのことでしょうか?

リファクタリングとは、既にあるコードの改修や作り直しを行い、綺麗に整える作業のことです。

ー その、リファクタリングを行う中で得たことを、まとめているんですね?

はい。iOSアプリ開発で用いるSwiftという言語では、Optionalという機能があります。
Optionalとは、アプリの中で入力が任意の、オプションとしてある項目を表現するSwiftの機能です。

例えばIQONを始める際、ニックネームの入力は必須ですが、年齢は必須項目ではありません。この場合、常にデータがあるニックネームはOptionalではありませんが、人によってはない場合がある年齢は、Optionalなデータとなります。

ー なるほど。記事の中では“「とりあえずOptional」をやめる”とありますが、なぜでしょうか?

SwiftのOptionalはとても便利な機能ですが、先程お伝えしたように必須項目ではないため、データがある場合とない場合があります。
その場合、年齢で例えると「25歳 」か「未入力」か、など、データのあるなしどちらの表示も作る必要があるため、手間になります。

そして、データを処理するときにも問題が生じます。
全てをOptionalに設定して運用していると、“データが必ずある”という前提ばかりになってしまい、万が一データが取れない時、動かなくなる可能性があります。

ー と、言うと…?

例えば、アプリを始めてすぐにOptionalの項目を入力する仕様であれば、データは必ず取得できるため問題はありません。
しかし、もし改修によって仕様が変わり、その項目を入力するのが後になった場合、データがあるという前提で実装されたコードが正しく動かなくなる可能性があります。

ー なるほど。記事にある“エラーやデータ不整合を握りつぶさない、回復不能ならアプリを落とすことも検討”とは?

これもOptionalに関連する話ですが、もし上述のようにデータがうまく取得できない時、アプリが何となく生き続けるより、クラッシュさせてしまう方が健全なのではという話です。
というのも、例えば不具合があってもクラッシュさせずにいると、不具合を引きずったままアプリが動作し続けることになってしまいます。不具合発生時にクラッシュさせることで、開発者に通知が飛んでくるので気づき、修正することができます。

iOSアプリ開発では元々、Objective-Cという言語を使っていました。これがSwiftにシフトする時に“クラッシュしづらいコードが書ける”という利点が評価され、広まりました。
しかし、本来快適なアプリとは、「クラッシュしないアプリ」ということではありません。クラッシュしなくても、ユーザーはずっと不便なまま使い続けることになってしまいます。

もし不具合が発生した場合、すぐに修正できるような環境を整えることで、快適に使っていただけるサービスを作ることも大切だと考えています。

おまけ

ー ここに貼ってあるシールはなんですか?

f:id:vasilyjp:20180202190739j:plain

パンダと「わーい!」の手です(笑)パンダは、僕のインターネット上のアイデンティティとして使っているので貼っています。「わーい!」は、こうありたいという僕のポジティブな気持ちです。笑

ー 平山さんがいるといつもにぎやかですもんね!ありがとうございます。

最後に…

VASILYでは、こだわり抜いたサービスをユーザーへ届けたいメンバーを大募集中です!エンジニアに限らず、ビジネス・デザイン職の方もぜひ一度お話しましょう。
ご応募お待ちしております!

www.wantedly.com

【お問い合わせ】
株式会社VASILY 広報担当
press@vasily.jp