QR・ICカードを使った現金チャージ機 〜 兎にも角にも設計が重要 〜

実績紹介
【案件名】現金チャージ機smoocha開発
【担当範囲】設計 / 開発 / テスト / 運用
【技術要素】開発:Kotlin
環境:Tinkerbord Android(ASUS)
【主要要件】地域循環型キャッシュレス決済システムのカード(IC・QRコード)に現金をチャージする据え置き型チャージ機のアプリを開発する。
課題

本案件は、現金投入機を搭載するボードを制御しつつ、投入された金額を決済サーバに対してAPIを介してチャージを行います。
最大の課題は、投入された現金を確実にカードへ反映させること、そして連続稼働に耐えうる信頼性を確保することにある。この要件を満たすため、設計段階を最重要課題として位置づけ、堅牢な仕組みづくりに取り組む必要がある。

  • 確実にチャージさせる為の設計
    現金投入機からのイベントを取りこぼさないことが絶対条件である。
    そのため、アクティビティやフラグメントに依存せず、常時イベントを受け付けられる独立設計が必須となる。さらに、画面操作やタイムアウト発生時など、クロスシーケンスが発生するケースについても、設計段階で明確に定義しておくことが不可欠である。
  • 連続稼働テストを想定した設計
    本アプリは基盤制御に依存しており、実際には現金投入やカードタッチなど人の操作を伴わなければ動作しない。そのため、実機に頼らず、アプリ単独でシナリオに沿った連続稼働テストを実行できる仕組みをあらかじめ設計に組み込む必要がある。
解決方法

課題を達成する為、重点的に3つの設計を行なった。

バックグラウンド制御

基盤からのイベントは、アクティビティやフラグメントに依存せず、バックグラウンドで確実に受信できる設計とした。万一フラグメント側でイベント処理が失敗した場合でも、バックグラウンドで動作するサービス内にて投入金額を保持する仕組みにより、保持情報をもとにリカバリー処理を実行可能である。

シーケンス図

本チャージ機アプリは、メンテナンス画面を除き7画面程度で構成される。しかし作成したシーケンス図は、イレギュラー処理を含めると 60ページ超 に及んだ。
現金投入に伴うイベントは、カード離脱、無操作タイムアウト、画面操作(中止・遷移)、基盤からの通知など多岐にわたる。これらのクロスシーケンスを網羅的に洗い出し、丁寧に設計を行なった。

基盤のモック

基盤がなくてもアプリを独立して動作させられるよう、コードを変更することなく基盤制御を基盤モックへ切り替え可能な設計とした。このモックは、記述したシナリオに沿って稼働し、UIのテストコードと組み合わせることで、全ての動作を網羅する連続稼働テストを実現する。
さらに、利用メモリの記録も残すことで、長時間稼働に耐えうる強固なアプリケーションへと仕上げる。

成果

本チャージ機は現在も継続的に稼働しており、以下の検証を実施している。

運用での検証
  • 現金・チャージの整合性検証
    チャージ機内での現金投入記録と、決済サーバ側でのチャージ記録を定期的に照合。紙詰まりなどのイレギュラー発生時にも、両者に差異がないことを確認している。
  • 連続稼働
    本機は電源を落とさずに運用している。リアルタイムOSではないため当初は懸念があったが、メモリ使用状況の監視なども問題なく、実際に長時間の連続稼働に耐えていることを確認できた。

阿部 恭三

株式会社L's Craftsman代表
経済産業大臣登録 中小企業診断士
統括プロジェクトマネージャー

メーカーでのソフトウェア開発を通じて技術的な基盤を築き、20年以上にわたり、運用設計から品質管理まで一貫した IT サービスを提供できる総合的な技術力を保持。さらに、中小企業診断士の資格を有し、経営に近い立場での実務経験を重ねることで、経営計画の立案から事業の具現化・実行・成果達成まで、幅広い視点と高い実行力を兼ね備えている。

タイトルとURLをコピーしました