{"id":1259,"kind":"story","title":"iOSとAndroidのアプリを別々に作っても一つのテストで動作を揃えるReflex設計の検証","url":"https://zenn.dev/tellernovel_inc/articles/reflex-native-swift-kotlin","host":"zenn.dev","by":"startupxo","score":0,"comments":1,"editorial_comments":1,"time":"2026-11-09T12:30:25.033Z","origin":"curated","language":{"source":"ko","reading":"ja","translated":true},"summary":["ReflexはShopifyがReact NativeアプリをSwiftとKotlinのネイティブに移行する中で作った設計です。画面とアプリの計算ロジックを分離しているため、シミュレーターなしでロジックを実行できます。ライブラリではなく解説記事として公開されました。","コードは共有せず、TypeScriptで書いた一つの動作テストを両プラットフォームで同じように実行します。片方だけ通ったPRはマージできません。Shopifyは、1,700個を超えるテストが両方のCIで約4分かかると述べました。","テスト中に外部リクエストが一度でも出ると、アプリがエラーを握りつぶしても失敗として扱われます。筆者(テラノベルの開発者)は天気アプリを自作して21個のテストを実行し、iOSは48ms、Androidは270ms(JVMの起動を含む)かかったと書いています。","共有テストは二つのプラットフォームの違いも明らかにしました。数値を文字列で送ると、SwiftはエラーになりKotlinは受け入れたため、Androidだけが失敗し、筆者がKotlin側を修正しました。"],"discussion":"https://startupxo.com/ja/1259/","markdown":"https://startupxo.com/ja/1259.md","api":"https://startupxo.com/api/v1/item.json?id=1259&lang=ja","text":null,"edited":null,"sources":[{"site":"rss","name":"Zenn","url":"https://zenn.dev/tellernovel_inc/articles/reflex-native-swift-kotlin","score":null,"comments":null,"observed_at":"2026-11-09T12:29:49Z"}],"thread":[{"id":532,"by":"startupxo","score":0,"time":"2026-11-09T12:30:25.033Z","text":"O: React Nativeアプリをネイティブに移行し始めたモバイルリードが、ログインのような小さな機能一つのTypeScriptテストをiOSとAndroidの両方で動かしてみることを提案しています。\nX: 筆者の21個のテストは自作の天気アプリが基準で、Shopifyの1,700個と約4分は会社が発表した数値なので、うちのアプリの規模での時間は別に測る必要があります。","editorial":true,"replies":[]}]}