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

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

  2. • (JVL+VOHʢδϣϯʣ • +PJOFE-*/& • #VJMEFOHJOFFS J04FOHJOFFS • -PWFTJ04 %FW0QT

    $BNQJOH • ,PSFBO )FMMP
  3. ϚΠνʔϜ

  4. -*/&J04ͷن໛

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

  6. https://bazel.build/ Bazel

  7. ܦݧͨ͠#B[FMͷར఺ ਖ਼֬ʹΑΔߴ଎Խ • Ωϟογϯά • ґଘੑͷ࠷దԽ෼ੳ • ฒྻ࣮ߦ  εέʔϥϏϦςΟ

    • େن໛ϓϩδΣΫτʹ࠷ద ଟݴޠʹ֦ு • 0CK$ 4XJGUʹ֦ு
  8. ̐೥ؒͷมભ

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

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

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

  12. 1. YDPEFCVJMEͷҡ࣋΋ඞཁ 2. ଟ͘ͷϋοΫ͕ඞཁ 3. %FCVHHJOHମݧ͕ѱ͍ 4. ֶशίετ͕ߴ͍ 5. ϥΠϒϥϦʔ؅ཧ͕େม

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

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

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

    ϥΠϒϥϦʔ؅ཧ͕େม 6. $BDIFͷ؅ཧ͕େม 9DPEF *%& Ͱ#B[FMΛ࢖ͬͨΒ wҰ෦ͷϒϨʔΫϙΠϯτ͕ಈ࡞͠ͳ͍ wQPͷΑ͏ͳ--%#͕ػೳ͠ͳ͍͜ͱ͕͋Δ w"VUPDPNQMFUF͕ػೳ͠ͳ͍͜ͱ͕͋Δ wఆٛʹδϟϯϒͰ͖ͳ͍͜ͱ͕͋Δ
  16. ຊจϨϕϧ1 ຊจϨϕϧ2 ຊจϨϕϧ3 ຊจϨϕϧ4 ຊจϨϕϧ5 --%#JTTVF • #SFBLQPJOU࢖͏ʹ͸--%#ઃఆΛΦʔόʔϥΠυ͢Δඞཁ͕͋Δ

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

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

  19. ຊจϨϕϧ1 ຊจϨϕϧ2 ຊจϨϕϧ3 ຊจϨϕϧ4 ຊจϨϕϧ5 *OEFYJOHJTTVF • ιʔείʔυͷҰ෦ʹ৭͕෇͔ͳ͍ • ίʔυʹ੺͍Լઢ͕දࣔ͞ΕͯΔͷʹɺϏϧυ͸੒ޭ͢Δ

    • 㵰 DMJDL͢Δͱɺ ͱΞϥʔτ͕දࣔ͞ΕΔ • $PEFTVHHFTUJPOTʹλΠϓ͕ <<error type>>ͱදࣔ͞ΕΔ
  20. ௚໘ͨ͠#B[FMͷ՝୊ 1. YDPEFCVJMEͷҡ࣋΋ඞཁ 2. ଟ͘ͷϋοΫ͕ඞཁ 3. %FCVHHJOHମݧ͕ѱ͍ 4. ֶशίετ͕ߴ͍ 5.

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

    ϥΠϒϥϦʔ؅ཧ͕େม 6. $BDIFͷ؅ཧ͕େม w֤ґଘϥΠϒϥϦʔͷόʔδϣϯ͕༧ଌ͠ʹ͍͘ wॏෳએݴͷ$POGMJDUΛղܾ͢Δ3FTPMWFS͕ͳ͍ w௚઀ٴͼؒ઀ґଘΛ͢΂ͯએݴ͢Δඞཁ͕͋Δ w9DPEF(FOͱґଘؔ܎ͷߏ੒͕Ұக͠ͳ͍
  22. 9DPEF(FOͱґଘؔ܎ͷߏ੒͕Ұக͠ͳ͍

  23. ௚໘ͨ͠#B[FMͷ՝୊ 1. YDPEFCVJMEͷҡ࣋΋ඞཁ 2. ଟ͘ͷϋοΫ͕ඞཁ 3. %FCVHHJOHମݧ͕ѱ͍ 4. ֶशίετ͕ߴ͍ 5.

    ϥΠϒϥϦʔ؅ཧ͕େม 6. $BDIFͷ؅ཧ͕େม wΩϟογϡΛ؅ཧ͢Δπʔϧ͕ͳ͍ wΩϟογϡϙΠζχϯάͷσόοά͕ࠔ೉ wΩϟογϡαʔόʔͱετϨʔδ؅ཧ͕ඞཁ wΠϯλʔωοτ؀ڥʹΑͬͯମݧ͕ҟͳΔ
  24. ϝϦοτWTσϝϦοτ

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

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

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

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

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

  33. None
  34. ̐೥ؒͷมભ

  35. ࠓޙͷ༧ఆ

  36. THANK YOU