Upload
Download free for 30 days
Login
Submit Search
Obj-CをSwiftにリプレースするお話
0 likes
685 views
Hitoshi Saito
CyberZ スキルウェンズデー 6月14日発表資料
Technology
Read more
1 of 19
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
More Related Content
PDF
Directiveで実現できたこと
Kon Yuichi
PDF
Xcode以外の開発環境 AppCodeの紹介
Akira Hayashi
PDF
Macアプリのインストーラ作成ツールSwift版
Akira Hayashi
PPTX
Visual Studio 2019 Updates Pickup!
Hiroyuki Mori
PDF
ECSとGitLabでCI環境構築
iwata jaws-ug
PDF
ng build --prod & Continuous Delivery
bitbank, Inc. Tokyo, Japan
PDF
angular X designer - デザイナからみたAngularJS #ten1club
silvers ofsilvers
PPTX
Visual studio 2015 update1 ctpとcsi
Tadahiro Ishisaka
Directiveで実現できたこと
Kon Yuichi
Xcode以外の開発環境 AppCodeの紹介
Akira Hayashi
Macアプリのインストーラ作成ツールSwift版
Akira Hayashi
Visual Studio 2019 Updates Pickup!
Hiroyuki Mori
ECSとGitLabでCI環境構築
iwata jaws-ug
ng build --prod & Continuous Delivery
bitbank, Inc. Tokyo, Japan
angular X designer - デザイナからみたAngularJS #ten1club
silvers ofsilvers
Visual studio 2015 update1 ctpとcsi
Tadahiro Ishisaka
What's hot
(19)
PDF
持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜
bitbank, Inc. Tokyo, Japan
PPTX
今さら聞けない人のためのDevOps超入門
VirtualTech Japan Inc.
PDF
AngularJS で ハイスピードSI
Koichiro Nishijima
PDF
OWIN - .NETにおけるPSGI -
将 高野
PPTX
BitriseでiOS/Androidアプリ開発が幸せになった話
Eigo Takazawa
PDF
only ip whitelist at cloudfront is ok?
Yuta Suzuki
PPTX
開発環境をDockernizeした話
Yutaka Horikawa
PDF
改めて C# でできることを振り返る
Yuta Matsumura
PDF
Riotでサーバレスにした話
Hiroyuki Hara
PPTX
フロントエンドの技術を刷新した話し。
Yutaka Horikawa
PPTX
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
gree_tech
PPTX
消滅都市5周年の運営を支えた技術とその歴史
gree_tech
PDF
Node red basic & node-red-ug-japan
Harada Kazuki
PDF
新登場!Surface Laptop 4
Tomokazu Kizawa
PDF
これから始める Bot Builder 開発のコツと舞台裏
Yuta Matsumura
PDF
AngularJS 概説
Kenichi Kanai
PDF
Database tools for .NET Core
Yuta Matsumura
PDF
Blazor Server テンプレート解説
Yuta Matsumura
PDF
de:code報告
Kouji Matsui
持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜
bitbank, Inc. Tokyo, Japan
今さら聞けない人のためのDevOps超入門
VirtualTech Japan Inc.
AngularJS で ハイスピードSI
Koichiro Nishijima
OWIN - .NETにおけるPSGI -
将 高野
BitriseでiOS/Androidアプリ開発が幸せになった話
Eigo Takazawa
only ip whitelist at cloudfront is ok?
Yuta Suzuki
開発環境をDockernizeした話
Yutaka Horikawa
改めて C# でできることを振り返る
Yuta Matsumura
Riotでサーバレスにした話
Hiroyuki Hara
フロントエンドの技術を刷新した話し。
Yutaka Horikawa
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
gree_tech
消滅都市5周年の運営を支えた技術とその歴史
gree_tech
Node red basic & node-red-ug-japan
Harada Kazuki
新登場!Surface Laptop 4
Tomokazu Kizawa
これから始める Bot Builder 開発のコツと舞台裏
Yuta Matsumura
AngularJS 概説
Kenichi Kanai
Database tools for .NET Core
Yuta Matsumura
Blazor Server テンプレート解説
Yuta Matsumura
de:code報告
Kouji Matsui
Ad
Similar to Obj-CをSwiftにリプレースするお話
(20)
PDF
JAWS-UGアーキテクチャ専門支部 ServerlessConfレポート
真吾 吉田
PDF
How to improve Type-safety in your Objective-C code
Chiharu Nameki
PDF
Objective-Cプログラマのためのswift導入法
Tomoki Hasegawa
PPTX
実プロジェクトの経験から学ぶazureサービス適用パターン
Kuniteru Asami
PDF
既存Objective-CプロジェクトをSwiftに移行した時ハマったこと
apuruni
PPTX
The seminar of asp.net at 201908 sakurug
SAKURUG co.
PPTX
Inside of swift
LINE Corporation
PDF
Wolcome to swift
Kyohei Ito
PDF
プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~
normalian
PDF
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
Y Watanabe
PPTX
CEDEC2021 Android iOS 実機上での自動テストをより楽に有意義にする為に ~端末管理・イメージ転送・動画記録等の周辺情報のノウハウ共有~
SEGADevTech
PDF
あるインフラエンジニアの過去と未来
Tsubasa Hirota
PDF
IoT Edge and Serverless playground with Node.js ~ IoT EdgeとサーバレスをNode.jsで遊ぶ実験ノート
Kazumi OHIRA
PDF
Nifty cloud automationでクラウド構築・運用の自動化
NIFTY Cloud
PDF
OpenStack Object Storage; Usage
irix_jp
PDF
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
真吾 吉田
PDF
Vsug day 2010 summer windows azure でやってみよう
mizusawa
PPTX
Sails.jsのメリット・デメリット
Ito Kohta
PPTX
Japan MVP Community Connection 2017 Autumn smart Demonstration
Atomu Hidaka
PDF
Spring Boot概要
af not found
JAWS-UGアーキテクチャ専門支部 ServerlessConfレポート
真吾 吉田
How to improve Type-safety in your Objective-C code
Chiharu Nameki
Objective-Cプログラマのためのswift導入法
Tomoki Hasegawa
実プロジェクトの経験から学ぶazureサービス適用パターン
Kuniteru Asami
既存Objective-CプロジェクトをSwiftに移行した時ハマったこと
apuruni
The seminar of asp.net at 201908 sakurug
SAKURUG co.
Inside of swift
LINE Corporation
Wolcome to swift
Kyohei Ito
プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~
normalian
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
Y Watanabe
CEDEC2021 Android iOS 実機上での自動テストをより楽に有意義にする為に ~端末管理・イメージ転送・動画記録等の周辺情報のノウハウ共有~
SEGADevTech
あるインフラエンジニアの過去と未来
Tsubasa Hirota
IoT Edge and Serverless playground with Node.js ~ IoT EdgeとサーバレスをNode.jsで遊ぶ実験ノート
Kazumi OHIRA
Nifty cloud automationでクラウド構築・運用の自動化
NIFTY Cloud
OpenStack Object Storage; Usage
irix_jp
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
真吾 吉田
Vsug day 2010 summer windows azure でやってみよう
mizusawa
Sails.jsのメリット・デメリット
Ito Kohta
Japan MVP Community Connection 2017 Autumn smart Demonstration
Atomu Hidaka
Spring Boot概要
af not found
Ad
Obj-CをSwiftにリプレースするお話
1.
Obj-CをSwiftにリプレースするお話 2017/06/14 Skill Wednesday 齋藤
仁
2.
自己紹介 ・齋藤 仁(さいとう ひとし) ・株式会社CyberZ
OPENREC事業部 ・iOSエンジニアだったりサーバーサイドエンジニアだったり ・ロードバイク乗りです
3.
絶賛Swiftへのリプレース中
4.
Swift化のメリット ● ジェネリクスの活用することで柔軟で汎用的なコーディングが可能 ● optional型を活用することでnull安全なコーディングが可能 ●
Objective-Cより処理パフォーマンスが向上 ● ヘッダーファイルがなくなったので、実装ファイルとヘッダーファイルを行き来する必 要がなくなった ● Objective-Cのいけていないメソッドの呼び出し方からの解放 ● ネームスペース ● 採用力の強化 ● などなど
5.
現在の構成 View ViewController Model
6.
現在の構成 カオス!! ViewControllerView Model Model Model View View Model Model Fat Controller!! Model Model View View View View View View Model
7.
実装面でのKPTを実施 「Problem」 ・null安全が保障されない実装であるため、 EXC_BAD_ACCESSが発生しやすい ・ReactiveCocoaとdelegateが混ざったりしていて、逆効果になっていることがある気がする ・ViewでModelの処理してる ・View周りの実装があらゆる箇所に入り込んでいる。 ・XCodeプロジェクト上のフォルダ構成と実フォルダ構成が合っていない ・xibファイルがないので、 uiの実装効率が悪い ・xib化した時にレビューの仕方どうする? ・アプリ全体の挙動に関わる状態を保っているクラスがどこにあるのか把握しづらい ・クラスに関するコメントがないから、何をしてくれる
Managerなのかわからない ・コードでviewの実装をしているため、メンテが大変 ・コードでViewを生成するのはつらい ・コードの依存関係が複雑 ・コードコメントが少ないので、読みにくい ・サーバ側apiの仕様変更したとこらが、 wikiに反映遅い時もあります ・トップ画面とかの Controllerが親クラスを継承していて、処理の流れを追いにくい。 ・ユニットテストない ・ログイン・サインアップの各 controllerに共通のソースコード多い。 ・各Controllerがかなり肥大化している ・画像名やローカライズの key名を文字列でハードコーディングしているため、存在しないリソース名が出てきた時に気付きにくい ・自動再生と動画再生画面で共通で使えるように MoviePlayerクラスを定義しているが、肥大化しすぎて影響範囲が見切れずメンテしにくい。 自動再生だけに絞るとかなりソースコード少ないはず。
8.
実装面でのKPTを実施 「Try」 ・APIライブラリの使い方もう少し検討する余地ある ・BuildConfigurationの見直し ・Dataレイヤ、Domainレイヤのデータオブジェクトはそこそこ正規化する。 ・DIの導入 ・iOS9以降の対応にシフト。 ・signingの設定とか見直しする ・Swift lint入れる ・XCodeプロジェクト上のフォルダ構成と実フォルダ構成が合っていないのはツールで解決 ・Xib, ストーリーボード有効活用 ・xib化するか検討する。 ・コードフォーマッタの導入 ・タイプセーフリソース化
Swiftgen ・マクロとUtilityの使い分けを統一してもよさそう ・命名規則やコーディング規約の再認識 ・状態を伝えるのはドメインじゃないといけない ・継承していること自体が問題じゃない。ドメイン設計意識する。
9.
以下を実現できるアーキテクチャを選定 ・責務ごとにレイヤー化 ・ドメイン設計意識する ・依存の方向性を単一方向に揃える ・処理の流れは単方向にする ・DIによってユニットテストを導入しやすくする
10.
Clean Architecture
11.
Clean Architecture View ViewController Presenter UseCase
Repository DataStore EntityTranslater Model Presentation Layer Domain Layer Data Layer
12.
Clean Architectureのメリット ● 責務を細分化 ○
各レイヤの役割が明確になる。 ○ MVCでは実装者の経験やレベルなどによって、実装するクラスの構成に差が 出るが、各レイヤーの役割を明確にしてアーキテクチャとして定めることで、 チーム内の共通認識も持ちやすい。 ○ データ・処理の流れを単方向に制限することを意識して実装しやすい。 ● UIとビジネスロジックを分離することでレイヤ間の依存を最小限に抑えるこ とができる。 ● レイヤ間を疎結合に保つことでモジュールの置き換えができ、テストが容易 となる。
13.
実装量が多くて面倒そう。。
14.
MVVMを検討してみた View ViewController ModelViewModel
15.
MVVM PresenterとUseCaseを追加 View ViewController ModelPresenter UseCase
16.
MVVM Repositoryを追加 View ViewController Presenter UseCase
Repository DataStore Model
17.
あれ?どこかで見たような。。。
18.
これClean Architectureじゃね?
19.
その他対応 ● 現状、iOSとtvOSのソースコードは独立しているが、Domain Layer以下を共通化させる。 ● 各レイヤーはprotocolで抽象化してDIで依存性注入 ●
ユニットテストの導入 ● CIツールの活用 ● RxSwiftの導入
Download