モダンな perl プログラミング
DESCRIPTION
TRANSCRIPT
![Page 1: モダンな Perl プログラミング](https://reader033.vdocuments.net/reader033/viewer/2022052215/548e58efb479595e5a8b4902/html5/thumbnails/1.jpg)
モダンなPerl プログラミング
天野卓 @ ToI 企画
![Page 2: モダンな Perl プログラミング](https://reader033.vdocuments.net/reader033/viewer/2022052215/548e58efb479595e5a8b4902/html5/thumbnails/2.jpg)
自己紹介
佐久市で Web アプリケーションを開発しています。
LAMP
Movable Type のプラグインをフリーソフトウェアと
して配布しています。
http://tec.toi-planning.net
CPAN でも活動しています。
http://search.cpan.org/~usualoma/
![Page 3: モダンな Perl プログラミング](https://reader033.vdocuments.net/reader033/viewer/2022052215/548e58efb479595e5a8b4902/html5/thumbnails/3.jpg)
アジェンダ
Perl とは
Perl5 の言語としての特徴
モダンなプログラミングスタイル
Moose
Catalyst
最近の動向
PSGI
AnyEvent
![Page 4: モダンな Perl プログラミング](https://reader033.vdocuments.net/reader033/viewer/2022052215/548e58efb479595e5a8b4902/html5/thumbnails/4.jpg)
Perl とは
スクリプト言語
必要かつ十分に実行速度が高速
柔軟な文法と高い拡張性
豊富な拡張ライブラリ
TMTOWTDI (There's more than one way to do it)
「やり方はひとつじゃない」
![Page 5: モダンな Perl プログラミング](https://reader033.vdocuments.net/reader033/viewer/2022052215/548e58efb479595e5a8b4902/html5/thumbnails/5.jpg)
Perl の歴史
1987 年 1.0
1994 年 5.0
オブジェクト指向プログラミングをサポート
2000 年 5.6
our 文 や warning プラグマの導入
2002 年 5.8
Encode が標準ライブラリになる
2010 年 5.12 6
![Page 6: モダンな Perl プログラミング](https://reader033.vdocuments.net/reader033/viewer/2022052215/548e58efb479595e5a8b4902/html5/thumbnails/6.jpg)
どこで使われているか?
S 2ファクトリー株式会社
株式会社ガイアックス
株式会社ディー・エヌ・エー
株式会社ミクシィ
株式会社モバイルファクトリー
株式会社ライブドア
株式会社リクルート( Media Technology Labs )
YAPC::Asia Tokyo 2010 の協賛企業
![Page 7: モダンな Perl プログラミング](https://reader033.vdocuments.net/reader033/viewer/2022052215/548e58efb479595e5a8b4902/html5/thumbnails/7.jpg)
Perl5 の言語としての特徴
“use strict; use warnigs;” で安全なプログラミング
明示的に指定するスコープ
後付けの結果として柔軟なオブジェクト指向
リフレクション
アトリビュート
![Page 8: モダンな Perl プログラミング](https://reader033.vdocuments.net/reader033/viewer/2022052215/548e58efb479595e5a8b4902/html5/thumbnails/8.jpg)
use strict; use warnings; (1)
![Page 9: モダンな Perl プログラミング](https://reader033.vdocuments.net/reader033/viewer/2022052215/548e58efb479595e5a8b4902/html5/thumbnails/9.jpg)
use strict; use warnings; (2)
![Page 10: モダンな Perl プログラミング](https://reader033.vdocuments.net/reader033/viewer/2022052215/548e58efb479595e5a8b4902/html5/thumbnails/10.jpg)
use strict; use warnings; (3)
![Page 11: モダンな Perl プログラミング](https://reader033.vdocuments.net/reader033/viewer/2022052215/548e58efb479595e5a8b4902/html5/thumbnails/11.jpg)
use strict; use warnings; (4)
![Page 12: モダンな Perl プログラミング](https://reader033.vdocuments.net/reader033/viewer/2022052215/548e58efb479595e5a8b4902/html5/thumbnails/12.jpg)
明示的に指定するスコープ (1)
![Page 13: モダンな Perl プログラミング](https://reader033.vdocuments.net/reader033/viewer/2022052215/548e58efb479595e5a8b4902/html5/thumbnails/13.jpg)
明示的に指定するスコープ (2)
![Page 14: モダンな Perl プログラミング](https://reader033.vdocuments.net/reader033/viewer/2022052215/548e58efb479595e5a8b4902/html5/thumbnails/14.jpg)
明示的に指定するスコープ (3)
![Page 15: モダンな Perl プログラミング](https://reader033.vdocuments.net/reader033/viewer/2022052215/548e58efb479595e5a8b4902/html5/thumbnails/15.jpg)
明示的に指定するスコープ (4)
![Page 16: モダンな Perl プログラミング](https://reader033.vdocuments.net/reader033/viewer/2022052215/548e58efb479595e5a8b4902/html5/thumbnails/16.jpg)
オブジェクト指向 (1)
![Page 17: モダンな Perl プログラミング](https://reader033.vdocuments.net/reader033/viewer/2022052215/548e58efb479595e5a8b4902/html5/thumbnails/17.jpg)
オブジェクト指向 (2)
![Page 18: モダンな Perl プログラミング](https://reader033.vdocuments.net/reader033/viewer/2022052215/548e58efb479595e5a8b4902/html5/thumbnails/18.jpg)
オブジェクト指向 (3)
![Page 19: モダンな Perl プログラミング](https://reader033.vdocuments.net/reader033/viewer/2022052215/548e58efb479595e5a8b4902/html5/thumbnails/19.jpg)
リフレクション
![Page 20: モダンな Perl プログラミング](https://reader033.vdocuments.net/reader033/viewer/2022052215/548e58efb479595e5a8b4902/html5/thumbnails/20.jpg)
アトリビュート (1)
![Page 21: モダンな Perl プログラミング](https://reader033.vdocuments.net/reader033/viewer/2022052215/548e58efb479595e5a8b4902/html5/thumbnails/21.jpg)
アトリビュート (2)
![Page 22: モダンな Perl プログラミング](https://reader033.vdocuments.net/reader033/viewer/2022052215/548e58efb479595e5a8b4902/html5/thumbnails/22.jpg)
アトリビュート (3)
![Page 23: モダンな Perl プログラミング](https://reader033.vdocuments.net/reader033/viewer/2022052215/548e58efb479595e5a8b4902/html5/thumbnails/23.jpg)
モダンなプログラミングスタイル
Moose
Catalyst
![Page 24: モダンな Perl プログラミング](https://reader033.vdocuments.net/reader033/viewer/2022052215/548e58efb479595e5a8b4902/html5/thumbnails/24.jpg)
Moose
A Postmodern Object System for Perl
Perl の高い拡張性を利用して、 Perl 上で近代的なオプ
ジェクト指向プログラミングをサポートしようといういうモ
ジュール
![Page 25: モダンな Perl プログラミング](https://reader033.vdocuments.net/reader033/viewer/2022052215/548e58efb479595e5a8b4902/html5/thumbnails/25.jpg)
代表的な Moose の機能
オブジェクトの定義
宣言的なオブジェクト定義
オブジェクトのロール
Java の Interface や Ruby の mixin みたいな機能
![Page 26: モダンな Perl プログラミング](https://reader033.vdocuments.net/reader033/viewer/2022052215/548e58efb479595e5a8b4902/html5/thumbnails/26.jpg)
オブジェクトの定義 (1)
![Page 27: モダンな Perl プログラミング](https://reader033.vdocuments.net/reader033/viewer/2022052215/548e58efb479595e5a8b4902/html5/thumbnails/27.jpg)
オブジェクトの定義 (2)
![Page 28: モダンな Perl プログラミング](https://reader033.vdocuments.net/reader033/viewer/2022052215/548e58efb479595e5a8b4902/html5/thumbnails/28.jpg)
オブジェクトの定義 (3)
![Page 29: モダンな Perl プログラミング](https://reader033.vdocuments.net/reader033/viewer/2022052215/548e58efb479595e5a8b4902/html5/thumbnails/29.jpg)
オブジェクトの定義 (4)
![Page 30: モダンな Perl プログラミング](https://reader033.vdocuments.net/reader033/viewer/2022052215/548e58efb479595e5a8b4902/html5/thumbnails/30.jpg)
オブジェクトのロール
Traits(Composable Units of Behavior) の概念の実現
http://web.cecs.pdx.edu/~black/publications/TR_
CSE_02-012.pdf
Java の Interface や Ruby の mixin みたいな機能
![Page 31: モダンな Perl プログラミング](https://reader033.vdocuments.net/reader033/viewer/2022052215/548e58efb479595e5a8b4902/html5/thumbnails/31.jpg)
オブジェクトのロール (1)
![Page 32: モダンな Perl プログラミング](https://reader033.vdocuments.net/reader033/viewer/2022052215/548e58efb479595e5a8b4902/html5/thumbnails/32.jpg)
オブジェクトのロール (2)
![Page 33: モダンな Perl プログラミング](https://reader033.vdocuments.net/reader033/viewer/2022052215/548e58efb479595e5a8b4902/html5/thumbnails/33.jpg)
オブジェクトのロール (3)
![Page 34: モダンな Perl プログラミング](https://reader033.vdocuments.net/reader033/viewer/2022052215/548e58efb479595e5a8b4902/html5/thumbnails/34.jpg)
オブジェクトのロール (4)
![Page 35: モダンな Perl プログラミング](https://reader033.vdocuments.net/reader033/viewer/2022052215/548e58efb479595e5a8b4902/html5/thumbnails/35.jpg)
オブジェクトのロール (5)
![Page 36: モダンな Perl プログラミング](https://reader033.vdocuments.net/reader033/viewer/2022052215/548e58efb479595e5a8b4902/html5/thumbnails/36.jpg)
オブジェクトのロール (6)
![Page 37: モダンな Perl プログラミング](https://reader033.vdocuments.net/reader033/viewer/2022052215/548e58efb479595e5a8b4902/html5/thumbnails/37.jpg)
オブジェクトのロール (7)
![Page 38: モダンな Perl プログラミング](https://reader033.vdocuments.net/reader033/viewer/2022052215/548e58efb479595e5a8b4902/html5/thumbnails/38.jpg)
オブジェクトのロール (8)
![Page 39: モダンな Perl プログラミング](https://reader033.vdocuments.net/reader033/viewer/2022052215/548e58efb479595e5a8b4902/html5/thumbnails/39.jpg)
Catalyst
MVC アーキテクチャを持つ WAF
いくつかの WAF に強く影響を受けている
Ruby on Rails, Maypole, Spring
プラグイン
ジェネレータースクリプト
組み込みのサーバー
テスト
![Page 40: モダンな Perl プログラミング](https://reader033.vdocuments.net/reader033/viewer/2022052215/548e58efb479595e5a8b4902/html5/thumbnails/40.jpg)
プロジェクトの生成
![Page 41: モダンな Perl プログラミング](https://reader033.vdocuments.net/reader033/viewer/2022052215/548e58efb479595e5a8b4902/html5/thumbnails/41.jpg)
コントローラーの雰囲気
![Page 42: モダンな Perl プログラミング](https://reader033.vdocuments.net/reader033/viewer/2022052215/548e58efb479595e5a8b4902/html5/thumbnails/42.jpg)
最近の動向
PSGI
フレームワークとサーバをつなぐ仕様
WSGI や Rack を参考にして作られた
AnyEvent
イベント駆動プログラミングのモジュール
![Page 43: モダンな Perl プログラミング](https://reader033.vdocuments.net/reader033/viewer/2022052215/548e58efb479595e5a8b4902/html5/thumbnails/43.jpg)
以上です
![Page 44: モダンな Perl プログラミング](https://reader033.vdocuments.net/reader033/viewer/2022052215/548e58efb479595e5a8b4902/html5/thumbnails/44.jpg)
ご静聴ありがとうございました