1. 今回サンプルの概要
基幹系システムは仕訳データが発生する業務系システムであることは前回、前々回で見てきましたが、その他に基幹系では在庫つまり「モノ」を扱う部分もでてきます。そしてこの「モノ」の部分は入出庫処理などを含む在庫管理システムで扱われることになりますが、これも基幹系での大変重要な機能要素となってきます(注1)。
在庫管理システムでの管理品目は、購入品、製品、それに製造業では資材・部品や仕掛り品など多様ですが、在庫管理システムのポイントはなんといっても正確な在庫数量を把握・維持管理することにありますが、情報システムで扱う場合には次のような問題点も発生しがちでした。
入出庫数量更新での問題
従来の在庫管理システムでは、在庫場所すべてにPCなど入力端末を配置することが困難な場合も多く、従って現場では入出庫数量を紙に記帳し、日単位のバッチ入力で、記帳された数量を端末から入力するようなことも行われていました。しかしこの場合、その日の内に変化した数量は在庫データに反映されないため、システムに登録されている在庫数量への信頼が低くなる様なことも出てきてしまいます。このような場合、正確な在庫数量を知るため、わざわざ倉庫まで出向いて確認(現品確認)しなければならない場合も発生し、時間と労力の大きなロスに繋がってきます。しかし今は、スマートフォン等の携帯端末もあり、これを倉庫現場での入出庫数量入力に使えばリアルタイムでの在庫数量更新も可能になり、情報システムで管理する在庫数量への信頼も向上するでしょう(注2)。連載第4回ではスマートフォンを使用した在庫数量更新のサンプルを紹介します。
トランザクション処理を使用した在庫数量更新
複数ユーザからのデータベース同時更新が発生するようなアプリケーションの場合、あるユーザが更新処理を行っている間は、他のユーザのアクセスを制限して更新が正確に行われるようにする必要があります。もしこれを怠った場合は更新数量が不正確になってしまい、これもシステムの維持・管理する在庫数量への信頼を低下させてしまいます。
この問題への対応はデータベースのトランザクション処理機能によって行われますが、GAEで従来から使用されていたデータストア(Bigtable)ではトランザクション処理(エンティティのロック処理)には一定の制約がありました。しかし、Google Cloud SQLのリリースによってGAEでもRDBのトランザクション処理機能を使用できるようになっています。今回のサンプルでは在庫数量を正確に維持するため、Cloud SQLでのトランザクション処理について紹介します。
ほとんどの業種では商品等で「モノ」(ソフトウェアを含む)を扱いますが、銀行などの金融業では物を取り扱いません。このような業種では基幹系に対応する業務機能は勘定系と呼ばれています。
今回のサンプルでは紹介しませんでしたが、スマートフォンにはバーコード読み取り用のアプリケーションも使用できるようになっており、正確な数量把握をさらに簡単な操作で行うこともできるようになっています。
今回サンプルのシステム構成
今回のシステム構成では標準的なCloud SQLのシステム構成に、クライアント側ではスマートフォン用JavaScriptライブラリのjQuery Mobileを使用しており、GAEサーバ側ではCloud SQLでのトランザクション処理機能を使用しています。
スマ-トフォンとライブラリ
スマートフォンは機種、OS、画面サイズなどが多種多様で、UI作成での対応の難しさがありますが、そうした中で注目されているのが「スマートフォン向けのライブラリ」です。これを使うことによって、デバイス毎の特性の違いが吸収され、わずかなHTMLやJavaScriptの記述でスマートフォンに最適化したサイトを作成できるようになります。
サンプルではスマートフォン向けのライブラリとしてjQuery Mobileを使用しますが、他のライブラリと比べて対応デバイスが多いことが特徴です。サンプルで使用しているAndroid(Galaxy SIII)やiOSなど、WebKit(注3)ベースのスマートフォンの他、Windows PhoneやBlackBerryにも対応しており、さまざまなスマートフォンのUIに自動的に最適化してくれるという特徴があります。
WebKit(Webキット)は、アップルが中心となって開発されているオープンソースのHTMLレンダリングエンジン群の総称で、HTML、CSS、JavaScript、SVGなどを解釈することができます。