Multiple Document Interface
MDI、Multiple Document Interface (マルチ・ドキュメント・インタフェース)とは親ウィンドウ内に複数の子ウィンドウを表示して管理するグラフィカルユーザインタフェース方式である。従来のSDI方式ではドキュメントごとにアプリケーションウィンドウを必要とするため、複数のドキュメントを開く際はそれぞれにアプリケーションプロセスを起動しなければならず、メモリやリソースの消費が増えるという問題を解決するために開発された。SDIでは1つのドキュメントに対し、1つのアプリケーションウィンドウ(1つのトップレベルウィンドウ)を使用するが、MDIでは1つのドキュメントに対し、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以降[2][3]や、タブブラウザでは、ドキュメント/ページを表示しているタブを切り離して独立ウィンドウ化することができる。
マイクロソフトはMDI形式のアプリケーションを推奨していない[4]。また、Microsoft Foundation Class (MFC) [5]やWindows Forms[6]では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が選択できるようになった[7])
- Microsoft Word(Word 2010までは「詳細設定」の「すべてのウィンドウをタスク バーに表示する」にてSDI/MDIの切り替えができたが、2013以降はSDIのみとなった)
- Microsoft Excel(Excel 2010まで[8])
- 一太郎
- Opera
- Sleipnir
- PSPad
脚注
編集- ^ MFCにおいて、1つのドキュメントに対して、複数のビューウィンドウを表示する「マルチビュー」という方式も存在するが、SDI/MDIの分類とは異なる。
- ^ What's New in the Visual Studio 2010 Editor | Microsoft Docs
- ^ Visual Studio 2010 エディターの新機能 | Microsoft Docs
- ^ Microsoft Windows ユーザー エクスペリエンス FAQ | Microsoft Docs
- ^ Managing MDI Child Windows | Microsoft Docs
- ^ Multiple-Document Interface (MDI) Applications - Windows Forms | Microsoft Docs
- ^ Visual Studio .NET の紹介 | Microsoft Docs
- ^ Excel 2013 からのウィンドウ管理方法変更について – シングル ドキュメント インターフェイス (SDI) – Japan Office Developer Support Blog