$30 off During Our Annual Pro Sale. View Details »

LINE iOSのビルド環境の変遷 / Changes in LINE iOS Build Environment

LINE iOSのビルド環境の変遷 / Changes in LINE iOS Build Environment

LINE iOSは、200万行を超えるソースコードと200以上のモジュールで構成されている大規模なプロジェクトであるため、そのビルド時間も長くなりがちです。

私達はビルド時間の改善の一環として、Bazelを取り入れました。その結果、ビルド速度が2倍になるというメリットを享受しましたが、メンテナンスコストが増大するというデメリットにも直面しました。

このセッションでは2年間Bazelを使い続けて分かったBazelの長所やリスク、運用時の注意点、そしてLINE iOSのビルド環境の現状と今後についてご紹介します。

※この資料は iOSDC Japan 2022 のスポンサーセッションで発表した内容です。
詳細:https://fortee.jp/iosdc-japan-2022/proposal/ac7d5226-f64b-42ff-8d08-b8960d4021ca
告知:https://engineering.linecorp.com/ja/blog/iosdc_japan_2022/

LINE Developers
PRO

September 12, 2022
Tweet

More Decks by LINE Developers

Other Decks in Technology

Transcript

  1. -*/&J04
    Ϗϧυ؀ڥͷมભ
    (JVL+VOH
    -*/&1MBUGPSN%FW$FOUFS
    %FWFMPQFS&YQFSJFODF5FBN

    View Slide

  2. • (JVL+VOHʢδϣϯʣ
    • +PJOFE-*/&
    • #VJMEFOHJOFFS J04FOHJOFFS
    • -PWFTJ04 %FW0QT $BNQJOH
    • ,PSFBO
    )FMMP

    View Slide

  3. ϚΠνʔϜ

    View Slide

  4. -*/&J04ͷن໛

    View Slide

  5. େن໛։ൃʹ͓͚ΔϏϧυͷ՝୊

    View Slide

  6. https://bazel.build/
    Bazel

    View Slide

  7. ܦݧͨ͠#B[FMͷར఺
    ਖ਼֬ʹΑΔߴ଎Խ
    • Ωϟογϯά
    • ґଘੑͷ࠷దԽ෼ੳ
    • ฒྻ࣮ߦ
    εέʔϥϏϦςΟ
    • େن໛ϓϩδΣΫτʹ࠷ద
    ଟݴޠʹ֦ு
    • 0CK$4XJGUʹ֦ு

    View Slide

  8. ̐೥ؒͷมભ

    View Slide

  9. #B[FMͷύϑΥʔϚϯε

    View Slide

  10. #B[FMͰϏϧυ͕࣌ؒര଎ʹ🚀

    View Slide

  11. ͕ɺϝϯςίετ͕ര্͕Γ

    View Slide

  12. 1. YDPEFCVJMEͷҡ࣋΋ඞཁ
    2. ଟ͘ͷϋοΫ͕ඞཁ
    3. %FCVHHJOHମݧ͕ѱ͍
    4. ֶशίετ͕ߴ͍
    5. ϥΠϒϥϦʔ؅ཧ͕େม
    6. $BDIFͷ؅ཧ͕େม
    ௚໘ͨ͠#B[FMͷ՝୊

    View Slide

  13. 1. YDPEFCVJMEͷҡ࣋΋ඞཁ
    2. ଟ͘ͷϋοΫ͕ඞཁ
    3. %FCVHHJOHମݧ͕ѱ͍
    4. ֶशίετ͕ߴ͍
    5. ϥΠϒϥϦʔ؅ཧ͕େม
    6. $BDIFͷ؅ཧ͕େม
    9DPEFͷ৽ػೳɺ#B[FMະରԠͷػೳΛ࢖͏ʹ͸
    YDPEFCVJMEͱ#B[FM྆ํΛҡ࣋͢Δඞཁ͕͋Δ
    ௚໘ͨ͠#B[FMͷ՝୊

    View Slide

  14. 1. YDPEFCVJMEͷҡ࣋΋ඞཁ
    2. ଟ͘ͷϋοΫ͕ඞཁ
    3. %FCVHHJOHମݧ͕ѱ͍
    4. ֶशίετ͕ߴ͍
    5. ϥΠϒϥϦʔ؅ཧ͕େม
    6. $BDIFͷ؅ཧ͕େม
    w.JYFE4PVSDF.PEVMFΛαϙʔτ͢ΔͨΊʹ
    w9DPEFͱ049ͷ৽όʔδϣϯ͕ग़ͨ࣌ʹ
    w..BD্ͰϏϧυ͢ΔͨΊʹ
    wYDBSDIJWFϑΝΠϧʹCVOEMJOH͢ΔͨΊʹ
    wYDGSBNFXPSLTΛΠϯϙʔτ͢ΔͨΊʹ
    w࣮ػͰςετλʔήοτΛ࣮ߦ͢ΔͨΊʹͳͲ
    ௚໘ͨ͠#B[FMͷ՝୊

    View Slide

  15. ௚໘ͨ͠#B[FMͷ՝୊
    1. YDPEFCVJMEͷҡ࣋΋ඞཁ
    2. ଟ͘ͷϋοΫ͕ඞཁ
    3. %FCVHHJOHମݧ͕ѱ͍
    4. ֶशίετ͕ߴ͍
    5. ϥΠϒϥϦʔ؅ཧ͕େม
    6. $BDIFͷ؅ཧ͕େม
    9DPEF *%&
    Ͱ#B[FMΛ࢖ͬͨΒ
    wҰ෦ͷϒϨʔΫϙΠϯτ͕ಈ࡞͠ͳ͍
    wQPͷΑ͏ͳ--%#͕ػೳ͠ͳ͍͜ͱ͕͋Δ
    w"VUPDPNQMFUF͕ػೳ͠ͳ͍͜ͱ͕͋Δ
    wఆٛʹδϟϯϒͰ͖ͳ͍͜ͱ͕͋Δ

    View Slide

  16. ຊจϨϕϧ1
    ຊจϨϕϧ2
    ຊจϨϕϧ3
    ຊจϨϕϧ4
    ຊจϨϕϧ5
    --%#JTTVF
    • #SFBLQPJOU࢖͏ʹ͸--%#ઃఆΛΦʔόʔϥΠυ͢Δඞཁ͕͋Δ

    View Slide

  17. --%#JTTVF
    ຊจϨϕϧ2
    ຊจϨϕϧ3
    ຊจϨϕϧ4
    ຊจϨϕϧ5
    • --%#ઃఆΛΧελϚΠζ͢Δͱɺ#SFBLQPJOUͷෆ۩߹͕ى͖ͨ

    View Slide

  18. ຊจϨϕϧ1
    ຊจϨϕϧ2
    ຊจϨϕϧ3
    ຊจϨϕϧ4
    ຊจϨϕϧ5
    *OEFYJOHJTTVF
    • #B[FMͷग़ྗͱ࿈ܞͯ͠*OEFYJOHΛॲཧ͢Δඞཁ͕͋Δ

    View Slide

  19. ຊจϨϕϧ1
    ຊจϨϕϧ2
    ຊจϨϕϧ3
    ຊจϨϕϧ4
    ຊจϨϕϧ5
    *OEFYJOHJTTVF
    • ιʔείʔυͷҰ෦ʹ৭͕෇͔ͳ͍
    • ίʔυʹ੺͍Լઢ͕දࣔ͞ΕͯΔͷʹɺϏϧυ͸੒ޭ͢Δ
    • 㵰DMJDL͢Δͱɺ ͱΞϥʔτ͕දࣔ͞ΕΔ
    • $PEFTVHHFTUJPOTʹλΠϓ͕ <>ͱදࣔ͞ΕΔ

    View Slide

  20. ௚໘ͨ͠#B[FMͷ՝୊
    1. YDPEFCVJMEͷҡ࣋΋ඞཁ
    2. ଟ͘ͷϋοΫ͕ඞཁ
    3. %FCVHHJOHମݧ͕ѱ͍
    4. ֶशίετ͕ߴ͍
    5. ϥΠϒϥϦʔ؅ཧ͕େม
    6. $BDIFͷ؅ཧ͕େม
    wυΩϡϝϯτͱࢿྉ͕ෆ଍
    wษڧձ΍υΩϡϝϯτͷ੔උ͕ඞཁ
    w#6*-%ϑΝΠϧͷਖ਼͍͠ઃఆ͕ࠔ೉

    View Slide

  21. ௚໘ͨ͠#B[FMͷ՝୊
    1. YDPEFCVJMEͷҡ࣋΋ඞཁ
    2. ଟ͘ͷϋοΫ͕ඞཁ
    3. %FCVHHJOHମݧ͕ѱ͍
    4. ֶशίετ͕ߴ͍
    5. ϥΠϒϥϦʔ؅ཧ͕େม
    6. $BDIFͷ؅ཧ͕େม
    w֤ґଘϥΠϒϥϦʔͷόʔδϣϯ͕༧ଌ͠ʹ͍͘
    wॏෳએݴͷ$POGMJDUΛղܾ͢Δ3FTPMWFS͕ͳ͍
    w௚઀ٴͼؒ઀ґଘΛ͢΂ͯએݴ͢Δඞཁ͕͋Δ
    w9DPEF(FOͱґଘؔ܎ͷߏ੒͕Ұக͠ͳ͍

    View Slide

  22. 9DPEF(FOͱґଘؔ܎ͷߏ੒͕Ұக͠ͳ͍

    View Slide

  23. ௚໘ͨ͠#B[FMͷ՝୊
    1. YDPEFCVJMEͷҡ࣋΋ඞཁ
    2. ଟ͘ͷϋοΫ͕ඞཁ
    3. %FCVHHJOHମݧ͕ѱ͍
    4. ֶशίετ͕ߴ͍
    5. ϥΠϒϥϦʔ؅ཧ͕େม
    6. $BDIFͷ؅ཧ͕େม
    wΩϟογϡΛ؅ཧ͢Δπʔϧ͕ͳ͍
    wΩϟογϡϙΠζχϯάͷσόοά͕ࠔ೉
    wΩϟογϡαʔόʔͱετϨʔδ؅ཧ͕ඞཁ
    wΠϯλʔωοτ؀ڥʹΑͬͯମݧ͕ҟͳΔ

    View Slide

  24. ϝϦοτWTσϝϦοτ

    View Slide

  25. ʮFASTʯΛ࣮ݱ͢Δओͳٕज़

    View Slide

  26. $*ͱ-PDBMͷʮ'BTUʯ

    View Slide

  27. View Slide

  28. -*/&J04ͷΠϯΫϦϝϯλϧϏϧυ

    View Slide

  29. ݁࿦ɿϩʔΧϧͰ͸ϝϦοτগͳ͍

    View Slide

  30. View Slide

  31. View Slide

  32. ..BYͰͷΠϯΫϦϝϯλϧϏϧυ

    View Slide

  33. View Slide

  34. ̐೥ؒͷมભ

    View Slide

  35. ࠓޙͷ༧ఆ

    View Slide

  36. THANK YOU

    View Slide