悩ませるiframe内表示Webアプリ問題とは?5開発者を悩ませるiframe内表示Webアプリ問題とは?フレーム内に小さなブラウザのようにWebページを表示してくれる「iframe」。特別な技術は必要ないのに、さまざまな問題に直面してしまうことが多く、開発者を悩ませます。今回はこの問題について解説します。撮影/佐藤聡)作成日:12.09.27Cookieを利用したセッション管理ができなくなるのはなぜ?こんにちは、ミクシィの鈴木理恵子です。前回は身近なWebの世界でよく使われているiframeを、利用シーン別に分類してご紹介しました。ソーシャルアプリ型、ソーシャルプラグイン型、ブログパーツ型、ポータル型がありましたね。iframeはまるで小さなブラウザであるかのように、フレーム内にWebページを表示してくれます。そのため、iframe内Webアプリは、通常のWebサイトとほぼ同じ開発方法で作成ができ、特別な技術は必要ありません。同じ開発方法で問題ないかというとそうでもなく、そのままだとさまざまな問題に直面してしまいます。「Cookieを利用したセッション管理ができない場合がある」という問題は、アプリ完成後に各ブラウザで動作テストするまで気づかないことも多く、しばしば開発者を悩ませます。今回はこの問題について取り上げたいと思います。Webアプリのセッション管理を思い出しましょう。Webアプリは、一般的にセッション管理が必要です。Webアプリは多くのユーザから同時にアクセスを受けます。HTTPリクエスト自体は1回毎に独立していて、そのままではどのユーザがどのような順番でアプリを利用しているのか、アプリは知ることができません。そこでセッション管理を行います。あるアプリで商品をカートに入れる動作が10回あったとします。セッション管理をしていれば、その10回の動作がそれぞれどのユーザによって行われたのかを判断することができます。一般的にセッション管理は、Cookieを利用して行われています。あるユーザが最初にWebアプリを利用するときに、アプリはそのユーザを一意に区別できる値を生成して、サーバに保存します。この値をCookieにも保存します。ブラウザには、HTTPリクエストを送信するときに、同じドメインにより保存されたCookie情報も一緒に、サーバへ送信する働きがあります。そのため、これ以降このブラウザからWebアプリへ送られるリクエストには、ユーザを一意に区別できる値が付属します。Webアプリはどのユーザによる動作なのかを判断することができます。このようなセッション管理は通常フレームワークが処理を代行して隠蔽してくれるので、その仕組みを意識することは少ないかもしれません。一般的にセッション管理はCookieを利用していると述べました。ところがiframeの中に表示されているWebアプリの場合、Cookieに情報を保存しようとしても、ブラウザが拒否することがあります。Cookieを利用したセッション管理が動作しない場合があるのです。iPhoneのデフォルトブラウザであるSafariですが、まもなく発売されるiPhone5に搭載されているiOS6(※1)からは、iframe内のWebアプリが発行するCookieを受け入れないようです(※2)。iOS5のSafariでは動作していたiframe内アプリもiOS6のSafariでは動作しない可能性があるので注意が必要です。iframeは小さなブラウザのようにフレーム内にWebページを表示します。以前はいまより多くのブラウザでiframeの中からCookieを登録することができました。実はこのiframeの機能を利用すると、ユーザに気づかれることなくユーザのWeb閲覧履歴を取得することができる場合があります。前回ご紹介したソーシャルプラグイン型や、ブログパーツ型はサイズが小さいものが多いのです。そのため、ユーザはWeb画面上にこれらが配置されていても画面デザインの一部として認識し取り立てて気にすることはないでしょう。ユーザはサイトAのみ訪問しているつもりでも、実はサイトAに設置されているiframeの中のサイトBにも同時に訪問しているのと同じなのです。サイトBはiframeが設置されているのがサイトAだと知っているので、あるユーザがサイトAにアクセスしてページを表示した、ということがわかります。このiframeがサイトAだけでなく多数のサイトに埋め込まれていた場合、サイトBは「ある特定のユーザがいつどのWebサイトにアクセスしたか」といったWeb閲覧履歴を、Cookieを利用してトラッキングすることができてしまいます。いままでユーザのWeb閲覧履歴をトラッキングするかどうかは、Webアプリ提供者のプライバシー・ポリシーに委ねられています。ポリシー上で明確にトラッキング行為は行わないと明記しているサービスも存在します。最近は、そもそもブラウザがiframe内WebアプリのCookie利用を制限することで、ユーザのプライバシーを守ろうとする動きがあります。Safariの例も、そのような流れから発生したものなのかもしれません。Cookieは昔から親しまれているWebの基本的な技術でCookieを利用したiframe内Webアプリも非常に多く存在するためか、ブラウザの種類やバージョンによって動作はまちまちなのが現状です。Cookie問題」などと呼ばれています。Partyと呼ぶことも合わせて覚えておくとよいでしょう。Cookie問題等と呼ばれるユーザのプライバシーに関する問題がある」ことをお伝えしました。次回は、iframe内Webアプリはどのようにセッション管理をしたらよいかについて紹介する予定です。iOS6およびiPhone5製品版については、執筆時点ではまだ本記事で取り上げた内容の動作確認をしておりませんので、ご了承ください。PartyアプリとしてもCookieの送信がされるようです。この動作はデフォルトの設定(Cookieの受入れ設定:訪問先のみ)の場合に起こります。コアプロダクト開発G所属。青春時代はギター制作に明け暮れていたが、一転、IT業界に転身しプログラマとなる。API等のアプリプラットフォーム開発を担当。鈴木理恵子のアプリ開発ビギナー向け講座ミクシィ鈴木理恵子が、アプリ初心者の方向けに、聞きたくても聞けないアプリ開発の初歩的なノウハウや失敗回避法などを伝授します。開発者を悩ませるiframe内表示Webアプリ問題。前回はその現状についてお伝えしましたが、今回はiframe内Web...ミクシィ鈴木理恵子mixiWebアプリスマートフォン...ミクシィ鈴木理恵子の“アプリ開発ビギナー向け講座”Webアプリ制作に役立つ「iframe」利用シーン一挙紹介WebアプリやWebサイトの拡張、マッシュアップして連携するために使われるインラインフレーム「iframe」。Dataというクラウドサービスを利用し、アプリ開発初心者でも大量のデータを高速かつ簡単にデータ...ミクシィ鈴木理恵子mixiWebアプリデータ解析...ミクシィ鈴木理恵子の“アプリ開発ビギナー向け講座”アプリデータ解析ができるおすすめクラウドサービスアプリ開発で欠かせないのがデータ解析。前回ご紹介した「mixi、Facebookで活用できるアプリ自動生成機能」。求人の募集要項にあるスキルは満たしていたのに、なぜか結果は不採用。Tech総研リクルートグループサイトへ。