Powered by
Movable Type 3.35

« 2007年12月 | メイン | 2008年02月 »

バックナンバー:2008年01月

テンプレートの記述もPerlで - Template::Declareを使うはてなブックマークに追加 livedoorクリップに追加 Yahoo!ブックマークに追加 del.icio.usに追加 イザ!ブックマーク ニフティクリップに追加

こんにちは、Perl担当の西山です。

これまでJifty::DBI、Template::WWW::DeclareとWebフレームワークJiftyの周辺モジュールについて書きましたが、今回はViewに関わる部分であるTemplate::Declareというモジュールを取り上げようと思います。

特徴

Template::Declare(以下TD)は、HTML::MASONやTemplate::Toolkitなどに並ぶテンプレートエンジンですが、他のものには無い特徴を持っています。
  1. すべてのテンプレートは100% Pure Perlで記述する
  2. 宣言的なシンタックス
  3. Mixinや継承などのオブジェクト指向の機能を利用可能(Perlなので)
  4. HTML/XUL/RDF/XMLなどの形式に対応(その他の形式も拡張可能)

簡単な例でPerlではデファクトのテンプレートエンジンであるTemplate::Toolkit(以下TT)と比較してみましょう。

配列データを元にHTMLでリストを出力するような場合、
TTでは以下のように書くと思います。

<ul>
[% FOREACH a IN array %]
    <li>[% a %]</li>
[% END %]
</ul>

TTに限らず、HTMLなどのデザインを主としてそれに対してロジックを組み込むようなタイプのテンプレートエンジンでは、記法の多少の違いはあれど大体上記のような書き方になるのではないでしょうか。

一方TDでは以下のようになります。

template list => sub {
    ul {
        for my $a (@array) {
            li { $a }
        }
    }
};

使い方は・・・と思いましたが、結構見たままですよね。
"list"という名前でHTMLのリスト構造をテンプレートとして定義していて、
その後は以下のようにshow関数を使って名前でテンプレートを呼び出すことができます。

show 'list'

HTMLのタグはすべて同名の関数として用意されていて、通常のPerlコードと同じように使えます。
※Perlにもともとtrという名前の演算子が用意されている関係でtr/tdタグのみそれぞれrow/cellという別の名称の関数にマッピングされています。

TTなど他のテンプレートエンジンはロジック部分にそれぞれ(しかも結構独特な)文法を用意していて、メインの言語とは別に覚えないといけないですが、
TDならば変数への値の格納やループ処理はそのままPerlの文法で書けます。
外部モジュールを使う場合もいちいちテンプレート用のプラグインを作る必要も無いです。


続きを読む "テンプレートの記述もPerlで - Template::Declareを使う" »

ドラッグアンドドロップで並べ替え(Rails + Ajax)はてなブックマークに追加 livedoorクリップに追加 Yahoo!ブックマークに追加 del.icio.usに追加 イザ!ブックマーク ニフティクリップに追加

Ruby(とRails)を担当している石原です。

ソーシャル「OSを入れた後にインストールする10のアプリケーション」(仮) を作る過程をレポートしています。

これまでのエントリーはこちら ↓

  1. つくるぶガイドブログ: Ruby on Rails を使ってひとりでサービスを作ってみよう
  2. つくるぶガイドブログ: ひとりサービスの雛型をつくる(リキッドレイアウト、GetText、Acts as Authenticated)
  3. つくるぶガイドブログ: Rails で楽々ソーシャルブックマークの仕組みを作る
  4. つくるぶガイドブログ: Rails プラグイン acts_as_taggable_redux でタグクラウドを作ろう

今回は、登録した10のアプリケーションをベスト1からベスト10まで並べ替えたい、ということで、ちょっと趣向を凝らしてそれをドラッグアンドドロップで出来るようにしたいと思います。

続きを読む "ドラッグアンドドロップで並べ替え(Rails + Ajax)" »

フローティングウィンドウの表示はてなブックマークに追加 livedoorクリップに追加 Yahoo!ブックマークに追加 del.icio.usに追加 イザ!ブックマーク ニフティクリップに追加

こんにちは、Java担当の(株)エーティーエルシステムズ エンタープライズ・アーキテクチャ・ユニットです。
みなさんいかがおすごしでしょうか?急に寒くなったりして風邪がはやっているようですが、お体に気をつけて頑張っていきましょう!

さて、前回はデータの通信部分を作成したので、今回は実際に表示される詳細情報を表示するフローティングウィンドウの表示の説明をしていきたいと思います。

(今回作成するWindow)

java-4-1.jpg

続きを読む "フローティングウィンドウの表示" »

JiftyでWebアプリをつくる - Windowsにインストールはてなブックマークに追加 livedoorクリップに追加 Yahoo!ブックマークに追加 del.icio.usに追加 イザ!ブックマーク ニフティクリップに追加

こんにちは、Perl担当の西山です。

今回から数回に分けてPerlのWebアプリケーションフレームワークであるJiftyを取り上げてみたいと思います。

Jiftyの特徴

公式サイトにてJiftyの基本理念が表明されていますが、その中でも特にRuby on Railsも売りとしている「DRY(Don't Repeat Yourself)」「Full-stack」についてCatalystよりも強く意識しているのが感じられます。 Jiftyはその特徴をPerl流に更にエクストリームに実践することを開発思想としているようです。

というわけでこちらの取り上げ方もRailsをちょっと意識してみて、
Windows環境でイチからセットアップするところから始めてみようと思います。

※本エントリーではOSはWindowsXP、ActivePerlのバージョンは5.8系列を使用します。

1. ActivePerlをインストール

まずはWindows上でPerlスクリプトを実行できるようにする為、実行環境をインストールします。 ここではWindows用のインストーラが用意されていてお手軽に利用できるActivePerlという実行環境をインストールします。 ActivePerlはActiveState社が配布していて、スタンダード版は無償で入手することができます。 ダウンロードページ image012_thumb.jpg

5.10系列もリリースされていますが、本エントリーでは5.8系列を使用する為、現時点の最新版である5.8.8.822をインストールしてください。
インストーラ実行時の選択肢は基本的にデフォルト設定で問題無いと思います。

Jiftyをインストール

ActivePerl付属のPerl Package ManagerというGUIのツールを使ってJiftyをインストールします。 デフォルト設定でActivePerlをインストールしている場合、 スタートメニュー > すべてのプログラム > ActivePerl 5.8.8 Build 822 > Perl Package Manager を選択すると、以下の画像のようにアプリケーションが起動します。

image002_thumb.jpg

リポジトリを追加
ActivePerl標準のパッケージリポジトリにはJiftyは登録されていない為、別途参照先のリポジトリを登録します。 ppm.tcool.orgというサイトで、 Jiftyを始めとする標準でサポートされていないモジュールがWindows版ActivePerl用のパッケージとして提供されていますのでそちらを利用します。 Package Managerのツールバーから Edit > Preference > Repositories と選択すると、 リポジトリの追加画面が表示されるので、以下のURLをPackage Managerに登録します。
追加するURL:
http://ppm.tcool.org/archives/

image004_thumb.jpg

インストールを実行
次に、ツールバーのView > All Packages にチェックを入れてリポジトリに登録されているすべてのパッケージを一覧の表示対象とします。 そして、検索フォームに「Jifty」と入力すると以下の画像のように該当のパッケージが絞り込まれて表示されます。

image008_thumb.jpg

一覧上のJiftyを右クリックで選択してインストール対象として選択状態にし、ツールバーの File > Run Marked Actions を選択すると
確認ダイアログが表示されインストールが始まります。


image010.jpg

マシンスペックにもよるかもしれませんが、追加で必要となるパッケージが222個あると言われる通り
インストールには結構時間がかかりますが、焦らず待ちましょう。

※こちらの環境ではインストール時に

ERROR: File conflict for 'C:/Perl/html/site/lib/Test/Builder/Tester/Color.html'.
    The package Test-Simple has already installed a file that package Test-Builder-Tester
    wants to install.

というエラーが表示されて途中で終了しました。
Test-Simpleパッケージを上記要領で先にインストールしてから
再度Jiftyをインストールするとうまく入るようです。

続きを読む "JiftyでWebアプリをつくる - Windowsにインストール" »

Rails + rcov でテストカバレッジを調べるはてなブックマークに追加 livedoorクリップに追加 Yahoo!ブックマークに追加 del.icio.usに追加 イザ!ブックマーク ニフティクリップに追加

Ruby(とRails)を担当している石原です。

ソーシャル「OSを入れた後にインストールする10のアプリケーション」(仮) を作る過程をレポートしています。

これまでのエントリーはこちら ↓

  1. つくるぶガイドブログ: Ruby on Rails を使ってひとりでサービスを作ってみよう
  2. つくるぶガイドブログ: ひとりサービスの雛型をつくる(リキッドレイアウト、GetText、Acts as Authenticated)
  3. つくるぶガイドブログ: Rails で楽々ソーシャルブックマークの仕組みを作る
  4. つくるぶガイドブログ: Rails プラグイン acts_as_taggable_redux でタグクラウドを作ろう
  5. つくるぶガイドブログ: ドラッグアンドドロップで並べ替え(Rails + Ajax)

今回は少し話題を変え、テストとカバレッジツールを取り上げます。

アプリケーションにバグがないかどうかを調べるのがテストなわけですが、フォームにテキストを入力したり、ボタンをクリックして実際にアプリケーションを触って確かめるのが手動テストです。でも、手動テストは面倒なものですから、何度も何度も繰り返したりすることはできません。

操作と、その操作の結果が正しいかどうかの判定を自動でおこなうプログラムを書けば、テストを何度でも繰り返し実行可能になります。これがテストコードを書くということで、Rails で「テスト」といった場合は一般的にはこちらを指します。

テストコードを書くことは面倒なことです。書けば確かに品質の確保につながりますが、それをやることによって直接の開発が進むわけではないので、なかなか「テストコードを書こう」という気が起きないものだと思います。

この点、Rails にはあらかじめテストの仕組みが用意されており、テストコードの雛型まで用意されているので、最初の一歩を非常にスムーズに踏み出せるようになっています。

続きを読む "Rails + rcov でテストカバレッジを調べる" »

Lightboxのデザインをカスタマイズしてみよう(前編)はてなブックマークに追加 livedoorクリップに追加 Yahoo!ブックマークに追加 del.icio.usに追加 イザ!ブックマーク ニフティクリップに追加

こんにちは、HTML+CSS担当の小森です。

スライドショーやサムネイル画像の拡大でよく見かける「Lightbox」のライブラリ。
気軽に取り入れられるライブラリでもあって、すっかり定着した感がありますね。
今回はこのLightboxのデザインをカスタマイズしてみたいと思います。

image_main.jpg

続きを読む "Lightboxのデザインをカスタマイズしてみよう(前編)" »

reCAPTCHAのススメはてなブックマークに追加 livedoorクリップに追加 Yahoo!ブックマークに追加 del.icio.usに追加 イザ!ブックマーク ニフティクリップに追加

こんにちは、JavaScript担当の(株)アークウェブの竹村です。
ちょっと出遅れまして本年の初投稿です。よろしくお願い致します。

テーマ:reCAPTCHA

さて、早速今回の内容について入っていきます。
今回は単発でreCAPTCHAのススメです。レジュメは↓このようになっています。

  • reCAPTCHAってナニ?
  • reCAPTCHAの導入
  • reCAPTCHAの文言日本語化
  • reCAPTCHAの動的な表示
  • reCAPTCHAをLITBoxで表示
  • CMSに設置する方法リンク集

reCAPTCHAってナニ?

reCAPTCHAリリース当初に、下記の記事が2007年の5月末に出ています。

まずは、reCAPTCHAの説明の前に『CAPTCHA(キャプチャ)』はご存知でしょうか?
Yahoo!の新規登録など、Webサービスでよく使われるようになってきている、
画像文字の内容を入力させるアレです。

CAPTCHAの目的は『人間』と『コンピュータ(SpamBot)』を見分けることにあります。
画像文字はバイナリデータなのでコンピュータにはすぐには分かりませんが、人間には
目で見たり音声で確認すれば短時間で対応できます。

このCAPTCHAが有効であったことが上記@ITの記事にあります。

それを書籍のデジタル化に有効活用するように目を向けたのがreCAPTCHAです。
reCAPTCHAでは画像文字に単語が2つ出てきます。このうち1つはCAPTCHAと同じ
ように予め答えの分かっているもので、もう1つはOCRで読み取れなかった単語です。

CAPTCHAのしくみ上、ユーザは「両方正しい単語を入れるだろう」ということで成り立っています。

続きを読む "reCAPTCHAのススメ" »

Javaによるサーバサイドマッシュアップはてなブックマークに追加 livedoorクリップに追加 Yahoo!ブックマークに追加 del.icio.usに追加 イザ!ブックマーク ニフティクリップに追加

前回までに、Strutsアプリケーションの一部機能がAjax対応になりました。ビジネスロジックがJavaBeansになっていることで、それが持つ処理の再利用が実現でき、さらにDWRを使うことによって、Webブラウザ上からJavaScriptでのサーバサイドの処理を比較的簡単に利用することができました。多くのStrutsで作られたシステムは、このようにAjax対応を進めていくことができますので、積極的にAjaxに対応して、よりリッチな操作感を利用者に提供していきましょう。

さて今回からは、Javaでのマッシュアップに関する話をしていきたいと思います。元々Javaは「ネットワークに強い」という特徴がありますので、インターネット上に存在するどんなWebサービスでも、マッシュアップを行って自分のサービスに統合することが可能です。他の言語と違い、Javaの世界は、無数のOSSが次々と登場しています。それらをうまく活用することで、よりマッシュアップが手軽なものになります。

続きを読む "Javaによるサーバサイドマッシュアップ" »