検索
連載

イチから全部作ってみよう(34)マルチプログラミングとトランザクション山浦恒央の“くみこみ”な話(203)(3/3 ページ)

ソフトウェア開発の全工程を学ぶ新シリーズ「イチから全部作ってみよう」。第34回は、週末の家事のたとえ話でマルチプログラミングについて理解した上で、データベースにおけるトランザクションについて解説する。

Share
Tweet
LINE
Hatena
前のページへ |       

6.今までの知識を使ってECサイトの購入処理で考える

 前回の排他制御の考え方と、今回のトランザクションを組み合わせて、2つのお客がほぼ同時に同じ商品を購入する場合を考えます(表3)。

お客A お客B
トランザクション開始
在庫データをロックする トランザクション開始
在庫データをチェックする 待機
在庫を減らす 待機
注文データを登録する 待機
コミット(ここでアンロック) 待機
トランザクション終了 待機
- 在庫データをロックする
- 在庫データをチェックする
- 在庫を減らす
- 注文データを登録する
- コミット(ここでアンロック)
- トランザクション終了
表3 同時購入の例

 表3に示す通り、お客Aがロックをかけている間、お客Bは待機します。お客Aのトランザクションが完了してアンロックすると、お客Bは待機状態から処理を再開します。これにより、2人が同時に在庫データを書き換えることを防ぎ、データの整合性を保ちます。

 このように、トランザクションと排他制御を組み合わせることで、複数のユーザーが同時にアクセスしても、データを安全に管理できます。なお、購入処理の実装方法はいろいろありますので、あくまでも例題の一つだと考えてください。

7.終わりに

 今回は、排他制御の振り返りとトランザクションについて説明しました。トランザクションを使うことで、一連の処理をひとまとめにして、問題が発生した場合はロールバックによって変更内容を取り消すことができます。

 世の中には、複数人で使用する製品がたくさんあります。完全に理解できなくても、イメージだけでも伝わればうれしく思います。

山浦先生執筆の書籍が販売中です!

 本連載で取り上げた「ソフトウェア技術者のためのバグ百科事典」を大幅に加筆、修正した山浦恒央先生の書籍「ソフトウェア技術者のためのバグ検出テキスト」が日科技連出版から好評発売中です。連載でも取り上げた、「要求仕様書のバグ」「実装抜けのバグ」「テスト業務のバグ」など、バグを36種類に分類して解説しています。囲碁や将棋であれば、「相掛かり」「矢倉」「四間飛車」「藤井システム」のような戦法を網羅した内容になっています。

 前著「ソフトウェア技術者のためのバグ検出ドリル」(2019年11月刊行)も好評発売中です。実際にバグを含む要求仕様書、設計書、コーディング、デバッグ、保守を具体的に取り上げ、練習問題として31問を出題しました。同書は、囲碁や将棋における「次の一手」的な問題であり、ピンポイントの場面を取り上げ、実践力を鍛えることを目的としています。

ソフトウェア技術者のためのバグ検出テキストソフトウェア技術者のためのバグ検出ドリル 画像クリックで出版社のWebサイトへ

 両書とも興味のある方は、Amazon.comや書店でチェックしてください!

【 筆者紹介 】
山浦 恒央(やまうら つねお)

人間環境大学 環境情報学科 教授(工学博士)


1977年、日立ソフトウェアエンジニアリングに入社、2006年より、東海大学情報理工学部ソフトウェア開発工学科助教授、2007年より、同大学大学院組込み技術研究科准教授、2016年より非常勤講師。2025年4月より、人間環境大学環境情報学科教授。

主な著書・訳書は、「Advances in Computers」 (Academic Press社、共著)、「ピープルウエア 第2版」「ソフトウェアテスト技法」「実践的プログラムテスト入門」「デスマーチ 第2版」「ソフトウエア開発プロフェッショナル」(以上、日経BP社、共訳)、「ソフトウエア開発 55の真実と10のウソ」「初めて学ぶソフトウエアメトリクス」(以上、日経BP社、翻訳)。


Copyright © ITmedia, Inc. All Rights Reserved.

前のページへ |       
ページトップに戻る