SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Cloud SQLで学ぶ業務・基幹系アプリ再入門

Cloud SQLとHTML5のWeb Storageで高速仕訳入力

Cloud SQLで学ぶ業務・基幹系アプリ再入門(2)

  • X ポスト
  • このエントリーをはてなブックマークに追加

2 仕訳データの入力とDB登録

2.1 仕訳データの画面と処理手順

図4 仕訳データ入力初期表示画面
図4 仕訳データ入力初期表示画面

 図4は仕訳データ入力の初期表示画面です。画面右上に「ローカルストレージ」と「クラウドストレージ」のラジオボタンがありますが、これは勘定データを、localStorageアカウント管理画面で登録されたlocalStorageにものを使用するか、またはクラウド上のデータを使用するかの指定になっており、デフォルトはlocalStorageになっています。

補足

 サンプルでは、借方(かりかた)、貸方(かしかた)それぞれ勘定科目1つのシンプルな画面にしてありますが、実際のパッケージソフトなどでは、図5のような仕訳入力画面も含めて何種類かの入力パターンが使用されています。

 しかしサンプルで使用している図4の画面でも、仕訳入力で必要な入力項目や、この後見ていく仕訳入力でのユーザ操作とストレスのない画面表示などを理解する上で問題のない画面と言えます。

 

図5 仕訳入力画面サンプル ASP版商工会経理システム(滋賀県)
図5 仕訳入力画面サンプル ASP版商工会経理システム(滋賀県)
図6 伝票番号の入力から貸方コード入力へ
図6 伝票番号の入力から貸方コード入力へ

 5桁の伝票番号を入力するとカーソルは借方コードに移動します。ここでは日付と会計区分は自動表示をそのまま使用します。実システムでは伝票番号の自動採番もあり得るでしょう。

図7 借方コードの入力と勘定科目名の自動表示
図7 借方コードの入力と勘定科目名の自動表示

 次に5桁の借方コードを入力すると瞬時に勘定科目名が表示されカーソルは借方金額のフィールドに移動します。ここで画面左下に「1ms」と表示されていますが、これは5桁の入力された借方コードでWeb Storageを検索し、勘定科目名を表示するまでにかかる時間を意味しており「0.001秒」という超高速でアクセス・表示でき、借方金額へのカーソル移動を含めても0.002秒程度で済んでいます。

図8 借方金額の入力後、貸方コードの入力から勘定科目名表示
図8 借方金額の入力後、貸方コードの入力から勘定科目名表示

 次に借方金額を入力すると、画面右下の借り方合計にも自動表示されます。ただし、合計金額が入力金額と異なることは当然あるのでその場合は修正します。その後貸方コードを入力すると勘定科目名が自動表示されますが、ここでは0msと表示され、0.001秒もかかっていません。

図9 貸方金額の入力とDB登録
図9 貸方金額の入力とDB登録

 貸方金額入力後、「Alt」キーをクリックするとクラウドサーバへのデータ送信とDB登録処理が行われますが、この処理に要する時間は画面左下にあるように493ms、つまり0.5秒弱になっています。クラウドへの送信処理は「摘要」フィールドにも入力し、そこで「Alt」キーを押した場合も同様に行われます。

クラウドアクセスで勘定科目表示

 最後に画面右上のラジオボタンでクラウドストレージを選択して実行した結果が図10です。図のように貸方コード入力から勘定科目表示まで424msで、約0.4秒ですが若干待たされるという感覚はあります。環境の問題などでlocalStorageが使用できないこともあるかもしれませんが、その場合は0.4秒強程度の待ち時間ということになります。

図10 クラウドDBアクセスで勘定科目表示
図10 クラウドDBアクセスで勘定科目表示
さらに処理スピードの向上

 図9からクラウド上のMySQLへの仕訳データ登録では0.5秒程度時間を要していますが、この待ち時間を短縮する方法としては、次のような対応が考えられます。

  1. 仕訳データ書き込みでのlocalStorage利用

 5MBのlocalStorage容量は100バイトのデータを5万件格納できることになります。従ってサンプルでの仕訳情報の登録内容をlocalStorage書き込みに変更することも可能で、担当者の仕訳入力完了後バッチでクラウドサーバに送信するようにして、さらに処理時間をスピードアップすることができます。

  1. HTML5のWeb Workersを使用したコンカレント処理

 もう一つの方法として、Web Workersを使用したコンカレント処理で仕訳データクラウド送信での待ち時間を実質ゼロにしてしまう方法がありますが、これについては次回サンプルの紹介と解説を行う予定です。

補足

 このように、Web Storageを使用した場合のキー検索・転送時間は、ほとんどの場合1ミリ秒またはそれ以下で、Cloud SQLでクラウド上のMySQLをアクセスする場合に比べて約400倍以上スピードアップしていることになります。

 ところで1ミリ秒というスピードは、ハードディスクアクセスを行った場合は不可能な値で、ディスクキャッシュでも難しいでしょう。従って、このデータアクセスはCPU内蔵キャッシュ(L1キャッシュまたはL2キャッシュ)が使用されていると推定されます。それではどのようなタイミングでキャッシュにデータが格納されるのかということになりますが、次の検索結果から推測できます。

 

  1. localStorageアカウント管理画面でクラウドのアカウントデータをlocalStorageに書き込んだ後は、すべて1ミリ秒またはそれ以下でアクセスされる
  2. localStorage書き込み後、時間をあけて(例えば翌日)アクセスした場合は、最初のアカウント名アクセスで計測では54ミリ秒掛かっており、その後は確認したアカウントコード(約10種類)すべてで1ミリ秒またはそれ以下でアクセスされる

 以上の結果からCPUキャッシュについて、次のように推定されます。

 

  • HTML5のWeb Storageストレージ機能を使用してローカルディスクにデータを書き込んだ場合は、同時にCPUキャッシュにも書き込まれ、他の操作などを行い時間が経過すればそのキャッシュは消去される。
  • キャッシュが消去された後、最初にハードディスク書込のlocalStorageアクセスを行うと、アクセスと並行して、アクセスされたキー・バリュー値だけでなくすべてのキー・バリューペアがキャッシュされ(これはキー・バリューペアの数が増えればまた違ってくるでしょうが)、その後のアクセスでは、どのキー値に対してもキャッシュアクセスのスピードで検索される。

 ところで筆者が使用しているPCでは、プロセッサとして Intel Pentium CPU G620 2.60GHz(2コア)が使用されていますが、このCPUのL2キャッシュは3MBでインテルスマートキャッシュが使用されています。

 従来のCPUでは、コアごとにL2キャッシュを備えていたため、データの重複によるキャッシュ領域の無駄遣いが生じていましたが、インテルスマートキャッシュではコア間でL2キャッシュを共有するため効率的なキャッシュ利用を行えるようになっています。

 

図11 Intel IA-32のCPUとL1、L2キャッシュ
図11 Intel IA-32のCPUとL1、L2キャッシュ

次のページ

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Cloud SQLで学ぶ業務・基幹系アプリ再入門連載記事一覧

もっと読む

この記事の著者

清野 克行(セイノ カツユキ)

慶應義塾大学工学部電子物理専攻卒。日本IBM、日本HPで、製造装置業を中心とした業務系/基幹業務系システムのSE/マーケティングや、分散アプリケーションによる社内業務システム開発などに携わる。現在は、クラウドやAjax関連の/ソフト開発/書籍執筆/セミナー講師/コンサルティング、などを行っている。情...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/6672 2012/07/30 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング