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

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

2025-01-01から1年間の記事一覧

【Android】パラメタライズドテストの導入

はじめに パラメタライズドテストとは? パラメタライズドテストの書き方 最後に はじめに Androidエンジニアの篠本(ささもと)です。 今回は、テストコードのメンテナンス性向上を目的にパラメタライズドテストを導入しましたので、パラメタライズドテストに…

LiteLLMを利用したAI活用基盤を紹介します

AI

はじめに 記事を開いていただきありがとうございます。サーバサイドエンジニアのオーです。 今回は「LiteLLMを利用したAI活用基盤」をテーマに「システム構築例」と「運用面のメリット」を簡単に紹介します。 LDIでは、業務生産性の向上の一環としてAIの導入…

ご当地からあげクンをできるだけ簡単に2種類買いたい。エリア限定商品の空間解析

こんにちは、データ分析チームのIです。今回はご当地からあげクンのお話をさせていただきます。 1. ご当地からあげクン 2. 最短距離の探索と計算 3. 最短店舗探索の実行 4. からあげクンが2種類買える最短距離の店舗 4.1 東北と首都圏 4.2 首都圏と中部 4.3 …

【Android】startActivityForResultとonActivityResultのdeprecated対応

はじめに startActivityForResultとonActivityResultとは? deprecatedの内容と置き換え方法 置き換えのメリット 遷移元画面の結果受け取り処理の可読性向上 ActivityResultContractによる返り値の型の強制 最後に はじめに Androidエンジニアの篠本(ささも…

【Android】GlobalScopeの置き換え対応

はじめに GlobalScopeとは? GlobalScopeがdelicate扱いに 対応方法 最後に はじめに Androidエンジニアの篠本(ささもと)です。 今回、delicate(取り扱い注意)のGlobalScopeをwithContext(NonCancellable)に置き換えまして、そのご紹介をさせていただきます…

【Android】getSerializableやgetParcelableのdeprecated対応

はじめに getSerializableとgetParcelableとは? deprecatedの内容 対応方法 最後に はじめに Androidエンジニアの篠本(ささもと)です。 今回は、AndroidのgetSerializableやgetParcelableなどで発生しているdeprecated対応についてご紹介させていただきます…

スマホアプリ自動テストフレームワークのShiratesを画像認識技術で改良しました

プロジェクトディベロップメント部の仙波です。 スマホアプリ用自動テストフレームワーク Shirates(シラテス) を画像認識技術を活用して改良しました。 メジャーアップデートです。macOSで利用できます。 github.com 旧バージョンが抱えていた問題 Shirate…

Swift 6のTyped throwsを活用する型安全なエラーハンドリング

はじめに iOSエンジニアの申です。今回はエラーハンドリング時に発生した問題とTyped throwsの活用についてご紹介させていただきます。 発生した問題とその原因 エラーが返される可能性がある関数を実行した際にエラーが発生した場合、そのエラーをハンドリ…

生成AIで単体テストシナリオを作成!プロンプトで工夫したことなどご紹介

AI

ローソンデジタルイノベーション(LDI)のiOS/Android開発リーダーの阪口です。 LDIでは、アプリ開発スピードの向上のため、生成AIを活用した作業効率化を実施中です。 今回は施策の一つである、生成AIで単体テストシナリオ作成を実施した例をご紹介させていた…

DiffableDataSourceで表示が更新されない? Hashable実装の落とし穴

はじめに SectionIdentifierTypeとItemIdentifierTypeをHashableに準拠させる上での注意点 【注意点】Hashable実装の落とし穴:表示内容の変更が反映されないケース 理由の解説と解決策 理由 解決策 最後に はじめに こんにちは、ローソンデジタルイノベーシ…

HTMX 入門しました - 編集画面編

LDIで開発担当しているOKです。 前回に続き HTMX を使った事をやっていきます。 今回はコンテンツの一覧を表示・編集・削除ができる画面を HTMX を交えて作っていきます。 完成するとこんな感じのページになります。 編集画面完成形 ディレクトリ構成 実装一…

HTMX 入門しました

ご無沙汰しております。LDIで開発担当しているOKです。 今回のテーマですが、 普段はWebのフロントエンドとか全然やってないのですが、 訳あってHTMXを使ってみたので、アウトプットも兼ねてまずは導入部分について記事にしようと思います。 HTMXとは とりあ…

AndroidアプリをAAB対応した際に発生したトラブルとその解決方法

こんにちは、LDIのモバイルアプリエンジニアの庄司です。 今回の記事では、AndroidアプリをAAB対応した際に発生したトラブルとその解決に行った方法について書きます。 はじめに Androidアプリ開発において、Google Playへの配信形式が従来のAPKからAAB(And…

M4 Macで発生したiOSアプリの開発環境でのGemfile.lockの設定トラブルと解決方法

iOS

ローソンデジタルイノベーション(LDI)のiOS/Android開発リーダーの阪口です。 iOSアプリの開発環境で、fastlaneの導入やCI/CDの環境構築など、Gemfileが必要になる機会がいくつかあるかと思います。 今回は、Gemfile.lockの設定で発生したトラブルと、その解…

DifyとAws Bedrockを統合してプライベートなマルチモーダルAIチャットボット構築を簡単に試す

AI

はじめに 背景技術の概要 Difyとは AWS Bedrockとは マルチモーダルAIとは システム構築の説明 システム構成・処理の概要 Difyの構築 (Docker環境) DifyにAWS BedrockのLLMモデルを統合 DifyにAWS Bedrock Knowledge Baseの統合 Difyにファイルアップロード…

Tips:Xcode16系での実機ビルド時のお役立ち情報

iOS

ローソンデジタルイノベーション(LDI)のiOS/Android開発リーダーの阪口です。 今回は、最近Xcode16系で発生した実機(iPhoneまたはiPad)デバッグ時のトラブルの対処法についてTipsを2点紹介します。 実機デバッグ時のTips Tips1:初接続の実機ですぐ実行が…

【Xcode16】【iOS18】CombineでcompactMapを使用するとアプリがクラッシュしてしまう問題とその解決方法

はじめに 実行環境 発生した事象 調査内容 パターン1. compactMapの前にメインスレッド指定を行う パターン2. compactMapを削除する パターン3. メインスレッド指定をなくす パターン4. compactMapとメインスレッド指定をなくす クラッシュの原因 対応策 対…

「Slack × AWSで実現!」社内AIチャットボットを紹介します

AI

はじめに チャットボットの実用例を紹介 ①新しい会話を始める ②引き続き会話を行う ③Slack Workflowを利用し会話を始める (カスタムオプション指定) システム構成・処理概要の紹介 システム構成図 仕様についての補足 今回の活動で改善した課題 今後の活動に…

DiffableDataSourceを活用する画面のちらつき対策とパフォーマンス改善

はじめに iOSエンジニアの申です。今回は画面のちらつき対策としてDiffableDataSourceへの移行を実施し、その効果についてご紹介させていただきます。 開発環境 Xcode 16.1 iPhone 15(iOS 18.1.1) 画面のちらつき問題対応 基本的な画面表示の流れ 画面を表…