Liner Note

情報(ユーザー中心デザイン・ユーザビリティ)と技術(ウェブプログラミング・ウェブサービス)についてのメモ書き

要約:ウェブを使っていると出くわすあの光景、制作者がテンプレートにするあのやり方って本当にそれでいいのか、ということを考えるために2つの具体例を挙げて考えます

ウェブ上でシステムやウェブサイトを作っていると、技術的な慣習というか、だいたいこうしてやってるよ、というのがありますよね。でも、それで本当にいいのかな、もっといいやり方があるんじゃないの?というのがこの記事の趣旨です。それを説明するために2つの例を挙げたいと思います。いつもながら少し長いですよ。

たとえばセッション切れ(タイムアウト)問題

セッションタイムアウトの例

たとえば、ECサイトなどを作るときにはセッションを使いますよね。サーバ資源を有効に使うために、セッションの管理(保持しているセッションが多くなりすぎないためにセッションのタイムアウト処理をする)というのもごく一般的にされていることでしょう。しかし、ここでの処理方法って本当に正しいんでしょうか(といっても、私個人がセッション処理を実装したことがないので、経験がない分誤りがあるかもしれません。その際はご指摘お願いします)

このブログの読者にセッションを解説する意味もあまりないかと思いますが、自分の理解力を晒す意味で中学生でもわかるくらいにかみ砕いておこう(知っている人は読み飛ばしてください)

まず、ウェブ上で通信するときのお約束の一つとなっているHTTPはステートレス、つまり何回かの通信を行っても各々の通信は独立していて、前にやったことを考慮しないという性質があるんですね。先のリンク先のたとえ話を借りるならば、ファーストフード店で注文するにしても、店員の記憶力が(直前に言ったことを覚えていないくらいに)悪いので、逐一すべての注文内容を書いたメモを渡す必要があるというようなことです。

それで、その内容を書いたメモを「Cookie(クッキー)」と呼んでいて、顧客番号がつけられて従業員カウンターに並べられています(牛丼チェーン店みたいですね)。このときの顧客番号を「セッションID」と言い、お店での一連の流れ(牛丼屋で言えば注文してから、注文内容に応じたものを用意し(出てきたものを食べて)お金を払って、さようならまで)を「セッション」と言います。

このときに同じお客さんの注文受付に何十分もかけていると、店が混雑して入りたい人が入れなくなるので、ある一定以上の時間を過ぎたら、お客さんに列の最後尾に回って注文をやり直してもらうようにします。この一定時間が短すぎると、逆にたとえば注文の途中で悩んでいる時に「お時間がきたので並び直してください」と言われるように、冷たいサービスになってしまいます。ウェブの話に言い換えると、セッションの有効期限を長くしすぎると、サーバの接続数(=店のキャパシティ)が限界を超えて、サイトに接続できなくなるかもしれないですし、逆に短すぎるとじっくり買い物することができなくなります。

参考URL:HTTP cookie – Wikipedia

セッションタイムアウトの例はGoogleで検索してみるといくつか見つけられます。これは、ウェブ上で買い物をしていて、ある程度の時間(30分にしているのをよく見かけます)反応がないと、今までの買い物かごが空になり、初めからやり直さなければならなくなるということです。

このセッションタイムアウト処理は、上の解説でも話したように、現実的にも技術的にも妥当な慣習である気はするのですが、果たして本当にそうなのでしょうか。

まず、インターネットはセルフ・サービスなメディアなので、「客層」は能動的に動く人に偏りますよね(『ユーザ中心ウェブサイト戦略』, p22あたり)。ECサイト、つまりウェブ上の買い物では、カートに入れてすぐにレジに持っていくような人ばかりではなくて、比較のために他の商品を見に行くような人も観察できるのではないかと思います[要出展]。たとえば、Amazonで本を買うときにとりあえず精算の一歩手前まで来たけど、本当にこの本でいいのか、他にいい本がないのか、評判を検索してみたことはないでしょうか。

現実的には30分もカウンター前で精算を迷っていたら、「また後で」というのは至極当然ですが、遠慮不要なウェブ上では精算前に30分検索していても、特段おかしいとまでは言えないでしょう。

30分後に比較が終わって商品をレジで精算しようとしたら、買い物かごが店員に撤去されていた。買い物かごがあった場所にはそれに加えて、「セッションの有効期限が切れました。買い物を始めからやり直してください」とのメモ書きが*1 。現実の買い物よりもお客の流動性が高いウェブで、果たしてお客さんは買い物かごにまた商品をせっせと入れ直すのでしょうか。

どう解決するか

私はこの状況を肯定できないので、解決策を考えます。セッションの有効期限を長くすると言うのはサーバの資源の問題もあって簡単に「サーバ増強で」ともいえないので、そうですね、お客さんが場を離れるときは、買い物かごに「ちょっとこの場を離れますが、購入を完全に諦めたわけではないので買い物かごはここに置いていてください」というお取り置きカードを置いてもらうのはどうでしょうか。

そうやって、明示的に購入する意志を表明してくれた利用者はセッションの有効期限を特別に長くしておきます。また、精算プロセス(発送情報の入力など)に入っている利用者もセッションの有効期限を長くしておきます。エラーでブラウザが落ちる可能性も考慮して、そういう人は特別にブラウザが終了してもセッションが無効にならないようにしておく必要もあるでしょう。

要するに、どの人にも一律に○○分と設定するのではなく、その人のサイト上での関わり具合によってセッションの有効期限を柔軟に設定する仕組みが必要ではないかなと思います(こういう処理って一般的ですか?だとしたら恥ずかしいですが‥)

たとえば本の書影の表示方法

Amazonでの検索結果における書影の表示

Amazonをはじめ、オンライン書店では、本の書影(ジャケット画像)を表示するというのはごく一般的になりました。個人的な感覚としても、モバイル版オンライン書店ですら画像が出なかったら不思議に思うくらいになりました。

でも、この書影の表示方法ってこれがベストで、これ以上改善できるところはないかと言うと全然そうではないわけです。ちょっとそれを説明しましょう。

僕らは本棚からどういう情報を得ているのか

さて、ユーザビリティの経験則(ヒューリスティック)として、実際の大きさがイメージできる商品写真を置くということが言われます。リンク先の記事では、ECサイト訪問者が家具や家電の購入を検討する際に、その製品が家の中に置くことができるかイメージをつかみたいという背景心理があるので、実際に使われている様子など大きさをイメージできる写真を掲載するといいと仰っています。

それで、この場合は家具・家電が対象になっているんですが、これは本も同じだというか、よりそうした情報が重要になると思うんですね。なぜなら本の場合、判型や厚み(ページ数)により本の内容(難易度や目的など)をある程度推定することができるからです。

えっと、論より証拠‥ですね。たとえば以下の2冊は高等教育に関する本*2 です。

  1. 潮木 守一『世界の大学危機―新しい大学像を求めて』
  2. 荒井 克弘, 橋本 昭彦『高校と大学の接続―入試選抜から教育接続へ』

これをまず単純に並べてみましょう。

単純に書影・書誌事項を並べた場合のイメージ

次に、本の付随情報を書影画像に反映してみます。

上記に厚みや大きさなど現実的なイメージを与えた画像

前者と後者では、印象がだいぶ違うなと感じられたのでしたら、それは後者に本を選ぶときの重要な判断材料になりうる(と思われる)ものを加えているからです。

棚に上記の図書が並んでいる画像

ちょっとこの写真を‥これは実際に棚に本を収めた写真なんですが、ここからどのような情報が読み取れるでしょうか。書名、著者名、出版社名、本の色、あるいは本の手触り‥もありますが、加えて、厚さ・高さ・書誌形態(文庫/新書/単行本、ソフトカバー/ハードカバー)も読み取れるでしょう。

そしてこうした情報によって、その本での伝え方や書いてあることが難しいか簡単かがだいたい推定できるんですね。たとえば、新書なら極度にハードルは高く設定していない、逆に専門書ならある程度の前提知識を求められると思っているのではないでしょうか。実際に、大学生に伺ってみても、レポートの締め切りまで時間がないときは新書で適当な図書を探すなど、書誌形態で本を選ぶ傾向も見られました。ですから、上述した本の大きさ、厚さ、書誌形態などの情報は本を選ぶ上で結構重要な情報で、そういう情報を半ば無意識的に本棚から得ているんですね。

しかし、翻って先ほどの検索結果から、僕らはこうした情報を得られるでしょうか。書影画像はだいたい似たような高さで、ペラペラな画像として表現されています。もちろん、本の詳細(個別)画面からそれらを文字情報として確認することはできます。

しかし、であるよりも一覧画面でそれが確認できた方がより直感的なのは間違いないでしょう(それが現実の情報行動なのですから)。現在制作中の図書館蔵書検索システムでは、こうした考察を反映したものにしています。

編集後記

紙面の関係上*3 、今回、いろいろ思った中の一例をまとめました。総じて、リアル店舗で行ったらハテナと思われるようなことが、ウェブ上ではほいほいまかり通っているのはいつも疑問に思います。

啓蒙というのは苦手なので*4 、個人の考え方、あるいは「そうあってほしい論」にとどめますが、ウェブを作る人間としてウェブで何か作るにあたっては、そのサービスを利用する人がどういう人なのかを考えてサービスするのは当然として、加えて現実での類似行動に照らしてみて、おかしいところはないのか。またインターネットという媒体の性質を考慮すると、この行動は妥当といえるのか、をクリアにしてからだろうと思います(といっても、設計による解決策からじゃなく、使っている人の利用状況をきちんとわかってからじゃないと=コミュニケーションを取る上で相手が誰なのか知ることが必要だろうと一応注釈しておきます)。

  1. 図書館情報学をかじってない人に「機関リポジトリから論文をダウンロードできます」と言うようなものですね[戻る]
  2. 子細な分類になると全然違うんですが[戻る]
  3. あんまり長いと誰も読まないので[戻る]
  4. 正確には啓蒙のやり方にもいろいろ方法があるんじゃないかということです[戻る]
キーワード:

似たもの記事

読者の皆さんの反応サイト内コメントの更新情報(RSSフィード)

読者のコメント

4

ブックマークコメント

5

他サイトの関連記事

0

読者のコメント

  1. お名前

    もぎゃ

    投稿日時
    2008年11月21日
    11時ごろ
    Comment No
    #1

    セッションタイムアウトの必要性は、サーバの能力の問題というよりは、セキュリティ上の必要性なのでは。

    ・ユーザーAがユーザー名とパスワードを入れてある商品を買おうとしました。
    ・ユーザーAは何らかの原因で、清算前にパソコンを離れてしまいました
    ・そこへふらりとユーザーBがやってきて、清算前のカゴに他の商品を追加して、そのまま精算してしまいました。

    というような事態を防ぐためにタイムアウトさせるのだと理解しています。

    なので、カゴに商品を追加した後、店内を見て回っている間はタイムアウトしないようにするのが普通だと思うのですけど…そうなっていないですか?

  2. お名前

    もぎゃ

    投稿日時
    2008年11月24日
    21時ごろ
    Comment No
    #3

    おっしゃる通りです。適切なタイミングでパスワード聞くようにするのが正しいと自分も思います。

    ただ、
    >セッションの有効期限を長くしすぎると、
    >サーバの接続数(=店のキャパシティ)が限界を超えて、サイトに接続できなくなるかもしれない
    という説明だと、まるで技術的制限(たとえば、サーバへの同時接続数の制限のような)によりタイムアウトせざるを得ないように読めてしまったので、そうじゃないと思う、という指摘でした。

はてなブックマークでつけられたコメント

hiro_yさんのプロフィール画像  hiro_y
現実で世界での行動に即して考えること。
その行動は本当に妥当なのか考えること。
isaisstillaliveさんのプロフィール画像  isaisstillalive
書影に厚みやカバーなどの情報を付与させるという発想には目から鱗
faultierさんのプロフィール画像  faultier
単順にサーバ資源の問題というよりも、セキュリティに関わる設計の問題だと思うのだけども / ってコメントにちゃんと書いてた。
そうそう、そういう話ですね。
/ 書影画像は良いなぁ
kokokubetaさんのプロフィール画像  kokokubeta
非常にためになるお話。
ECサイトについては、カートページ/購入完了ページからもといた商品閲覧ページに戻るボタン以外で立ち戻れる方法が欲しいなあ。
ageha0さんのプロフィール画像  ageha0
ブクログはわりとたのしいと思う。
http://booklog.jp/

他サイトの関連記事

トラックバックはまだ寄せられていません


トラックバックとは
この記事に言及したサイトをこちらに掲載する仕組みをトラックバックと言います。ここでは、このサイトに頂いたトラックバックを一覧表示しています。
トラックバックしてくださる方へ
この記事への言及がない記事など、トラックバック受信方針に沿っていないものは、読者にお見せしても仕方ないこともあり削除させていただいることをご了承ください。
トラックバックを受け取るためのURI

コメント書き込みフォーム

  • メールアドレスはウェブ上で公開したり、連絡以外で使うことはありません
  • コメントを公開したくないが、作者に連絡を取りたい場合は メールで連絡してください
  • 本文中にHTMLコードは使用できません(URLはそのままお書きください)