Upload
leveragesevent
View
229
Download
3
Embed Size (px)
Citation preview
初心者向け Swiftアプリの リファクタリング
BE67$#- KLN�O @g08m11
��
自己紹介
自己紹介
沖縄そば/鶏肉大好きの沖縄出身(28) 趣味はCafe巡り、映画鑑賞 お酒弱いけどお酒好き 暑い所苦手、日焼け苦手
アフィリエイトソン 最優秀賞
2B Hack 企業賞(3社受賞)
10回以上の勉強会や講演会を実施
自己紹介
日立系SIer→Oracleパートナー会社へ 現在は(株)じげんのエンジニア Rails/Swiftの開発がメイン KPIに沿ったGrowth Hackを主導
g08m11でQiitaやってます。
Growth Hack+Webではてなブログやってます。
�
じげんとは?
じげんとは?
�
じげんとは?
��
じげんとは?
��
• iOS開発、Swift開発を個人で学習してる方
• Swiftで今後もアプリを改善や運用を されていく方
�
今日のプレゼン対象者
• 基本的なことがメインになっています。 (難しいことはしていません。)
• リファクタリング後の生産性の数値など定量的な数値はありません。
���
注意
去年アプリを リリースしました!
���
���
31/02/.45(>9�
STEP1�@D'GD A?8H)+�
STEP2�<M
AppleJI�
STEP3�Apple;F :=C<M�
STEP4�
Gantter
���
見積もりポーカー
���
KPT
��
バーンダウンチャート
��
詳細はこちらを!
���
���������������������������������������������������
または
� �
「Apple審査 じげん」 で検索
���
ところが
���
• ViewControllersが整理されていない
• デフォルトの構成(Xcodeの自動生成) に引っ張られ過ぎ
• 冗長的な記述による可読性が低下 • キャメルケースと通常の書き方が混在
���
• ViewControllersにロジック全部書き込んでいたことでソースの可読性が低下 • 初期化処理の記述が異常に多い
• Array型とDictionary型が混在
• 開発環境と本番環境の差分が 考慮されてない
���
などなど・・・
���
オレオレコーディング・・・
��
このままでは・・・
��
• 後任者の選定や引き継ぎが困難 • 機能の改善に時間が掛かる
• バグの修正に時間が掛かる
• 潜在的なバグが摘めない
���
開発スピードもサービスも 改善されない
���
Let’s Refactoring!
� �
コーディング規約の策定
���
• インデントやコメントの書き方
• 変数名や定数名、定数定義の書き方
• 関数やクラスの書き方
���
例:キャメルケースの統一
���
参照元:「Swiftコーディング規約@Wantedly」 ���
Stock + 認識のすり合わせ
���
Xcodeをフル活用
��
• コーディング規約通りに一括置換
• Info.plistやBuild Settingsを活用
��
Info.plist�4/
�Supported interface orientations��-�*+�,8�<173���� &!$2�GA�ID�����<1 ���
Build Settings�4/
Debug/�Release/�5��,8��:.��� ��� ���
MVC構成に則る
� �
%�'"��90�6��
Xcode�MVC�>��%�'"90���������*+=�<1 ���
%�'"��90�6��
Xcode�MVC�>��%�'"90���������*+=�<1 ���
ViewControllers Models
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は出来るところから始める。
• 遅すぎる技術的負債の還元になる前に、気づいた所からまずやってみる。
��
じげんでは絶賛エンジニア/デザイナー募集中です! ��