タグ

ブックマーク / gihyo.jp (60)

  • 第43回 Text::Xslate:永続環境に特化したテンプレートエンジン | gihyo.jp

    TTの体を差し替える 前回はウェブ業界で標準的に使われているTemplate Toolkitをより安全に使うためのカスタマイズ方法をいくつか紹介しました。しばしば批判の対象となってきたエスケープの問題については、TTでも適切な拡張を施せば後発のモジュールと遜色ないか、それ以上に便利に使えることは確認できたかと思います。 ただし、エスケープの仕方ひとつとってもさまざまなやり方があったように、TTは、柔軟である代償として速度面ではかなりの不利を抱えています。 もっとも、不利といってもそれはいまの、しかもかなり規模の大きな現場の視点で見たときの話で、数年前、おもなライバルがHTML::Mason(と、機能面で大きな差があるHTML::Template)だった時代にはTTも十分に高速といえましたし[1]⁠、中小規模のサイトではいまでもTTで十分なレスポンスは得られます。 また、かれこれ10年近く

    第43回 Text::Xslate:永続環境に特化したテンプレートエンジン | gihyo.jp
  • 第42回 Template Toolkit:Perl製テンプレートエンジンのデファクトスタンダード | gihyo.jp

    組み合わせ自由なツールキット Template Toolkit、通称TTは、その名前からもわかるように、もともとは単なるテンプレートエンジンではなく、テンプレートエンジンをつくるためのツール群をまとめたものです。そのツール群を組み合わせた標準のエンジン、標準のフロントエンドと呼べるものもありますが、これはあくまでもTTのよくある利用法のひとつであって、そのすべてではありません。 たとえば、CPANにはApache::Templateという、TTのエンジン部分をmod_perl用にカスタマイズしたうえでmod_perl用のフロントエンドをかぶせるモジュールがありますが、これを使えば、最初に多少の設定は必要になるものの、あとはTTのテンプレートを適切なパスに置くだけで、パラメータの取得からルーティング、レンダリングまでよしなに計らってくれるようになります(TTの文法をサポートしたPHPのような

    第42回 Template Toolkit:Perl製テンプレートエンジンのデファクトスタンダード | gihyo.jp
  • 第40回 Text::MicroTemplate:得意分野なんだからPerlを使えばいいじゃない、という方に | gihyo.jp

    モダンPerlの世界へようこそ 第40回Text::MicroTemplate:得意分野なんだからPerlを使えばいいじゃない、という方に テキストの整形はPerlの基 Perlは「Practical Extraction and Report Language」とも呼ばれるくらいで、正規表現などによる情報抽出機能と並んで、レポートの形を整えて出力する機能はPerlの根幹をなす部分といえます。もちろんそのもっとも原始的な形は二重引用符でくくられた文字列のなかにそのまま変数を埋め込むものです。 print "This report is created by $author."; もう少しこったことをしたければ、Cから受け継いだprintf系の構文を使えばよいでしょう。 printf "This report is created on %04d/%02d/%02d.", $year, $

    第40回 Text::MicroTemplate:得意分野なんだからPerlを使えばいいじゃない、という方に | gihyo.jp
  • 第39回 DBIx::Skinny:DBIx::Classに不満を感じたら | gihyo.jp

    DBIC以降の選択肢 今回はデータベース話の締めくくりとして、DBIx::Class以降に登場したいくつかの選択肢についてざっくりまとめておきます。これらはいずれも若く、DBICに比べてユーザ数も少ないためドキュメントなどの整備が遅れている部分もありますが、今回とりあげるものの多くは日人がつくっているものですから、英語圏で開発が進められているものより疑問や要望は送りやすいはず。気になることがあったらぜひそれぞれの作者氏に伝えていただければと思います。 DBIx::Skinny nekokakこと小林篤氏のDBIx::Skinnyは、今回紹介するもののなかではもっとも実績豊富なものといってよいでしょう。開発の動機については氏のブログによくまとまっていますが、標準で用意されているCRUDメソッドを使うときだけでなく、速度を稼ぐために生のSQLを書いたときでもinflateなどの補助機能を使え

    第39回 DBIx::Skinny:DBIx::Classに不満を感じたら | gihyo.jp
  • 2011年のPerl | gihyo.jp

    あけましておめでとうございます。今回は新春特別企画ということで、2010年のPerl界を振り返りつつ、2011年のPerl界がどうなっていくかを、予定と期待を織りまぜながら見ていきましょう。 Perl 5.14 2010年のYAPC::Asiaでジェシー・ヴィンセント(Jesse Vincent)氏が紹介されていたように、Perl 5は現在、2011年4月に予定されているPerl 5.14のリリースに向けて最後の仕上げをしているところです。Perl 5.14は2010年の開発成果をまとめた定期リリースなのでPerlの根幹をゆるがす大きな仕様変更はありませんが、Perl体、コアモジュールともに細かなバグがいくつも修正されているほか、内部的にはさまざまな最適化が行われています。 一例を紹介しますと、Perl 5.14ではkeysやeach、あるいはpushやshiftのような、配列やハッシュ

    2011年のPerl | gihyo.jp
  • 第38回 DBIx::Class:拡張性の高さが売りではありますが | gihyo.jp

    国内では微妙な立ち位置に ずいぶん間が空いてしまいましたが、今回はデータベース話の3回目として、DBICことDBIx::Classについてまとめてみます。DBICは、海外ではMooseやCatalystと並ぶモダンPerl界の三種の神器のひとつとしていまも広く宣伝されていますが、国内では、当初こそClass::DBIからの乗り換えを強力に推進する流れが見られたものの、最近ではあまり名前を聞くこともなくなり、むしろDBICからの脱却が潮流になっているかの印象を受けることさえあります。いったい何がどうなっているのか、例によって歴史を追いかけながら見ていきましょう。 もともとはオブジェクトを永続化するためのもの DBICの立ち位置を理解するには、まずはその先駆けとなったClass::DBIがどういうものであったかを理解しておく必要があります。 連載第36回でも紹介したように、マイケル・シュワーン

    第38回 DBIx::Class:拡張性の高さが売りではありますが | gihyo.jp
  • 2日目レポート[随時更新] | gihyo.jp

    10月15日、16日、東京工業大学大岡山キャンパス (東京都目黒区) でYAPC::Asia 2010 Tokyoが開催されます。ページでは、2日目のレポートを随時掲載していきます。 電車遅延のため、日のプログラム開始を10分遅らせるとのことです(なお、休憩時間を利用して、すでに来予定しているタイムテーブルに修正されています⁠)⁠。 ※今回のレポートは全セッションを回れておりません。ご了承ください。 gfxさん「How Xslate Works - The next generation's template engine⁠」⁠ Text::Xslateの作者であるgfxさんによるXslateの内部構造を中心としたトークでした。 XslateはXSで書かれているテンプレートエンジンです。非常に高速に動作するように設計されていて、HTMLエスケープは自動で行ってくれる機能により安全性に

    2日目レポート[随時更新] | gihyo.jp
  • 1日目レポート[随時更新] | gihyo.jp

    10月15日、16日、東京工業大学大岡山キャンパス (東京都目黒区) でYAPC::Asia 2010 Tokyoが開催されます。ページでは、1日目のレポートを随時掲載していきます。 ※今回のレポートは全セッションを回れておりません。ご了承ください。 Daisuke Makiさん「Welcome Speech⁠」⁠ JPAの牧さんより、開催の挨拶が行われました。5周年となる今回のテーマは“⁠Welcome Perl⁠”であること、基調講演の発表者をそれぞれ"The Beginnig"、"Current Master"、"The Purple Master"と紹介しました。 また、今回のイベント運営にノンエンジニアの941さんが加わり、運営に尽力されたことが語られました。そのほか、今回のイベントではロケタッチと協力してYAPCのシールを制作したことが紹介されました。 最後に、スポンサーに対

    1日目レポート[随時更新] | gihyo.jp
  • 前夜祭レポート[随時更新] | gihyo.jp

    明日、明後日(10月15日、16日)に、YAPC::Asia 2010が開催されます。それに先立ちPre-conference Meetupとして、日「YAPC::Asia 2010 前夜祭」が開かれます。 ページでは、このYAPC::Asia 2010 前夜祭を随時レポートしていきます! なお、yusukebeさんから、発表を聞かずに、ホールのビールを飲んで構いませんとアナウンスがありました(会場内では飲NGとのこと⁠)⁠。 yusukebeさん「イントロダクション」 「出張PerlCasual #04」と題して、yusukebeこと和田裕介氏さんから前夜祭開始の挨拶がありました。その後、ライブラリ利用者や日曜大工的にPerlを利用している方などを対象にした「PerlCasual」ができた経緯やこれまでの活動報告が説明されました。 その後、今回のプログラムである、WAF(Web A

    前夜祭レポート[随時更新] | gihyo.jp
  • #1 今年もやります、YAPC::Asia Tokyo 2010 | gihyo.jp

    10月15日(金), 16日(土)に、国内最大のPerlのイベント「YAPC::Asia Tokyo 2010」が開催されます。場所は、昨年と同じく東京工業大学大岡山キャンパスです。 稿では、昨年に引き続き、今年もYAPC::Asia Tokyo 2010の見所を数回にわたって紹介していきます。 今年のテーマは"Welcome, Perl" 今年で5周年を迎えるYAPC::Asia Tokyo 2010のテーマは"Welcome, Perl"です。このWelcomeには過去、現在、未来のPerlそしてPerl使い達を迎えようという意味が込められています。Perlが世に出てから23年、現在Perlにはルネッサンスの時代が訪れています。この時代に見るPerlの過去から未来、そして現在利用可能な最先端の技術に触れることができるはずです。 また例年のことではありますが、YAPC::Asiaは国内

    #1 今年もやります、YAPC::Asia Tokyo 2010 | gihyo.jp
  • 第35回 DBI:生のSQLが散らばると言う前に | gihyo.jp

    Perldbm いまでは省みられることも少なくなりましたが、Perlには1989年にリリースされたバージョン3.0以降、dbmと呼ばれるシンプルなデータベースにアクセスする機構が標準で組み込まれています。このdbmは、いわゆるリレーショナルデータベースとは違ってキーと値の組み合わせをディスクに保存できるだけのものですが、ハッシュ(当時はまだ連想配列と呼んでいました)と結びつけることでタブ区切りファイルなどを読んでいくより高速に検索ができたため、ユーザ環境に永続的なデータを保存する手段のひとつとして重宝されていました。Perl 3/4の時代にはdbmopenというコマンドが使われていましたが、この機構はPerl 5になって一新され、いまではより汎用的なtieというコマンドを使うことになっています。この仲間としては古くからあるBerkeley DBやGDBMなどのほか、最近では平林幹雄氏のT

    第35回 DBI:生のSQLが散らばると言う前に | gihyo.jp
  • 第34回 Perl Mongers:顔の見える仲間を増やそう | gihyo.jp

    もうひとつの.pm Perl 5のモジュールには.pmという拡張子をつけることになっています。このpmというのはもちろんPerl Moduleのことですが、Perlの世界ではもうひとつ、Perl Monger(s)という意味になることがある、というのもみなさんよくご存じのことでしょう。このmongerという単語は、もともとはあまりよろしくない物品を言葉巧みに売りつける行商人を意味していました。オックスフォードの大きな英語辞典で共起する取扱商品を拾ってみると、肉や魚、チーズといったにおいの強い産物から、奴隷や娼婦、あるいは流行、ニュース、スキャンダルといった無形のものまで、何かしら好ましくない要素をもつものが並んでいるのですから、自虐であれ謙遜であれ、Perlについても同列に理解するべきでしょう。その後生まれたPerlMonksのような言葉に比べると、Perl Mongersはもっと下世話な

    第34回 Perl Mongers:顔の見える仲間を増やそう | gihyo.jp
  • 第33回 enc2xs:標準の文字コード表にはない文字を変換する | gihyo.jp

    Encodeを使っても文字化けするとき Encodeは特定のエンコーディングにしたがって配列されたバイナリを「文字列」に置き換えるためのモジュールですが、かならずしもすべてのエンコーディングがあらゆるバイナリの組み合わせに対応しているわけではありません。 たとえば、「⁠シフトJIS」環境における機種依存文字の例としてよく取り上げられる丸付き数字をEncodeのお作法通りにdecode、encodeする場合、「⁠シフトJIS」だからと思って安易にshiftjis系列のエンコーディングでdecodeしてしまうと、丸付き数字のマッピングデータがないため「?@」のように文字化けを起こしてしまいます。 use strict; use warnings; use Encode; my $binary = pack('C*', 0x87, 0x40); # ①; my $string = decode(

    第33回 enc2xs:標準の文字コード表にはない文字を変換する | gihyo.jp
  • 第32回 Encode:日本語だけ扱えればよいのではなく | gihyo.jp

    一般的には推奨されないencodingプラグマ 前回取り上げたencodingプラグマは、簡単なjperl用のスクリプトを移植したい場合には便利ですが、perlunifaqというPerl付属のマニュアルにははっきり「Don't use it.」と書いてあるくらい、一般的には使えないプラグマと認識されています。 前回も見たように、encodingプラグマが対応しているのは、ソースコードに埋め込まれている文字列やそれに類する正規表現、そして標準入力からのデータを指定された文字コードからPerlの内部表現に変換し、標準出力へ出力する際には内部表現を指定された文字コードに変換することだけです。ほかのファイル入出力部分や、コマンドラインから受け取った引数、標準エラー出力などの変換は行わないので、ちょっと凝ったことをしようと思うと、結局「外から入ってきたものはデコード、外に出すものはエンコード」という

    第32回 Encode:日本語だけ扱えればよいのではなく | gihyo.jp
  • 第30回 Test::Class:ユニットテストに使うだけでなく | gihyo.jp

    メタデータからテスト件数を取得する 前回はテストファイルやテストデータの数からテストプランを計算するモジュールを紹介しました。今回はその続きとして、テストファイルのメタデータからテストの数を求めるモジュールを紹介していきましょう。これらのモジュールの多くは1994年にケント・ベック(Kent Beck)氏がSmalltalk向けに書いたSUnitを祖先にもつ、いわゆるxUnit系のフレームワークに属するものですが、Perlにはそれ以前からTest Anything Protocolを使った独自のテスト手法が存在していたため、Javaなどで使われている同種のフレームワークとはやや毛色の違う部分もあります。一般的にはクラスをひとつ書くたびに対応するユニットテスト用のクラスを書くのがよいように言われていますが、ここではもっとゆるく、テストを自動的に検出してくれるだけでなく、テストの事前事後になん

    第30回 Test::Class:ユニットテストに使うだけでなく | gihyo.jp
  • 第29回 Test::Base:データ本位のテストをするときは | gihyo.jp

    テストは実行する前にも数えられるはず 前回、前々回と見てきたように、Test Anything Protocolでは来ひとつひとつのテストに連番が割り振られます。新しいテストを追加したければ、テストファイルの末尾に移動して、テスト番号をひとつずつ増やしながらテストを書き進め、終わったら先頭に戻って宣言部を更新する。先頭に戻るのが面倒であれば宣言部を末尾に移してもよいですが、いずれにしてもテストを追加し終わった時点でテストの件数はわかっているのですから、更新に困ることはないはずでした。 ところが、Perl 5の時代に入ってテスト用のモジュールが連番を振ってくれるようになった結果、テストの件数がわかりづらくなったため、no_planやdone_testingのように実際にテストを実行した回数をテストの総数とみなす手法が登場した――というのが前回の話でしたが、そういった妥協案は、Test An

    第29回 Test::Base:データ本位のテストをするときは | gihyo.jp
  • 第27回 Test::Most:Test::Moreでは物足りなくなってきたら | gihyo.jp

    Test Anything Protocol Perlは非常にテストを重視している言語です。連載第14回ではPerl体のテスト数がどのように推移してきたかを、また連載第24回ではCPANモジュールの品質保証に大きな役割を果たしてきたCPANTSについて簡単に紹介しましたが、Perlとテストのつながりはそれだけではありません。CPANにはTestを名前に含むディストリビューションが500以上もあがっていますし(これは全ディストリビューション数の約2.5%にあたります⁠)⁠、Perlで標準的に使われているテスト形式はTest Anything Protocol (TAP)という名前を得て多くの言語に移植され、2008年からはIETFの標準化を目指した活動も始まっています――というと何やらすごいプロトコルのように聞こえるかもしれませんが、Test Anything Protocolというのは要

    第27回 Test::Most:Test::Moreでは物足りなくなってきたら | gihyo.jp
  • 第26回 ShipIt:モジュールのリリースをもっと手軽に | gihyo.jp

    CPANにモジュールをアップロードする前に 第23回から続けてきたシリーズの一環として、今回はモジュールをCPANにアップロードするときのツールをまとめてみます。おそらくこのようなツールに興味を持つような方なら当然 perlnewmod や perlmodlib、あるいはCPANやPAUSEについてのよくある質問のページ[1]くらい読んでいるでしょうから大丈夫だろうとは思っていますが、今回とりあげるツールは使い方を間違えると周囲に多大な迷惑をかける可能性があります。一度CPANにアップロードされたファイルは、たとえミスであっても数日中には世界中のミラーにコピーされますし、BackPANと呼ばれる保管庫には半永久的に保存されますので、うっかり無意味な(あるいは部外秘の)モジュールを公開してしまうことがないよう、また、ほかの人の迷惑になるような名前空間を占有してしまわないよう、実際に試してみる

    第26回 ShipIt:モジュールのリリースをもっと手軽に | gihyo.jp
  • 第25回 Module::Starter:モジュールを書くためのテンプレート | gihyo.jp

    モジュールを再利用可能にするためのツールたち Perl 4の時代まではいざ知らず、いまどきPerlのモジュールやアプリケーションを再配布しようと思ったら、CPANモジュールと同じ形式にしておくのがベタープラクティスです。たとえ一般には公開しない社外秘のモジュールであっても、Makefile.PLやBuild.PLを用意して、テストも書いて、できればREADMEやChangesなどの更新履歴もつけておけば、別のプロジェクトを立ち上げたときにコピー&ペーストする必要もなくなりますし、業務の引き継ぎなども簡単になります。 とはいえ、モジュールを書くたびにMakefile.PLなどを一から書きおこすのは面倒な話。メタ情報の部分はモジュールごとに異なるとはいえ、それ以外の部分は(特にひな形の時点では)大差ないのがふつうですから、できれば省力化したいところです。 今回はそんなときに使われるひな形作成ツ

    第25回 Module::Starter:モジュールを書くためのテンプレート | gihyo.jp
  • 第24回 CPAN:Perl界の水先案内人 | gihyo.jp

    CPANが生まれるまで その昔、Perlのスクリプトやライブラリは作者のサイトなどから個別にダウンロードしてくるものでした。古くからのユーザであればcgi-lib.plやjcode.pl、mimew.plといったライブラリのことを懐かしく思い出すでしょうし、いちいち名前はあげませんが、CGI経由で(あるいはCGIを利用せずに)実行できる各種スクリプトを落としてきて設置したことのある方も少なくないことでしょう。ライブラリだけでなく、前回紹介したデータベースに対応したPerl 4バイナリや非Unix環境向けのPerlバイナリの場合も同じです。入手先の情報などはニュースグループで共有されていましたが、ツールやライブラリが各地に分散していると必要な情報を探して環境を構築するだけでも結構な手間になってしまうため、まとめサイトとして誕生したのがCPANことComprehensive Perl Arch

    第24回 CPAN:Perl界の水先案内人 | gihyo.jp