🍎iOSな情報共有🍎

本記事について

iOS開発者によるiOSな情報共有を行うための記事です。 ※ 随時記事を追加するため、上から記載します。

タグの例

記事一覧

[ロジック] これって良いコード?〜結合度編〜

概要

結合度:モジュール間の相互依存性の程度を表す尺度 →結合度が低いと、モジュールが独立し、可読性や保守性の面で良いとされる →結合度が高いと、モジュール間の依存が強く悪いとされる

関係性の整理

  • 凝集度:モジュール内の評価
  • 結合度:モジュール間の評価
  • 凝集度が高いと結合度が低くなり、相関が強い

[ロジック] これって良いコード?〜凝集度を意識してコードみてみた編〜

参考資料から抜粋 スクリーンショット 2021-06-28 11.10.39

[ロジック] これって良いコード?〜凝集度編〜

概要

凝集度:モジュールに含まれている機能の純粋さを表す尺度 →凝集度が高いと、機能が絞られていて、堅牢性、再利用性、可読性などの面で良いとされる →凝集度が低いと、関連のない処理が混同している状態

参考 - 良いコードとは何か - エンジニア新卒研修 スライド公開

議論ポイント

  • 皆さんはどのくらい凝集度を意識していますか?
    • 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を採用

抱えていた課題

  • 長年の運用で溜まっていた技術的負債
  • ユニットテスト/UIテストコードが書きづらい責務分割
  • そもそも設計方針が決まっていなかったり、複数のアーキテクチャを抱えたりしている

上記の課題の対策

  • Model内をLayerd Architectureに責務分割
  • Embedded Frameworkを活用

※Embedded Framework:アプリのコードをターゲットに分割して、Frameworkとして扱うことができる技術です。

所感

将来的にEmbedded Framework化したい(マルチモジュール化)

利点

  • テストコードが書きやすくなる
  • レイヤー分割・依存関係の強制
  • ビルド時間短縮(差分ビルドって効いています?)

モジュールの分割方針

  • レイヤー単位(Presentation、Domain、Data)
  • 機能単位(Home、ライブラリ、マイページの画面単位)
  • 機能×レイヤー単位(HomeのVC,ViewModel,Modelなど)

議論ポイント

参考

[レイアウト] AutoLayoutのエラーログをしつかり読み解こう!

概要

AutoLayoutエラーログが出たときの対処法について 

以下のログで [ 対象のUIやレイアウト箇所 ] がエラーログが出る原因となるそうです。

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x6000035d9f90 [対象のUIやレイアウト箇所]  (active)>

所感

至る所でエラーログが多発しているため、エラーログが出たらWTFで可視化したり、発見したら即座に対応したいです。

参考 - https://qiita.com/Fuyan777/items/9b8d915a29cff0d91165

[ロジック]「!」を使わないことが本当に安全なのか

概要

!を使わないことでアプリのクラッシュを避けることができます.

しかし,場合によってはアプリのバグ発見を遅らせることになるので,それを解消するためのいくつかのTipsが書かれています.

所感

assertionFailureはデバッグビルドのみクラッシュします。 これを利用することで、本番環境のクラッシュを抑えることができます。

参考

iOSな情報共有会について(終了)

詳細

不定期でiOS関連の情報共有を行う会を開催

  • 目的

    • iOS関連の知識共有
    • iOSエンジニア同士のコミュニケーションの場にする
    • テックトークに向けてテクいトーク力の向上
  • 流れ:30分程度を想定

    1. 共有者確認
    2. 情報共有タイム(2分、5分程度 ※発表人数に応じて変更)
    3. 質疑応答 & 議論タイム
    4. 締め

iOSな情報共有会

第1回

第2回

  • 6/22(火)11:00-11:30
    • Fuya:これって良いコード?〜凝集度編〜

第3回

  • 6/29(火)15:00-15:30
    • Fuya:これって良いコード?〜凝集度のコード探してみた編〜

第4回

  • 7/6(火)15:00-15:30
    • Fuya:これって良いコード?〜凝集度の観点からリファクタしてみた編〜