フレームに意味はあるのか?

フレームとは

フレームは嫌われ者です。

flame というのも嫌われますが、ここで言うのは frame の方です。HTML4.0 Frameset で採用された FRAME 要素ですが、いちおう正式(?)採用されたにもかかわらず、人気はいまひとつです。何故フレームが嫌われるのか、少し書いてみます。

嫌われる理由

フレーム? 何それ

フレームに対応していないブラウザというものがあります。とはいえ、フレーム非対応ブラウザの為に NOFRAMES 要素が用意されているので、それをうまく使えば全く問題にはなりません。

わかりにくい

むやみに画面が分割されていると、何処に注目したらよいのか分からなくなることがあります。また、ホイールマウスのホイールを回したら意図しないところがスクロールしてしまった、などということもあります。

とはいえ、それはたいてい設計に問題があるのであって、ユーザが迷わないようにきちんと設計されていればほとんど問題にはなりません。

画面が狭くなる

分割すると、どうしても画面が狭くなってしまいます。別ページになっていればウィンドウを重ねることで画面を広く使えるのに……。

これもある意味設計上の問題なのですが、フレームをオフにできないブラウザ側の問題でもあります。たとえば IE などには「フレームを新しいウィンドウで開く」という機能を追加したり出来るので、それをうまく使えば問題にはならないはずです。

操作できない

恐ろしいことに、本気で全く操作できないフレームというものがあります。メニューが外にはみ出してしまっていて一部の項目がクリックできない上、スクロールバーも何もないのでその項目を画面に表示させることも出来ない……という恐ろしいフレームがかなりたくさんあります。

これもやはりそういう設計にするのが悪いのですが。

印刷できない

フレーム分割されていないページであれば単純に印刷できます。一枚に収まらなければ二枚目、三枚目と出力されるだけです。

しかし、フレームで分割されたページが一枚に収まらない場合……これはどうやって印刷すれば良いのでしょうか? 画面キャプチャを印刷するようにしてはみ出す部分を切り捨てるか、あるいはフレームの中の個々の文書を個別に印刷していくか……。いずれにしても印刷しようとするユーザはかなり混乱します。正直に言いますが、私はフレームで分割されているページを一度でうまく印刷できた試しがありません。

フレーム分割というものは、screen や tv 以外のメディアには根本的になじみません。結局、個々のフレーム内容を個別に扱うしかないのです。

ブックマークできない

実は、これが私がもっとも致命的だと考えるフレームの欠点です。

フレームはブックマークできないのです。リンクも出来ません。

何を言っている、私はフレームをブックマークしているしリンクもしている、と言う人もいるでしょう。しかし、そこでブックマークしたりリンクしたりしているのは、あくまで外側のフレームであり、フレーム分割されたページの初期状態だけではありませんか?

フレームで分割されたメニューをクリックして、文章が書き変わりました。この状態でブックマークしたい、あるいはこの状態にリンクしたい……そう思ったことはありませんか? しかし、それはきわめて困難です。フレームの初期状態にリンクしても意味がないので、フレーム内部の文書にリンクするしかありませんが……。

そうなると結局、個々の文書を個別に扱うことになります。

そう考えてみると……

まず、フレームが嫌われるのは、ロクでもないフレームの使い方をしているからであることが多いようです。きちんとアクセシビリティに考慮して設計されたフレームであれば、それほどひどく嫌われることはないはずです。

そして、「きちんと考慮されたフレーム」では、中身の文書はフレームから切り離して個々に扱えるように設計されています。フレームに対応していないブラウザ、フレームに対応していないメディア(たとえば印刷)、リンクする際などに、中身の文書が個々に扱われるということを考慮しているからです。

……そうなると、そもそもそれがフレームで分割される必要があるのでしょうか? フレームでなくても問題なく使えるものを無理にフレームにする必要もない……そうは思いませんか?

そんなわけで、フレームには意味がないと私などは思うわけです。

嫌われる理由番外編

HTML4 Strict で使えない

HTML4 Strict には FRAME 要素も target 属性もないので、フレームを使うことが出来ません。だからフレームは嫌われる……?

……などという馬鹿げた話はありません。フレームを使いたければ Frameset / Loose DTD を使えば良いだけの話です。HTML4 Strict にはフレームがありませんが、「フレームがあまり好ましくないから Strict にない」のであって、「Strict にはフレームがないから好ましくない」というのは本末転倒です。たまに「HTML4 Strict にはフレームが無いけれどどうしてもフレームを使いたい、どうしたら良いか」などと質問される方がいらっしゃいますが、「フレームを使いたい」という発想が出てきた時点で、その設計思想はもはや Strict DTD でのマーク付けにはなじみません。

超FAQ

良くある質問。

frequently と言うか、あまりにも多すぎてウンザリさせられます。だから「回答者」レベルの人はフレームが嫌いなのだ……というのは穿ちすぎだと思いますが、ともかくウンザリさせられるのは確かです。

そんなわけで

使うならちゃんと設計してください。あまり報われないような気はしますが。


鳩丸ご意見番

HTML鳩丸倶楽部

水無月ばけら, MINAZUKI Bakera
E-mail: bakera@star.email.ne.jp