Slide 1

Slide 1 text

© 2025 Bitkey Inc. AIのために、AIを使った、Effect-TSからの脱却 株式会社ビットキー 佐藤拓人 〜テストを活用した安全なリファクタリングの進め方〜 2026/05/23

Slide 2

Slide 2 text

2 Copyright © 2025 Bitkey Inc. All right reserved. 0. 初めに ナウでイケてるEffect-TSをなぜ脱却したのか? どのように脱却したのか? 現場の状況や、昨今のAI事情も踏まえて 私なりに「考えたこと」「感じたこと」「実践したこと」を共有します Topic ※ 正式名称は「Effect」ですが、「Effect-TS」と表現されることが多いため本発表では「Effect-TS」の表現を用いています

Slide 3

Slide 3 text

3 Copyright © 2025 Bitkey Inc. All right reserved. ・「AIが書ける」と「何かあった時に人間もかける」は全く別の話 ・チーム状況/スキル/志向性にもよるが、私の今のチームからみてEffect-TSはSimpleではなかった ・AI時代の過渡期である現状においてコストが高くつきすぎるという判断に至った 0. 初めに メッセージ

Slide 4

Slide 4 text

4 Copyright © 2025 Bitkey Inc. All right reserved. ・「AIが書ける」と「何かあった時に人間もかける」は全く別の話 ・チーム状況/スキル/志向性にもよるが、私の今のチームからみてEffect-TSはSimpleではなかった ・AI時代の過渡期である現状においてコストが高くつきすぎるという判断に至った 0. 初めに メッセージ (Effect-TS使うな!...というわけでなく ) AIもあるし...とりあえず導入してみに 合わなかったら脱却すればいいや! …ってのもアリなのでは?

Slide 5

Slide 5 text

5 Copyright © 2025 Bitkey Inc. All right reserved. 目次 1. 実現したかったこと、課題感 2. Effect-TSの魅力とは? 3. 導入時の懸念と出口戦略 4. Effect-TSをなぜ辞めたのか? 5. Effect-TSをどう脱却したのか? 6. まとめ

Slide 6

Slide 6 text

6 Copyright © 2025 Bitkey Inc. All right reserved. 自己紹介 2015.04 2019.05 2020.01 大学(建築学専攻)卒業後、 株式会社ワークスアプリケーションズに入社 会計システムのソフトウェア開発を担当 特に財務会計の仕訳関連 ビットキーへ参画 ECサイトの開発 / 保守、社内システムの開発 TaKuTyの開発 今のhomehub事業の前身となるResidenceチームに配 属。スマートロックを扱う管理画面やバックエンド、 スマホアプリの開発に従事 Now homehub事業のプロダクト責任者 複雑な事象を読み解いて構造化し、抽象化 / 汎用化で きるように設計し、低コストで多くの価値をだせる開 発をすることを好む 佐藤 拓人 Sato Takuto @takuuuuuuu777

Slide 7

Slide 7 text

7 Copyright © 2025 Bitkey Inc. All right reserved. 自己紹介 Before @TSKaigi 2024 After -25kg 佐藤 拓人 Sato Takuto @takuuuuuuu777

Slide 8

Slide 8 text

8 Copyright © 2025 Bitkey Inc. All right reserved. 1. 実現したかったこと、課題感

Slide 9

Slide 9 text

9 Copyright © 2025 Bitkey Inc. All right reserved. 1. 実現したかったこと、課題感 そもそもなんで、Effect-TSを導入しようとしたのか? Effect-TSに何を期待していたのか?

Slide 10

Slide 10 text

10 Copyright © 2025 Bitkey Inc. All right reserved. 1. 実現したかったこと、課題感 課題1:エラーハンドリング

Slide 11

Slide 11 text

11 Copyright © 2025 Bitkey Inc. All right reserved. 1. 実現したかったこと、課題感 課題2:モデリング オブジェクト指向でのモデリングが辛い...集約とか... 「どこから整理すれば良いの!?」

Slide 12

Slide 12 text

12 Copyright © 2025 Bitkey Inc. All right reserved. 1. 実現したかったこと、課題感 課題2:モデリング 関数型アプローチの可能性 出典:Scott Wlaschin 『関数型ドメインモデリング』、 KADOKAWA

Slide 13

Slide 13 text

13 Copyright © 2025 Bitkey Inc. All right reserved. 1. 実現したかったこと、課題感

Slide 14

Slide 14 text

14 Copyright © 2025 Bitkey Inc. All right reserved. 2. Effect-TSの魅力

Slide 15

Slide 15 text

15 Copyright © 2025 Bitkey Inc. All right reserved. 2. Effect-TSの魅力 Effect-TS以外の選択肢もある中で なぜEffect-TSを選択したのか?

Slide 16

Slide 16 text

16 Copyright © 2025 Bitkey Inc. All right reserved. 2. Effect-TSの魅力 Effect-TSの特徴

Slide 17

Slide 17 text

17 Copyright © 2025 Bitkey Inc. All right reserved. 2. Effect-TSの魅力 魅力1:依存解決

Slide 18

Slide 18 text

18 Copyright © 2025 Bitkey Inc. All right reserved. 2. Effect-TSの魅力 魅力2:Description / Run

Slide 19

Slide 19 text

19 Copyright © 2025 Bitkey Inc. All right reserved. 2. Effect-TSの魅力 魅力3:Functional Core, Imperative Shell

Slide 20

Slide 20 text

20 Copyright © 2025 Bitkey Inc. All right reserved. 3. 導入時の懸念と出口戦略

Slide 21

Slide 21 text

21 Copyright © 2025 Bitkey Inc. All right reserved. 3. 導入時の懸念と出口戦略 懸念事項 Entity / Value Object 懸念:1 懸念:2

Slide 22

Slide 22 text

22 Copyright © 2025 Bitkey Inc. All right reserved. 3. 導入時の懸念と対策 出口戦略1:境界づけられたコンテキスト内の封じ込め モジュラーモノリスの境界を使い、Effect-TSの適用範囲を物理的に制限

Slide 23

Slide 23 text

23 Copyright © 2025 Bitkey Inc. All right reserved. 3. 導入時の懸念と対策 出口戦略2:レイヤ整理と方針統一 各レイヤの実装方針を揃えていたことが、後のAI活用による一括置換を可能にした

Slide 24

Slide 24 text

24 Copyright © 2025 Bitkey Inc. All right reserved. 3. 導入時の懸念と対策 出口戦略3:APIサーフェスの制限 多様なAPIの統制コストに対して、利用可能なAPIを事前に制限 直接素のEffect-TSのライブラリを参照できないようにlinterで制御させて APIを制限したラッパーを介して参照させるように制約を課す

Slide 25

Slide 25 text

25 Copyright © 2025 Bitkey Inc. All right reserved. 3. 導入時の懸念と対策 実際にどこに導入してみたの!?

Slide 26

Slide 26 text

26 Copyright © 2025 Bitkey Inc. All right reserved. 3. 導入時の懸念と対策

Slide 27

Slide 27 text

27 Copyright © 2025 Bitkey Inc. All right reserved. 3. 導入時の懸念と対策 homehubは「暮らし」に関わる様々な体験を実現する。その中心にあるのがスマートロック

Slide 28

Slide 28 text

28 Copyright © 2025 Bitkey Inc. All right reserved. 3. 導入時の懸念と対策 homehubは「暮らし」に関わる様々な体験を実現する。その中心にあるのがスマートロック スマート化できる場所 共⽤部 多様な解錠⽅法 スマートアクセス 専有部 スマートサービス 暮らしサービス ‧家事代⾏ ‧ペットシッター ‧ベビーシッター ‧クリーニング ‧宅配 ‧⾷材配送 ‧飲料⽔配送 ‧集荷 ‧ライフライン料⾦ 共通 ‧外部サービス連携 ‧ID連携 ‧データ連携 homehubビジネスエンジン ‧賃料 ‧管理費 ‧請求‧⽀払い ‧未収⾦の料⾦計算 ‧会計連携 ‧決済連携 (クレジット‧請求書‧⼝座振 込) スマートフォンアプリ 顔認証 ‧WEB会議 ‧議事録 ‧録画 ‧アジェンダ ‧出⽋管理 ‧議案作成 ‧投票 / 集計 WEBカンファレンス デジタル申請 スマートファシリティ ‧居住者情報 ‧転居届け ‧駐輪場 ‧駐⾞場 ‧⼊居契約 ‧宅配ボックス ‧宅配ロッカー ‧TVスティック ‧IoTリモコン ‧キーボックス ‧配信 ‧掲⽰板 ‧ファイル共有 ‧イベント ‧アンケート コミュニティ ポータル 共⽤施設管理‧運営 ⾒守り‧駆けつけ ‧施設予約 ‧備品予約 ‧レセプション ‧スマートキー連携 ‧デジタル決裁 ‧WEB会議ブース ‧bitbutton ‧リモート通知 ‧リモート解錠 ‧駆けつけ連携 ‧異常検知 ‧外部システム連携 ‧有⼈チャット ‧チャットボット ‧お知らせ ‧アンケート ‧FAQ ‧グループチャット ‧LINE連携 コミュニケーション 管理員業務DX 内⾒効率化 ‧点検 ‧報告 ‧スマートキー解錠 ‧リモート解錠 ‧チャット ‧物件管理 ‧内⾒予約 ‧スマートキー連携 ‧ワンタイムパス ‧遠隔解錠 ‧キーボックス ‧外部連携 テンキー カードキー 遠隔解錠

Slide 29

Slide 29 text

29 Copyright © 2025 Bitkey Inc. All right reserved. 3. 導入時の懸念と対策 homehubは「暮らし」に関わる様々な体験を実現する。その中心にあるのがスマートロック スマート化できる場所 共⽤部 多様な解錠⽅法 スマートアクセス 専有部 スマートサービス 暮らしサービス ‧家事代⾏ ‧ペットシッター ‧ベビーシッター ‧クリーニング ‧宅配 ‧⾷材配送 ‧飲料⽔配送 ‧集荷 ‧ライフライン料⾦ 共通 ‧外部サービス連携 ‧ID連携 ‧データ連携 homehubビジネスエンジン ‧賃料 ‧管理費 ‧請求‧⽀払い ‧未収⾦の料⾦計算 ‧会計連携 ‧決済連携 (クレジット‧請求書‧⼝座振 込) スマートフォンアプリ 顔認証 ‧WEB会議 ‧議事録 ‧録画 ‧アジェンダ ‧出⽋管理 ‧議案作成 ‧投票 / 集計 WEBカンファレンス デジタル申請 スマートファシリティ ‧居住者情報 ‧転居届け ‧駐輪場 ‧駐⾞場 ‧⼊居契約 ‧宅配ボックス ‧宅配ロッカー ‧TVスティック ‧IoTリモコン ‧キーボックス ‧配信 ‧掲⽰板 ‧ファイル共有 ‧イベント ‧アンケート コミュニティ ポータル 共⽤施設管理‧運営 ⾒守り‧駆けつけ ‧施設予約 ‧備品予約 ‧レセプション ‧スマートキー連携 ‧デジタル決裁 ‧WEB会議ブース ‧bitbutton ‧リモート通知 ‧リモート解錠 ‧駆けつけ連携 ‧異常検知 ‧外部システム連携 ‧有⼈チャット ‧チャットボット ‧お知らせ ‧アンケート ‧FAQ ‧グループチャット ‧LINE連携 コミュニケーション 管理員業務DX 内⾒効率化 ‧点検 ‧報告 ‧スマートキー解錠 ‧リモート解錠 ‧チャット ‧物件管理 ‧内⾒予約 ‧スマートキー連携 ‧ワンタイムパス ‧遠隔解錠 ‧キーボックス ‧外部連携 テンキー カードキー 遠隔解錠 スマートロックを解錠 するためのテンキーを 発行する機能 でEffect-TSを導入

Slide 30

Slide 30 text

30 Copyright © 2025 Bitkey Inc. All right reserved. 4. Effect-TSをなぜ辞めたのか?

Slide 31

Slide 31 text

31 Copyright © 2025 Bitkey Inc. All right reserved. 4. Effect-TSをなぜ辞めたのか? 運用で見えてきた課題 約2年弱の運用 (2024年3月〜2025年12月) を経て、課題が顕在化

Slide 32

Slide 32 text

32 Copyright © 2025 Bitkey Inc. All right reserved. 4. Effect-TSをなぜ辞めたのか? 課題1:学習の難しさ 自分でコーディングするより、AIに書かせることが主流である現代。思考体系(関数型、遅延評価)の変化の追従がつらい そもそもチームのスキルとしても関数型に知見はなく手続型に慣れ親しんでいる状態だった

Slide 33

Slide 33 text

33 Copyright © 2025 Bitkey Inc. All right reserved. 4. Effect-TSをなぜ辞めたのか? 課題1:多様なAPIと統制の難しさ 「依存の解決」においてもいくつかの概念や方法がある なぜ複数の方法があるのか?どう使い分ければ良いか腹落ちした状態で理解するのはコスト高い...

Slide 34

Slide 34 text

34 Copyright © 2025 Bitkey Inc. All right reserved. 4. Effect-TSをなぜ辞めたのか? 課題3:AIの成果物をチーム内でレビューしきれない 手続型と比べて親しみのない表現が多数発生して、確認に時間がかかる providerServiceで何してる? catchTagって何してるの? catchTagが最適? pipeのネストは意図通り?

Slide 35

Slide 35 text

35 Copyright © 2025 Bitkey Inc. All right reserved. 4. Effect-TSをなぜ辞めたのか? 課題4:チーム内で自力で修正できない 「AIが書ける」と「何かあった時に人間もかける」は全く別の話 コーディングする機会が減った現状で、自力で修正できる状態になるのはコストが高く、優先度も上げられなかった

Slide 36

Slide 36 text

36 Copyright © 2025 Bitkey Inc. All right reserved. 4. Effect-TSをなぜ辞めたのか? 課題4:チーム内で自力で修正できない 特に型の整合性を保つのが結構大変...

Slide 37

Slide 37 text

37 Copyright © 2025 Bitkey Inc. All right reserved. 4. Effect-TSをなぜ辞めたのか? 課題4:チーム内で自力で修正できない ・「AIが書ける」と「何かあった時に人間もかける」は全く別の話 ・チーム状況/スキル/志向性にもよるが、私の今のチームからみてEffect-TSはSimpleではなかった ・AI時代の過渡期である現状においてコストが高くつきすぎるという判断に至った

Slide 38

Slide 38 text

38 Copyright © 2025 Bitkey Inc. All right reserved. 4. Effect-TSをなぜ辞めたのか? 移行先:シンプルな自作 Result 型 neverthrow等の既存ライブラリも検討していたが、すでに他のmoduleでも活用していたシンプルな自作Result型を流用

Slide 39

Slide 39 text

39 Copyright © 2025 Bitkey Inc. All right reserved. 5. Effect-TSをどう脱却したのか?

Slide 40

Slide 40 text

40 Copyright © 2025 Bitkey Inc. All right reserved. 5. Effect-TSをどう脱却したのか? 移行戦略 大前提: 「変更を加える前に、まず既存の挙動を保証するテストを書く」 基本方針: ・テストを活用する ・AIを活用する 課題 ・対象が全般的にEffect依存の実装やIFとなっているためやりづらい... 出典:Michael Feathers 『レガシーコード改善ガイド』、翔泳社

Slide 41

Slide 41 text

41 Copyright © 2025 Bitkey Inc. All right reserved. 5. Effect-TSをどう脱却したのか? 移行戦略 EffectのIFを 前提にした既存テスト

Slide 42

Slide 42 text

42 Copyright © 2025 Bitkey Inc. All right reserved. 5. Effect-TSをどう脱却したのか? 移行戦略 中身はEffectの実装で IFをResult型に変換する

Slide 43

Slide 43 text

43 Copyright © 2025 Bitkey Inc. All right reserved. 5. Effect-TSをどう脱却したのか? 移行戦略 ResultのIFの テストに修正する

Slide 44

Slide 44 text

44 Copyright © 2025 Bitkey Inc. All right reserved. 5. Effect-TSをどう脱却したのか? 移行戦略 Effectの実装に 依存しないように修正 Effectの実装への 依存をなくす

Slide 45

Slide 45 text

45 Copyright © 2025 Bitkey Inc. All right reserved. 5. Effect-TSをどう脱却したのか? 移行戦略 Effectの実装を 削除する

Slide 46

Slide 46 text

46 Copyright © 2025 Bitkey Inc. All right reserved. 5. Effect-TSをどう脱却したのか? 移行戦略

Slide 47

Slide 47 text

47 Copyright © 2025 Bitkey Inc. All right reserved. 5. Effect-TSをどう脱却したのか? 移行戦略

Slide 48

Slide 48 text

48 Copyright © 2025 Bitkey Inc. All right reserved. 5. Effect-TSをどう脱却したのか? 移行戦略

Slide 49

Slide 49 text

49 Copyright © 2025 Bitkey Inc. All right reserved. 5. Effect-TSをどう脱却したのか? 移行戦略

Slide 50

Slide 50 text

50 Copyright © 2025 Bitkey Inc. All right reserved. 5. Effect-TSをどう脱却したのか? 移行戦略

Slide 51

Slide 51 text

51 Copyright © 2025 Bitkey Inc. All right reserved. 5. Effect-TSをどう脱却したのか? 実践

Slide 52

Slide 52 text

52 Copyright © 2025 Bitkey Inc. All right reserved. 5. Effect-TSをどう脱却したのか? 実践

Slide 53

Slide 53 text

53 Copyright © 2025 Bitkey Inc. All right reserved. 5. Effect-TSをどう脱却したのか? 実践:Repository (IF)

Slide 54

Slide 54 text

54 Copyright © 2025 Bitkey Inc. All right reserved. 5. Effect-TSをどう脱却したのか? 実践:Repository (Impl)

Slide 55

Slide 55 text

55 Copyright © 2025 Bitkey Inc. All right reserved. 5. Effect-TSをどう脱却したのか? 実践:Service

Slide 56

Slide 56 text

56 Copyright © 2025 Bitkey Inc. All right reserved. 5. Effect-TSをどう脱却したのか? 実践:複数Error

Slide 57

Slide 57 text

57 Copyright © 2025 Bitkey Inc. All right reserved. 5. Effect-TSをどう脱却したのか? 実践:Entry Peint (依存解決)

Slide 58

Slide 58 text

58 Copyright © 2025 Bitkey Inc. All right reserved. 6. 学び

Slide 59

Slide 59 text

59 Copyright © 2025 Bitkey Inc. All right reserved. 6. 学び 大変だったこと ・Effect-TSの思想は個人的には好みではあるが、学習コストは思ったより高かった ・個人ならともかく、チームで運用していくのは結構パワーかけないと難しい 良かったこと ・コードベース全体に浸透するライブラリでも、工夫とAI活用でスムーズに脱却できた ・出口戦略を設計しておけば、今まで以上に気軽に試せる時代になってきている 気づき ・モデリングの課題に対しては、関数型を徹底しなくてもEvent Sourcingで十分改善が見込める 大変だったこと / 良かったこと

Slide 60

Slide 60 text

60 Copyright © 2025 Bitkey Inc. All right reserved. 6. 学び 学び ・自身が「コーディング」する時間が減った今、「(なんとなく)わかる」と「使いこなせる」の差が広がり   やすく、意欲的でないと解消が難しくなってきている。だからこそ、チームの認知負荷を上げてしまう施  策には慎重を期すべき ・AIに振り回されずAIを受け入れられる状態とするために、「Easy (便利だが複雑)」より「Simple (単 純)」 を選ぶ比重を高めても良いように感じる 学び

Slide 61

Slide 61 text

61 End of File Copyright © 2025 Bitkey Inc. All right reserved.