Think Future, Imagine Alternative, Create Real!Drupal Modules Developed By TransNetCreation

「Indexed Database API」を用いて、そのサイト内での索引機能を提供する
目的ページへの直接的アクセス手段の提供により、サイトのユーザビリティを向上させる

TNC Personal Index Module

TNC Personal Index Module は、Drupal 7 における Block Module として、それがコールされる各ページにおいて、ユーザーに対してそのサイト内での個人化された索引機能を提供します。具体的には、ユーザーが当モジュールを介してインデックス登録するページ情報を、HTML5 の一機能である「Indexed Database API (IndexedDB)」を用いて、そのユーザーが利用しているブラウザが管理するデータベースに保存します。そして、そのユーザーがインデックスを呼び出すことで、ブラウザのデータベースから保存されているインデックス情報を読み出し、当該ユーザーに対して提示します。それにより、ユーザーは、そのサイトにおいてよく利用するページや有益であると思うページなどを個人的にインデックスに登録し、かつ、サイト内のどのページにおいてもそのインデックス内のリンクからいつでも目的とする当該ページに直接アクセスすることができる、というわけです。サイトの大規模化・コンテンツの充実化に伴うサイト構造の複雑化・ナビゲーション階層の多層化により、一方では、ユーザーにとってはサイトが「わかりにくい」「使いにくい」「目的ページへの到達に時間がかかる」という状況が生まれやすくなりますが、当モジュールは、インデックスという形でユーザーに対して目的とするページへの直接的なアクセス手段を提供することにより、サイトのユーザビリティの向上を図ります。「Personal Index」とは、言わば「ユーザー自身によりカスタマイズ可能な個人的ナビゲーション機能」であり、それにより、そのサイトが、ユーザーにとっての有益な「情報・知識基盤(Information Base / Knowledge Base)」、さらには、新たな「知識創造の場(Knowledge Creating Field)」「思考促進の場(Thinking Incubating Field)」としてより良く活用されることを目指しています。
2012年03月19日 UPDATE|Firefox 11(2012年03月13日リリース)上での稼働を確認しました。
2012年02月03日 UPDATE|Firefox 10(2012年01月31日リリース)に対応しました。
2012年01月23日 UPDATE|通常権限ユーザーに対して、「区切りバー」の挿入・削除機能を提供するようにしました。
2012年01月23日 UPDATE|当モジュールの名称を「TNC Personal Index Module」へと変更しました。
2012年01月13日 LAUNCH|当サイトにて、実運用を開始しました(ログインユーザー対象)。Information No.0029
(アップデート内容の詳細につきましては、このページの最下部にてインフォメーションしております。)
管理面での特徴
(1)ユーザーによるインデックス項目の「追加」と「削除」のアクションの場合には、リクエストを一旦サーバーに送信し、サーバー側において追加・削除の件数を把握するようにしています。その際には、(現時点においては)ユーザーの個人情報は取り扱わず、集計のみを行っています。また、各インデックス項目の「修正」については、サーバーへの送信は行われず、クライアント側のみで行われるようになっています。(※信頼可能ユーザーのみでの利用も想定し、「追加」「削除」についてもサーバーとの送受信を介さずに完全にクライアント側でのみ稼働させるオプションの実装も検討中)(2) IndexedDB の「データベース」「オブジェクトストア(リレーショナル DB における「テーブル」に相当)」の名称は、可能な限りのセキュリティ向上を意図して、サイト管理者が設定可能としています。(3)ユーザーのインデックスに登録されるページの「タイトル」「URL」については、サーバー側からクライアント側に指定されるデータが使用され、このモジュール内では変更できないようになっています。ただし、信頼可能ユーザーは「タイトル」の変更も可能となっています(2012年01月23日、機能追加・修正)。(4)URLのクエリ文字については、「(A)許可しない」「(B)ホワイトリスト法によるフィルター」「(C)ブラックリスト法によるフィルター」「(D)無制限(関知しない)」の4つのパターンに対応しています。「ホワイトリスト法」による場合には、キーと共に、値についてのフィルタリングも可能となっています。また、(C)(D)については信頼可能ユーザー限定での使用を想定しています。(5)信頼可能ユーザーに対しては、「カテゴリー」「ノート(メモ・覚書)」の入力を許可することもできます。ただし、デフォルトで指定するユーザーに対しては、これらの機能は提供されないようになっています。
利用面での特徴
(1)(当モジュールの使用権限のある)ユーザーは、当モジュールがコールされる全てのページにおいて、(A)当該ページのインデックスへの「追加(登録)」、(B)インデックスに登録された情報の「修正」「削除」、が可能となります。(2)ユーザーは、登録したインデックス項目を「タイトル」「URL」「作成日時」などでソートして表示することができます。(3)ユーザーは、それらのソートとは別に、ドラッグ&ドロップにより、登録したインデックス項目の表示順序を変更することができます。(4)通常ユーザーの場合には「区切りバー」、信頼可能ユーザーの場合には「カテゴリー」によって、インデックスを整理することができます。(5)インデックス項目の「追加」「削除」「修正」「表示変更」に関する操作は、全てページ遷移無しで実行され、短時間の内に完了します。「追加」「削除」の場合には、サーバー側との送受信があるため若干の待ち時間が生じますが(これも Ajax なのでかなり短時間で完了します)、「修正」「表示変更」の場合には、処理がクライアント側だけで完了するため、操作はほぼ一瞬で完了します。(6)ユーザーはインデックスの表示の状態(「ソート」「カテゴリー(有効な場合)」の項目選択等)を指定することができますが、それらの設定状態は次回アクセス時(ページ遷移の後)にも再現されるようになっています。

技術面での特徴
(1)当モジュールは、サーバー側においては、Drupal 7 用の Block Module として、それが設定可能な全てのページにおいて稼働が可能となっています。(2)当モジュールは、クライアント側においては、その機能を実現するために、HTML5 の機能である「Indexed Database API(IndexedDB)」「Drag And Drop API」「Web Storage」の機能を利用しています。
開発者としてのコメント
機能的には非常にシンプルなこのモジュールは、「IndexedDB を利用してページ情報を登録・管理する」という主機能としては、2010年の夏頃に Drupal 6 用の Field Module として完成(Firefox 4 ベータ上で稼働)していたものを(その後に、IndexedDB の様々な仕様変更や Drupal のアップグレードなどがあり、開発中断となっていましたが)、今回、Drupal 7 用の Block Module として全面的に再構築したものです(現状では、Firefox に対してのみの機能提供)。その過程では、(1)ドラッグ&ドロップ機能の追加、(2)ユーザー設定情報の永続化機能の追加、(3)IndexedDB を操作するための汎用 API(追加・削除・修正・取得など)オブジェクトの作成など、HTML5 技術の一端に親しむことができました。加えて、これまでの私の JavaScript コーディングは、グローバル変数とグルーバル関数を書き連ねる古典的スタイルのものでしたが、名前空間、クロージャー、関数(メソッド)や変数の隠蔽などによる安全面への配慮など、現代的スタイルへとステップアップすることができました。ということで、このモジュールの開発は、プログラマーとしては、IndexedDB を始めとする HTML5 への技術的な興味・関心から始めたものですが、その面では私的な目的は達成したことになります。そして、それにより、(1)ユーザーの利便性の向上、(2)データの安全性の向上、(3)「IndexedDB 操作機能」と「モジュール独自機能(=アプリケーション・ロジック)」の分離による仕様変更等への柔軟性(変更容易性・迅速性)の向上など、モジュールとしての品質を向上できたものと思います。また、プランナーとしては、サイトやウェブそのものの「使い勝手」の現状(不便さ)に対してそれらを少しでも改善することを意図したわけですが、当モジュールが提供するユーザー経験において、それらに貢献するものとなっていればと思います。
2012年03月19日 UPDATE|Firefox 11(2012年03月13日リリース)上での稼働を確認しました。
Firefox 10 から 11 へのアップグレードにおいては、Indexed Database API の実装自体の変更点は少なかったため、このアプリケーションについてのコード修正は(結果的には)不要でした。しかし、私自身のこれまでの Firefox のライブラリ環境(Mac)においては、Firefox 11 上では、シンプルなテストコードにおいてもデータベースのオープンでエラー( errorCode は 1)となるため、Indexed Database API 自体が使用できない(データベース削除は可能でしたが)、という状況となりました。ということで、その部分に関してはそれ以上のコード修正の余地は皆無であるため、結果的には、ライブラリ環境の新規構築により対応せざるを得ませんでした(新規構築した環境では Firefox 10 上と同様に稼働。ただし、アプリケーションのデータは個別に移行が必要)。このような現象は私のライブラリ環境に固有のものかもしれませんし、現時点ではこれ以上の原因特定は行っていないため(新規ライブラリ環境構築という)暫定的対応となっていますが、もしかして今後同様の現象に直面されるかもしれない開発者の方のために、一応記録として記しておきます。

2012年02月03日 UPDATE|Firefox 10(2012年01月31日リリース)に対応しました。
Firefox 10 において Indexed Database API の実装が最新仕様に合わせて更新されたのに伴い、当モジュールもその実装に合わせるべく該当部分の修正を行い、Firefox 10 上で稼働するように対応しました。

2012年01月23日 UPDATE|通常権限ユーザーに対して、「区切りバー」の挿入・削除機能を提供するようにしました。
当モジュールでは、信頼可能ユーザーにおいては、テキスト入力可能な「カテゴリー」を利用することができますが、通常権限ユーザーにおいては、目的外での流用を避けるために、「カテゴリー」は利用できないようになっています。従って、従来は、通常権限ユーザーにおいては、ドラッグ&ドロップによる並び順のカスタマイズ以外は、登録したインデックス項目を分類・整理することができませんでした。そこで、通常権限ユーザーにおけるインデックス項目の分類・整理ニーズに若干なりとも対応するために、「区切りバー」の挿入・削除機能を追加し、利便性の向上を図りました。これにより、通常権限ユーザーにおいては、複数のインデックス項目を「区切りバー」によりグルーピングできることになります。また、併せて、信頼可能ユーザーにおいては、「タイトル」の変更も可能なようにしています。

2012年01月23日 UPDATE|当モジュールの名称を「TNC Personal Index Module」へと変更しました。
当モジュールの名称は、当初は「TNC Personal Bookmark Module」でしたが、それを「TNC Personal Index Module」へと変更しました。名称変更の理由は、次の3点です。(1)「Bookmark」とは、Web においては、一般的に、Web 全体に対するマーキング行為として認識されている。(2)サイト内における「ブックマーク」行為は、実質的に、サイトの「インデックス(索引)」として機能する。(3)「Indexed Database API」を利用している当モジュールは、「Index」というキーワードとの親和性が高い。ということで、具体的には、旧名称は一般的な意味合いでの「Bookmark」との混同の可能性があるのと危惧から((1)の観点)、新名称として「Index」もしくは「Navigation」というキーワード候補が浮かびましたが((2)の観点)、(3)の観点において「Index」の方を採用し、「TNC Personal Index Module」とすることとしています。

「Indexed Database API」を用いて、そのサイト内での索引機能を提供する
目的ページへの直接的アクセス手段の提供により、サイトのユーザビリティを向上させる

TNC Personal Index Module

TwitterへTweetをポストする・ポストしたTweetをキュレートして表示する
将来的には、マイクロブログシステムと連動した「知識創造」機能の提供を目指す

TNC Tweet Synthesiser Module

ユーザーの思考活動の結果としての「形式知」を貯蔵する
そして、各「形式知」をテーマごとに編集(順列化)して、スライドショーとして提示する

TNC Thinking Incubator Module

サイトに、Wikiの機能を追加する
Ajax化により、閲覧・編集の生産性向上を図り、「知識共有」「知識創造」に寄与する

TNC Ajax Wiki Site Module

Bookmarklet経由でブックマーク情報をサイトに登録する
カテゴライズと情報追加が可能で、登録した情報の共有・有効活用を促進する

TNC Bookmark Module

内部リンクを Ajax 化し、既読ページのオフラインでの再現を可能にする
それにより、ネイティブ・アプリケーションのようなユーザー体験を提供する

TNC App Site Module

サイト内の全ての内部リンクを自動的に Ajax 化する
全てのコンテンツをページ遷移無しで迅速に表示し、その際にリッチなUXを提供する

TNC Ajax Site Module

エンティティに、スライドショーの機能を追加する
Wiki 記法にも対応しており、コンテンツを、より分かりやすく、より魅力的に提示する

TNC HTML Slideshow Field Module

エンティティに、メール送信機能を具備したメールフォームを追加する
Ajax化により、ページ遷移無しでのメールフォームの入力・確認・送信を可能にする

TNC Ajax Contact Form Field Module

エンティティに、Ajaxに対応した、シンプルなカレンダーを追加する

TNC Ajax Calendar Field Module

定時処理の内容部分とその実施日時の設定・管理部分を切り離す
定時処理の実施日時の設定・管理をプログラム修正無しで可能にする

TNC Cron Jobs Management Module

このページにつきまして、お問い合わせ・ご相談・ご意見等をお待ちしております。
このメールフォームを使うことにより、TransNetCreation にコンタクトすることができますので、
お気軽にご連絡いただけましたら幸いです。( * 印が付いているのは、必須項目です。)
名前 *
Eメールアドレス *
組織・団体 / 個人 *
組織・団体名
(組織・団体の場合)
ウェブサイトURL
お問い合わせ・ご相談・ご意見等 *