データ活用やDXがどんどん解る用語集
デッドロック/ deadlock
「デッドロック/ deadlock」
データ活用やDX成功に必要な考え方を、各種キーワードの解説で理解できる用語解説集です。
今回は、計算機科学(コンピュータサイエンス)でのコンピュータ上での処理の動作に関する基礎知識である「デッドロック」について解説をします。
デッドロック/ deadlockとは
デッドロック(deadlock)とは、複数の資源を利用する、複数の処理(スレッドやプロセスなど)において処理が進まなくなってしまう問題のことです。それぞれの処理が互いに、他の処理が排他的に利用している資源(リソース)の開放を待つ状態となってしまい、どの処理も進まなくなってしまった状態のことを言います。
コンピュータを利用していて、アプリケーションが応答しなくなって「固まってしまう」ことがありますが、デッドロックが原因であることがあります。
目次
デッドロックはどのようにして発生するか
デッドロックは、計算機科学(コンピュータサイエンス)で使われていることが多い言葉ですが、コンピュータに限らず「何かを実行する」状況において一般的に発生する問題です。そこで、日常的なタスクでの例にして、どういう状況で発生する問題なのか紹介します。
以下のような手順で実行する「野菜を切る」タスクがあったとします。
- まな板を確保する
- 包丁を確保する
- 野菜を切る
- 包丁を元に戻す
- まな板を元に戻す
特にどうということはない作業手順だと思います。しかしこの手順で「Aさん」と「Bさん」が同じタイミングで野菜を切ろうとしたら、このようになってしまうことがあります。
Aさん | Bさん |
---|---|
「包丁が利用可能になるまで」待ち状態 |
「まな板が利用可能になるまで」待ち状態 |
こうなってしまったら、AさんもBさんも永久に待ち状態になってしまいます。このような状態のことをデッドロックと言います。先ほどの説明との関係では、「Aさん」と「Bさん」がプロセスやスレッドなどの「処理」に、「包丁」や「まな板」が排他的に利用する「資源」に相当します。
人間のAさんとBさんなら、こんな状態のままずっと待っているなんて間抜けなことは無いのですが、コンピュータプログラムは本当に指示されたことしかしないので、このような状態になると本当に処理が進まずに固まってしまいます。
デッドロックの対策
デッドロックにはいくつか起こりにくくする対策方法があります。以下、代表的なものをいくつか紹介します。
- 資源を確保する順番を決める:
上記の例では、必ず「まな板」を確保してから「包丁」を確保するように確保の順番をつけて、必ずその順番で資源を確保するようにする方法があります。 - 処理に優先順位を決める:
たとえばAさんをBさんより優先順位が高いことにするなど、処理間に優先順位の序列をつけ、AさんはBさんから資源を奪ってでも優先的に利用するルールにする方法があります。 - 資源をひとまとめにする:
「まな板」と「包丁」を別の資源にしているからデッドロックの問題が生じると考え、「まな板と包丁」で一つの資源にする方法があります。 - 一定時間待ったらリソースを開放する:
しばらく待っても待ち状態のままなら、一度自分が確保している資源を開放するルールにする方法があります。
しかし、全てのリソースの順番をつけることは容易ではありませんし、優先順位が低い人がいつまでたっても資源を利用できなくなることも起こりえます。資源を開放するルールも、複数の処理が資源を確保したり開放したりを永久に繰り返してしまう形で「処理が実質的に進まなくなってしまう」別の問題(ライブロック)を引き起こすことがあります。つまり、対策が別の問題を発生させてしまうことがあります。
資源を一つにする取り組みも、例えば「会社の備品全部を一つのリソース」にするとデッドロックは発生しなくなりますが、同時に一人しか働けない会社になってしまって非効率になるなど難しいところがあります。
残念ながら、簡単かつ万能なデッドロック対策はないので、普通にITシステムを作ればデッドロックを防止できるような状況にはなっていません。
対処が難しく、重大な問題にもなりうるデッドロック
「デッドロックが起こりうること」が見つけにくい
厄介なことにデッドロックは問題として発見しづらいことがあります。先ほどの例では、AさんとBさんが「たまたま同じタイミングで」野菜を切ろうと思ったときにしか問題は発生しません。処理タイミング次第で発生したりしなかったりする問題なので、ITシステムがデッドロックを発生しうるような作りになっていても、発見が難しかったり、問題が発生した場合でも原因の特定や発生した問題の再現が難しいことがあります。
厄介なタイミングで問題が発生することがある
処理のタイミング次第であるためデッドロック発生には偶然の要因があり、ずっと問題なく動作しているように見えていたが、稼働開始してからかなり経ってから問題が発覚することもあります。高負荷時に処理タイミングの衝突が起こりやすいため、年末の事務処理集中時期など、システムが固まってしまって困るまさにその状況でこそシステムが応答しなくなることもあります。
社会の安全安心確実を引き受けるITシステムにとって重大問題
PCを使っていて処理が固まってしまったら、しょうがないなあとは思いながら強制終了して再起動すれば済むこともありますが、処理が止まってしまっては困るITシステムが応答しなくなってしまうと大きな問題になることがあります。
銀行のシステムが応答しなくなって銀行振り込みが止まってしまったら大変な事件ですし、飛行機の飛行を制御するプログラムが応答しなくなってしまったら事故になります。デッドロックのような問題は、問題が起こってはいけないITシステムでは発生しないようにしなければいけません。
「ITシステムをきちんと作る」ニーズと、「内製化」のニーズ
昨今、内製化の取り組みが盛んです。変化や不確実性が大きくなり、ビジネスにかつてなく速度が求められる状況になった今、業務の現場が自らITを使いこなすことは、今後ますます求められるようになるでしょう。業務の現場が自らでクラウドを活用している組織も珍しくなくなってきました。
しかし、ビジネスに用いるITを自分たちで作るということは、デッドロックが一例となるような問題の対策も自分たちで行わなければいけないことになります。なんとなく作ったITシステム、エンジニアではないけれど頑張って作ったITシステムというのは、残念ながら問題を起こしてしまうことがあります。
- 自分たちでデッドロックなどの問題を起こさないように、きちんと実装して内製する
- 技術力のある外部に発注する(内製化を諦める)
- デッドロックなどの問題を起こさないように整備されている基盤を活用して内製する
あなたが本業のITエンジニアであるならデッドロックについては当然に理解し、デッドロックが起こらないような実装をし、既存の実装に対してもデッドロックの問題を抱えていないか注意を払うべきで、つまりきちんと理解をしてきちんと作るべきです。
しかし内製化になると話が難しくなります。業務の現場の人たちが「うちのメンバーはデッドロックを起こさない実装くらいできるから大丈夫」のようなスキルまで身につけることは多くの場合現実的ではないでしょう。つまり、自分たち自身で「きっちり作りこむ」ことが難しくなります。
かといって、技術力のある外部に発注するのでは内製化を諦めることになり、昔と同じ状況に逆戻りです。
現実的には「きちんと作ってあるITシステム」を基盤として整備して、それを活用して内製化をするべきなのではないかと思います。その基盤自体でデッドロックなどの注意が必要な問題への対処や配慮がなされていれば、基盤を用いて内製化することで対処や配慮がなされたITシステムを作ることができるからです。
そのノーコード/ローコード製品、大丈夫ですか?
内製化の取り組みでは自社で本格的なプログラミングが行われていることは稀で、何かしらのSaaSの利用(kintoneやSalesforceなど)など、いわゆるノーコードやローコードの製品が、内製化の手段(ないしは基盤)として用いられていることが多いと思います。
それら製品には「簡単に使えるけれども簡易なことしかできない」ものがあります。簡単に作れても、本格的な実装ができずに作る必要があるものが作れなくなる、データ量が増えてきたら処理能力が不足して処理できなくなる、デッドロックで処理が固まってしまうなどで安定稼働しない、セキュリティの問題があっては、業務を任せられるITであるとは言えません。
残念ながら、ノーコードの製品やサービスには、一見今風のデザインの最新技術を用いたものに見えても、趣味のプログラミングと大差ないようなものもあったりします。
内製化に取り組むのであれば、きちんと業務を任せられるだけの安全安心確実な実績と機能を備えた、「プロユース」に適した製品を基盤として導入する必要があります。
「iPaaS」や「つなぐ」技術に興味がありますか?
「クラウド活用」「社内でのデータ活用」「業務の自動化」、これらをうまく進めるポイントは、自社で内製できる「データ連携基盤」を整備することです。
オンプレミスにあるITシステムからクラウドサービスまで、様々なデータやシステムを自在に連携し、IT利活用をうまく成功させる製品を実際に試してみてください。
「つなぐ」ツールの決定版、データ連携ソフトウェア「DataSpider」および、データ連携プラットフォーム「HULFT Square」
当社で開発販売しているデータ連携ツール「DataSpider」は、各社の業務システムを支える基盤として長年の実績がある「つなぐ」ツールです。データ連携プラットフォーム「HULFT Square」はDataSpiderの技術を用いて開発された「つなぐ」クラウドサービスです。
通常のプログラミングのようにコードを書くこと無く、GUIだけ(ノーコード)で開発できるので、自社のビジネスをよく理解している業務の現場が自ら活用に取り組めることも特徴です。
しかも、GUIだけで利用でき、プログラマではなくても十分に使える使いやすさをもちつつ、「高い開発生産性」「業務の基盤(プロフェッショナルユース)を担えるだけの本格的な性能」を備えています。
IT利活用の成功を妨げている「バラバラになったシステムやデータをつなぐ」問題をスムーズに解決することができます。無料体験版や、無償で実際使ってみることができるオンラインセミナーも開催しておりますので、ぜひ一度お試しいただけますと幸いです。
DataSpider / HULFT Squareの「つなぐ」技術を試してみてください:
用語集 コラム一覧
英数字・記号
- 2025年の崖
- 5G
- AES
- AI
- API【詳細版】
- API基盤・APIマネジメント【詳細版】
- BCP
- BI
- BPR
- CCPA(カリフォルニア州消費者プライバシー法)【詳細版】
- Chain-of-Thoughtプロンプティング【詳細版】
- ChatGPT(Chat Generative Pre-trained Transformer)【詳細版】
- CRM
- CX
- D2C
- DBaaS
- DevOps
- DWH【詳細版】
- DX認定
- DX銘柄
- DXレポート
- EAI【詳細版】
- EDI
- ERP
- ETL【詳細版】
- Excel連携【詳細版】
- Few-shotプロンプティング / Few-shot Learning【詳細版】
- FTP
- GDPR(EU一般データ保護規則)【詳細版】
- GIGAスクール構想
- GUI
- IaaS【詳細版】
- IoT
- iPaaS【詳細版】
- MaaS
- MDM
- MFT(Managed File Transfer)【詳細版】
- NFT
- NoSQL【詳細版】
- OCR
- PaaS【詳細版】
- PCI DSS【詳細版】
- PoC
- REST API(Representational State Transfer API)【詳細版】
- RFID
- RPA
- SaaS【詳細版】
- SaaS連携【詳細版】
- SDGs
- Self-translateプロンプティング /「英語で考えてから日本語で答えてください」【詳細版】
- SFA
- SOC(System and Organization Controls)【詳細版】
- Society 5.0
- STEM教育
- The Flipped Interaction Pattern(解らないことがあったら聞いてください)【詳細版】
- UI
- UX
- VUCA
- Web3
- XaaS(SaaS、PaaS、IaaSなど)【詳細版】
- XML
あ行
か行
- カーボンニュートラル
- 仮想化
- ガバメントクラウド【詳細版】
- 可用性
- 完全性
- 機械学習【詳細版】
- 基幹システム
- 機密性
- キャッシュレス決済
- 業務自動化
- クラウド
- クラウド移行
- クラウドネイティブ【詳細版】
- クラウドファースト
- クラウド連携【詳細版】
- 検索拡張生成(RAG:Retrieval Augmented Generation)【詳細版】
- コンテキスト内学習(ICL: In-Context Learning)【詳細版】
- コンテナ【詳細版】
- コンテナオーケストレーション【詳細版】
さ行
- サーバレス(FaaS)【詳細版】
- サイロ化【詳細版】
- サブスクリプション
- サプライチェーンマネジメント
- シンギュラリティ
- シングルサインオン(SSO:Single Sign On)【詳細版】
- スケーラブル(スケールアップ/スケールダウン)【詳細版】
- スケールアウト
- スケールイン
- スマートシティ
- スマートファクトリー
- スモールスタート(small start)【詳細版】
- 生成AI(Generative AI)【詳細版】
- セルフサービスBI(ITのセルフサービス化)【詳細版】
- 疎結合【詳細版】
た行
- 大規模言語モデル(LLM:Large Language Model)【詳細版】
- ディープラーニング
- データ移行
- データカタログ
- データ活用
- データガバナンス
- データ管理
- データサイエンティスト
- データドリブン
- データ分析
- データベース
- データマート
- データマイニング
- データモデリング
- データリネージ
- データレイク【詳細版】
- デジタイゼーション
- デジタライゼーション
- デジタルツイン
- デジタルディスラプション
- デジタルトランスフォーメーション
- デッドロック/ deadlock【詳細版】
- テレワーク
- 転移学習(transfer learning)【詳細版】
- 電子決済
- 電子署名【詳細版】
な行
は行
- ハイブリッドクラウド
- バッチ処理
- 非構造化データ
- ビッグデータ
- ファイル連携【詳細版】
- ファインチューニング【詳細版】
- プライベートクラウド
- ブロックチェーン
- プロンプトテンプレート【詳細版】
- ベクトル化 / エンベディング(Embedding)【詳細版】
- ベクトルデータベース(Vector database)【詳細版】
ま行
や行
ら行
- 量子コンピュータ
- ルート最適化ソリューション
- レガシーシステム / レガシー連携【詳細版】
- ローコード開発(Low-code development)【詳細版】
- ロールプレイプロンプティング / Role-Play Prompting【詳細版】
わ行
おすすめコンテンツ
まずは無料で「つなぐ」をご体験ください
DataSpider Servistaのデータ連携を、まずはお確かめください。30日間無料でお試しいただけます。
DataSpider Servistaの「つなぐ」を体験できる製品紹介・オンラインセミナーを開催しています。