モダンな perl プログラミング

44
モダンな Perl プログラミング 天野卓 @ ToI 企画

Upload: taku-amano

Post on 15-Dec-2014

2.665 views

Category:

Documents


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: モダンな Perl プログラミング

モダンなPerl プログラミング

天野卓 @ ToI 企画

Page 2: モダンな Perl プログラミング

自己紹介

佐久市で Web アプリケーションを開発しています。

LAMP

Movable Type のプラグインをフリーソフトウェアと

して配布しています。

http://tec.toi-planning.net

CPAN でも活動しています。

http://search.cpan.org/~usualoma/

Page 3: モダンな Perl プログラミング

アジェンダ

Perl とは

Perl5 の言語としての特徴

モダンなプログラミングスタイル

Moose

Catalyst

最近の動向

PSGI

AnyEvent

Page 4: モダンな Perl プログラミング

Perl とは

スクリプト言語

必要かつ十分に実行速度が高速

柔軟な文法と高い拡張性

豊富な拡張ライブラリ

TMTOWTDI (There's more than one way to do it)

「やり方はひとつじゃない」

Page 5: モダンな Perl プログラミング

Perl の歴史

1987 年 1.0

1994 年 5.0

オブジェクト指向プログラミングをサポート

2000 年 5.6

our 文 や warning プラグマの導入

2002 年 5.8

Encode が標準ライブラリになる

2010 年 5.12 6

Page 6: モダンな Perl プログラミング

どこで使われているか?

S 2ファクトリー株式会社

株式会社ガイアックス

株式会社ディー・エヌ・エー

株式会社ミクシィ

株式会社モバイルファクトリー

株式会社ライブドア

株式会社リクルート( Media Technology Labs )

YAPC::Asia Tokyo 2010 の協賛企業

Page 7: モダンな Perl プログラミング

Perl5 の言語としての特徴

“use strict; use warnigs;” で安全なプログラミング

明示的に指定するスコープ

後付けの結果として柔軟なオブジェクト指向

リフレクション

アトリビュート

Page 8: モダンな Perl プログラミング

use strict; use warnings; (1)

Page 9: モダンな Perl プログラミング

use strict; use warnings; (2)

Page 10: モダンな Perl プログラミング

use strict; use warnings; (3)

Page 11: モダンな Perl プログラミング

use strict; use warnings; (4)

Page 12: モダンな Perl プログラミング

明示的に指定するスコープ (1)

Page 13: モダンな Perl プログラミング

明示的に指定するスコープ (2)

Page 14: モダンな Perl プログラミング

明示的に指定するスコープ (3)

Page 15: モダンな Perl プログラミング

明示的に指定するスコープ (4)

Page 16: モダンな Perl プログラミング

オブジェクト指向 (1)

Page 17: モダンな Perl プログラミング

オブジェクト指向 (2)

Page 18: モダンな Perl プログラミング

オブジェクト指向 (3)

Page 19: モダンな Perl プログラミング

リフレクション

Page 20: モダンな Perl プログラミング

アトリビュート (1)

Page 21: モダンな Perl プログラミング

アトリビュート (2)

Page 22: モダンな Perl プログラミング

アトリビュート (3)

Page 23: モダンな Perl プログラミング

モダンなプログラミングスタイル

Moose

Catalyst

Page 24: モダンな Perl プログラミング

Moose

A Postmodern Object System for Perl

Perl の高い拡張性を利用して、 Perl 上で近代的なオプ

ジェクト指向プログラミングをサポートしようといういうモ

ジュール

Page 25: モダンな Perl プログラミング

代表的な Moose の機能

オブジェクトの定義

宣言的なオブジェクト定義

オブジェクトのロール

Java の Interface や Ruby の mixin みたいな機能

Page 26: モダンな Perl プログラミング

オブジェクトの定義 (1)

Page 27: モダンな Perl プログラミング

オブジェクトの定義 (2)

Page 28: モダンな Perl プログラミング

オブジェクトの定義 (3)

Page 29: モダンな Perl プログラミング

オブジェクトの定義 (4)

Page 30: モダンな Perl プログラミング

オブジェクトのロール

Traits(Composable Units of Behavior) の概念の実現

http://web.cecs.pdx.edu/~black/publications/TR_

CSE_02-012.pdf

Java の Interface や Ruby の mixin みたいな機能

Page 31: モダンな Perl プログラミング

オブジェクトのロール (1)

Page 32: モダンな Perl プログラミング

オブジェクトのロール (2)

Page 33: モダンな Perl プログラミング

オブジェクトのロール (3)

Page 34: モダンな Perl プログラミング

オブジェクトのロール (4)

Page 35: モダンな Perl プログラミング

オブジェクトのロール (5)

Page 36: モダンな Perl プログラミング

オブジェクトのロール (6)

Page 37: モダンな Perl プログラミング

オブジェクトのロール (7)

Page 38: モダンな Perl プログラミング

オブジェクトのロール (8)

Page 39: モダンな Perl プログラミング

Catalyst

MVC アーキテクチャを持つ WAF

いくつかの WAF に強く影響を受けている

Ruby on Rails, Maypole, Spring

プラグイン

ジェネレータースクリプト

組み込みのサーバー

テスト

Page 40: モダンな Perl プログラミング

プロジェクトの生成

Page 41: モダンな Perl プログラミング

コントローラーの雰囲気

Page 42: モダンな Perl プログラミング

最近の動向

PSGI

フレームワークとサーバをつなぐ仕様

WSGI や Rack を参考にして作られた

AnyEvent

イベント駆動プログラミングのモジュール

Page 43: モダンな Perl プログラミング

以上です

Page 44: モダンな Perl プログラミング

ご静聴ありがとうございました