FCKeditorはご存知でしょうか?FCKeditorはAjaxで非同期に動作するブラウザベースのWYSIWYGエディタです。これのMTのプラグインとしての日本語版が素晴らしいのでぜひご紹介したいと思います。
Javascriptの開発を行う際に非常に便利で、Javascriptの開発を行うプログラマならおそらくインストールしてあるであろうFirefoxのアドオンであるFirebugの紹介をしたいと思います。
jQueryでlightBoxを使うpluginをご紹介します。lightBoxはprototype.jsを併用するJavascriptのスライドショーを実装する有名なライブラリですが、今回はjQueryで利用できます。かつ高機能です。
つい先日発表された新しいScript.aculo.usとPrototype.jsによって作られたアコーディオンが高機能かつ便利だなと思ったのでご紹介したいと思います。
Prototype.jsのv.1.5.1での新機能でDOMを簡単に操作できる新機能が加えられたようです。
Prototype.jsのv.1.5.1を読み込んで以下のスクリプトを記述することによって
new Element('input', { name: "user", disabled: true });
以下のような(X)HTMLが生成されます。※disabled 属性はその要素の操作を無効化させる属性です。
<input name="user" disabled="disabled" />
Prototype.jsを使ってのDOM操作も簡単になってきましたね。
GoogleのAPIでRSSやATOMといったFEEDを取得できるGoogle AJAX Feed APIを使用してみました。
使用するにはGoogle API keyが必要になります。Google MapのAPIを取得するのと同じ要領ですね。Google API keyを取得すれば以下のスクリプトを読み込みます。読み込む際に”YOUR_KEY_HERE”の所に取得したGoogle API keyを入れます。
<script type="text/javascript" src="http://www.google.com/jsapi?key=YOUR_KEY_HERE"></script>
例としてhttp://www.example.com/rss/index.xmlのRSSを読み込みdiv#feedにフィードのタイトルを出力するとするならば以下のようなスクリプトを記述します。
<script type="text/javascript">
google.load("feeds", "1");
function initialize() {
var feed = new google.feeds.Feed("http://www.example.com/rss/index.xml");
feed.load(function(result) {
if (!result.error) {
var container = document.getElementById("feed");
for (var i = 0; i < result.feed.entries.length; i++) {
var entry = result.feed.entries[i];
var div = document.createElement("div");
div.appendChild(document.createTextNode(entry.title));
container.appendChild(div);
}
}
});
}
google.setOnLoadCallback(initialize);
</script>
とりあえず上記にした例と同じ形で当ブログのフィードを取得してみた例がこちらです。かなり簡単に使うことができますね。
最新のPrototype version 1.5.1_rc1と最新のscript.aculo.usのeffects.jsをを使った超簡単でしかも高機能なページスクロールを実現できる記事を見つけたのでご紹介します。
auto-scrolling page navigation
Event.observe(window, 'load', function() {
$$('a[href^=#]:not([href=#])').each(function(element) {
element.observe('click', function(event) {
new Effect.ScrollTo(this.hash.substr(1));
Event.stop(event);
}.bindAsEventListener(element))
})
})
Prototype version 1.5.1_rc1をDLしてprototype.jsとして保存、そしてlatest build of script.aculo.us Effectsをeffects.jsとして保存して、先ほどのauto-scroll.jsと一緒に読み込みます。
<script src="prototype.js" type="text/javascript"></script> <script src="effects.js" type="text/javascript"></script> <script src="auto-scroll.js" type="text/javascript"></script>
(X)HTMLのコードは以下のように、アンカー毎にJavascriptを記述しなくても、IDで指定するのみで、スムーズなページスクロールの機能を実装することが出来ます。
<a href="#○○○">○○○へ戻る</a>
ページのTOPに戻る機能だけではないので、ページ内でのローカルメニューなどで使うことでかなりアクセシビリティーがUPすると思うのは僕だけでしょうか?
Ajaxについては、検索すればいくらでも情報があり、プログラマーではない僕でもなんとなく理解することができます。でもこれを実際に作る事を考えると、プログラミングをしない僕にはどうすればいいかまったく見当もつかず、サーバーサイドのプログラム言語は何を使うの?Javascriptで処理するデータフォーマットはXML?やっぱりセキュリティー上危険が多いの?といった数々の疑問が浮かんでくるかと思います。そうなるとかなりの情報を調べないといけないことに気づかされます。
そこで自分の頭の整理のためにも基本的な
という観点から整理してみようと思います。
DHTMLとAJAX
まず最初にAJAXとDHTML(Javascript+HTML+CSSなどクライアントサイドでの処理手法)の違いを理解する必要があります。AJAX とはサーバーサイドのデータとの非同期通信であり、DHTMLはJavascript によってクライアントサイドのデータを操作する事だという違いがあります。
使用するデータフォーマット(XML、データベース、etc..)について
AjaxはAsynchronous (エイシンクロナス/アシンクロナス、非同期) JavaScript + XML の略なのでXMLを使用するのが当たり前だと思ってしまいがちですが、一般的なWEBサービスではデータはデータベースに蓄積されていてPHPなどからSQL文を使って引き出すのがスタンダードです。
しかし非同期にデータを(X)HTMLに出力したりデータを送信したりするためにはJavascriptでデータを処理する必要があります。Javascriptで処理できるデータにはテキストファイル、(X)HTML、XML、JSONなどがあります。
非同期にデータを扱う場合、XMLのデータはセキュリティーの関係で同一ドメイン、同一サーバーの物しか扱えないという制約があります。しかし一般的にデータを同一ドメイン、同一サーバーに置いてあることはまずないと思います。そこで別ドメイン、別サーバーのデータを使うクロスドメイン対策が必要になります。
一番スタンダードな方法がデータベースの情報をPHPなどのサーバーサイドプログラム言語でXMLのフォーマットで生成し、クライアントサイドにJSON形式に変換することになります。Jkl-parsexml.jsというXMLをJSONに変換する便利なライブラリがありますので、こういったライブラリを使用する方法などもあります。
しかし、サーバーサイドプログラムの知識を持たない僕ではなかなかAJAXを活用することができません。そこでサーバーを通さず、クライアントサイドのみでクロスドメインでの使用もできることで人気あるのがJSONP(JSON+Padding)です。GoogleやAmazonなども最近はこのJSONPを扱っています。簡単に説明するとJSONデータに少しの記述を付けてJavascriptで関数として呼び出すという事です。XMLをサーバーに通したりしてもいいのですが、こちらのほうがスマートだという事で人気があるのかもしれません。
この方法だとサーバーサイドの技術がなくとも簡単にAmazonやソーシャルメディアのデータを使ったAJAXのシステムを簡単に作ることができますね。
必須になるプログラム言語はJavascript、サーバーサイドとの通信を行うためにPHP、RUBY、JAVAなどのサーバーサイドプログラム言語とデータベースとの接続のためにSQLも覚えておかなければなりません。その他Javascriptで(X)HTMLやCSSを操作しなければならないので、(X)HTML、CSSも覚えておかなければならないでしょう。
AJAXはデータをクライアントサイドで処理するためにセキュリティ上大変危険です。なぜかというとブラウザのURLが表示されていうる部分にJavascriptを記述すると実行されてしまうため、ユーザー情報などが漏れてしまうことや、GmailなどのAJAXを利用したサービスのメールでプレビューを実行した時にユーザー情報を非同期通信を利用してデータをハックされる問題などがあります。※Gmailの問題は既に解決しています。
そのためにはデータの扱いを暗号化することやPHPなどのサーバーサイドプログラムで危険を回避するエスケープなどの処理をする必要性や、ログインを設けて、ユーザーのデータとその他のパブリック向けのデータを振り分けておく対策などのセキュリティー対策が必要になってきます。
AJAXのライブラリを活用したSHOWCASEを集めているサイトを見つけましたのでご紹介します。
http://www.miniajax.com/
ショーケースのデモもあるので、AJAXで何か作りたい時にはかなり参考になるかと思います。 今回はそのうちのいくつかをご紹介します。
prototype.jsとwindow.jsを読み込んで使用します。
http://prototype-window.xilinus.com/
グラフィックが結構綺麗です。画像などもスタイルシートで変更できます。
http://www.masugadesign.com/the-lab/scripts/unobtrusive-ajax-star-rating-bar/
prototype.jsとサイトの下部で記載されているスクリプトを読み込んで使用します。ログイン画面やメールフォームで使用するとかなりかっこいいです。
http://www.pjhyett.com/posts/190-the-lightbox-effect-without-lightbox
Dojoを利用して作成されています。解説はDojoのサイトで見ることができます。画質があまりよくないのでデザインを重視される場合はあまり使えないかもしれません。
http://archive.dojotoolkit.org/nightly/tests/widget/test_FisheyeList.html
アクセス解析として使えますね。
http://www.labsmedia.com/clickheat/
他にも50種類くらいのショーケースを見ることができます。全部英語サイトなので日本語ドキュメントはありませんが、AJAX好きにはかなりおいしいサイトではないでしょうか。
2006年はAJAXが注目されその技術としてのJavascriptという従来からあるスクリプト言語にも非常に注目が集まりました。
僕が2006年度で調べた知る限りのAJAXライブラリやJavascriptライブラリをここにまとめたいと思います。
モーションの開始、停止、初期化などをボタンで調節できるモーションを提供。 動きもまぁまぁ滑らか。使用する際、少しだけjavascriptの知識を必要とする。
超軽量でシンプル。シンプルなjsだけに多少マークアップにCSSを記入したりする必要があるけど、個人的には綺麗で滑らかな動きが良いと思う。
読み込んでおくだけで、750px以下、750px以上/950px以下、950px以上の3つのウィンドウサイズに応じて自動でCSSを切り替えることが出来ます。
JQuery 1.0.1をつかったライブラリ。ライトボックスのような感じ。
オンラインテキストエディタのようなもの。 サンプルを配布している、のでこういうのやりたい場合は使えるっぽい。
ツールチップのライブラリのバージョン2。 prototype.jsとtoultip.jsをあわせて使用する。
リサイズ可能なブロック要素をページに作る為のJavaScript コンポーネント。 次のように、ブロック要素にリサイズハンドルを付けることができ、画像をその場でリサイズできます。 YAHOulIB�
陽の周りを地球が回るデモのような、Script.aculo.usでは実現が少し面倒だったものも割と簡単に実現出来そうです。
スクリプタキュラスのライブラリ
script.aculo.usも使っている。
lightboxみたいな写真ギャラリーライブラリ。 結構かっこいい。
ユーザビリティ上がるかも。結構使えそう。
噴出しのライブラリー。
Ajaxで同一ページ内でページ送りを実現する「Ajax scrulling pages」
CSSとjavascriptで作れるスライドショー
ラインセンスはフリーではない。
フェードイン、フェードアウトで切り替わるメッセージボックス
litebox風の写真のスライドを作れるjavascriptライブラリ
Moo.fxのチームが作ったライブラリ
javascriptのライブラリ
3バージョンのドラッグ&ドロップのサンプル。 Ruby on Railsと組み合わせて簡単に面白いものが作れそう。
javascriptライブラリー
javascriptも使う
Ajaxフレームワークemergetk。C#で開発するため用。 MySQLやブックマークの機能をサポート
prototypeとscript.aculo.usのeffects.jsを使用して画面をグレーにするライブラリ
AJAXライブラリ。
リンクにホバーするとスクリーンショットでリンクのホバー先の画像が下に表示される。 これ噴出しとかよりぜんぜんいいかも。
いろいろなAJAXライブラリがある
マウスオーバーするとボップアップしてしばらくすると消える
その場編集できるテキストBOX実装用PHP+Javascriptサンプル
簡単に使えるAJAXライブラリ。
簡単に使えるAJAXライブラリ。
デザインされた小窓が現れて、アラートやコンファームやページを表示できる。
写真が浮かび上がり、バックが少し暗くなる。写真のギャラリーで使えるかな
yahooが提供しているAJAXライブラリ
Ajaxライブラリ。Mootシリーズのコメントフォームでも使用した。プロトタイプとかいろいろ入ってるライブラリ
AJAXライブラリ
メニュー作成、レイアウト変更、アニメーション、イベント、コンポーネント、ツール、その他、様々なライブラリが詰まっているAJAXライブラリ
niceフォームの仕組みを解説とサンプルも有
AJAXのいろんなライブラリがそろっているサイト
吹き出しが作れる
読み込み先のURLの内容をふきだしで表示する。
javascriptで作るふきだし風チップセット
角丸ブロック
AJAXとPHPで作るチャット。
javascriptのドラッグアンドドロップ
AJAXのライブラリ
AJAXのライブラリ
フォームを綺麗に見せるJavascriptを紹介してるサイト
javascriptのライブラリで有名なdhtmlgoodiesからパック物のライブラリが登場しました。
その名もDHTML Suite for applications。
dojoみたいな感じにまとめてくれて便利ですね。demoページでサンプルを見ることもできます。ここのライブラリはシンプルで軽く、応用が利かせれるので個人的に結構好きです。
http://dojotoolkit.org/
今日はDojoっていうAjaxのライブラリを試してみた。試したといっても機能のごくごく一部。
僕が試したのはマックのOS10風のメニューのウィジェット。
DLした状態じゃ使えなくて各メニュー画像のon clickのプログラムを少ししないと使えない。
といってもjavascriptのif文を理解していれば大丈夫な程度。
他にも、メール機能や各種アコーディオンや透明化などのエフェクトなど色々ある。
結構ファイルが重くて.jsファイルがアホほどある。全部でいくつかわかんないけど6MBくらいあるかな。
使い方は少し特殊だけど、慣れれば簡単な感じ。
dojo.jsをインクルードして同じディレクトリにsrcフォルダを置いておけば使えた。(他にも色々あるけど、どれが必要で不必要かがわかりませんでした。。)
今のあふれかえっているAJAXライブラリ郡をDojoひとつで整理しちゃうと管理が楽かもしれませんね。
【Ajax】
このブログでもオープンソースのAJAXライブラリをいくつか使用していますが、著作権だとかライセンスのことに関してまったくわかってない状態で使用していました。 実際、仕事で使うときになってから商用利用ができるのか、できないのかの知識が必要になって調べていました。
そこで実務で使うかもしれない主要なAJAXライブラリであるprototype.jsやMoo.fx、script.aculo.us、dojoなどのライセンス形態を調べると共に、オープンソースにありがちなライセンスの種類を調べてみました。
GPLはリナックスとかのライセンス形態で無保証+著作権の表示義務で複製OK、改造したものを有償販売OK。その代わりGPLライセンスのオープンソースを使用して作った物は自動的にGPLライセンスになる。
簡単にいうと、GPLライセンスのオープンソースを使って、作ったものを違うライセンス形態にして独占的に販売できませんって事。世界中のプログラマが改良を重ね良い物にしていこうっていう意思の下のオープンソースやし、当たり前っちゃ当たり前やけどね。
BSDとMITはかなり緩いライセンス形態で商用利用も改造もOKその代わり無保証で著作権の表示の義務が発生する。※ソースのヘッドくらいに著作権表示していればOK。
DojoのライセンスはAcademic Free License version 2.1でBSDライセンスによく似たライセンスです。商用利用はOK。
最近ここ日本でも多くなってきたのがこのCC(creativecommons:クリエイティブ・コモンズ)ライセンスです。これは少し複雑で、オープンソースだけではなく写真などのコンテンツなどでもよく適用されています。
以下がCCライセンスの決められた形態とそのマークと意味の解説です。
実務でライブラリなどを使う場合はきっちりとそのライブラリの著作権や知的所有権の表示や扱いを理解しておく必要があるので、しっかりとライセンスの形態を調べておくことが大切になります。また自分がクリエイティブした物のライセンスもきっちり定めておくためにもライセンスの知識は必要になるかと思われます。
今日、海外のAjaxianっていうAjaxライブラリーやJavascriptライブラリを紹介しているサイトで紹介されていた。
かなーり簡単に導入できるのが特徴。
使い方はいたって簡単。
まず、DLしてきたフォルダの中のarc90_linkthumb.jsを読み込んで、リンク下に表示されるキャプチャ画像のスタイルをCSSで指定する。
そして、イメージ画像をリンク下に表示させたい場合は<a>に<a class="linkthumb">とクラスを指定してあげる。
That's it!
※ちなみにこのブログにも実装してみたけど、なぜか個別エントリーページでは表示されない。。。
メインページや各カテゴリページだと表示されています。そのうち不具合を解明してみようと思います。
色々ためしたけど今回はAdobeのSpryをご紹介
両方ともSpryをDLしたらついてるサンプル。
ProductのほうはXMLの情報を読み込んで、SmartyみたいにテンプレートじゃないけどXhtml側でループさせる処理をJavascriptで送ってるので、htmlは超シンプル!!
エフェクトのほうもテーブルにマウスオーバーで変化をつけたり、製品の紹介をアコーディオンで折りたたんで動的に表示させたりすることができるので、商品紹介とかに使えますね。
ImageGalleryのほうは階層で分けたフォルダをセレクトボックスで切り替えてサムネイル表示ができる。(※今はつけるの忘れてた。。。)
大容量の写真でもコンパクトに”魅せる”ギャラリーやポートフォリオが作れるんじゃないかと思う。
でも、ぶっちゃけギャラリーやポートフォリオにSEO関係ないし、FLASHでもいいかなとも思いますが。
AdobeからでたAJAXのフレームワークのチュートリアルを読んでみた。
ボリュームはPDFでだいたい40ページくらい。
これはなかなかほんまデザイナー向けやなって感じ。セッティングがめちゃくちゃ簡単。
とりあえずXMLのデータをリロードなしで読み込むってのがこのフレームワークの機能。
超簡単に説明すると
javascriptと2つ読み込んで、XMLをHeader内で定義する。ほんでデータを読みこむ所はSpry独自のタグでXMLの属性を指定してやれば読み込める。
後はCSSを使ってインターフェイスの変化をつけたり他のjavascriptライブラリを使って動的アクションをつければ、そこそこのインタラクティブなもんを作れるんじゃなかと思う。
今はまだAdobeの米国サイトでのみのベータ版やけど、そのうち正式版が出て、日本語のチュートリアルも出るようになる感じ。ゆくゆくはドリームウィーバのビアヘイビアみたいにAJAXが超簡単に組み込めるようになるらしい。
FLASHの方向性とかもそうだけど、だんだんとWEBがプログラム的になっていってるなぁって感じる。HTTMLのようなあいまいなマークアップからXMLにシフトしていくし、SEO的手法が常套手段になってきてテーブル組や情報をイメージで表現しなくなってきている。
プログラマーにとってこの業界のスピードはかなりつらいやろなぁって感じる。
つい数年前までパールやPHPや.ASPがもてはやされてたのにもうRUby on RailやPyphonといったAJAXとの関連性も高い超オブジェクト指向でめちゃくちゃ柔軟な言語がアメリカでは主流になってきている。
こういう記事を仕事の合間に読みながら自分の今してる”技術者”としての仕事のレベルの低さにすごい不甲斐なさを感じるのでした。
仕事をはやく切り上げてその日のニュースのおもしろい技術を家で実践するのがだんだんおもしろくなってきた。
ほんま1.2時間残業したとこで数千円やから残業はしたくない。
けど、きっちり帰りよんな~って思われるのも嫌なもんやね。たまにはがんばってまっせってとこをアピールしなくちゃなとかも思う。
ほんで今日もAJAXのライブラリをいじってみた。
こないだのMoot.fxのシリーズのリロードなしでコメントを投稿できるAJAXライブラリを触ってみようと格闘した末うまくいかなかった。
原因は。。。。わからない。
解説はお決まりの英語サイトだけど、ここ最近毎日読んでるからその辺の解釈の違いはないはずなんやけど、うまくいかない。
niceformっていうフォームのデザインを変えるjavascriptのライブラリを実装してるからか、もしくわコメント投稿を”すべて”にチェックを入れてないからだろうか。。よくわかんないけど、とりあえずMovabletypeはテンプレ変更してから反映されるまでたまに時間食うときあってイラチくる!!
まぁコメントは迷惑コメントくるからこのライブラリはあんま必要なかったけど、原因わかんないのは気持ちわるい。
さぁて明日もくそディレクターのまとめたな~な~な仕事をバリバリ片付けて行きましょうかね。
AJAXライブラリのMoo.fxをMovable Typeで使うためのプラグインを導入してみた。
使い方がかいてあるサイトが英語のため少しここで解説をします。
まず、導入手順から
1.MooT-fx-v0.92をDLして解凍する。
ファイル構成)
MooT-fx-v0.92
|
├plugins-MooT.fx
└mt-static-plugins
となっててそのままサーバーのcgiフォルダの中のpluginsフォルダにplugins/MooT.fxフォルダを入れて
cgiフォルダの中のmt-staticフォルダにmt-static/pluginsフォルダを入れる。
管理画面のプラグインのところに表示されていたら成功!