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

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

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

こんにちは、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(シラテス) 弊社ではスマホアプリの開発を行なっていますが、近年は機能追加とともに膨…

Appium1.xからAppium 2.0に移行してみた(appium/java-client編)

ども。LDI品質管理部の仙波です。 スマホアプリの自動テストを担当しています。 前回「Appium1.xからAppium 2.0に移行してみた」の記事で、Appium2.0への移行が簡単だったよという話をしましたが、あれはAppium Serverの話でした。 当社ではテストコードはKo…

GO の Lambda関数を Serverless Offline でローカル実行する

はじめまして、LDIで開発をしているOKです。 初投稿になります。 今回紹介するのは、Serverless Framework を利用して、AWS Lambda のプロジェクトの作成から、 AWS環境を利用せずに、ローカルで Lambda + API Gateway を実行するという事をしようと思います…

Appium1.xからAppium 2.0に移行してみた

ども。LDI品質管理部の仙波です。 スマホアプリの自動テストを担当しています。 通常業務が忙しくてしばらくブログ執筆から遠ざかっていましたが、心機一転また情報発信していきたいと思います。 さて、2021年の春頃に、Appium 2.0がもうすぐリリースされる…

KotlinでDateの操作を簡単にするライブラリをつくってみる(その7)

開発者Gです。前回はDateに年月日時分秒ミリ秒を加算、減算するのに便利な拡張関数を追加しました。今回はDate, LocalDate, LocalDateTimeの相互運用について考えてみます。 Date, LocalDate, LocalDateTimeの相互運用 DateInteropExtension.kt 使用例 実行…

KotlinでDateの操作を簡単にするライブラリをつくってみる(その6)

開発者Gです。前回はDateを文字列にフォーマットする拡張関数と、文字列をパースしてDateを取得する拡張関数を追加しました。今回はDateに年月日時分秒ミリ秒を加算、減算するのに便利な拡張関数を追加します。 Calendarで加算、減算を行う方法 CalendarPlus…

KotlinでDateの操作を簡単にするライブラリをつくってみる(その5)

開発者Gです。 前回は日付の操作を簡単にするオレオレライブラリのコンセプトを示し、まずDateとCalendarに関する問題を解決する拡張プロパティを作りました。今回はさらにDateを文字列にフォーマットする機能と、文字列をパースしてDateを取得する機能を拡…

KotlinでDateの操作を簡単にするライブラリをつくってみる(その4)

開発者Gです。前回はSimpleDateFormatに関する諸問題を回避する方法として Apache Commons、Date and Time API、Joda-Time などについて触れ、それぞれの特徴や考慮すべき点について確認しました。いよいよ今回は日付に関するオレオレライブラリを具体化して…

KotlinでDateの操作を簡単にするライブラリをつくってみる(その3)

開発者Gです。前回はSimpleDateFormatの使用例と問題点について書きました。 今回はそれらの問題を回避する他の方法を確認します。 Apache Commonsはどうなの? DateUtils/DateFormatUtils DateUtils/DateFormatUtilsの使用例 実行結果 DateUtils/DateFormat…