52
初心者向け Swiftアプリの リファクタリング BE67$#- KLN O @g08m11

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

Embed Size (px)

Citation preview

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

初心者向け Swiftアプリの リファクタリング

BE67$#- KLN�O @g08m11

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

��

自己紹介

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

自己紹介

沖縄そば/鶏肉大好きの沖縄出身(28) 趣味はCafe巡り、映画鑑賞 お酒弱いけどお酒好き 暑い所苦手、日焼け苦手

アフィリエイトソン 最優秀賞

2B Hack 企業賞(3社受賞)

10回以上の勉強会や講演会を実施

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

自己紹介

日立系SIer→Oracleパートナー会社へ 現在は(株)じげんのエンジニア Rails/Swiftの開発がメイン KPIに沿ったGrowth Hackを主導

g08m11でQiitaやってます。

Growth Hack+Webではてなブログやってます。

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

じげんとは?

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

じげんとは?

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

じげんとは?

��

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

じげんとは?

��

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

•  iOS開発、Swift開発を個人で学習してる方

•  Swiftで今後もアプリを改善や運用を  されていく方

今日のプレゼン対象者

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

•  基本的なことがメインになっています。  (難しいことはしていません。)

•  リファクタリング後の生産性の数値など定量的な数値はありません。

���

注意

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

去年アプリを リリースしました!

���

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

���

31/02/.45(>9�

STEP1�@D'GD A?8H)+�

STEP2�<M

AppleJI�

STEP3�Apple;F :=C<M�

STEP4�

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

Gantter

���

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

見積もりポーカー

���

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

KPT

��

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

バーンダウンチャート

��

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

詳細はこちらを!

���

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

���������������������������������������������������

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

または

� �

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

「Apple審査 じげん」 で検索

���

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

ところが

���

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

•  ViewControllersが整理されていない

•  デフォルトの構成(Xcodeの自動生成)  に引っ張られ過ぎ

•  冗長的な記述による可読性が低下 •  キャメルケースと通常の書き方が混在

���

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

•  ViewControllersにロジック全部書き込んでいたことでソースの可読性が低下 •  初期化処理の記述が異常に多い

•  Array型とDictionary型が混在

•  開発環境と本番環境の差分が  考慮されてない

���

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

などなど・・・

���

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

オレオレコーディング・・・

��

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

このままでは・・・

��

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

•  後任者の選定や引き継ぎが困難 •  機能の改善に時間が掛かる

•  バグの修正に時間が掛かる

•  潜在的なバグが摘めない

���

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

開発スピードもサービスも 改善されない

���

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

Let’s Refactoring!

� �

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

コーディング規約の策定

���

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

•  インデントやコメントの書き方

•  変数名や定数名、定数定義の書き方

•  関数やクラスの書き方

���

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

例:キャメルケースの統一

���

具志堅 雅
具志堅 雅
具志堅 雅
Page 33: 【ヒカ☆ラボ】初心者向けSwiftアプリのリファクタリング

参照元:「Swiftコーディング規約@Wantedly」 ���

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

Stock + 認識のすり合わせ

���

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

Xcodeをフル活用

��

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

•  コーディング規約通りに一括置換

•  Info.plistやBuild Settingsを活用

��

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

Info.plist�4/

�Supported interface orientations��-�*+�,8�<173���� &!$2�GA�ID�����<1 ���

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

Build Settings�4/

Debug/�Release/�5��,8��:.��� ��� ���

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

MVC構成に則る

� �

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

%�'"��90�6��

Xcode�MVC�>��%�'"90���������*+=�<1 ���

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

%�'"��90�6��

Xcode�MVC�>��%�'"90���������*+=�<1 ���

ViewControllers Models

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

ViewController�( #��Model�;)

意識したこと

���

•  Model:アプリケーションの状態を表すもの&状態の加工メソッドをまとめたもの

•  ViewController:Modelの加工メソッドの操作&Viewの操作をする人「であり」Modelの状態を参照し視覚表現するもの

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

ViewController�( #��Model�;)

Modelでは

���

•  画像の処理はImageManager.swiftというモデルで行う

•  GAのカテゴリーやイベントの設定はGoogleAnalyticsManager.swiftというモデルで行う

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

ViewController�( #��Model�;)

���

ViewControllerでは

•  クリックイベントやナビゲーションボタン押下などのユーザーからの入力に対しての操作

•  modelの関数へ値を渡し、その結果を表示させる。  (ViewControllerのためそのまま表示が可能)

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

ViewController�( #��Model�;)

��

model

View

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

DEMO ,"+%*!(&

��

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

デザインパターンを適用する

���

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

まとめ

��

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

•  リリースを急ぎすぎるとつぎはぎのソースになってしまう。

•  ちょっとした事でもソースの可読性が格段に上がる

��

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

•  ベースとなるコーディング規約はありながらも自分達に合わせるカスタマイズも大事

•  Swiftはデザインパターンを適用しやすい。

��

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

•  Refactoringは出来るところから始める。

•  遅すぎる技術的負債の還元になる前に、気づいた所からまずやってみる。

��

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

じげんでは絶賛エンジニア/デザイナー募集中です! ��