🍎iOSな情報共有🍎
本記事について
iOS開発者によるiOSな情報共有を行うための記事です。 ※ 随時記事を追加するため、上から記載します。
タグの例
- [UI]
- [ロジック]
- [アーキテクチャ]
- [概念]
- [企業調査]
- [SwiftUI]
- [その他]
- など
記事一覧
[ロジック] これって良いコード?〜結合度編〜
概要
結合度:モジュール間の相互依存性の程度を表す尺度 →結合度が低いと、モジュールが独立し、可読性や保守性の面で良いとされる →結合度が高いと、モジュール間の依存が強く悪いとされる
関係性の整理
- 凝集度:モジュール内の評価
- 結合度:モジュール間の評価
- 凝集度が高いと結合度が低くなり、相関が強い
[ロジック] これって良いコード?〜凝集度を意識してコードみてみた編〜
参考資料から抜粋
[ロジック] これって良いコード?〜凝集度編〜
概要
凝集度:モジュールに含まれている機能の純粋さを表す尺度 →凝集度が高いと、機能が絞られていて、堅牢性、再利用性、可読性などの面で良いとされる →凝集度が低いと、関連のない処理が混同している状態
参考 - 良いコードとは何か - エンジニア新卒研修 スライド公開
議論ポイント
- 皆さんはどのくらい凝集度を意識していますか?
- ex)どの粒度で関数を切り出しているか?
- 皆さんが考える「良いコード」とは?
- レビューで意識しているところなど
[SwiftUI] データ管理のお勉強
SwiftUIのデータ管理についてQiitaの記事を書いてみました! https://qiita.com/Fuyan777/items/d79eef243e2ded33780e
[企業調査] dely株式会社さん:クラシルの開発調査
概要
先日、dely株式会社のクラシルiOSアプリ開発を担当している方と面談する機会がありました。 面談の中で聞いてきたiOSな技術的な取り組みについて共有します。(外部に公開されている情報のみです)
- iOSの技術周りの共有の場として周1でiOS Lunch MTGを開催
- Stroyboard/xibファイルを使用しないコードベースのUI実装
- Autolayoutも含む(←標準APIらしい)
- Embedded Frameworkを活用したモジュールの切り分け
- 機能単位、機能ごとによるチーム構成のため
- Chatbotを活用し、Slackからアプリの審査提出まで行える仕組みの導入
- 週1回の継続的なリリースを実施し、スピード感重視
[アーキテクチャ] 業務で採用してみたいiOSアプリのアーキテクチャと技術
概要
MVVM + Layered Architectureを採用
抱えていた課題
上記の課題の対策
- Model内をLayerd Architectureに責務分割
- Embedded Frameworkを活用
※Embedded Framework:アプリのコードをターゲットに分割して、Frameworkとして扱うことができる技術です。
所感
将来的にEmbedded Framework化したい(マルチモジュール化)
利点
- テストコードが書きやすくなる
- レイヤー分割・依存関係の強制
- ビルド時間短縮(差分ビルドって効いています?)
モジュールの分割方針
- レイヤー単位(Presentation、Domain、Data)
- 機能単位(Home、ライブラリ、マイページの画面単位)
- 機能×レイヤー単位(HomeのVC,ViewModel,Modelなど)
議論ポイント
- Radiotalkでモジュール分割するなら?
- モジュール化することでRadiotalkへの恩恵は?
参考
[レイアウト] AutoLayoutのエラーログをしつかり読み解こう!
概要
AutoLayoutエラーログが出たときの対処法について
以下のログで [ 対象のUIやレイアウト箇所 ] がエラーログが出る原因となるそうです。
Will attempt to recover by breaking constraint <NSLayoutConstraint:0x6000035d9f90 [対象のUIやレイアウト箇所] (active)>
所感
至る所でエラーログが多発しているため、エラーログが出たらWTFで可視化したり、発見したら即座に対応したいです。
参考 - https://qiita.com/Fuyan777/items/9b8d915a29cff0d91165
[ロジック]「!」を使わないことが本当に安全なのか
概要
!を使わないことでアプリのクラッシュを避けることができます.
しかし,場合によってはアプリのバグ発見を遅らせることになるので,それを解消するためのいくつかのTipsが書かれています.
所感
assertionFailureはデバッグビルドのみクラッシュします。 これを利用することで、本番環境のクラッシュを抑えることができます。
参考
iOSな情報共有会について(終了)
詳細
目的
流れ:30分程度を想定
- 共有者確認
- 情報共有タイム(2分、5分程度 ※発表人数に応じて変更)
- 質疑応答 & 議論タイム
- 締め
iOSな情報共有会
第1回
- 5/11(火)15:00-15:30
- Fuya:アーキテクチャについて
第2回
- 6/22(火)11:00-11:30
- Fuya:これって良いコード?〜凝集度編〜
第3回
- 6/29(火)15:00-15:30
- Fuya:これって良いコード?〜凝集度のコード探してみた編〜
第4回
- 7/6(火)15:00-15:30
- Fuya:これって良いコード?〜凝集度の観点からリファクタしてみた編〜