ローソンデジタルイノベーション テックブログ

ローソンデジタルイノベーション(LDI)の技術ブログです

LDIの開発環境を紹介します!(2024年版)

ローソンデジタルイノベーション(LDI)のiOS/Android開発マネージャーの阪口です。

www.ldi.co.jp

前回の開発環境紹介記事(LDIの開発環境を紹介します!(2023年版) - ローソンデジタルイノベーション テックブログ)から変化があるため、2024年の情報をご共有させていただきます。

はじめに

私たち、ローソンデジタルイノベーション(LDI)は、 コンビニエンスストアチェーン「ローソン」の価値を最大化させるために生まれたIT戦略会社です。 テクノロジーやITの力を駆使して、より豊かな生活を実現することを目標に、 あらゆる取り組みを行なっています。

www.wantedly.com

主なプロダクト

ローソンアプリの開発を行っています。
こちらのアプリでは以下のような機能を提供しています。

  • クーポン
  • アプリ予約
  • スマホレジ
  • etc

iOS:https://apps.apple.com/jp/app/id515191813
Android:https://play.google.com/store/apps/details?id=jp.co.lawson.android

他にも各種メディアに開発した内容が取り上げられたりもしています!

開発環境

プロセス

スクラムを導入して開発を進めています。
ベストな開発プロセスを日々模索して改善を続けています。

開発ツール

LDIでは一般的な技術とツールも利用していますが、社内のオリジナルツールも存在しています。

  • GitLab
  • Jira
  • 社内のオリジナルツール
    • GitLab上のメンションコメントをSlackにお届けするbot(Yagi)
    • ブランチマージ時に該当チケットを自動クローズするbot(Yatsuhashi)
    • ライブラリやiOS, Androidのリリース情報をSlackに投稿するbot(Suzuka)
    • コードレビュー自動化ツール(Yonakuni)
    • 独自UI部品集(DesignJetpack)

ちなみにオリジナルツール開発者には命名できる権利がもらえます!

CI/CD

GitLab Runnerを利用してCIを実施しています。
Lintやテストコード実行が自動で動作する環境を構築しています。

デザイン

遷移設計、画面設計、開発チームへの実現性(フィジビリティ)確認、UIデザイン制作、開発チームへのデザイン連携 の一連をデザインチームで実施しています。

使用ツール

遷移・画面設計:

  • Adobe XD
  • PowerPoint
  • Confluence

UIデザイン:

  • Sketch

デザイン連携:

  • Figma

開発

採用技術の全体像

採用アーキテクチャ

アプリ:Clean Architecture + MVVM
サーバー:Clean Architecture
依存関係が少なくメンテしやすくテストコードも実装しやすいアーキテクチャを採用しています。

使用言語や主なライブラリ

iOS:

  • Swift
  • Combine
  • Swift Concurrency
  • RxSwift/RxCocoa
  • Alamofire
  • R.swift
  • GRDB
  • Quick/Nimble

Android:

  • Kotlin
  • Kotlin Coroutine
  • Android Jetpack(Room, Navigation, ConstraintLayout ... )
  • Hilt
  • Retrofit
  • MockK

サーバー:

  • Go
  • Gin
  • zap
  • Ginkgo

品質

コーディング規約、LinterやFormatterを用いてコードの品質を高めています。
アプリケーションの品質に関してはテストコードを書きながら開発するよう日々取り組んでいます。
UIやサーバーとの結合部分のテストの自動化にも取り組んでいます。

改善活動

iOSは、RxSwiftからSwift ConcurrencyやCombineへの移行が70%ほど完了しており、残りも移行を進めております。

また、スクラムで開発を進めていることもあり定期的に振り返りを実施し、より良い開発プロセスを常に模索しております。

コードレベルの振り返りも定期的に行っており、

  • 開発時点では気づけなかった技術的負債に対するリファクタ
  • ライブラリ更新やOSバージョン更新など最新情報への追従
  • 製品品質向上に向けたテストナレッジの蓄積および自動化
  • 定型業務のCIへの組み込みやCIの速度向上
  • あったら便利そうなDevOpsツールの開発

などなど日々課題の抽出と改善に取り組んでいます!

締めのご挨拶

これから定期的に技術ブログを更新していくので、興味がある方は是非「読者になる」で応援していただけますと幸いです。
今後ともローソンデジタルイノベーションをよろしくお願いいたします!