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

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

FigmaのDevMode新機能、アノテーションを使ってみたら便利だった話

こんにちは、デザイナーの松本です。 先日アップデートされたFigmaのDevModeの新機能、アノテーション(測定・注釈)を早速使ってみて、便利だなぁ〜!と思わずブログを書いてしまいました。 Figmaとはブラウザ上でUIデザインやWebデザイン、グラフィックデ…

Cloud Functions でのJWT対応方法の紹介

ローソンデジタルイノベーション(LDI)のiOS/Android開発マネージャーの阪口です。 今回は、Cloud Functions でのJWT(JSON Web Token)を利用した認証処理について紹介します! はじめに 前回こちらの記事で、Cloud Functions と Cloud Firestore の社内利用…

FlutterとDartを使ったAPI通信の実装方法

こんにちは、LDIのモバイルアプリエンジニアの庄司です。 前回に続き、在宅勤務報告システムの開発にまつわる話をしようと思います。 在宅勤務報告システムではhttpパッケージを使って、APIの呼び出しを実装しています。 今回はAPIへのリクエストとレスポン…

Firebase Auth×Microsoft Entra ID×Microsoft Graphで認証処理を実装した際にちょっと困ったこと

ローソンデジタルイノベーション(LDI)でPMを担当している畑沢です。先日、下記記事にて在宅勤務報告システムについてご紹介しました。 techblog.ldi.co.jp今回は、Firebase Authentication × Microsoft Entra ID × Microsoft Graphを利用した認証処理と、実…

Flutterで環境ごとにビルドする方法

はじめに ビルド環境を切り替えて開発する方法について --dart-define-from-file 環境変数定義(json) 実行方法 ソースコード側の対応例 在宅勤務報告システムで工夫したこと 最後に はじめに こんにちは、ローソンデジタルイノベーション(LDI)でiOSエンジニ…

失敗から学んだ、Flutterでテキストボックスの状態に合わせてボタンの活性状態を制御する方法

はじめに こんにちは、Android開発エンジニアの岡田です。 普段はAndroid開発を行っていますが、今回はFlutterで在宅勤務報告システムを開発した時の出来事を記事にしていきます。 テキストボックスの状態によって、ボタンの活性/非活性を制御する方法につい…

(iOS) Alamofire + Swift Concurrency でのAPI通信処理の実装例

ローソンデジタルイノベーション(LDI)のiOS/Android開発マネージャーの阪口です。 開発しているアプリのAPI通信処理は、Alamofire を利用して実装しています。 通信処理部分をSwift Concurrency に対応したため、今回はどのように実装したか紹介します! 通…

Combineを使った開発で用意した拡張関数の紹介

はじめに 開発環境 Combineの拡張関数 sink(with:cancellables:receiveValue:) Parameters コード sinkWithMainThread(with:cancellables:receiveValue:) Parameters コード sinkAsync(with:cancellables:receiveValue:) Parameters コード 最後に はじめに …

社内向けの在宅勤務日を管理するアプリで祝日を表示する

こんにちは、LDIのモバイルアプリエンジニアの庄司です。 今回はFlutterを使って社内向けアプリを作った際に利用したtable_calendarというライブラリでの実装について書いていきたいと思います。 なお、導入方法はいろんな方が説明してくださっているので省…

Combineフレームワークを使ったViewModelの形について

はじめに こんにちは、ローソンデジタルイノベーション(LDI)でiOSエンジニアを担当している山形です。 今LDIでは開発しているiOSアプリで使用しているRxSwiftをCombineやSwift Concurrencyへ置き換えを進めています。 開発しているiOSアプリはMVVMを採用して…

Cloud Functions と Cloud Firestore の社内利用例のご紹介

ローソンデジタルイノベーション(LDI)のiOS/Android開発マネージャーの阪口です。 今回は、Cloud Functions と Cloud Firestore の社内利用例についてご紹介させていただきます。 はじめに 以前にこちらの記事で、在宅勤務報告システム全体のシステム構成に…

Flutter の RiverpodライブラリでMVVMを実現させよう!

こんにちは、Android開発エンジニアの岡田です。 今回はFlutterのライブラリであるRiverpodを使うことで、MVVMアーキテクチャを実現させた経験を記事にします。 はじめに 開発環境 対象読者 開発システムについて 開発システムのアーキテクチャ MVVMについて…

在宅勤務報告システムで採用したFlutterアプリ開発におけるアーキテクチャについて紹介します!

はじめに 採用したアーキテクチャ Clean Architecture MVVM(Model, View, ViewModel) どうやって組み合わせるの? Clean Architecture MVVM 最終形(Clean Architecture+MVVM) 実装してみて感じたこと メリット デメリット 最後に はじめに こんにちは、ロー…

Flutterでサクッと作成したWebアプリケーションのシステム構成を紹介します!

ローソンデジタルイノベーション(LDI)でPMを担当している畑沢です。 本日は、社内向けに開発した在宅勤務報告システムとその構成についてご紹介いたします。 在宅勤務報告システムとは? 在宅勤務報告システムとは、在宅勤務を行うための申請と日々の業務報…

NotificationCenter の publisher を Swift Concurrency でハンドリング対応

ローソンデジタルイノベーション(LDI)のiOS/Android開発マネージャーの阪口です。 今回は、NotificationCenter.publisher のイベントを Swift Concurrency でハンドリングする方法についてご紹介します。 開発環境 macOS:Ventura 13.6 Xcode:15.0 サポート…

(iOS)Quick/NimbleのテストコードをRxSwiftからSwift Concurrencyへ置き換え

こんにちは、LDIのiOS/Android開発マネージャーの阪口です。 LDIで開発しているiOSアプリでは、RxSwift から Combine や Swift Concurrency への置き換えを進めています。 今回は、Quick/Nimble を利用したテストコードを RxSwift のコードから Swift Concur…

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

ローソンデジタルイノベーション(LDI)のiOS/Android開発マネージャーの阪口です。 www.ldi.co.jp 前回の開発環境紹介記事(LDIの開発環境を紹介します! - ローソンデジタルイノベーション テックブログ)から変化があるため、2023年の情報をご共有させていた…

データ分析:販売好調のローソン限定「天下一品監修ラーメン」。近くに天下一品の実店舗があるのとないので売上に影響はあるか?

こんにちは、データ分析チームのIです。 弊社ローソンデジタルイノベーション(LDI)にはデータ分析チームも存在しており、普段はローソンのデータ分析部門やマーケティング部門と連携しながらお仕事をさせていただいております。ローソン店舗では1000を超え…

Shiratesを使ってAndroidをセットアップする(3)- プロキシの設定/解除を自動化する

ども。LDI品質管理部の仙波です。 スマホアプリの自動テストを担当しています 前回はShiratesを使用してAndroidの設定アプリで自動入力サービスを無効にする手順を自動テストとして自動化しました。 今回はAndroidの設定アプリでプロキシ設定/解除する手順を…

Shiratesを使ってAndroidをセットアップする(2)- 自動入力サービスの無効化を自動化する

ども。LDI品質管理部の仙波です。 スマホアプリの自動テストを担当しています 前回はAndroidのエミュレーター使ってテストを行う場合に必要となるセットアップを紹介しました。 今回はセットアップタスクの一部を自動化する方法を紹介します。 Shiratesを使…

Shiratesを使ってAndroidをセットアップする(1)- テスト実行時に必要なセットアップ手順

ども。LDI品質管理部の仙波です。 スマホアプリの自動テストを担当しています 久しぶりに自動テストの作成に関する投稿をしてみます。 今回はAndroidのエミュレーター使ってテストを行う場合に必要となるセットアップを紹介します。 テスト実行時に必要なセ…

Bitriseを導入しました!

こんにちは、エンジニアの栁です。 今回は私が担当するアプリにBitriseを導入したので、こちらに記事を書きたいと思います。 Bitriseの導入を検討した背景 弊社ではソースコードの管理にGitLabを利用していたのでCI/CDもGitLab CIを使っていましたが、メンテ…

JMeter に疲れてしまった。。。そんなあなたに k6(3) - 結果のビジュアル化

LDIで開発しているOKです。 前々回、前回 に続き、今回も k6 について書きます。 今回は、 実行結果を InfluxDB と Grafana を使ってリアルタイムで グラフ化できるようにしていきます。 Docker でInfluxDB と Grafana の環境構築 ファイルの種類やディレク…

Lottieでグラデーションが白黒になってしまった時の小技

こんにちは、デザイナーの松本です。 今日はLottieアニメーションの書き出しで困った時のことをお話ししたいと思います。 アプリに組み込むアニメーションとしてLottieを使うのが便利ですが… グラデーションがあるデザインのアニメーションを書き出してみた…

JMeter に疲れてしまった。。。そんなあなたに k6(2) - 複数APIによる負荷試験

LDIで開発しているOKです。 前回に続き k6 ついて書きます。 今回はよりサーバの負荷試験を意識して、複数のAPIをそれぞれ別の rps (Request / Seconds)で負荷をかける際のやり方です。 実際に動いているサービスだとAPI毎に負荷って違いますよね。 「API①も…

JMeter に疲れてしまった。。。そんなあなたに k6

ご無沙汰しています。LDIで開発しているOKです。 パフォーマンスツールの定番というと JMeter あたりが割と有名で使われている人が多いのかなと思いますが、 設定が大変でちょっとしたテストをしようと思ってもサクッとできない印象があるのですよね(個人の…

Shirates開発後記(3) - Appiumを採用した経緯について -

品質管理部の仙波です。 自動テストツールShirates開発後記の3回目です。 前回は当社がスマホアプリのテストの自動化に取り組む理由について語りました。 今回はテストを自動化するにあたりドライバーソフトウェアとしてAppiumを採用した経緯について語りま…

Shirates開発後記(2) - なぜテストの自動化に取り組むのか -

品質管理部の仙波です。 自動テストツールShirates開発後記の2回目です。 前回はShiratesがどういった経緯でオープンソースソフトウェアとして公開されたのかについて語りました。 今回は当社がスマホアプリのテストの自動化に取り組んだ背景について語りま…

Shirates開発後記(1) - Shiratesとは何なのか -

品質管理部の仙波です。 昨年の10月にオープンソースソフトウェアとしてスマホアプリの自動テストツールであるShiratesを公開しました。 techblog.ldi.co.jp その後しばらく時間が空いてしまいましたが、スマホアプリの自動テストに取り組むテストエンジニア…

スマホアプリ用自動テストフレームワーク Shiratesの公開について

品質管理部の仙波です。 スマホアプリ用自動テストフレームワーク Shirates の公開について本ブログで告知します。 スマホアプリ用自動テストフレームワーク Shirates(シラテス) 弊社ではスマホアプリの開発を行なっていますが、近年は機能追加とともに膨…