初心者向け
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
バーンダウンチャート
詳細はこちらを!
【ヒカ☆ラボ】初心者向けSwiftアプリのリファクタリング
または
「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は出来るところから始める。
•  遅すぎる技術的負債の還元になる前に、
気づいた所からまずやってみる。
じげんでは絶賛エンジニア/デザイナー募集中です!

More Related Content

PDF
Apple審査を一発通過! iOS開発経験0でも出来る じげん流Swift開発のすべて
PDF
既存プロジェクトにSwiftLintを導入した話
PPTX
【Swift】 それ、enumとstructでやってみましょう!!
PDF
Swiftのプロパティオブザーバを使い倒す
PDF
はじめてのiOSアプリ開発 ①
PDF
iOS豆知識ver0.0.5
PDF
少しずつ手厚くして不具合や仕様漏れを防ぐために
PDF
ReactNative + Redux + NativeBaseでつくるサンプル実装をのぞく
Apple審査を一発通過! iOS開発経験0でも出来る じげん流Swift開発のすべて
既存プロジェクトにSwiftLintを導入した話
【Swift】 それ、enumとstructでやってみましょう!!
Swiftのプロパティオブザーバを使い倒す
はじめてのiOSアプリ開発 ①
iOS豆知識ver0.0.5
少しずつ手厚くして不具合や仕様漏れを防ぐために
ReactNative + Redux + NativeBaseでつくるサンプル実装をのぞく

What's hot (20)

PDF
Codeigniter3フレームアップデート
PDF
プログラム組んだら負け!実はHTML/CSSだけでできること2015夏
PDF
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜
PDF
Swift afterbeginner
PDF
Swiftだめ自慢Beta5
PDF
Swiftビギナーズ勉強会 第1回 @Co-Edo
PDF
Swiftの実際ダメな所
PDF
PHPUnitでリファクタリング
PDF
Code igniterを初めて使うときにはまった4つのポイント
PPTX
エンドツーエンドテストを自動化したらチームがすごく良くなった@XPまつり2015LT
PDF
Swift 1.2からSwift 2への移行 #cocoa_kansai
PDF
Swiftビギナーズ倶楽部 vol.2
PDF
オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版
PDF
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
PDF
Win32 APIをてなずけよう
PDF
ほんわかSwift勉強資料
PDF
Swift afterbeginner
PDF
Xcode and iTC submission topics
PDF
CodeIgniter をモダンに改造してみた
PPTX
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
Codeigniter3フレームアップデート
プログラム組んだら負け!実はHTML/CSSだけでできること2015夏
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜
Swift afterbeginner
Swiftだめ自慢Beta5
Swiftビギナーズ勉強会 第1回 @Co-Edo
Swiftの実際ダメな所
PHPUnitでリファクタリング
Code igniterを初めて使うときにはまった4つのポイント
エンドツーエンドテストを自動化したらチームがすごく良くなった@XPまつり2015LT
Swift 1.2からSwift 2への移行 #cocoa_kansai
Swiftビギナーズ倶楽部 vol.2
オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
Win32 APIをてなずけよう
ほんわかSwift勉強資料
Swift afterbeginner
Xcode and iTC submission topics
CodeIgniter をモダンに改造してみた
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
Ad

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

PDF
ブランディングエンジニア資料
PDF
Swiftビギナーズ
PDF
Yahoo!アフィリエイトソン最優秀賞者に学ぶ Swift講座
PDF
あなたも出来る!webエンジニアがSwiftでリリースするためにやったこと
PPTX
プロトタイプとMVPの開発上のギャップの大きさ。リンスタ関ヶ原 東軍先鋒 #devlove
PDF
「なぜクリエイティブ制作は自動化できないのか?
 〜広告史を巡って〜」セプテーニ加来幸樹×フクロウラボ林田朋也
PDF
塹壕にいるすべての同朋へ
PPTX
Webエンジニアのサバイバル英会話
PDF
リモートチームとふりかえり改善フレームワーク
PDF
アジャイルソフトウェア開発の道具箱
PDF
Objective-Cプログラマのためのswift導入法
PDF
Photon Enterprise Cloud 事例
PDF
受託案件を通じてみたWindows8ストアアプリ
PPT
【SEOの基本のキホン】 title・meta description・h1の付け方講座
PPTX
UXを損ねる静的コンテンツ配信アンチパターン7選
PDF
受託案件を通じてみたWIndows8ストアアプリ
PDF
20120316 designerworkshoppublished
KEY
iPhone/Android アプリをまとめて省エネ開発する技術
KEY
20120413 nestakabaneworkshop
PDF
.NET Lab2022年2月
ブランディングエンジニア資料
Swiftビギナーズ
Yahoo!アフィリエイトソン最優秀賞者に学ぶ Swift講座
あなたも出来る!webエンジニアがSwiftでリリースするためにやったこと
プロトタイプとMVPの開発上のギャップの大きさ。リンスタ関ヶ原 東軍先鋒 #devlove
「なぜクリエイティブ制作は自動化できないのか?
 〜広告史を巡って〜」セプテーニ加来幸樹×フクロウラボ林田朋也
塹壕にいるすべての同朋へ
Webエンジニアのサバイバル英会話
リモートチームとふりかえり改善フレームワーク
アジャイルソフトウェア開発の道具箱
Objective-Cプログラマのためのswift導入法
Photon Enterprise Cloud 事例
受託案件を通じてみたWindows8ストアアプリ
【SEOの基本のキホン】 title・meta description・h1の付け方講座
UXを損ねる静的コンテンツ配信アンチパターン7選
受託案件を通じてみたWIndows8ストアアプリ
20120316 designerworkshoppublished
iPhone/Android アプリをまとめて省エネ開発する技術
20120413 nestakabaneworkshop
.NET Lab2022年2月
Ad

More from leverages_event (20)

PDF
Ac tsumugu 20170712
PDF
20171206 tsumugu4 人工知能特集_v1.00_抜粋
PDF
【ヒカ☆ラボ】アーキテクト養成講座「入門編」 折田 武己 氏 登壇資料 20171205
PDF
【ヒカ☆ラボ】 dely株式会社 梅森 翔氏 登壇資料 20171121
PDF
【ヒカ☆ラボ】 dely株式会社 大竹 雅登氏 登壇資料 20171121
PDF
【ヒカ☆ラボ】 dely株式会社 深尾 もとのぶ氏 登壇資料 20171121
PDF
【ヒカ☆ラボ】 dely株式会社 三笠 斉輝氏 登壇資料 20171121
PPTX
【ヒカ☆ラボ】 株式会社AMG Solution 山口 博史氏登壇資料 20170817
PPTX
【ヒカ☆ラボ】株式会社ライナフ 登壇資料
PDF
【ヒカ☆ラボ】株式会社エアー様~ETLツール活用法について~
PPTX
インスタグラムを活用した、マーケティングについて
PDF
ヒカ☆ラボ ユニティ・テクノロジーズ・ジャパン合同会社 安原 祐二氏登壇資料_20170119
PPTX
ヒカ☆ラボ 株式会社PR TIMES 山田 和広氏登壇資料 20161129
PPTX
ヒカ☆ラボ 株式会社PR TIMES 新井 隆士氏登壇資料 20161129
PDF
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア
PDF
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」UIデザイナー
PDF
初心者向けGo言語勉強会
PDF
DMM.comラボはなぜSparkを採用したのか?レコメンドエンジン開発の裏側をお話します!
PPTX
Node.js×mongo dbで3年間サービス運用してみた話
PDF
株式会社waja 安藤様 登壇資料
Ac tsumugu 20170712
20171206 tsumugu4 人工知能特集_v1.00_抜粋
【ヒカ☆ラボ】アーキテクト養成講座「入門編」 折田 武己 氏 登壇資料 20171205
【ヒカ☆ラボ】 dely株式会社 梅森 翔氏 登壇資料 20171121
【ヒカ☆ラボ】 dely株式会社 大竹 雅登氏 登壇資料 20171121
【ヒカ☆ラボ】 dely株式会社 深尾 もとのぶ氏 登壇資料 20171121
【ヒカ☆ラボ】 dely株式会社 三笠 斉輝氏 登壇資料 20171121
【ヒカ☆ラボ】 株式会社AMG Solution 山口 博史氏登壇資料 20170817
【ヒカ☆ラボ】株式会社ライナフ 登壇資料
【ヒカ☆ラボ】株式会社エアー様~ETLツール活用法について~
インスタグラムを活用した、マーケティングについて
ヒカ☆ラボ ユニティ・テクノロジーズ・ジャパン合同会社 安原 祐二氏登壇資料_20170119
ヒカ☆ラボ 株式会社PR TIMES 山田 和広氏登壇資料 20161129
ヒカ☆ラボ 株式会社PR TIMES 新井 隆士氏登壇資料 20161129
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」UIデザイナー
初心者向けGo言語勉強会
DMM.comラボはなぜSparkを採用したのか?レコメンドエンジン開発の裏側をお話します!
Node.js×mongo dbで3年間サービス運用してみた話
株式会社waja 安藤様 登壇資料

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