1. 使い方

    ※インデックス機能はありません

    ※IE で見るとちょっと残念なことになります。ごめんなさい!

  2. inucara.net を支える技術

    2008-05-19
    The JUI 2008 Tokyo
    inucara / Kentaro Ohno
  3. Agenda

    1. inucara.net について
    2. 基本コンセプト
    3. サービスの紹介
    4. ユーザビリティ向上の細かい話
    5. まとめ
  4. inucara.net
    について

  5. あらためまして、
    はじめまして、
    inucara です。

  6. inucara.net

    Screen Shot
  7. サービス

  8. わずか 2 ヵ月で立て続けに 7 つのサービスをリリース

  9. アクセス数うなぎ登り

    alexa

    ユニークユーザ数:約 6 万 / 1 日

  10. inucara.net では
    ほぼすべてのサービスで
    JavaScript を使って、
    ユーザビリティの向上を図っています

  11. そこで今日は、

  12. 各サービスの紹介をしつつ、

  13. ユーザビリティ向上のために
    気をつけた
    ちょっと細かい話を
    したいと思います

  14. 基本コンセプト

  15. inucara.net の原動力

  16. それは

  17. 苛立ち

  18. 世の中には使いにくいサイトが多すぎる!

  19. それだけならまだしも

  20. 利用者は、その使いにくさに気づいてすらいない!

  21. 「これはすごい」「これは便利」

  22. いやいやいやいや

  23. あなたの使ってるそのサービスは工夫次第でもっともっと便利になりますよ!

  24. きっと一般的なユーザは、ウェブサイトは分かりにくいものだ、使いにくいものだという印象を持ってしまっている

  25. 本当にインターネットは難しい?

  26. 勉強して練習して使い方を覚えなきゃいけない?

  27. そんなことない!

  28. inucara.net はそんなウェブに対する

  29. アンチテーゼとして始動しました

  30. 「今まで考えたこともなかったけど、これをこう変えるだけでこんなに使いやすくなるんだ!」

  31. 「これを使っちゃうと、今までがどれだけ使いにくいものだったか分かるね」

  32. もちろん僕の作ったものが「正解」だとは思っていません

  33. 提供しているのは使いにくさに気づく単なる“きっかけ”です

  34. これをきっかけにたくさんの人がウェブの使いやすさを考え直してくれればいいと思っています

  35. サービスの紹介

  36. 壁紙サーチ

  37. 壁紙サーチ

    スクリーンショット
  38. 壁紙サーチ

  39. 壁紙サーチ

  40. 実装

  41. SmoothTube

  42. SmoothTube

    スクリーンショット
  43. SmoothTube

  44. 当時、YouTube から
    リンクが張られていた、
    API 利用のサンプルサイトを見て、

  45. なんだこれ!
    使いづらい!

  46. 僕ならもっといいもの作れる!

  47. と思って作りました

  48. SmoothTube の実装

  49. Hatebladder

  50. Hatebladder

    スクリーンショット
  51. Hatebladder

  52. Hatebladder の実装

  53. 完璧画像検索

  54. 完璧画像検索

    スクリーンショット
  55. 完璧画像検索

  56. 1000ブクマされるサービスを作る
  57. 達成!

    1000ブックマーク越え
  58. コンセプト

  59. たとえば……

  60. ウェブ検索は、検索結果が自分の求めている情報かどうか判断するときのコストが大きい

    1. 検索結果のタイトル、サマリーを読む
    2. リンククリック
    3. ページの読み込みを待つ
    4. ページ内から目的の情報を探し出す
    5. 前後の文と併せて読んでみる
  61. コストが大きいぶん、
    目的の情報と違ったときの
    がっかり感も大きい

  62. でも……

  63. 画像検索は求めている画像かどうかの判断がとっても簡単

  64. サムネイル見るだけで
    「あり」か「なし」か
    一瞬で判断できる

  65. つまり……

  66. ノイズがあってもいいから、画像のみ出来る限りのスピードで見せていけばいい!

  67. 掲載サイトの URL やサマリーもいらない!

  68. あとは人間が「あり」か「なし」か
    勝手に判断してくれる!

  69. 検索精度について

  70. よく完璧画像検索は
    精度が高いと言われます

  71. 「Google よりいい!」
    「Yahoo! よりいい!」
    なんて声も……

  72. もちろん、そんなことはない

  73. ノイズいっぱい

  74. では、なぜこんな声が出てくるのか?

  75. それは

  76. 脳内フィルタリングのおかげ

  77. 完璧画像検索は一度に大量の画像が表示されるうえ、

  78. つぎつぎと新しい画像が出てくる

  79. すると見ている人は、関係ない画像を無意識的にフィルタリングしだす

  80. 見なかったことにしてしまう

  81. 見る人の錯覚や思い込みも
    UI に取り込んでしまう

  82. 完璧画像検索の実装

  83. Hatebladder2

  84. Hatebladder2

    スクリーンショット
  85. Hatebladder2

  86. Hatebladder2

  87. コンセプト

  88. はてなブックマークを見やすくするよー、って謳ってるサービスが世の中にはいくつかあるみたいだけど、

  89. 全部見にくい!><

  90. 僕ならこうするよー!

  91. Hatebladder2 の実装

  92. Twitladder

  93. Twitladder

    スクリーンショット
  94. Twitladder

  95. Tumview

  96. Tumview

    スクリーンショット
  97. Tumview

  98. ユーザビリティ向上の
    細かい話

  99. ユーザビリティ向上の細かい話 1

  100. 自動ページング

    いわゆる AutoPagerize

  101. 自動ページング

    var results = $('results');
    Event.observe(results, 'scroll', function(e){
    	if(results.scrollTop > threshold){
    		threshold += 500;
    		// ここで新しいページを追加!
    	}
    });		
  102. 自動ページング

  103. ユーザビリティ向上の細かい話 2

  104. スクロールに合わせ、現在位置表示を動的に更新

    ページング1 壁紙サーチ
    ページング2 SmoothTube
    ページング3 Tumview

    16-35 ってところ

  105. スクロールに合わせ、現在位置表示を動的に更新

    Event.observe($('results'), 'scroll', function(e){
        // ここで現在位置を計算!
        $('current').innerHTML = start + '-' + end;
    });
  106. スクロールに合わせ、現在位置表示を動的に更新

  107. ユーザビリティ向上の細かい話 3

  108. 画面解像度を取得しセレクトボックスに挿入、デフォルトでセレクト

    スクリーンショット

    マイナーな解像度にもその場で対応!

  109. ユーザビリティ向上の細かい話 4

  110. ウィンドウサイズに合わせ、サムネイルの列数を修正

    スクリーンショット1
    スクリーンショット2

    常に十分な再生領域を確保

  111. ウィンドウサイズに合わせ、サムネイルの列数を修正

    var html = document.documentElement;
    var results_style = $('results').style;
    var player_style = $('player').style;
    Event.observe(window, 'resize', function(e){
        var width = html.offsetWidth;
        // ごちゃごちゃと計算したあと
        results_style.width = results_width + 'px';
        player_style.width = player_width + 'px';
    });
  112. ウィンドウサイズに合わせ、サムネイルの列数を修正

  113. ユーザビリティ向上の細かい話 5

  114. 使い慣れた UI をそのまま踏襲する

    パクリ1 パクリ2

    livedoor Reader のパクリ

  115. 使い慣れた UI をそのまま踏襲する

  116. ユーザビリティ向上の細かい話 6

  117. 先読みとキャッシュ

    先読み
  118. 先読みとキャッシュ

    function pre_load(page_id){
        if(cache[page_id])return;
        var url = 'page?id=' page_id;
        $.get(url, function(results){
            cache[page_id] = results;
            setTimeout(function(){
                cache[page_id] = null;
                // 3分後にクリア
            }, 180 * 1000);
        });
    }               

    利用者にストレスを感じさせない!

  119. ユーザビリティ向上の細かい話 7

  120. スムーズな視線移動を助ける

  121. スムーズな視線移動を助ける

    見た目、単調!

    単調
  122. スムーズな視線移動を助ける

  123. スムーズな視線移動を助ける

  124. スムーズな視線移動を助ける

    さりげない補助線

    補助線
  125. まとめ

  126. いろいろと細かい話をしてきましたが、

  127. 一番言いたかったのは、

  128. 「使いにくい」は悪!

  129. そしてその悪をやっつけるために JS は絶対欠かせない技術!

  130. みなさんももう一歩進んだ使いやすさを考えてみてください!

  131. あと、よかったら見てください

    http://inucara.net/

  132. ご清聴ありがとうございました

    inucara