Multiple Document Interface

MDI、Multiple Document Interface （マルチ・ドキュメント・インタフェース）とは親ウィンドウ内に複数の子ウィンドウを表示して管理するグラフィカルユーザインタフェース方式である。従来のSDI方式ではドキュメントごとにアプリケーションウィンドウを必要とするため、複数のドキュメントを開く際はそれぞれにアプリケーションプロセスを起動しなければならず、メモリやリソースの消費が増えるという問題を解決するために開発された。SDIでは1つのドキュメントに対し、1つのアプリケーションウィンドウ（1つのトップレベルウィンドウ）を使用するが、MDIでは1つのドキュメントに対し、1つの子ウィンドウを使用する。また、MDIのドキュメントウィンドウは親ウィンドウにロックおよびクリッピングされる。

既存のSDI形式のアプリケーションソフトウェアをMDI化するには、設計に変更を加える必要がある。

Microsoft OfficeはかつてSDIからMDI化したが、その後は再びSDIが標準となり、MDIはオプションとしてサポートされるようになった。さらに後継のバージョンでは、SDIのみがサポートされるようになっている（厳密に言うとSDIではなく後述のMTIに相当する）。

問題点 
一般的にMDIは開かれたウィンドウの管理が問題だとされる。SDIアプリケーションであればタスクバーなどで開かれたウィンドウの情報を一覧できるが、MDIでは通常、子ウィンドウの一覧を確認するためにユーザーがメニューなどからウィンドウ一覧表示機能を実行しなければならない。そのためのMDIアプリケーションはこの問題を解決するためタブ機能やタスクバーへの一覧表示機能を装備することでこの問題を解決するようになった。多くのMDIアプリケーションは親ウインドウとの結合・子ウインドウ分離を一括で管理される。1つをMDI化しようとすれば全てがMDI化され、ひとつを親ウインドウと結合しようとすれば全てが親ウインドウと結合される。分離・結合を個別に管理するのはOperaなどごく一部のアプリケーションのみである。MDIはタブ方式のアプリケーションと一緒くたにされる場合もあるようであり、実際タブ方式のアプリケーションと同じように使えるアプリケーションもあるが、通常タブ方式でウィンドウを管理するアプリケーションは個々を子ウィンドウ化してその大きさを変更するようなことはできない。Microsoft Visual Studio 2010以降や、タブブラウザでは、ドキュメント/ページを表示しているタブを切り離して独立ウィンドウ化することができる。

マイクロソフトはMDI形式のアプリケーションを推奨していない。また、Microsoft Foundation Class (MFC) やWindows FormsではMDIがサポートされているものの、後発のWindows Presentation Foundation (WPF) やWindowsランタイムではMDIがサポートされていない。

なお、タブ方式のインタフェースはTabbed Document Interface (TDI) と呼ばれる。

また、SDIに似ているが、1つのアプリケーションプロセス中で、親ウィンドウを持たない複数のトップレベルウィンドウを表示する形態をMultiple Top-level Interface (MTI) という。macOSはClassic Mac OSから伝統的にこのスタイルのみを用いる。MS Officeの新しいSDIもこの形式である。ドキュメントごとにプロセスを起動しないので、メモリやリソースの消費を抑えることができる。

MDIを使用したアプリケーションの例 
 Adobe Photoshop (CS4以降はMDIではなくTDIが標準となった)
 Eudora
 Microsoft Visual Studio（.NET以降はMDI/TDIが選択できるようになった）
 Microsoft Word（Word 2010までは「詳細設定」の「すべてのウィンドウをタスク バーに表示する」にてSDI/MDIの切り替えができたが、2013以降はSDIのみとなった）
 Microsoft Excel（Excel 2010まで）
 一太郎
 Opera
 Sleipnir
 PSPad

脚注

関連項目 
 グラフィカルユーザインタフェース
 Single Document Interface
 タブ
 タブブラウザ

ドキュメント・インタフェース
ユーザインタフェース技術
グラフィカルユーザインタフェース