<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[えわさんのフィード]]></title><description><![CDATA[Zennのえわさん（@ewa）のRSSフィードです]]></description><link>https://zenn.dev/ewa</link><image><url>https://static.zenn.studio/user-upload/avatar/5e92be4bc8.jpeg</url><title>えわさんのフィード</title><link>https://zenn.dev/ewa</link></image><generator>zenn.dev</generator><lastBuildDate>Thu, 04 Jun 2026 21:38:51 GMT</lastBuildDate><atom:link href="https://zenn.dev/ewa/feed" rel="self" type="application/rss+xml"/><language><![CDATA[ja]]></language><item><title><![CDATA[SwiftでのClosureをプロパティに持つstructを利用したDI方法]]></title><description><![CDATA[元ネタはTCAのチュートリアル
通常のprotocolを活用したDI以外にもClosureをプロパティに持つstructを活用したDI方法があることを知ったので、備忘録を兼ねて記事を作成しました。

 実際のコード

 プロダクトコード
struct DIee {
    let dier: DIer
    
    func execute() -&gt; String {
        return "get String from " + dier.getString()
    }
}

struct DIer {
    let getString: () -&gt; St...]]></description><link>https://zenn.dev/ewa/articles/90479196cc2b5c</link><guid isPermaLink="true">https://zenn.dev/ewa/articles/90479196cc2b5c</guid><pubDate>Sat, 04 Nov 2023 14:40:16 GMT</pubDate><enclosure url="https://res.cloudinary.com/zenn/image/upload/s--xYENHkoy--/c_fit%2Cg_north_west%2Cl_text:notosansjp-medium.otf_55:Swift%25E3%2581%25A7%25E3%2581%25AEClosure%25E3%2582%2592%25E3%2583%2597%25E3%2583%25AD%25E3%2583%2591%25E3%2583%2586%25E3%2582%25A3%25E3%2581%25AB%25E6%258C%2581%25E3%2581%25A4struct%25E3%2582%2592%25E5%2588%25A9%25E7%2594%25A8%25E3%2581%2597%25E3%2581%259FDI%25E6%2596%25B9%25E6%25B3%2595%2Cw_1010%2Cx_90%2Cy_100/g_south_west%2Cl_text:notosansjp-medium.otf_37:%25E3%2581%2588%25E3%2582%258F%2Cx_203%2Cy_121/g_south_west%2Ch_90%2Cl_fetch:aHR0cHM6Ly9zdGF0aWMuemVubi5zdHVkaW8vdXNlci11cGxvYWQvYXZhdGFyLzVlOTJiZTRiYzguanBlZw==%2Cr_max%2Cw_90%2Cx_87%2Cy_95/v1627283836/default/og-base-w1200-v2.png?_a=BACMTiAE" length="0" type="false"/><dc:creator>えわ</dc:creator></item><item><title><![CDATA[Swiftのextensionを利用して安全な手順で依存関係を排除する]]></title><description><![CDATA[書籍『リファクタリング』や『レガシーコード改善ガイド』に書かれているような、

小さな手順を積み重ね
常に動く状態を保つ

ようなリファクタリングは、確実で手戻りが発生しづらいので身につけておくと役立つと感じます。
テストが書かれていないレガシーコード※1を扱う際には、特に役立ちます。
※1: 書籍『レガシーコード改善ガイド』での定義
iOSなどの開発で用いられるSwiftではextensionをうまく活用することで、安全な手順でレガシーコードにおける依存関係を排除しテスト可能な状態にリファクタリングできるので、手順を紹介します。

 扱う例
次のような

ファイルからデータを読み込み
...]]></description><link>https://zenn.dev/ewa/articles/eb38ae7b64c149</link><guid isPermaLink="true">https://zenn.dev/ewa/articles/eb38ae7b64c149</guid><pubDate>Mon, 23 Oct 2023 12:00:31 GMT</pubDate><enclosure url="https://res.cloudinary.com/zenn/image/upload/s--4Fz_wFmH--/c_fit%2Cg_north_west%2Cl_text:notosansjp-medium.otf_55:Swift%25E3%2581%25AEextension%25E3%2582%2592%25E5%2588%25A9%25E7%2594%25A8%25E3%2581%2597%25E3%2581%25A6%25E5%25AE%2589%25E5%2585%25A8%25E3%2581%25AA%25E6%2589%258B%25E9%25A0%2586%25E3%2581%25A7%25E4%25BE%259D%25E5%25AD%2598%25E9%2596%25A2%25E4%25BF%2582%25E3%2582%2592%25E6%258E%2592%25E9%2599%25A4%25E3%2581%2599%25E3%2582%258B%2Cw_1010%2Cx_90%2Cy_100/g_south_west%2Cl_text:notosansjp-medium.otf_37:%25E3%2581%2588%25E3%2582%258F%2Cx_203%2Cy_121/g_south_west%2Ch_90%2Cl_fetch:aHR0cHM6Ly9zdGF0aWMuemVubi5zdHVkaW8vdXNlci11cGxvYWQvYXZhdGFyLzVlOTJiZTRiYzguanBlZw==%2Cr_max%2Cw_90%2Cx_87%2Cy_95/v1627283836/default/og-base-w1200-v2.png?_a=BACMTiAE" length="0" type="false"/><dc:creator>えわ</dc:creator></item></channel></rss>