Upgrade to Pro — share decks privately, control downloads, hide ads and more …

初めての RIBs

初めての RIBs

RIBs アーキテクチャについての紹介。RIBs への理解の手助けになれば幸いです。

参考文献:
・JapanTaxi iOSアプリにRIBsアーキテクチャを導入して得られたこと
https://lab.mo-t.com/blog/andonlabo-4-ribs-ios-app

・RIBs アーキテクチャにおける木構造の再構築について
https://lab.mo-t.com/blog/ribs-workflow

・RIBs アーキテクチャにおける Unit Test への取り組み
https://lab.mo-t.com/blog/andonlabo-ios-ribs-unit-test

Yosuke Imairi

May 07, 2020
Tweet

More Decks by Yosuke Imairi

Other Decks in Technology

Transcript

  1. 3PPU -PHHFE*O -PHHFE0VU 'FUDI6TFS 8FMDPNF .BQ 7P*1$BMMJOH.POJUPS 1VTI/PUJpDBUJPO.POJUPS $IFDL'PSDF6QHSBEF .BJOUFOBODF.POJUPS

    $IFDL5FSNT0G6TF ɾɾɾ ɾɾɾ ɾɾɾ 3*#TπϦʔΛ΋ͱʹϧʔςΟϯάΛߟ͑Δ ϝϯςφϯεϞʔυ͔Ͳ͏ ͔ͷ֬ೝɾ؂ࢹ ڧ੍Ξοϓσʔτͷ֬ೝ ར༻ن໿ͷΞοϓσʔτͷ ֬ೝ ϩάΠϯঢ়ଶͳΒʜʜ Ϣʔβ৘ใͷऔಘ 1VTI௨஌ͷ؂ࢹ Ի੠௨࿩ͷ؂ࢹ ஍ਤͷදࣔɹ ϩάΞ΢τঢ়ଶͳΒʜʜ ϩάΠϯը໘΁ભҠ
  2. 3*#TπϦʔΛ΋ͱʹϧʔςΟϯάΛߟ͑Δ ϝϯςφϯεϞʔυ͔Ͳ͏ ͔ͷ֬ೝɾ؂ࢹ ڧ੍Ξοϓσʔτͷ֬ೝ ར༻ن໿ͷΞοϓσʔτͷ ֬ೝ ϩάΠϯঢ়ଶͳΒʜʜ Ϣʔβ৘ใͷऔಘ 1VTI௨஌ͷ؂ࢹ Ի੠௨࿩ͷ؂ࢹ

    ஍ਤͷදࣔɹ ϩάΞ΢τঢ়ଶͳΒʜʜ ϩάΠϯը໘΁ભҠ 3PPU -PHHFE*O -PHHFE0VU 'FUDI6TFS 8FMDPNF .BQ 7P*1$BMMJOH.POJUPS 1VTI/PUJpDBUJPO.POJUPS $IFDL'PSDF6QHSBEF .BJOUFOBODF.POJUPS $IFDL5FSNT0G6TF ɾɾɾ ɾɾɾ ɾɾɾ
  3. ϝϯςφϯεϞʔυ͔Ͳ͏ ͔ͷ֬ೝɾ؂ࢹ ڧ੍Ξοϓσʔτͷ֬ೝ ར༻ن໿ͷΞοϓσʔτͷ ֬ೝ ϩάΠϯঢ়ଶͳΒʜʜ Ϣʔβ৘ใͷऔಘ 1VTI௨஌ͷ؂ࢹ Ի੠௨࿩ͷ؂ࢹ ஍ਤͷදࣔɹ

    ϩάΞ΢τঢ়ଶͳΒʜʜ ϩάΠϯը໘΁ભҠ 3PPU -PHHFE*O -PHHFE0VU 'FUDI6TFS 8FMDPNF .BQ 7P*1$BMMJOH.POJUPS 1VTI/PUJpDBUJPO.POJUPS $IFDL'PSDF6QHSBEF .BJOUFOBODF.POJUPS $IFDL5FSNT0G6TF ɾɾɾ ɾɾɾ ɾɾɾ 3*#TπϦʔΛ΋ͱʹϧʔςΟϯάΛߟ͑Δ
  4. ϝϯςφϯεϞʔυ͔Ͳ͏ ͔ͷ֬ೝɾ؂ࢹ ڧ੍Ξοϓσʔτͷ֬ೝ ར༻ن໿ͷΞοϓσʔτͷ ֬ೝ ϩάΠϯঢ়ଶͳΒʜʜ Ϣʔβ৘ใͷऔಘ 1VTI௨஌ͷ؂ࢹ Ի੠௨࿩ͷ؂ࢹ ஍ਤͷදࣔɹ

    ϩάΞ΢τঢ়ଶͳΒʜʜ ϩάΠϯը໘΁ભҠ 3PPU -PHHFE*O -PHHFE0VU 'FUDI6TFS 8FMDPNF .BQ 7P*1$BMMJOH.POJUPS 1VTI/PUJpDBUJPO.POJUPS $IFDL'PSDF6QHSBEF .BJOUFOBODF.POJUPS $IFDL5FSNT0G6TF ɾɾɾ ɾɾɾ ɾɾɾ 3*#TπϦʔΛ΋ͱʹϧʔςΟϯάΛߟ͑Δ
  5. ϝϯςφϯεϞʔυ͔Ͳ͏ ͔ͷ֬ೝɾ؂ࢹ ڧ੍Ξοϓσʔτͷ֬ೝ ར༻ن໿ͷΞοϓσʔτͷ ֬ೝ ϩάΠϯঢ়ଶͳΒʜʜ Ϣʔβ৘ใͷऔಘ 1VTI௨஌ͷ؂ࢹ Ի੠௨࿩ͷ؂ࢹ ஍ਤͷදࣔɹ

    ϩάΞ΢τঢ়ଶͳΒʜʜ ϩάΠϯը໘΁ભҠ 3PPU -PHHFE*O -PHHFE0VU 'FUDI6TFS 8FMDPNF .BQ 7P*1$BMMJOH.POJUPS 1VTI/PUJpDBUJPO.POJUPS $IFDL'PSDF6QHSBEF .BJOUFOBODF.POJUPS $IFDL5FSNT0G6TF ɾɾɾ ɾɾɾ ɾɾɾ 3*#TπϦʔΛ΋ͱʹϧʔςΟϯάΛߟ͑Δ
  6. ϝϯςφϯεϞʔυ͔Ͳ͏ ͔ͷ֬ೝɾ؂ࢹ ڧ੍Ξοϓσʔτͷ֬ೝ ར༻ن໿ͷΞοϓσʔτͷ ֬ೝ ϩάΠϯঢ়ଶͳΒʜʜ Ϣʔβ৘ใͷऔಘ 1VTI௨஌ͷ؂ࢹ Ի੠௨࿩ͷ؂ࢹ ஍ਤͷදࣔɹ

    ϩάΞ΢τঢ়ଶͳΒʜʜ ϩάΠϯը໘΁ભҠ 3PPU -PHHFE*O -PHHFE0VU 'FUDI6TFS 8FMDPNF .BQ 7P*1$BMMJOH.POJUPS 1VTI/PUJpDBUJPO.POJUPS $IFDL'PSDF6QHSBEF .BJOUFOBODF.POJUPS $IFDL5FSNT0G6TF ɾɾɾ ɾɾɾ ɾɾɾ 3*#TπϦʔΛ΋ͱʹϧʔςΟϯάΛߟ͑Δ
  7. ϝϯςφϯεϞʔυ͔Ͳ͏ ͔ͷ֬ೝɾ؂ࢹ ڧ੍Ξοϓσʔτͷ֬ೝ ར༻ن໿ͷΞοϓσʔτͷ ֬ೝ ϩάΠϯঢ়ଶͳΒʜʜ Ϣʔβ৘ใͷऔಘ 1VTI௨஌ͷ؂ࢹ Ի੠௨࿩ͷ؂ࢹ ஍ਤͷදࣔɹ

    ϩάΞ΢τঢ়ଶͳΒʜʜ ϩάΠϯը໘΁ભҠ 3PPU -PHHFE*O -PHHFE0VU 'FUDI6TFS 8FMDPNF .BQ 7P*1$BMMJOH.POJUPS 1VTI/PUJpDBUJPO.POJUPS $IFDL'PSDF6QHSBEF .BJOUFOBODF.POJUPS $IFDL5FSNT0G6TF ɾɾɾ ɾɾɾ ɾɾɾ 3*#TπϦʔΛ΋ͱʹϧʔςΟϯάΛߟ͑Δ
  8. ϝϯςφϯεϞʔυ͔Ͳ͏ ͔ͷ֬ೝɾ؂ࢹ ڧ੍Ξοϓσʔτͷ֬ೝ ར༻ن໿ͷΞοϓσʔτͷ ֬ೝ ϩάΠϯঢ়ଶͳΒʜʜ Ϣʔβ৘ใͷऔಘ 1VTI௨஌ͷ؂ࢹ Ի੠௨࿩ͷ؂ࢹ ஍ਤͷදࣔɹ

    ϩάΞ΢τঢ়ଶͳΒʜʜ ϩάΠϯը໘΁ભҠ 3PPU -PHHFE*O -PHHFE0VU 'FUDI6TFS 8FMDPNF .BQ 7P*1$BMMJOH.POJUPS 1VTI/PUJpDBUJPO.POJUPS $IFDL'PSDF6QHSBEF .BJOUFOBODF.POJUPS $IFDL5FSNT0G6TF ɾɾɾ ɾɾɾ ɾɾɾ 3*#TπϦʔΛ΋ͱʹϧʔςΟϯάΛߟ͑Δ
  9. ϝϯςφϯεϞʔυ͔Ͳ͏ ͔ͷ֬ೝɾ؂ࢹ ڧ੍Ξοϓσʔτͷ֬ೝ ར༻ن໿ͷΞοϓσʔτͷ ֬ೝ ϩάΠϯঢ়ଶͳΒʜʜ Ϣʔβ৘ใͷऔಘ 1VTI௨஌ͷ؂ࢹ Ի੠௨࿩ͷ؂ࢹ ஍ਤͷදࣔ

    ϩάΞ΢τঢ়ଶͳΒʜʜ ϩάΠϯը໘΁ભҠ 3PPU -PHHFE*O -PHHFE0VU 'FUDI6TFS 8FMDPNF .BQ 7P*1$BMMJOH.POJUPS 1VTI/PUJpDBUJPO.POJUPS $IFDL'PSDF6QHSBEF .BJOUFOBODF.POJUPS $IFDL5FSNT0G6TF ɾɾɾ ɾɾɾ ɾɾɾ 3*#TπϦʔΛ΋ͱʹϧʔςΟϯάΛߟ͑Δ
  10. ϝϯςφϯεϞʔυ͔Ͳ͏ ͔ͷ֬ೝɾ؂ࢹ ڧ੍Ξοϓσʔτͷ֬ೝ ར༻ن໿ͷΞοϓσʔτͷ ֬ೝ ϩάΠϯঢ়ଶͳΒʜʜ Ϣʔβ৘ใͷऔಘ 1VTI௨஌ͷ؂ࢹ Ի੠௨࿩ͷ؂ࢹ ஍ਤͷදࣔɹ

    ϩάΞ΢τঢ়ଶͳΒʜʜ ϩάΠϯը໘΁ભҠ 3PPU -PHHFE*O -PHHFE0VU 'FUDI6TFS 8FMDPNF .BQ 7P*1$BMMJOH.POJUPS 1VTI/PUJpDBUJPO.POJUPS $IFDL'PSDF6QHSBEF .BJOUFOBODF.POJUPS $IFDL5FSNT0G6TF ɾɾɾ ɾɾɾ ɾɾɾ 3*#TπϦʔΛ΋ͱʹϧʔςΟϯάΛߟ͑Δ
  11. ϝϯςφϯεϞʔυ͔Ͳ͏ ͔ͷ֬ೝɾ؂ࢹ ڧ੍Ξοϓσʔτͷ֬ೝ ར༻ن໿ͷΞοϓσʔτͷ ֬ೝ ϩάΠϯঢ়ଶͳΒʜʜ Ϣʔβ৘ใͷऔಘ 1VTI௨஌ͷ؂ࢹ Ի੠௨࿩ͷ؂ࢹ ஍ਤͷදࣔɹ

    ϩάΞ΢τঢ়ଶͳΒʜʜ ϩάΠϯը໘΁ભҠ 3PPU -PHHFE*O -PHHFE0VU 'FUDI6TFS 8FMDPNF .BQ 7P*1$BMMJOH.POJUPS 1VTI/PUJpDBUJPO.POJUPS $IFDL'PSDF6QHSBEF .BJOUFOBODF.POJUPS $IFDL5FSNT0G6TF ɾɾɾ ɾɾɾ ɾɾɾ 3*#TπϦʔΛ΋ͱʹϧʔςΟϯάΛߟ͑Δ
  12. " ' & % # $ + * ) (

    3*#Tʹ͓͚Δ৘ใڞ༗ʢͦͷʣ ਌ͷ3*#΍ͦΕΑΓઌʹ͋Δઌ૆ͷ3*#ʹ৘ใΛ౉͢৔߹ɺ*OUFSBDUPSͷ -JTUFOFSܦ༝Ͱߦ͏͜ͱ͕Ͱ͖Δ Listener Listener Listener
  13. 3*#Tʹ͓͚Δ৘ใڞ༗ʢͦͷʣ " ' & % # $ + * )

    ( ᶃ$3*#ͷ$PNQPOFOUͰ৘ใڞ༗༻ͷ4USFBNΛshared { … }Ͱ࡞੒͢Δ ʢ$3*#഑Լ͸·ͩ࡞੒͞Ε͍ͯͳ͍ʣ 4USFBN
  14. ಛఆͷ3*#·Ͱ઀ଓ͍ͨ͠ " ' & % # $ + * )

    ( "ˠ$ˠ%ˠ(ͷॱ൪ʹBUUBDI͍ͨ͠ ʢ͜ͷखॱΛ౿·ͳ͚Ε͹(3*#͸BUUBDIͰ͖ͳ͍ʣ