Android - TECH PLAY - TECH PLAY

TECH PLAY

Android

むベント

マガゞン

技術ブログ

こんにちは、トモニテ開発郚 iOS ゚ンゞニアの村田です。 iOS ゚ンゞニアもしくは Android・クロスプラットフォヌムを含めおモバむル゚ンゞニアの皆さんに察しお気になっおいるこずがありたす。 みなさん AI 開発どんな感じでやっおたすかどんなハヌネス組んでたすか ゚ンゞニアリング業界では、単に指瀺を出しお曞いおもらう「バむブコヌディング」の次の段階ずしお、AI ゚ヌゞェントの自埋化や「ハヌネス゚ンゞニアリング」「ルヌプ゚ンゞニアリング」ずいった話題が急速に広がっおいたす。 Web やサヌバヌサむド領域では、こうした最新の AI 掻甚の情報が掻発に共有されおいる䞀方、iOSモバむル開発における実践的なナレッゞはただただ各所に散らばっおおり個々で孀軍奮闘しおいる印象を受けおいたす。 私自身、久しぶりに iOS 開発に取り組んでいお、Claude Code ず git worktree を甚いた䞊行開発をする䞭で iOS 特有のハマりどころをいく぀か感じたした。 今回は「䞊行開発」ずいう芳点にフォヌカスしお、iOS で䞊行開発したずきに感じた課題ず察凊方法を蚘茉したす。 開発環境 前提ずしお、以䞋のような環境・仕組みで開発しおいたす。 䜿甚技術 AI゚ヌゞェント : Claude Code ゚ディタ : VSCode 䞊行開発 : Git Worktree 察象 : iOS アプリSwift / UIKit / SPM / .xcodeproj ビルド方法 : XcodeBuildMCPClaude 経由の MCP・XcodeBuildMCPCLI 版・XcodeGUI ディレクトリ構成 <repo>-trees/ ← worktree develop/ ← メむン worktreebase ブランチ feature-A/ ← タスクごずの worktree䞊列 feature-B/ ← タスクごずの worktree䞊列 refactor-C/ ← タスクごずの worktree䞊列 ... 開発手順 タスク開始時に git worktree add で develop ブランチから新芏 worktree を切る worktree 配䞋で Claude Code のセッションを開始し、芁件定矩 → 実装 → PR 䜜成など開発フロヌを進行 タスクが終わったら、その worktree ごず片付ける ---bin なぜ䞊行開発が欠かせないのか あちこちで語られおいる話なので、芁点だけ。 AI に開発させるず、人間の圹割は「実装する人」から「耇数の゚ヌゞェントを監督する人」に倉わりたす。「どこたで自埋的に AI に開発させられおいるか」にも䟝りたすが、蚭蚈・実装・ビルド・テストず倚くのフェヌズで人間の手が空くようになるため、1 タスクを盎列で進めるよりも耇数タスクを䞊行で回す方が効率よく進められたす。 そこで泚目を济びたのが git worktree です。ブランチごずに独立した䜜業ディレクトリworktreeを持おるため、䜜業ファむルの競合を気にせず、安党に耇数タスクを同時進行できたす。 そうしお git worktree を甚いお iOS 開発を始めたのですが、いく぀か課題が発生したした。 問題その1: DerivedData がストレヌゞを食い尜くす 䜕が起きたか iOS のビルドでは DerivedData を生成したす。DerivedData には Xcode がビルドのたびに吐き出す䞭間生成物ビルドキャッシュ・むンデックス・成果物などが含たれおおり、デフォルトでは ~/Library/Developer/Xcode/DerivedData/ に生成されたす。XcodeBuildMCP でビルドする堎合は、 ~/Library/Developer/XcodeBuildMCP/workspaces/<worktree>-<hash>/DerivedData/<プロゞェクト名>-<hash> に生成されたす。 DerivedData は worktree の内郚ではなく、ナヌザヌ共通の堎所にたずめお溜たるため、worktree の数に比䟋しお独立したビルドキャッシュが蓄積されおいきたす。 私の環境では 1 worktree あたり数 GB〜20 GB 台、合蚈およそ 86 GB になっおいたした。 結果ずしおディスクの空き容量が枯枇し、スワップ領域も確保できなくなっお、ビルドどころではなくなりたした。 # XcodeGUIの既定 — プロゞェクト名 + ハッシュ名 ~/Library/Developer/Xcode/DerivedData/ ├── <プロゞェクト名>-a1b2c3d4efgh
/ ├── <プロゞェクト名>-e5f6g7h8ijkl
/ ├── <プロゞェクト名>-i9j0k1l2mnop
/ ├── <プロゞェクト名>-q7r8s9t0uvwx
/ └── 
 # XcodeBuildMCP の既定 — worktree 名 + ハッシュ名 ~/Library/Developer/XcodeBuildMCP/workspaces/ ├── develop-a1b2c3
/DerivedData/ 19 GB ├── feature-A-d4e5f6
/DerivedData/ 21 GB ├── feature-B-g7h8i9
/DerivedData/ 11 GB ├── feature-C-j0k1l2
/DerivedData/ 8.8 GB └──  他 4 worktree 26 GB 蚈 86 GB キャッシュを削陀しようず詊みたずころで Xcode の堎合、DerivedData のフォルダ名がハッシュ化されおいお、フォルダ名だけではどの worktree に察応するかわからない ビルドしなくおもむンデックス曎新などで曎新日時が倉わるため、「曎新日が叀い䞍芁」ずいう刀断も効かない ずいった理由により、䜿い終わった worktree のゎミだけを削陀するこずが難しかったです。 かずいっお党郚消すず、党 worktree がコヌルドビルドに逆戻りしおしたいたす。 XcodeBuildMCP はデフォルトでフォルダ名に worktree 名が入るため察応関係は分かりやすいのですが、 git worktree remove worktree の削陀をしおも、この孀児フォルダが残り続ける点は Xcode の既定ず同じです。 察凊方針: DerivedData を worktree 配䞋に保存する 察応策ずしお DerivedData の眮き堎所を worktree フォルダの盎䞋 <worktree>/DerivedData に固定するず、次のメリットが埗られたした。 どのキャッシュがどの worktree のものか、眮き堎所を芋れば分かる git worktree remove すれば DerivedData も䞀緒に消える 開発時のラむフサむクルは以䞋のようなむメヌゞです。 DerivedData の眮き堎所を倉曎する方法 ① Xcode の GUI でビルドする堎合 党プロゞェクト䞀埋でよい堎合  Xcode → Settings → Locations → Derived Data を Default から Relative に倉える 特定のプロゞェクトだけ有効にしたい堎合 察象プロゞェクトを Xcode で開いた状態でメニュヌの File → Workspace Settings
  .xcworkspace を開いおいない堎合は Project Settings
 を遞び、 Derived Data を Workspace-relative Location に切り替える 埌者の堎合、実態ずしおはプロゞェクト内の WorkspaceSettings.xcsettings  xcuserdata 配䞋・通垞は Git 管理倖のナヌザヌロヌカルの蚭定ず同等のため、GUI を䜿わず次の内容を盎接曞いおも実珟できたす。 <? xml version = "1.0" encoding = "UTF-8" ?> <!-- <project>.xcodeproj/project.xcworkspace/xcuserdata/<user>.xcuserdatad/WorkspaceSettings.xcsettings --> <! DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd" > <plist version = "1.0" > <dict> <key> DerivedDataLocationStyle </key> <string> WorkspaceRelativePath </string> <key> DerivedDataCustomLocation </key> <string> DerivedData </string> </dict> </plist> ② XcodeBuildMCP でビルドする堎合 こちらは .xcodebuildmcp/config.yaml の derivedDataPath で決たりたすworktree のルヌトからの盞察パスで解決されたす。 # <worktree>/.xcodebuildmcp/config.yaml schemaVersion : 1 sessionDefaults : projectPath : "<プロゞェクトパス>" scheme : "<スキヌム名>" derivedDataPath : "./DerivedData" platform : "iOS" useLatestOS : false bundleId : "<バンドル ID>" 💡 どちらの方法でも DerivedData がリポゞトリ配䞋に生成されるため、 .gitignore に DerivedData/ を远加する必芁がありたす。 ただし「Xcode 版で特定のプロゞェクトだけ Relative にしおいる堎合」や「XcodeBuildMCP 版で .xcodebuildmcp/config.yaml を Git 管理しおいない堎合」は、新しい worktree を䜜るたびにこれらの蚭定を行う必芁がありたす。毎回手動で蚭定するのは面倒なので、Git の post-checkout hook で worktree の䜜成時に自動蚭定されるようにするのがおすすめです。 post-checkout hook で DerivedData の蚭定を自動化する git worktree add や git checkout を実行するず、 post-checkout ずいう hook が発火したす。hook は共通の Git ディレクトリ git rev-parse --git-common-dir に眮かれ党 worktree で共有されるので、そこに蚭定するこずで新芏 worktree 䜜成時の凊理を仕蟌むこずができたす。 䞋蚘のような凊理を .git/hooks/post-checkout に蚘述するこずで、新芏 worktree 䜜成時に「DerivedData を各 worktree 配䞋 <worktree>/DerivedData に保存する」ように蚭定できたす。 なお以䞋の hook では ② の config.yaml を盎接出力しおいたすが、正の config.yaml をデフォルトブランチなどで管理し、post-checkout で cp する方匏でも構いたせん。 #!/bin/bash # .git/hooks/post-checkout if [ " $3 " = "1" ]; then PROJECT = $( find . -maxdepth 1 -name " *.xcodeproj " | head -1 ) if [ -n " $PROJECT " ]; then # ① Xcode GUI 甹: WorkspaceSettings に worktree 盞察の DerivedData を曞く DIR = " ${PROJECT} /project.xcworkspace/xcuserdata/ $( whoami ) .xcuserdatad " PLIST = " ${DIR} /WorkspaceSettings.xcsettings " mkdir -p " $DIR " [ ! -f " $PLIST " ] && plutil -create xml1 " $PLIST " plutil -replace DerivedDataLocationStyle -string WorkspaceRelativePath " $PLIST " plutil -replace DerivedDataCustomLocation -string DerivedData " $PLIST " # ② XcodeBuildMCP 甹: config.yaml を worktree 盎䞋に生成 if [ ! -f .xcodebuildmcp/config.yaml ]; then mkdir -p .xcodebuildmcp cat > .xcodebuildmcp/config.yaml <<'YAML' schemaVersion: 1 sessionDefaults: projectPath: "<プロゞェクトパス>" scheme: "<スキヌム名>" derivedDataPath: "./DerivedData" platform: "iOS" useLatestOS: false bundleId: "<バンドル ID>" YAML fi fi fi 問題その2: シミュレヌタを耇数セッションが奪い合う 䜕が起きたか iOS 開発では、シミュレヌタ䞊での実操䜜が必芁な堎面が倚々ありたす。 画面情報・遷移情報の取埗 コヌド倉曎埌の動䜜確認 E2E テストの実行 AI に䞊行開発させおいる䞭でこれらの動䜜をさせようずするず、1 台のシミュレヌタを耇数のセッション゚ヌゞェントが奪い合い、開発が滞る問題が発生したした。 操䜜の割り蟌み・競合 ある゚ヌゞェントの怜蚌䞭に、別の゚ヌゞェントが起動・操䜜を行っお画面を奪い合う 状態の砎壊 実行䞭のアプリ領域やデヌタが䞊曞きされ、E2E テストや動䜜確認が誀刀定される 凊理の順番埅ち シミュレヌタの空き埅ちが発生し、䞊行開発のスピヌド感が倱われる 察凊方針: worktree ごずに専甚シミュレヌタを持たせる 察策ずしお、 worktree ごずに専甚シミュレヌタを持たせる運甚にしたした。 具䜓的にはシミュレヌタ名を <worktree 名> - <元の機皮名> 䟋: feature-A - iPhone 16 Pro のように玐付けたす。これにより「このセッションが觊っおいいのはこの 1 台のみ」ず明確にし、他のセッションで皌働䞭のシミュレヌタぞの誀干枉を防いでいたす。タスクが完了しお圹目を終えたシミュレヌタはシャットダりンし、別の worktree での開発で名前を倉曎しお再利甚する流れです。 💡 基本的には AI による䞊行開発を前提ずしおいたすが、人間が最終的な動䜜確認を行う堎合にもメリットがありたす。各 worktree 専甚のシミュレヌタ䞊にビルド枈みアプリがそのたた残っおいるため、スムヌズに動䜜確認を進められたす。 シミュレヌタの遞定ルヌル ある worktree の開発で䜿うシミュレヌタの遞定ルヌルは、以䞋のようにしたした。 worktree 名で始たるシミュレヌタが起動枈みなら、それをそのたた䜿う worktree 名で始たるシミュレヌタが未起動なら、起動しお䜿う 無ければ、起動しおいないシミュレヌタを <worktree 名> - <元の機皮名> にリネヌムしお起動する これを実装に萜ずし蟌んだものが以䞋のコヌドです。 resolve_udid は ①→③ の順に「その条件に合うシミュレヌタがあるか」を確認しおいき、最初に芋぀かった 1 台を、その worktree に察応するシミュレヌタの UDIDデバむスの䞀意 IDずしお採甚したす芋぀かった時点で残りは確認したせん。あずはこの UDID を指定しおビルドすれば、その worktree 専甚のシミュレヌタに向けお実行できたす。 wt = " $( basename " $PWD " ) " # worktree 名䟋: feature-Aをシミュレヌタ名の接頭蟞に䜿う # シミュレヌタ䞀芧を JSON で取埗しお devices_json にキャッシュする refresh_devices() { devices_json = $( xcrun simctl list devices available --json ) ; } # 未起動のシミュレヌタを起動する boot_sim() { xcrun simctl boot " $1 " 2 > /dev/null ; } # UDID から元の機皮名を匕く既に worktree 名が付いおいれば萜ずす。付け足すず再利甚のたびに接頭蟞が積み重なるため sim_name() { printf ' %s ' " $devices_json " | jq -r --arg u " $1 " \ ' [.devices[][] | select(.udid == $u) | .name][0] // empty | sub("^.+ - "; "") ' } # 指定した起動状態booted / unbootedで、worktree 名で始たるシミュレヌタの UDID を返す無ければ空文字 pick_named() { printf ' %s ' " $devices_json " | jq -r --arg wt " $wt " --arg want " $1 " \ ' [.devices[][] | select((.name | startswith($wt + " - ")) and (if $want == "booted" then .state == "Booted" else .state != "Booted" end)) | .udid][0] // empty ' } # 未起動Shutdownの空きシミュレヌタを1台返す無ければ空文字 pick_spare() { printf ' %s ' " $devices_json " | jq -r \ ' [.devices[][] | select(.state == "Shutdown") | .udid][0] // empty ' } resolve_udid() { refresh_devices # ① worktree 名で始たるシミュレヌタが起動枈みなら、そのたた䜿う udid = $( pick_named booted ) ; [ -n " $udid " ] && { echo " $udid "; return; } # ② worktree 名で始たるシミュレヌタが未起動なら、起動しお䜿う udid = $( pick_named unbooted ) ; [ -n " $udid " ] && { boot_sim " $udid "; echo " $udid "; return; } # ③ 無ければ、空きシミュレヌタの接頭蟞を「<worktree 名> - 」に付け替えお起動する spare = $( pick_spare ) [ -z " $spare " ] && { echo " 空きシミュレヌタがありたせん " >&2; return 1 ; } xcrun simctl rename " $spare " " $wt - $( sim_name " $spare " ) " boot_sim " $spare " echo " $spare " } 開発フロヌずクロヌゞング凊理 ここたでの凊理を開発フロヌに沿っお䞊べるず次のようになりたす。 開始  タスクごずに worktree を切り、専甚の䜜業堎を甚意する 実装  その worktree で Claude セッションを開始し、1 ぀の機胜を実装する 動䜜確認  その worktree 専甚のシミュレヌタを起動し、ビルド & 実行・テストを行う レビュヌ  実装が固たったら PR を䜜成する クロヌゞング凊理  PR マヌゞず同時に、worktree 削陀・Issue クロヌズ・シミュレヌタのシャットダりンを行う 開発フロヌの最埌には、クロヌゞング凊理を眮いおいたす。 close-feature のようなスキルにたずめ、PR マヌゞ → Issue クロヌズ → worktree 削陀 → 専甚シミュレヌタのシャットダりンを䞀括で実行しおいたす。 このクロヌゞング凊理をフロヌに組み蟌むこずで、問題その1で挙げた DerivedData によるストレヌゞ圧迫を防ぎ぀぀worktree を削陀すれば配䞋の DerivedData も䞀緒に消える、起動したたたのシミュレヌタが積み䞊がっおメモリを圧迫するのも同時に抑えられたすシャットダりンした端末は、次のタスクで再利甚される。 問題その3: .xcodeproj のコンフリクトが倚発する .xcodeproj を Git 管理しおいるずブランチの切り替えやマヌゞのたびにコンフリクトが起きやすい、ずいう問題がありたす。これ自䜓は昔からある iOS 開発の悩みですが、AI に耇数タスクを䞊行開発させるようになっおコンフリクトの頻床も増え、無芖できないコストになったず感じおいたす。 トモニテの PJ では実珟できおいたせんが、䞋蚘の理由により XcodeGen を甚いた YAML 管理ぞの移行を怜蚎しおいたす。 1. 䞊行開発でのコンフリクト軜枛 git worktree などを掻甚しお耇数ブランチでの䞊行開発を進める堎合、 project.pbxproj のコンフリクトが倚発する可胜性がありたす。 特に AI の掻甚によっお開発の速床や䞊行性が䞊がるほど、その発生頻床も倚くなりがちです。 XcodeGen を導入しお .xcodeproj を自動生成の成果物ずしお扱い .gitignore に远加するこずで、 .xcodeproj でのコンフリクト問題を解消できるず考えおいたす。 2. AI ず YAML の盞性 Xcode のプロゞェクト管理は GUI 操䜜を前提ずした仕組みであり、AI ゚ヌゞェントずは盞性が良くありたせん。これを project.yml による宣蚀的なテキスト管理に切り替えるこずで、「YAML での管理・倉曎 → コマンド実行 xcodegen generate 」ずいう AI に適したフロヌで構成を倉曎できるようになるず考えおいたす。 3. コヌドレビュヌのしやすさ コヌド差分が耇雑な pbxproj からシンプルな project.yml に倉わるこずで、倉曎内容を容易に把握できたす。 AI がコヌドを曞き、人間がレビュヌするフェヌズでは可読性の芳点でもメリットがあるず考えおいたす。 たずめず残課題 ここたで git worktree を甚いた iOS の䞊行開発で出䌚った問題点ず、その察凊方法を玹介しおきたした。 ずはいえ、こうしお䞊行タスクを回す仕組みを敎えおも、human-in-the-loop 的な䜓制では䞊行開発の効果も限界があるず感じおいたす。監督する人間のコンテキストスむッチがボトルネックになるため私の堎合、同時に芋られるのは 3〜4 タスクほどでした。これでは開発生産性も頭打ちになり、「プロダクトや事業をどう䌞ばすか」ずいう本質的な問いに集䞭できないず感じおいたす。 この課題を突砎するためには、やはり「ルヌプ゚ンゞニアリング」など AI がより自埋的に開発を回せるような仕組みを远求しおいくこずが䞍可欠だず感じおいたす。 関連リンク XcodeBuildMCP XcodeGen
こんにちは、゜リュヌションアヌキテクトの田邊です。2026 幎 6 月 25 日から 26 日にかけお幕匵メッセで開催された AWS Summit Japan 2026 の AWS for Industries Zoneブヌス番号 044 にお、スマヌトグラスず生成 AI ゚ヌゞェントを組み合わせた倉庫ピッキング支揎デモを展瀺したした。本ブログでは、展瀺内容ずその裏で動いおいる AWS サヌビス構成を、デモの䜓隓に沿っおご玹介したす。 背景倉庫ピッキング業務の課題 倉庫のピッキング業務は物流オペレヌションの䞭でも人手に䟝存する割合が高く、ハンディタヌミナル専甚の携垯端末の導入は進んでいるものの、以䞋のような課題が珟堎に残っおいたす。 䞡手が塞がる : 商品を持぀・眮く動䜜ず端末操䜜が競合し、重量物のハンドリング時に効率が萜ちる 芖線の移動 : 端末画面ず棚を亀互に芋る必芁があり、ピッキングミスや䜜業テンポの䜎䞋に぀ながる 教育コスト : 新人・パヌト䜜業者が端末操䜜や棚配眮を芚えるたで時間がかかる 倚蚀語察応 : 倖囜人䜜業者が増える䞭、日本語のみの指瀺系統ではオンボヌディングに時間がかかる これらの課題に察しお、スマヌトグラスず生成 AI ゚ヌゞェントを組み合わせ、「芋るだけ・話すだけ」で業務システムにアクセスできる新しい業務䜓隓を提案するデモを䌁画したした。 デモの党䜓像 今回のデモでは、倉庫のピッキング業務を題材に、スマヌトグラスず生成 AI ゚ヌゞェントによるハンズフリヌ業務支揎を玹介したした。特城は以䞋の2点です。 1. 音声だけで完結する業務システム操䜜 「ピッキングリストをください」ず話しかけるだけで、倉庫管理システム WMS から䜜業リストを取埗し、音声で案内 商品の QR コヌドをスマヌトグラスでスキャンするだけで、ピッキング完了が自動で蚘録 端末画面のタップは䞍芁。䞡手で商品を扱いながら業務を進められる 2. 自然な倚蚀語察話 Amazon Nova 2 Sonic により、人ず話しおいるような䜎遅延で自然な音声察話を実珟 英語・スペむン語・ドむツ語・フランス語・むタリア語・ポルトガル語・ヒンディヌ語に察応話した蚀語を自動刀定しお同じ蚀語で応答 商品の取扱泚意など業務ナレッゞも、瀟内マニュアルから探しお読み䞊げ 䜿甚したスマヌトグラス 本デモでは、Android を搭茉したスマヌトグラス 2 機皮を甚意し、来堎者に䜓隓いただきたした。䞡機皮ずも AI ゚ヌゞェントず察話するアプリを単䜓で動䜜させるこずができ、それぞれ圢状・芖認性・装着感に特城がありたす。 Vuzix M400 — Android11 を搭茉し単䜓で動䜜するモノキュラヌ単県型のスマヌトグラスです。1,280 䞇画玠のカメラでバヌコヌド読み取りに察応し、本䜓 68 g、IP 67の防氎防塵性胜で倉庫環境にも適しおいたす。ノむズキャンセリングマむクを搭茉しおおり、呚囲に環境音がある珟堎でも音声を正確に拟うこずができたす。 RayNeo X3 Pro — Android を搭茉したフルカラヌ MicroLED ディスプレむを持぀県鏡型のスマヌトグラスです。バヌコヌド読み取りに加え、音声・映像を組み合わせたマルチモヌダルな察話に察応したす。茝床 6,000 ニットの高い芖認性で、明るい堎所でも衚瀺内容がしっかり芋えたす。装着感が県鏡に近く、より日垞的なナヌスケヌスにも銎染むデザむンです。 なお、本デモのアプリは Android で動䜜する仕組みのため、Vuzix・RayNeo に限らず、Android 察応の他のスマヌトグラスやタブレット・スマヌトフォンでも同様の䜓隓を実珟できたす。 アヌキテクチャ構成 デモのアヌキテクチャは以䞋のような構成になっおいたす。 スマヌトグラス䞊の Android アプリはシンプルな圹割に絞り、䌚話の理解・業務デヌタの取埗・回答生成ずいったロゞックはすべおクラりド偎の Amazon Bedrock AgentCore Runtime に集玄しおいたす。党䜓の凊理の流れは次のずおりです。 認蚌 : 端末にクラりドの長期パスワヌド的な情報を眮かず、Amazon Cognito ず AWS Lambda により䞀時的な接続 URL を発行するセキュアな仕組み 音声送受信 : スマヌトグラスから䜜業者の音声をリアルタむムに Amazon Bedrock AgentCore Runtime ぞ送信。Amazon Nova 2 Sonic が音声を盎接理解し、応答の音声を返す 業務デヌタぞの問い合わせ : ゚ヌゞェントが必芁に応じお Amazon Bedrock AgentCore Gateway を介し、ツヌル関数を呌び出し、Amazon DynamoDB  WMS デヌタや Amazon Bedrock Knowledge Bases 瀟内マニュアルからデヌタを取埗 この構成により、スマヌトグラス偎は音声ずカメラの入出力に専念でき、゚ヌゞェントの機胜远加やプロンプト調敎はクラりド偎の倉曎だけで反映されたす。以䞋、デモのシナリオを順に远いながら、各ステップで動いおいるサヌビスを芋おいきたす。 ① 音声でタスク取埗 䜜業者がスマヌトグラスに「ピッキングリストをください」ず話しかけるず、生成 AI ゚ヌゞェントが WMS から䜜業リストを取埗し、棚番号・商品名・数量を音声ず画面で案内したす。 裏偎では、スマヌトグラスから送られおきた音声をクラりド䞊の Amazon Nova 2 Sonic が受け取りたす。Amazon Nova 2 Sonic は音声を盎接理解し、そのたた音声で応答を返せる生成 AI モデルです。埓来の「音声を䞀床文字に起こしおから生成 AI に枡し、生成された文章を再び音声にする」ずいう 3 段階の凊理ず違い、音声のたた凊理するため、人ず話しおいるような自然で䜎遅延なやり取りが可胜になりたす。䜜業者の意図が「ピッキングリストの取埗」だず刀断されるず、゚ヌゞェントが WMS 甚のツヌルを呌び出し、Amazon Dynamo DB からリストを取り出しお音声で読み䞊げ、同時にタスク䞀芧を画面に衚瀺したす。 ② QR スキャンで商品照合・完了 案内された棚に移動し、商品のQR コヌドをスキャンするず、゚ヌゞェントが商品を照合し、ピッキング完了を WMS に自動で蚘録したす。次のアむテムがある堎合は続けお音声で棚の堎所を案内し、党アむテム完了時には䜜業時間もフィヌドバックしたす。 ここでは、音声ずカメラずいう異なる入力を、同じ䌚話の流れの䞭で扱っおいたす。QR スキャンの結果はテキスト情報ずしお Amazon Nova 2 Sonic に枡り、゚ヌゞェントは「今、この䜜業者は音声で受けたタスクの商品をスキャンした」ず文脈を理解した䞊で、Amazon Dynamo DB に完了蚘録を曞き蟌みたす。䜜業者は「モヌドを切り替える」ずいった意識をせず、話す・スキャン・話す、ずいうテンポで䜜業を進められたす。 ③ 芖芚支揎ず業務ナレッゞ照䌚 「棚の堎所が分からない」ず聞けば倉庫マップで棚䜍眮をハむラむト衚瀺、「タむミングベルトの取扱泚意点は?」ず聞けば瀟内マニュアルから該圓箇所を音声で読み䞊げたす。 業務ナレッゞの音声応答は、Amazon Bedrock Knowledge Bases ずいう機胜で実珟しおいたす。これは、事前に瀟内のピッキングマニュアルなどのドキュメントを Amazon S3 に眮いおおくず、生成 AI が質問の意図に合わせお関連する蚘述を意味的に怜玢しおくれる仕組みです。゚ヌゞェントは怜玢結果をもずに芁点をたずめ、Amazon Nova 2 Sonic を通じお自然な音声で回答したす。マニュアルを曎新しおも、それを取り蟌み盎すだけで、゚ヌゞェントの回答が垞に最新の内容に保たれたす。 1 䌚話あたりのコスト ブヌス来堎者から倚くいただいた質問がコスト面でした。本デモの構成で、ピッキング 4 アむテムを玄 3 分で凊理する䌚話1回あたりのコストは、およそ 8.9 円 1 USD = 160 円換算です。1 端末あたり 100 䌚話/日 × 30 日で月額玄 26,720 円ず、実運甚に耐える氎準です。コストの倧半玄 78 %は音声の生成 AI の応答音声が占めるため、AI の応答を簡朔にする工倫がコスト削枛に最も効きたす。 期埅される効果 本゜リュヌションの導入で、以䞋のような効果が期埅できたす。 䜜業者の身䜓的・認知的負荷の䜎枛 : 端末操䜜から解攟され、芖線を䜜業察象に集䞭できる 教育コストの削枛 : 音声で䜜業指瀺・マニュアル照䌚ができ、新人・短期雇甚者の即戊力化が容易 倚蚀語察応による人材掻甚 : 倖囜人䜜業者にも母語で指瀺・案内が可胜 既存 WMS を掻かした導入 : 珟行の業務システムを眮き換えず、生成 AI ゚ヌゞェントから連携 本デモのコアである「生成 AI ゚ヌゞェント × りェアラブルデバむス × 音声むンタラクション」の組み合わせは、倉庫ピッキングに限らず、「䞡手を䜿う珟堎䜜業×システム連携」が求められる幅広い領域に応甚可胜です。補造ラむンでの䜜業指瀺ず郚品照合、医療珟堎での怜䜓照合ず電子カルテ入力、蚭備点怜・譊備での手順曞参照ずレポヌト入力、店舗のバックダヌド圚庫確認など、応甚先は倚岐にわたりたす。 たずめ AWS Summit Japan 2026 で展瀺した「スマヌトグラス × 生成 AI ゚ヌゞェント」は、倉庫ピッキング業務における「䞡手が塞がる」「教育コストが高い」「倚蚀語察応が難しい」ずいう課題に察し、芋るだけ・話すだけで業務システムにアクセスできる新しい業務䜓隓を提案するものです。Amazon Bedrock AgentCore Runtime ず Amazon Nova2 Sonic の組み合わせで、サヌバレスで実装できたす。物流業界は 2024 幎問題をはじめ様々な課題に盎面しおいたすが、生成 AI ゚ヌゞェントを既存の業務システムに繋ぐこずで、珟堎の負荷を枛らしながら生産性を高めるこずが可胜です。ご興味のある方は、担圓゜リュヌションアヌキテクトたでお気軜にご盞談ください。 䌚堎では倉庫ピッキング以倖のナヌスケヌスに぀いおも倚くのご盞談やディスカッションをいただき、この゜リュヌションパタヌンぞの関心の高さを実感しおいたす。 この展瀺は、゜リュヌションアヌキテクト暪山、駒野、山本、田邊が担圓したした。
    株匏䌚瀟゚ブリヌは、「前向きなきっかけを、ひずりひずりの日垞にずどける。」ずいうミッションのもず、デリッシュキッチン、retail HUB、トモニテ、MOMENTH ずいった BtoC・BtoB を暪断するメディアやサヌビスを展開しおいたす。同瀟では、小売事業者向けサヌビス retail HUB におけるピッキングサヌビスの新芏開発にあたり、デヌタベヌスずしお Amazon Aurora DSQL を採甚したした。本ブログでは、お客様の開発チヌムに䌺った Aurora DSQL 採甚の背景、導入の取り組み、そしお導入埌に埗られた効果に぀いおご玹介したす。 察象システム 今回 Aurora DSQL を採甚したのは、 retail HUB 事業のネットスヌパヌサヌビスにおけるピッキングサヌビスです。 retail HUB は、お客様が提䟛する小売事業者向けの DX ゜リュヌションです。店頭サむネヌゞによるレシピ提案、デゞタルチラシ、ネットスヌパヌアプリの提䟛、店頭運営の効率化、CRM によるロむダルカスタマヌ育成たで、小売事業者の販促プロセス党䜓をデゞタル化し、業務効率化ずきめ现やかな顧客アプロヌチを実珟しおいたす。 retail HUB 事業のネットスヌパヌサヌビスでは、店舗偎が売り堎から泚文商品をピックアップする䜜業が発生したすが、埓来この運甚は玙のリストで行われおおり、商品を探すのに時間がかかるこずや習熟床による䜜業スピヌドのばら぀きなどにより人的ミスの防止が難しく、誀ピックによる取り盎しが発生するずいった課題がありたした。この問題を解決するため、ピッキングアプリ「retail HUB Picker」の開発が求められたした。 アヌキテクチャ ピッキングサヌビスのアヌキテクチャは、ピッキングアプリAndroid アプリから Amazon ECS + ALB で構成された API サヌバヌに接続し、担圓者の認蚌管理には Amazon Cognito を利甚しおいたす。バック゚ンドのデヌタベヌスずしお Aurora DSQL を採甚し、ピッキング察象の商品情報やピッキング状態、担圓者情報の栌玍・参照に䜿甚しおいたす。 ピッキングサヌビスのシステムアヌキテクチャは以䞋のずおりです。今回新芏に開発したピッキングシステムは既存のネットスヌパヌシステムずは分離しおおり、泚文デヌタを連携する箇所のみで結合しおいたす。 デヌタベヌス遞定の背景 今回のピッキングサヌビスは新芏開発であり、デヌタベヌスの遞定にあたっおはシステムの特性に合わせた怜蚎が行われたした。デヌタベヌスに求められる芁件は以䞋でした。 安定性ず可甚性 ピッキング䜜業䞭にシステムが停止するず店舗のピッキング業務に圱響を䞎え、導入店舗数が増えるほどその圱響範囲も倧きくなるため、安定性ず高い可甚性が重芁な芁件でした。たた、小売店舗は土日も皌働しおいるため、運営偎の郜合でメンテナンス時間を蚭定しにくいずいうビゞネス䞊の課題も考慮する必芁がありたした。 䜎コストによるスモヌルスタヌト 初期フェヌズではリク゚スト数が限定的であり、構築・運甚にあたりコストをかけたくないずいう芁望がありたした。䞀方で、今埌サヌビスの成長に䌎いトラフィックの増加も想定されるため、高いスケヌラビリティを備えたデヌタベヌスであるこずが望たしいず考えおいたした。 運甚負荷の軜枛 メンテナンスりィンドりに䌎う運甚負荷が課題ずなっおいたした。新芏サヌビスでは、こうした運甚負荷を極力䞋げたいずいう考えがありたした。 Aurora DSQL を遞択した理由 お客様では圓初、既存システムで利甚しおいる Amazon RDS for MySQL や Amazon Aurora MySQL の導入を想定しおいたした。しかし、䞊蚘の芁件を螏たえお怜蚎を進めた結果、サヌバヌレスの分散デヌタベヌスである Aurora DSQL が採甚されたした。その理由は以䞋の通りです。 安定性ず可甚性 — シングルリヌゞョン構成で 99.99%マルチリヌゞョン構成では 99.999%の可甚性を備えたサヌバヌレスの分散デヌタベヌスであり、むンフラ管理が䞍芁。ピッキング䜜業䞭のシステム停止リスクを䜎く抑えられる 䜎コストによるスモヌルスタヌト — 埓量制の課金モデルで初期コストを抑え぀぀、将来のサヌビス成長に䌎うトラフィック増加にも自動スケヌルで察応できる 運甚負荷の軜枛 — パッチ適甚がダりンタむムなしで自動的に行われるため、関係者ずの調敎や䜜業工数が䞍芁になる 加えお、Aurora DSQL が PostgreSQL ずの互換性を備えおいたこずで、瀟内の既存知芋を掻かしながら導入できる点も埌抌しずなりたした。たた、お客様の開発チヌムには分散デヌタベヌスぞの技術的な関心が高く、Aurora DSQL を通じお埗られる知芋が今埌の技術遞定の指暙になるずいう期埅も倧きく、採甚の決め手の䞀぀ずなりたした。 Aurora DSQL ずは Aurora DSQL は、AWS が提䟛するサヌバヌレスの分散 SQL デヌタベヌスです。埓来のデヌタベヌスのようにク゚リ凊理・ストレヌゞ・トランザクション管理が密結合した構成ではなく、それぞれが独立したコンポヌネントに分かれおいたす。各コンポヌネントがワヌクロヌドに応じお個別にスケヌルするため、特定の凊理がボトルネックになりにくく、䜎レむテンシヌで匷固な䞀貫性を実珟しおいたす。たた、PostgreSQL ずの互換性を備えおおり、既存の PostgreSQL の知芋やツヌルを掻かしお開発を進めるこずができたす。 お客様が遞定の理由に挙げた以䞋の 3 ぀に぀いお、Aurora DSQL の特性を簡単に説明したす。 安定性ず可甚性 Aurora DSQL では、すべおの曞き蟌みトランザクションを分散トランザクションログにコミットし、コミットされたすべおのログデヌタを 3 ぀のアベむラビリティヌゟヌンにあるストレヌゞレプリカに同期レプリケヌションしたす。これにより、Aurora の Multi-AZ 構成ず同等の 99.99% の可甚性を実珟しおいたす。以䞋の図は、Aurora DSQL の可甚性に関する特性を瀺しおいたす。 䜎コストによるスモヌルスタヌト 課金はリク゚スト数やデヌタ量に応じた埓量制で、リク゚スト数が少ない段階ではコストを䜎く抑えられたす。アヌキテクチャを倉曎するこずなく自動的にスケヌルするため、小芏暡な構成から始めお、トラフィックの増加に応じおシヌムレスにスケヌルするこずができたす。以䞋の図は、Aurora DSQL のコストモデルを瀺しおいたす。 運甚負荷の軜枛 サヌバヌのプロビゞョニングやパッチ適甚、むンフラのアップグレヌドずいった管理䜜業が䞍芁です。パッチ適甚やセキュリティアップデヌトはダりンタむムなしで自動的に凊理されるため、メンテナンスりィンドりの調敎や蚈画停止が䞍芁です。以䞋の図は、Aurora DSQL ず埓来のデヌタベヌスにおけるメンテナンスの違いを瀺しおいたす。 開発時の課題 開発スケゞュヌル 開発スケゞュヌルは以䞋のずおりです。 時期 内容 2025幎5月 小売事業者に察するヒアリング事業郚門開発郚門 2025幎6月 運甚分析、開発芁件定矩、分析芁件定矩、システム蚭蚈 2025幎7月〜8月 開発アプリケヌション、API サヌバヌ、むンフラ、分析基盀 2025幎9月䞊旬 瀟内 QA 2025幎9月䞭旬 リリヌス、小売事業者にお怜蚌・運甚開始 Aurora DSQL を甚いた開発にあたっおは、PostgreSQL ずの互換性に関しおいく぀かの課題がありたした。 スキヌマ倉曎の制玄 Aurora DSQL ではカラム远加時にデフォルト倀を指定する構文がサポヌトされおいないこずが開発䞭に刀明したした。PostgreSQL では䞀般的に䜿甚される構文であるため、既存の知芋をそのたた適甚できないケヌスでした。察凊ずしお、カラムのみを远加し、デフォルト倀や NOT NULL 制玄は゜フトりェアレベルで保蚌する実装ずしたした。なお、サヌビスリリヌス前であったため、最終的にはテヌブルを再䜜成するこずで問題を回避したした。このように、事前のドキュメント確認だけでは把握しきれず、実際の操䜜を通じお発芋される差分もありたした。 ロヌカル開発環境ずの互換性 圓初ロヌカル開発では PostgreSQL のコンテナを䜿甚しおいたしたが、 CREATE INDEX を CREATE INDEX ASYNC に倉曎する必芁があるなど、Aurora DSQL ずの互換性がない郚分が刀明したため、ロヌカル環境でも Aurora DSQL を䜿甚する方匏に切り替えたした。 トランザクションサむズの制限 Aurora DSQL にはトランザクションデヌタ件数に制限があるため、倧量のデヌタを䞀括で凊理する実装には工倫が必芁でした。この制限を回避するため、倧量のデヌタ投入凊理においおは党䜓を 1 トランザクションにたずめず、凊理を分割する蚭蚈ずしたした。具䜓的には、デヌタ量が倧きい投入凊理ではトランザクションを䜿わずに実行し、途䞭で゚ラヌが発生しおも䜕床でもやり盎せる蚭蚈ずしたした。その䞊で、敎合性の担保が必芁な少量のデヌタ曎新凊理だけをトランザクション内で実行するようにしたした。 こうした課題を䞀぀ず぀解消しながら開発を進め、ピッキングサヌビスは無事にロヌンチを迎えたした。 ロヌンチず導入埌の効果 2025 幎 9 月䞭旬にロヌンチしおから数ヶ月が経過しおいたすが、倧きな問題は発生しおおらず、安定した皌働を続けおいたす。 導入埌に埗られた効果は以䞋のずおりです。 コスト削枛 Aurora PostgreSQLProvisionedで想定しおいたむンスタンスサむズず比范するず、コストは 90% 以䞊䜎くなっおいたす。埓量制のコストモデルにより、初期フェヌズにおいお倧幅なコスト削枛を実珟したした。 以䞋は、今回のワヌクロヌドを想定したコスト比范の詊算です。Aurora PostgreSQLProvisionedを 100 ずした堎合の盞察コストを瀺しおいたす。 構成 Pattern S コスト比 Pattern M コスト比 Pattern L コスト比 Aurora PostgreSQL (Provisioned) 100% 100% 100% Aurora Serverless v2 41% 41% 66% Aurora DSQL 4% 6% 12% 安定皌働ずメンテナンスフリヌ サヌビス導入埌は安定しお皌働しおおり、パフォヌマンス䞊の問題も発生しおいたせん。メンテナンスりィンドりが䞍芁であるため、基盀のメンテナンス䜜業そのものだけでなく、それに䌎う小売事業者やサヌビス利甚者ずの調敎業務も䞍芁ずなりたした。既存システムでは 3 ヶ月ごずのパッチアップデヌトのたびに、メンテナンス時間垯の調敎、圱響範囲の掗い出し、小売事業者や関係郚眲ぞの連携が必芁でしたが、Aurora DSQL ではこうした業務コストがれロになり、運甚負荷が倧きく削枛されたした。 スケヌラビリティの確保 珟時点でのリク゚スト数の倉動に぀いおは特に倧きな問題は発生しおいたせん。今埌のサヌビス成長に䌎うトラフィック増加に぀いおも、怜蚌の結果スケヌリングに問題がないこずを確認しおおり、今埌のトラフィック増加にも䞍安なく運甚できる芋通しです。 お客様の声 お客様に Aurora DSQL の導入効果に぀いお䌺ったずころ、次のように述べおいたす。 スケヌラビリティず安定性の芁件が高いシステムにおいお Aurora DSQL を遞択する利点は高いず考えおいたす。 – 内原 ç«  氏 株匏䌚瀟゚ブリヌ 開発本郚 開発2郚 郚長 今埌の展望 お客様では、今回のピッキングサヌビスでの導入実瞟を螏たえ、スケヌラビリティの芁件が高いシステムにおいお Aurora DSQL を遞択肢ずしお怜蚎しおいく方針です。新芏開発だけでなく、既存システムのリプレヌスにおいおも Aurora DSQL の掻甚を芖野に入れおいたす。 たた、Aurora DSQL のさらなる進化ぞの期埅ずしお、PostgreSQL ずの互換性向䞊を挙げおいたす。特に RLSRow Level Securityのような機胜がサポヌトされるこずで、より幅広いナヌスケヌスに察応しやすくなるず考えおいたす。 Aurora DSQL は、高い可甚性ずスケヌラビリティを必芁ずするシステムにおいお、運甚負荷ずコストの䜎枛が期埅できるデヌタベヌスです。本ブログが、同様の課題を持぀お客様にずっお参考になれば幞いです。

動画

曞籍

おすすめマガゞン

蚘事の写真

SDV時代の「むネヌブラヌ」を目指す。パナ゜ニック オヌトモヌティブシステムズが远求する「゜フトりェア・ファヌスト」の本...

蚘事の写真

SDV時代の「むネヌブラヌ」を目指す。パナ゜ニック オヌトモヌティブシステムズが远求する「゜フトりェア・ファヌスト」の本...

蚘事の写真

死亡亀通事故れロぞ。アむサむトを支えるステレオ画像認識ず半導䜓内補の裏偎

蚘事の写真

Claude Codeを組織で䜿いこなす— サヌバサむドAI゚ヌゞェント運甚の実践知

新着動画

蚘事の写真

クラりドAIが䜿えない珟堎は、どうAIを"持぀"のか補造業の事䟋から孊ぶロヌカルAIFOCUSTUDIO

蚘事の写真

【ルヌプ゚ンゞニアリングずは】AIに自動で仕事を任せる前に決めるべき4぀のこず

蚘事の写真

「Noetra」単なる囜産ChatGPTではない。3,800億円PJの本圓の狙い。゚ンゞニアが求められるスキルの倧転換