Multiple Document Interface

MDI、Multiple Document Interface （マルチ・ドキュメント・インタフェース）とは親ウィンドウ内に複数の子ウィンドウを表示して管理するグラフィカルユーザインタフェース方式である。従来のSDI方式ではドキュメントごとにアプリケーションウィンドウを必要とするため、複数のドキュメントを開く際はそれぞれにアプリケーションプロセスを起動しなければならず、メモリやリソースの消費が増えるという問題を解決するために開発された。SDIでは1つのドキュメントに対し、1つのアプリケーションウィンドウ（1つのトップレベルウィンドウ）を使用するが、MDIでは1つのドキュメントに対し、1つの子ウィンドウを使用するMFCにおいて、1つのドキュメントに対して、複数のビューウィンドウを表示する「マルチビュー」という方式も存在するが、SDI/MDIの分類とは異なる。。また、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以降What's New in the Visual Studio 2010 Editor | Microsoft DocsVisual Studio 2010 エディターの新機能 | Microsoft Docsや、タブブラウザでは、ドキュメント/ページを表示しているタブを切り離して独立ウィンドウ化することができる。

マイクロソフトはMDI形式のアプリケーションを推奨していないMicrosoft Windows ユーザー エクスペリエンス FAQ | Microsoft Docs。また、Microsoft Foundation Class (MFC) Managing MDI Child Windows | Microsoft DocsやWindows FormsMultiple-Document Interface (MDI) Applications - Windows Forms | Microsoft Docsでは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が選択できるようになったVisual Studio .NET の紹介 | Microsoft Docs）
 Microsoft Word（Word 2010までは「詳細設定」の「すべてのウィンドウをタスク バーに表示する」にてSDI/MDIの切り替えができたが、2013以降はSDIのみとなった）
 Microsoft Excel（Excel 2010までExcel 2013 からのウィンドウ管理方法変更について – シングル ドキュメント インターフェイス (SDI) – Japan Office Developer Support Blog）
 一太郎
 Opera
 Sleipnir
 PSPad

 脚注 

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

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