初心者向け
Swiftアプリの
リファクタリング
@g08m11
自己紹介
自己紹介
沖縄そば/鶏肉大好きの沖縄出身(28)
趣味はCafe巡り、映画鑑賞
お酒弱いけどお酒好き
暑い所苦手、日焼け苦手
アフィリエイトソン 最優秀賞
2B Hack 企業賞(3社受賞)
10回以上の勉強会や講演会を実施
自己紹介
日立系SIer→Oracleパートナー会社へ
現在は(株)じげんのエンジニア
Rails/Swiftの開発がメイン
KPIに沿ったGrowth Hackを主導
g08m11でQiitaやってます。
Growth Hack+Webではてなブログやってます。
じげんとは?
じげんとは?
じげんとは?
じげんとは?
•  iOS開発、Swift開発を個人で学習してる方
•  Swiftで今後もアプリを改善や運用を
 されていく方
今日のプレゼン対象者
•  基本的なことがメインになっています。
 (難しいことはしていません。)
•  リファクタリング後の生産性の数値など
定量的な数値はありません。
注意
去年アプリを
リリースしました!
STEP1 STEP2 AppleSTEP3
Apple
STEP4
Gantter
見積もりポーカー
KPT
バーンダウンチャート
詳細はこちらを!
または
「Apple審査 じげん」
で検索
ところが
•  ViewControllersが整理されていない
•  デフォルトの構成(Xcodeの自動生成)
 に引っ張られ過ぎ
•  冗長的な記述による可読性が低下
•  キャメルケースと通常の書き方が混在
•  ViewControllersにロジック全部書き込ん
でいたことでソースの可読性が低下
•  初期化処理の記述が異常に多い
•  Array型とDictionary型が混在
•  開発環境と本番環境の差分が
 考慮されてない
などなど・・・
オレオレコーディング・・・
このままでは・・・
•  後任者の選定や引き継ぎが困難
•  機能の改善に時間が掛かる
•  バグの修正に時間が掛かる
•  潜在的なバグが摘めない
開発スピードもサービスも
改善されない
Let s
Refactoring!
コーディング規約の策定
•  インデントやコメントの書き方
•  変数名や定数名、定数定義の書き方
•  関数やクラスの書き方
例:キャメルケースの統一
参照元:「Swiftコーディング規約@Wantedly」
Stock + 認識のすり合わせ
Xcodeをフル活用
•  コーディング規約通りに一括置換
•  Info.plistやBuild Settingsを活用
Info.plist
Supported interface orientations
GA ID
Build Settings
Debug Release
MVC構成に則る
Xcode MVC
Xcode MVC
ViewControllersModels
ViewController Model
意識したこと
•  Model:アプリケーションの状態を表すもの&状態の加工メ
ソッドをまとめたもの
•  ViewController:Modelの加工メソッドの操作&Viewの操
作をする人「であり」Modelの状態を参照し視覚表現するもの
ViewController Model
Modelでは
•  画像の処理はImageManager.swiftというモデルで行う
•  GAのカテゴリーやイベントの設定は
GoogleAnalyticsManager.swiftというモデルで行う
ViewController Model
ViewControllerでは
•  クリックイベントやナビゲーションボタン押下などのユーザー
からの入力に対しての操作
•  modelの関数へ値を渡し、その結果を表示させる。
 (ViewControllerのためそのまま表示が可能)
ViewController Model
model
View
DEMO
デザインパターンを適用する
まとめ
•  リリースを急ぎすぎるとつぎはぎのソース
になってしまう。
•  ちょっとした事でもソースの可読性が格段
に上がる
•  ベースとなるコーディング規約はありなが
らも自分達に合わせるカスタマイズも大事
•  Swiftはデザインパターンを適用しやすい。
•  Refactoringは出来るところから始める。
•  遅すぎる技術的負債の還元になる前に、
気づいた所からまずやってみる。
じげんでは絶賛エンジニア/デザイナー募集中です!

【ヒカ☆ラボ】初心者向けSwiftアプリのリファクタリング