タブアプリケーションの不思議

いま、我々が目にするほとんどのウィンドウズアプリケーションはタブアプリケーションになっている。
たとえば、ブラウザがそうだ。ChromeもIEもEdgeもSafariも上にタブが表示される。テキストエディターなどでも、タブがいいとして歓迎されているコメントを見ることがある。

しかし、かつてタブアプリケーションは一般的なものではなかった。Windowsのアプリケーションのガイドライン、基本的なAPIというのは、SDI(シングルドキュメントインターフェイス)、つまり1ドキュメントに1ウィンドウを割り当てるのか、MDI(マルチドキュメントインターフェイス)つまりアプリケーションを立ち上げると親ウィンドウが立ち上がって、その中に複数の子ウィンドウを立ち上げるか、どちらかが基本だった。

昔OfficeはだいたいMDIだった。つまり、ワードを立ち上げると空っぽで、その中に複数の文書を開くことができた。またブラウザはIE6まではSDIだった。一つのWebページは1つのウィンドウで開けた。

MDIの場合、一つの親ウィンドウ中に複数のウィンドウを並べて表示することができた。たとえばExcelで2016年度の決算書類を作るとする。そのときに2015年の決算書類を同時に開いて、一つのExcelの中に2つ並べて表示して、コピーしたり参照したりできた。SDIでもできなくはないが、上のリボン・・・かつてはリボンもなくてメニューバーだったわけだが・・・も重複して表示されることになる。これは自分が思うに多分無意味だ。

本当はリボンが出てきたときも、自分は開発者として戸惑った。ウィンドウズの基本となるプログラミングインターフェイスAPIの中には、メニューバーやアクセラレータつまりキーボードのコマンドでアプリケーションを動かす仕様が最初から仕組まれている。開発者は自分でメニューバー用のウィンドウやステータスバー用のウィンドウを細かくプログラミングする必要はなかった。ウィンドウズのガイドラインに沿って埋め込めば、ウィンドウズがきちんとメニューバーを表示してくれた。それは、Windowsのバージョンが変わって、多少メニューバーのデザインが変わったとしても、常に新しいものに対応する表示がなされた。
Officeでメニューバーがなくなってリボンが出てきたときに、Microsoftは当然リボン用のインターフェイスを用意しているだろうと思ったが、少なくとも当時それはなかった。今は勉強不足で知らない。多分ないんじゃないか。自分もああいうインターフェイスのプログラムが簡単に作れるか、と思ったらそうではなかった。
タブもそうなのです。タブアプリケーションが出始めた頃、ウィンドウズの標準の仕様として、TDI(タブド・ドキュメント・インターフェイス)のAPIが出るかと思ったが、そういうものはなかった。ということは、タブはそれぞれの開発者が自分たちの仕様でそれを作成すると言うことだ。
そんなのありですか?AさんとBさんと、タブのクラスの名前も構造もまるっきり違うものを作るかもしれないじゃないですか。

それだけではなくて、自分はタブの操作性も疑問に思っている。

SDIの場合、ALT+TABキーでウィンドウの移動ができる。たとえばあなたがYahooの画面を見ていて、同時に地図も見て、メモ帳に知りたいことを書くというような作業をするとする。そうするとALT+TABキーで、地図を選んだり、Yahoo検索画面を見て、メモ帳に移ったり簡単にできる。
しかしタブアプリケーションではできないのです。メモ帳かブラウザか。そしてブラウザを見た上で、マウスでタブを選んで地図を見るのか検索画面を見るのかを選ばなければならない。

MDIやSDIの場合、画面を並べることができる。
たとえばオリンピックのエンブレムで盗用が指摘されて、あなたは興味を持ってそれを確認したいと思ったとしよう。そうすると、一つのウィンドウに元の画像を表示し、もう一つのウィンドウにコピーして作られたエンブレムを表示し、2つのエンブレムを並べて表示して比べることができる。ところがタブはそれができないのです。
開発者の場合、自分が開発している2つのコードを単純に見比べるというようなことがしたいものじゃないですか。でも、タブのアプリケーションだと、そういう単純なことができない。

なので、自分はタブアプリケーションにメリットは感じられない。
ほかの機能の点で優れているから、何らかのタブアプリケーションを使うと言うことはもちろんあるのだけれど、根本的にいいところがあると思えないのです。
何がうれしくてタブアプリケーションを人々は歓迎しているのだろうか。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください