Drupal 7 用モジュール「TNC Cron Jobs Management Module」を開発しました。
複数の定時処理の各々について、その実施時刻等の設定・管理機能を提供するものです。
具体的には、定時処理の内容部分とその実施時刻の設定・管理部分を切り離し、
各定時処理のオン・オフやその実施時刻の設定・変更等、個々の定時処理の管理については、
サイト管理者が、プログラム修正無しで、Web インターフェース経由でできるようにしています。
つまり、当モジュールの利用とその規約に合わせた定時処理プロラムの配置により、
定時処理の内容自体はこれまでと同様にプログラミングする必要があるとしても、
定時処理の実施時刻等については、サイト管理者が、サイトのアクセス状況や作業スケジュール等に合わせて、
柔軟かつ迅速に設定・変更できるようになるわけです。
TransNetCreation では、今後とも、「Think Future, Imagine Alternative, Create Real!」の精神で、
アプリケーション開発、システム構築、サイト制作及び経営・マーケティング・ITコンサルティング、
そしてそれらに関する情報発信などの活動に取り組んでいきたいと考えています。
当サイト共々、今後とも TransNetCreation をよろしくお願い致します。
※補足:なお、当モジュールは、Drupal サイトにおいて定時処理を実装するいくかの方法の中で、
Drupal のデフォルトの Web インターフェースで設定可能な定時処理機能を利用しています。
そのため、簡易に導入・運用可能であるというメリットがありますが、一方で、
各定時処理の開始時刻については、サイトのアクセス状況や Drupal が定時処理を開始するタイミング等により、
必ずしも1分1秒単位での正確性が担保されるわけではないというデメリットもあります。
原理的には、アクセスの多いサイト程正確性が向上することになるわけですが、
そうであっても各定時処理の開始時刻はある程度の幅の中で考える必要があります。
ということで、当モジュールの現状では、開始時刻の正確性を担保したい場合や、
社内システム等でアクセスが発生しない夜間などに定時処理を行いたい場合には、
また別の方法を用いる必要があります。
なお、そのように(処理時間や終了時刻との兼ね合いで)開始時刻の正確性が求められるケースや
外部アクセスが生じない時間帯における定時処理に対しても、
Drupal の仕組みとして、当モジュールの範疇においても対応可能な余地があると考えられるため、
今後の改善において検討してみたく考えています。
Drupal 8 (8.0-dev)に対応させました。
「正式リリース(Release)」まで「Beta phase」「Release candidates」を経るのみとなっています
(Drupal core release cycle)。
ですから、今後も「正式リリース」に向けて Drupal 8 自体の細かい変更はあるはずですが、当モジュールにおいては、
その変更の根幹部分に対する対応は今回のアップグレイドにより完了したものと考えています(※1)。
今回、当モジュールのアップグレイド対応のための修正プロセスを通じて感じたことは、
かなり大きな変化があった Drupal 6 から Drupal 7 へのアップグレイドに比べても、
Drupal 7 から Drupal 8 へのアップグレイドは質的にその数倍の変化である、ということです。
実際に、英語圏では、Apple 社が iPhone を展開したことなどを引き合いにして、
それを Drupal における「破壊的イノベーション」と評する向きもあるようです。
開発者の視点としては、具体的には、
(1)ルーティングシステムの変更
(2)オブジェクト指向プログラミングの本格的導入
(3)コンフィギュレーションシステムの導入
(4)テーマシステムの変更
などを挙げることができますが、これらからも、Drupal が、
より大規模で高い信頼性が要求されるようなサイト構築のためのフレームワークを目指しているであろうことが見えてきます。
一方で、というかそのためもあり、利用面・開発面では、
特にルーティングやモジュールの変更においてはかなり繊細な対応が要求されるような面もあり
(これは正式リリースまでによりよく改善される可能性もありますが)、
利用者や開発者にとっては(それが良いか悪いかは別として)若干敷居が高くなりつつあるようにも感じられます。
とすると、今後は、何故 Drupal なのか(その必要があるのか)ということをよく考慮する必要があるようにも思われます。
TransNetCreation では、今後とも、「Think Future, Imagine Alternative, Create Real!」の精神で、
アプリケーション開発、システム構築、サイト制作及び経営・マーケティング・ITコンサルティング、
そしてそれらに関する情報発信などの活動に取り組んでいきたいと考えています。
当サイト共々、今後とも TransNetCreation をよろしくお願い致します。
※1:ただし、現段階では、wiki 用のフロントページ(例えば、www.example.com/wiki)を
サイト全体のフロントページ(例えば、www.example.com)に割り当てる設定機能
(サイト全体のフロントページに wiki 用のフロントページのコンテンツを表示させるようにする設定機能)
については、未対応となっています。(※2)
※2:2013年12月26日追記:追記※1に関して、Drupal 8 対応バージョンにおいてもこの機能を実装しました。
「TNC App Site Module」を開発しました。
Web サイトのアプリケーション化に対応するための Drupal 7 用モジュールです。
現状では、既存のPC用ページに対してスマートフォン用ページを用意するというサイト管理者のニーズを念頭に、
例えばPC用ページのパス「node/123」に対応するコンテンツを、
「m/node/123」「smartphone/node/123」などのように、
管理者が指定する特定のプレフィックスパス(この例の場合では「m」「smartphone」など)のもとで、
デフォルト・テーマとは別テーマ(例えばスマートフォン用のテーマ)で展開するような仕様となっています。
その上で、(1)内部リンクの Ajax 化(=対応する表示領域の、ページ遷移を伴わない迅速な更新)、
(2)既読ページのオフラインでの再現、という機能により、
サイト訪問者の方に対して、ネイティブ・アプリケーションのようなユーザー体験を提供することを意図しています。
また、ユーザー体験においては鍵となる、
クライアント側(=ブラウザ上)でのコンテンツ更新時のエフェクトや閲覧履歴のUIなどに関しては、
サイト独自に(開発者やテーマ制作者などによる)カスタマイズも可能な仕様となっています。
それに合わせて、当サイトにおいても、
当モジュールを利用した実例として、スマートフォンユーザーの方向けのページを用意しました。
なお、当サイトでは、独自に、
(1)スマートフォンでのアクセスの場合には、自動的にスマートフォン用ページを表示する(リダイレクトする)
(2)レスポンシブ・ウェブ・デザイン(RWD)の考え方を採り入れて、iPad 等のタブレットでも最適に表示する
(3)スマートフォンでのアクセスの場合でも、タブレットを想定し、PC用ページの閲覧も可能なようにしている
という対応を行っています。
スマートフォン用ページは、具体的には、PC用ページと全く同じコンテンツをベースに適宜必要な修正を加えて、
それに対してスマートフォン用のカスタム・テーマを適用するというプロセスで生成しています。
モジュール開発者としてだけでなく、サイト管理者としても、
コンテンツ表示の迅速な更新や既読ページのオフラインでの閲覧機能などにより、
スマートフォンユーザーの方々の利便性の向上に資するものとなりましたら、幸いに思います。
また、当サイトは Drupal モジュールの実験サイトという性格もありますので、興味のある方を想定して、
敢えて、PCでのアクセスの場合にも、それがモダンブラウザーでのアクセスの場合には、
ページ上部のナビゲーション内の「Smart Phone」というリンクから、
そのページのスマートフォン用ページにアクセスすることができるようにしております。
TransNetCreation では、今後とも、「Think Future, Imagine Alternative, Create Real!」の精神で、
アプリケーション開発、システム構築、サイト制作及び経営・マーケティング・ITコンサルティング、
そしてそれらに関する情報発信などの活動に取り組んでいきたいと考えています。
当サイト共々、今後とも TransNetCreation をよろしくお願い致します。
Drupal 7 用モジュール「TNC Personal Bookmark Module」を開発しました。
※ モジュール名は「TNC Personal Index Module」へと変更しています(2012.01.23)
それがコールされる各ページにおいて、ユーザーに対してそのサイト内でのブックマーク機能を提供します。
具体的には、ユーザーが当モジュールを介してブックマークする情報を、
HTML5 の一機能である「Indexed Database API (IndexedDB)」を用いて、
そのユーザーが利用しているブラウザが管理するデータベースに保存します。
そして、そのユーザーがサイトにアクセスするたびに、
ブラウザのデータベースから保存されているブックマーク情報を読み出し、当該ユーザーに対して提示します。
それにより、ユーザーは、そのサイトにおいてよく利用するページや有益であると思うページなどを個人的にブックマークし、
かつ、そこからいつでも当該ページに迅速にアクセスすることができる、というわけです。
サイトの大規模化・コンテンツの充実化に伴うサイト構造の複雑化・ナビゲーション階層の多層化により、一方では、
ユーザーにとってはサイトが「わかりにくい」「使いにくい」という状況が生まれやすくなりますが、当モジュールは、
ブックマークという形でユーザーに対して目的とするページへの直接的なアクセス手段を提供することにより、
サイトのユーザビリティの向上を図ります。
ブックマークとは、言わば「ユーザー自身によりカスタマイズ可能な個人的ナビゲーション機能」であり、
それにより、そのサイトが、ユーザーにとっての有益な「情報・知識基盤(Information Base / Knowledge Base)」、
さらには、新たな「知識創造の場」「思考促進の場」としてより良く活用されることを目指しています。
TransNetCreation では、今後とも、「Think Future, Imagine Alternative, Create Real!」の精神で、
アプリケーション開発、システム構築、サイト制作及び経営・マーケティング・ITコンサルティング、
そしてそれらに関する情報発信などの活動に取り組んでいきたいと考えています。
当サイト共々、今後とも TransNetCreation をよろしくお願い致します。
※1:2012年01月23日追記
当モジュールの名称は、当初は、上記タイトル・本文中にあるように「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」とすることとしています。
※2:2012年02月03日追記
Firefox 10(2012年01月31日リリース)において、
Indexed Database API の実装が最新仕様に合わせて更新されたのに伴い、
当モジュールもその実装に合わせるべく該当部分の修正を行い、Firefox 10 上で稼働するように対応しました。
※3:2012年03月19日追記
Firefox 11 のリリースに伴い、Firefox 11 上での稼働を確認しました。
Firefox 10 から 11 へのアップグレードにおいては、Indexed Database API の実装自体の変更点は少なかったため、
このアプリケーションのコードについては、修正は(結果的には)不要でした。
なお、Firefox 11 への対応確認過程で生じた若干の問題については、モジュールページ に記載しています。
Drupal 7 用モジュール「TNC Bookmark Module」を開発しました。
閲覧したページのブックマーク情報を Bookmarklet 経由でサイトに登録する機能を提供します。
ブックマーク情報を、シンプルな操作で、効率的に、Drupal サイトに登録可能とすることで、
サイトユーザー間での情報共有やそれに基づく知識創造の促進を目指しています。
また、TNC Tweet Synthesiser Module や TNC Thinking Incubator Module へと送信可能であり、
登録したブックマーク情報を、より広く共有したり、さらに有効活用したりすることができるようになっています。
TransNetCreation では、今後とも、「Think Future, Imagine Alternative, Create Real!」の精神で、
アプリケーション開発、システム構築、サイト制作及び経営・マーケティング・ITコンサルティング、
そしてそれらに関する情報発信などの活動に取り組んでいきたいと考えています。
当サイト共々、今後とも TransNetCreation をよろしくお願い致します。
「Twitterにおける投稿の容易性」と「Wikiにおける表現の多様性」を取り入れた
Drupal 7 用モジュール「TNC Thinking Incubator Module」を開発しました。
TNC Thinking Incubator Module は、その課題に対して、
(1)知識作成・保存・閲覧の簡易化・一元化
(2)知識表現の多様化・自由化
(3)複数知識の組み合わせによる知識の体系化・構造化
という機能を提供することにより、解決を図るWebアプリケーションです。
(1)については「Twitterにおける投稿の容易性」、
(2)については「Wikiにおける表現の多様性」からアイディアを得ています。
(3)については「個別の知識(形式知)の組み合わせを、一連のスライドショー化する」ことにより対応します。
実際の利用場面としては、個人の「メモ」「備忘録」「アイディアノート」のような段階(非公開設定可能)から、
それらに多様な表現を与え、多数に公開・多数と共有する段階を経て、
さらに、複数知識を編成し、それらを一連の知識体系・知識構造として提示する段階までをサポートします。
そこで、そのように、「思考活動の孵化器」として機能して欲しいという開発者の願いを込めて、
名称を「TNC Thinking Incubator Module」としています。
TransNetCreation では、今後とも、「Think Future, Imagine Alternative, Create Real!」の精神で、
アプリケーション開発、システム構築、サイト制作及び経営・マーケティング・ITコンサルティング、
そしてそれらに関する情報発信などの活動に取り組んでいきたいと考えています。
当サイト共々、今後とも TransNetCreation をよろしくお願い致します。
Drupal サイト上で Twitter などのマイクロブログ・システムと連携する Drupal 7 用モジュール
「TweetSynthesiser」を開発しました。
「Twitter のようなマイクロブログ・システムは、組織において『知識創造』のための場となり得る」
との結論を得ました。
「TweetSynthesiser」は、それを受けて、
マイクロブログ・システムの知識創造機能をより有効に発揮させることを目的として開発しています。
連携するマイクロブログ・システムとしては、デフォルトでは、Twitter を想定しています。
ただ、API の部分を変えることで、他のマイクロブログ・システムとの連携も可能となっています(要カスタム対応)。
現状では、ログインユーザーを対象として、Twitter への
「Tweet の投稿機能」「過去 Tweet の取得機能」「Tweet の表示機能(スライドショー)」しかありませんが、
現在も開発進行中であり、ゆくゆくは、アプリケーションの名称に相応しい機能を構想・実装できればと考えています。
なお、TransNetCreation では、当サイトにおいて、この TweetSynthesiser を利用し、
一般的には『すでに起こった未来』、理論的・原理的には『未来学』の考え方に基づいた Tweet を
展開していきたいと考えています。
内容的には、「ブルーオーシャンの創造」を念頭に、マネジメント・マーケティング・IT に関するものを想定しています。
TransNetCreation では、今後とも、「Think Future, Imagine Alternative, Create Real!」の精神で、
アプリケーション開発、システム構築、サイト制作及び経営・マーケティング・ITコンサルティング、
そしてそれらに関する情報発信などの活動に取り組んでいきたいと考えています。
当サイト共々、今後とも TransNetCreation をよろしくお願い致します。
※1:2011年07月26日追記
当サイトの Drupal セクション に、当モジュールのページ を追加しました。
※2:2011年07月26日追記
予備サイト(開発用サイト)で作成したTweetを、実運用サイト経由でポスト可能にするワークフローに対応しました。
詳細につきましては、上記 当モジュールのページ にてインフォメーションしております。
※3:2011年08月22日追記
「Home Timeline」「Friends Timeline」「User Timeline」の表示(閲覧)・取得に対応しました。
詳細につきましては、上記 当モジュールのページ にてインフォメーションしております。
HTML 5 の機能を利用して、Ajax リクエスト時に、
ブラウザの Back ボタン・Forward ボタンが有効に働くようにしました。
サイト内の全ての内部リンク(Internal Links)を Ajax 対応させる機能を提供するモジュールですが、
これまでは1つ前のページに戻る場合には、
ウインドウの右下に表示される独自実装による Back ボタンを使用していただく必要がありました。
そこで今回、最新のモダンブラウザにおいては、
当モジュールによる Ajax 経由でのコンテンツの表示の際にも、
ブラウザの Back ボタン・Forward ボタンが有効に機能するように対応しました。
詳細につきましては、TNC Ajax Site Module のアップデート情報をご参照ください。
なお、今回の修正には、HTML 5 において拡張された JavaScript の新機能を用いています。
また、今回の修正により、当モジュールをインストールしている当サイトにおきましても、
最新のモダンブラウザの場合には、
ブラウザの Back ボタン・Forward ボタンが有効に機能するようになっています。(*1)(*2)
TransNetCreation では、今後とも、「Think Future, Imagine Alternative, Create Real!」の精神で、
Drupal におけるシステム開発・サイト構築に取り組んでいきたいと考えています。
当サイト共々、今後とも TransNetCreation をよろしくお願い致します。
*1:最新のモダンブラウザ以外の場合には、これまで通り、
ウインドウの右下に表示される独自実装による Back ボタンを使用していただく必要があります。
※2011年06月10日追記
ここでの最新のモダンブラウザとは、具体的には、
当初は「Firefox 4、Safari 5、Google Chrome 11・12」を指していましたが、
Safari 5、Google Chrome 11・12 においては一部の操作の挙動が不安定であることが判明したため、
現在のところ(2011年06月10日〜)、Firefox 4 のみ有効としています。
※2011年06月11日追記
Safari 5 に対応しました。
ということで、現在のところ(2011年06月11日〜)、Firefox 4 と Safari 5 において有効となっています。
また、この対応に加えて、一旦表示されたページのデータを保存・再利用するように変更しています。
これにより、モダンブラウザか否かや履歴の有無を問わず、一度表示されたページを再表示する場合には、
サーバへのリクエストを伴うことなく迅速に表示されるようになっています。
※2011年08月08日追記
Google Chrome 13 において、想定通り稼働することを確認しました。
ということで、現在のところ(2011年08月08日〜)、
Firefox 4 、Safari 5 、Chrome 13 以降において有効となっています。
*2:当サイトの内部リンクをいくつかクリックしていただいた方はお感じになられておられることと思いますが、
Ajax リクエストにもかかわらず、コンテンツが更新されるまでにそれなりの時間がかかってしまっています。
この問題は、Ajax リクエストにおいてもページ全体のデータを構築するためには、
通常リクエストの場合と同等の処理を行う必要があることに加えて、
当サイトが使用しているサーバの能力がそれ程強力ではないということに由来しています。
一方、最新のモダンブラウザにおいて Back ボタン・Forward ボタンを使用していただいた場合には、
ブラウザに保持させているデータを再利用するため、エフェクトの終了と同時にコンテンツが更新されるはずです。
本来的には(サーバにそれなりの能力があれば)、内部リンクをクリックした際にも、
Back ボタン・Forward ボタンをクリックした場合と同等の早さでコンテンツが更新されるような状態、及び、
それによる快適なユーザー・エクスペリエンスの提供を目指しています。
そのためのモジュールがデフォルトで用意されている他、
より複雑なサイトを多言語対応化するためのモジュールも Contrib として開発が進められています(現在開発中)。
当サイトの場合は、デフォルトの翻訳用モジュールを活用しつつ当サイト独自の対応により多言語対応化しています。
当面は 日本語 と 英語 という2カ国語での展開を考えています(対応言語は容易に追加可能)。
現状では、英語化できているのは、フロントページ の一部分と コンタクトページ のみですが、
今後、徐々に翻訳ページを追加していきたいと考えています。
TransNetCreation では、今後とも、「Think Future, Imagine Alternative, Create Real!」の精神で、
Drupal におけるシステム開発・サイト構築に取り組んでいきたいと考えています。
当サイト共々、今後とも TransNetCreation をよろしくお願い致します。
「オリジナル「Entity」導入のメリット・デメリット」を公開しました。
これまでの「node」に代わり、「Entity」という概念・実装が導入されました。
この点については、ブログ DIARY :: AROUND THE CORNER の「Entity化するDrupal」というエントリーでも、
主として一般的な観点から、既に取り上げています。
そこで、今回のコラムでは、そこからもう一段踏み込んで、
TransNetCreation として オリジナルの「Entity」を開発・運用した経験 を踏まえて、
サイトオリジナルの「Entity」を導入することに関して、そのメリット・デメリットを考察しています。
※今回のコラムでは、「Entity」の導入が Drupal 7 の最も大きな変化であり進化である、と捉えていますが、
Drupal 7 は、セキュリティに関して、
その開発用 API そのものの中に SQL インジェクション 対策を組み込んでいる
という、もう一つの、大幅な改善点を有しています(一般的にはこちらのインパクトの方が大きいかもしれません)。
つまり、システムとして Drupal 7 を選択することが、即ち、SQL インジェクション対策となる、わけです。
この点については、Drupal 7 の公開直後におけるレビュー記事「祝! Drupal 7 正式リリース」に追記しています。
(※2011年08月18日追記)