SlideShare ist ein Scribd-Unternehmen logo
1 von 24
Downloaden Sie, um offline zu lesen
P6W に基づく Perl6 に於け
る Web 開発の基礎となる
Crust
Tokuhiro Matsuno

LINE Corporation Service Dev.1
Who are you?
• Amon2, Test::Pretty, Furl, Harriet, HTTP::Session2,
Test::TCP, Minilla, etc…

• Co-author of Plack

• Works as a tech lead at LINE Corp.
LINE♡Perl
Perl6?
• Perl 5 の後継?兄弟?

• start at 2000

• useful release: 2010/4(Rakudo Star)

• Christmas release: 2015
Perl6 は安定したの
か?
A. していない
Perl6 は⾼高速になった
のか?
A. なっていない
しかし、Parrot → MoarVM で⾼高速化
成功している。
Perl6 で Web application
開発はできるのか?
A. できる
詳細は YAPC::Hokkaido の資料料を参照
https://www.slideshare.net/
tokuhirom/perl6-web
Perl6 Web Development
and Specs
• Perl5 のときは PSGI があった

• Perl6 では??
P6W
P6W とは……?
• https://github.com/zostay/P6W

• ほとんどこの⼈人が⼀一⼈人でやってるっぽい

• ゴールは PSGI と同じ

• 対応している実装はあんまない
HTTP::Server::Tiny
• もともと PSGI をサポートしていた

• ↓

• P6W にサポートさせてみた
P6W の階層構造
• Layer 0: Server

• Layer 1: Middleware

• Layer 2: Application
http://blogs.perl.org/users/jakob/2012/09/the-joy-of-psgi-middleware.html
⼊入出⼒力力
• ⼊入⼒力力は Associative(Hash-ish object)

• global capabilities

• configuration information

• per-request information

• 出⼒力力は Supplier
コード例例
sub app(%env) {
start {
200,
[ Content-Type =>
'text/plain' ],
[ 'Hello World!' ]
}
}
とはいえ
• 直接 P6W を触る必要はあんまない

• そう、Crust ならね。
Crust ?
• Plack for Perl6

• P6W support
Static contents support
• Crust::App::File

• Crust::App::Directory

• Crust::App::URLMap
Utils
• Crust::Builder

• Crust::Headers

• Crust::MIME

• Crust::Request::Upload

• Crust::Request

• Crust::Response
• Crust::Runner

• Crust::Test::MockHTTP

• Crust::Test

• Crust

• HTTP::Message::PSGI
Middlewares
Crust::Middleware::AccessLog

Crust::Middleware::Auth::Basic

Crust::Middleware::Conditional

Crust::Middleware::ContentLength

Crust::Middleware::ErrorDocument

Crust::Middleware::Lint
Crust::Middleware::ReverseProxy

Crust::Middleware::Runtime

Crust::Middleware::StackTrace

Crust::Middleware::Static

Crust::Middleware::XFramework
まとめ
• Perl6 の Web 開発の雰囲気をシェアしました

• P6W ってものがある

• Crust ってものがある

Weitere ähnliche Inhalte

Was ist angesagt?

Spring bootで学ぶ初めてのwebアプリ開発
Spring bootで学ぶ初めてのwebアプリ開発Spring bootで学ぶ初めてのwebアプリ開発
Spring bootで学ぶ初めてのwebアプリ開発terahide
 
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクションTakahiro Okumura
 
おっさんES6/ES2015,React.jsを学ぶ
おっさんES6/ES2015,React.jsを学ぶおっさんES6/ES2015,React.jsを学ぶ
おっさんES6/ES2015,React.jsを学ぶdcubeio
 
Spring知っておきたい
Spring知っておきたいSpring知っておきたい
Spring知っておきたいYuichi Hasegawa
 
2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクションTakahiro Okumura
 
Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3tech
Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3techConsumer Driven Contractsで REST API/マイクロサービスをテスト #m3tech
Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3techToshiaki Maki
 
50分で掴み取る ASP.NET Web API パターン&テクニック
50分で掴み取る ASP.NET Web API パターン&テクニック50分で掴み取る ASP.NET Web API パターン&テクニック
50分で掴み取る ASP.NET Web API パターン&テクニックmiso- soup3
 
JavaからScalaへ
JavaからScalaへJavaからScalaへ
JavaからScalaへtakezoe
 
2016/12/17 ASP.NET フロントエンドタスク入門
 2016/12/17 ASP.NET フロントエンドタスク入門 2016/12/17 ASP.NET フロントエンドタスク入門
2016/12/17 ASP.NET フロントエンドタスク入門miso- soup3
 
Spring Day 2016 springの現在過去未来
Spring Day 2016 springの現在過去未来Spring Day 2016 springの現在過去未来
Spring Day 2016 springの現在過去未来Yuichi Hasegawa
 
Spring 5に備えるリアクティブプログラミング入門
Spring 5に備えるリアクティブプログラミング入門Spring 5に備えるリアクティブプログラミング入門
Spring 5に備えるリアクティブプログラミング入門Takuya Iwatsuka
 
ASP.NET WebAPI 体験記 #clrh99
ASP.NET WebAPI 体験記 #clrh99ASP.NET WebAPI 体験記 #clrh99
ASP.NET WebAPI 体験記 #clrh99Katsuya Shimizu
 
Laravel5.1をつかったWebアプリケーション開発
Laravel5.1をつかったWebアプリケーション開発Laravel5.1をつかったWebアプリケーション開発
Laravel5.1をつかったWebアプリケーション開発kan-notice
 
アメブロ2016 アメブロフロント刷新にみる ひかりとつらみ
アメブロ2016 アメブロフロント刷新にみる ひかりとつらみアメブロ2016 アメブロフロント刷新にみる ひかりとつらみ
アメブロ2016 アメブロフロント刷新にみる ひかりとつらみKazunari Hara
 
Web開発の最新トレンド ~1から知るASP.NET~
Web開発の最新トレンド ~1から知るASP.NET~Web開発の最新トレンド ~1から知るASP.NET~
Web開発の最新トレンド ~1から知るASP.NET~miso- soup3
 
グラフデータベース入門
グラフデータベース入門グラフデータベース入門
グラフデータベース入門Masaya Dake
 
ウェブアプリケーションのパフォーマンスチューニング
ウェブアプリケーションのパフォーマンスチューニングウェブアプリケーションのパフォーマンスチューニング
ウェブアプリケーションのパフォーマンスチューニングYasuhiro Onishi
 
先取り!PHP 7 と WordPress
先取り!PHP 7 と WordPress先取り!PHP 7 と WordPress
先取り!PHP 7 と WordPressMasashi Shinbara
 
Going Serverless, Building Applications with No Servers
Going Serverless, Building Applications with No ServersGoing Serverless, Building Applications with No Servers
Going Serverless, Building Applications with No ServersKeisuke Nishitani
 

Was ist angesagt? (20)

Spring bootで学ぶ初めてのwebアプリ開発
Spring bootで学ぶ初めてのwebアプリ開発Spring bootで学ぶ初めてのwebアプリ開発
Spring bootで学ぶ初めてのwebアプリ開発
 
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション
 
おっさんES6/ES2015,React.jsを学ぶ
おっさんES6/ES2015,React.jsを学ぶおっさんES6/ES2015,React.jsを学ぶ
おっさんES6/ES2015,React.jsを学ぶ
 
Spring知っておきたい
Spring知っておきたいSpring知っておきたい
Spring知っておきたい
 
2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション
 
Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3tech
Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3techConsumer Driven Contractsで REST API/マイクロサービスをテスト #m3tech
Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3tech
 
50分で掴み取る ASP.NET Web API パターン&テクニック
50分で掴み取る ASP.NET Web API パターン&テクニック50分で掴み取る ASP.NET Web API パターン&テクニック
50分で掴み取る ASP.NET Web API パターン&テクニック
 
Application Bootstrap
Application BootstrapApplication Bootstrap
Application Bootstrap
 
JavaからScalaへ
JavaからScalaへJavaからScalaへ
JavaからScalaへ
 
2016/12/17 ASP.NET フロントエンドタスク入門
 2016/12/17 ASP.NET フロントエンドタスク入門 2016/12/17 ASP.NET フロントエンドタスク入門
2016/12/17 ASP.NET フロントエンドタスク入門
 
Spring Day 2016 springの現在過去未来
Spring Day 2016 springの現在過去未来Spring Day 2016 springの現在過去未来
Spring Day 2016 springの現在過去未来
 
Spring 5に備えるリアクティブプログラミング入門
Spring 5に備えるリアクティブプログラミング入門Spring 5に備えるリアクティブプログラミング入門
Spring 5に備えるリアクティブプログラミング入門
 
ASP.NET WebAPI 体験記 #clrh99
ASP.NET WebAPI 体験記 #clrh99ASP.NET WebAPI 体験記 #clrh99
ASP.NET WebAPI 体験記 #clrh99
 
Laravel5.1をつかったWebアプリケーション開発
Laravel5.1をつかったWebアプリケーション開発Laravel5.1をつかったWebアプリケーション開発
Laravel5.1をつかったWebアプリケーション開発
 
アメブロ2016 アメブロフロント刷新にみる ひかりとつらみ
アメブロ2016 アメブロフロント刷新にみる ひかりとつらみアメブロ2016 アメブロフロント刷新にみる ひかりとつらみ
アメブロ2016 アメブロフロント刷新にみる ひかりとつらみ
 
Web開発の最新トレンド ~1から知るASP.NET~
Web開発の最新トレンド ~1から知るASP.NET~Web開発の最新トレンド ~1から知るASP.NET~
Web開発の最新トレンド ~1から知るASP.NET~
 
グラフデータベース入門
グラフデータベース入門グラフデータベース入門
グラフデータベース入門
 
ウェブアプリケーションのパフォーマンスチューニング
ウェブアプリケーションのパフォーマンスチューニングウェブアプリケーションのパフォーマンスチューニング
ウェブアプリケーションのパフォーマンスチューニング
 
先取り!PHP 7 と WordPress
先取り!PHP 7 と WordPress先取り!PHP 7 と WordPress
先取り!PHP 7 と WordPress
 
Going Serverless, Building Applications with No Servers
Going Serverless, Building Applications with No ServersGoing Serverless, Building Applications with No Servers
Going Serverless, Building Applications with No Servers
 

Ähnlich wie Yapc fukuoka crust

いまどき(これから)のPHP開発
いまどき(これから)のPHP開発いまどき(これから)のPHP開発
いまどき(これから)のPHP開発Kenjiro Kubota
 
PHPプログラミングのIPv6対応の実際
PHPプログラミングのIPv6対応の実際PHPプログラミングのIPv6対応の実際
PHPプログラミングのIPv6対応の実際Tetsuji Koyama
 
dkanのご紹介-150704CMSどうでしょう夏の陣
dkanのご紹介-150704CMSどうでしょう夏の陣dkanのご紹介-150704CMSどうでしょう夏の陣
dkanのご紹介-150704CMSどうでしょう夏の陣Kyoko Ohtagaki
 
A 2a:アジャイルなオフショア開発
A 2a:アジャイルなオフショア開発A 2a:アジャイルなオフショア開発
A 2a:アジャイルなオフショア開発Arata Fujimura
 
PaaS / Cloud Foundry makes you happy
PaaS / Cloud Foundry makes you happyPaaS / Cloud Foundry makes you happy
PaaS / Cloud Foundry makes you happyKatsunori Kawaguchi
 
Perl入学式に参加して初めてwebアプリを作った話
Perl入学式に参加して初めてwebアプリを作った話Perl入学式に参加して初めてwebアプリを作った話
Perl入学式に参加して初めてwebアプリを作った話Yuzo Iwasaki
 
IPv6 最新動向 〜世界共通語で最適化が進むインターネット〜
IPv6 最新動向 〜世界共通語で最適化が進むインターネット〜IPv6 最新動向 〜世界共通語で最適化が進むインターネット〜
IPv6 最新動向 〜世界共通語で最適化が進むインターネット〜Akira Nakagawa
 
結局IPv6ってどうなん?(序)
結局IPv6ってどうなん?(序)結局IPv6ってどうなん?(序)
結局IPv6ってどうなん?(序)nemumu
 
爆速フレームワークでREST APIを作った話
爆速フレームワークでREST APIを作った話爆速フレームワークでREST APIを作った話
爆速フレームワークでREST APIを作った話Shohei Tai
 
ライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudy
ライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudyライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudy
ライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudyKenichi Mukai
 
Python charity talk in japan fastAPI introduction
Python charity talk in japan fastAPI introductionPython charity talk in japan fastAPI introduction
Python charity talk in japan fastAPI introductionssuserc75dc7
 
みんなのPython勉強会#35 Pythonのお仕事動向
みんなのPython勉強会#35 Pythonのお仕事動向みんなのPython勉強会#35 Pythonのお仕事動向
みんなのPython勉強会#35 Pythonのお仕事動向Yasuki Kishi
 
Cmsdou oosaka
Cmsdou oosakaCmsdou oosaka
Cmsdou oosakaonagatani
 
Spark at Scale
Spark at ScaleSpark at Scale
Spark at ScaleYuta Imai
 
Deep learning reading club @ nimiri for SWEST
Deep learning reading club @ nimiri for SWESTDeep learning reading club @ nimiri for SWEST
Deep learning reading club @ nimiri for SWESTKiyoshi Ogawa
 
チケット管理システム大決戦第二弾
チケット管理システム大決戦第二弾チケット管理システム大決戦第二弾
チケット管理システム大決戦第二弾Ryutaro YOSHIBA
 
PerlのTwitterモジュールの紹介 #twtr_hack
PerlのTwitterモジュールの紹介 #twtr_hackPerlのTwitterモジュールの紹介 #twtr_hack
PerlのTwitterモジュールの紹介 #twtr_hack鉄次 尾形
 
Python & PyConJP 2014 Report
Python & PyConJP 2014 ReportPython & PyConJP 2014 Report
Python & PyConJP 2014 Reportgree_tech
 

Ähnlich wie Yapc fukuoka crust (20)

いまどき(これから)のPHP開発
いまどき(これから)のPHP開発いまどき(これから)のPHP開発
いまどき(これから)のPHP開発
 
PHPプログラミングのIPv6対応の実際
PHPプログラミングのIPv6対応の実際PHPプログラミングのIPv6対応の実際
PHPプログラミングのIPv6対応の実際
 
dkanのご紹介-150704CMSどうでしょう夏の陣
dkanのご紹介-150704CMSどうでしょう夏の陣dkanのご紹介-150704CMSどうでしょう夏の陣
dkanのご紹介-150704CMSどうでしょう夏の陣
 
A 2a:アジャイルなオフショア開発
A 2a:アジャイルなオフショア開発A 2a:アジャイルなオフショア開発
A 2a:アジャイルなオフショア開発
 
PaaS / Cloud Foundry makes you happy
PaaS / Cloud Foundry makes you happyPaaS / Cloud Foundry makes you happy
PaaS / Cloud Foundry makes you happy
 
Perl入学式に参加して初めてwebアプリを作った話
Perl入学式に参加して初めてwebアプリを作った話Perl入学式に参加して初めてwebアプリを作った話
Perl入学式に参加して初めてwebアプリを作った話
 
Perl5 on Perl6
Perl5 on Perl6Perl5 on Perl6
Perl5 on Perl6
 
Aniki::Internal
Aniki::InternalAniki::Internal
Aniki::Internal
 
IPv6 最新動向 〜世界共通語で最適化が進むインターネット〜
IPv6 最新動向 〜世界共通語で最適化が進むインターネット〜IPv6 最新動向 〜世界共通語で最適化が進むインターネット〜
IPv6 最新動向 〜世界共通語で最適化が進むインターネット〜
 
結局IPv6ってどうなん?(序)
結局IPv6ってどうなん?(序)結局IPv6ってどうなん?(序)
結局IPv6ってどうなん?(序)
 
爆速フレームワークでREST APIを作った話
爆速フレームワークでREST APIを作った話爆速フレームワークでREST APIを作った話
爆速フレームワークでREST APIを作った話
 
ライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudy
ライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudyライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudy
ライブラリ・ファースト 第91回 PHP勉強会@東京 #phpstudy
 
Python charity talk in japan fastAPI introduction
Python charity talk in japan fastAPI introductionPython charity talk in japan fastAPI introduction
Python charity talk in japan fastAPI introduction
 
みんなのPython勉強会#35 Pythonのお仕事動向
みんなのPython勉強会#35 Pythonのお仕事動向みんなのPython勉強会#35 Pythonのお仕事動向
みんなのPython勉強会#35 Pythonのお仕事動向
 
Cmsdou oosaka
Cmsdou oosakaCmsdou oosaka
Cmsdou oosaka
 
Spark at Scale
Spark at ScaleSpark at Scale
Spark at Scale
 
Deep learning reading club @ nimiri for SWEST
Deep learning reading club @ nimiri for SWESTDeep learning reading club @ nimiri for SWEST
Deep learning reading club @ nimiri for SWEST
 
チケット管理システム大決戦第二弾
チケット管理システム大決戦第二弾チケット管理システム大決戦第二弾
チケット管理システム大決戦第二弾
 
PerlのTwitterモジュールの紹介 #twtr_hack
PerlのTwitterモジュールの紹介 #twtr_hackPerlのTwitterモジュールの紹介 #twtr_hack
PerlのTwitterモジュールの紹介 #twtr_hack
 
Python & PyConJP 2014 Report
Python & PyConJP 2014 ReportPython & PyConJP 2014 Report
Python & PyConJP 2014 Report
 

Mehr von Tokuhiro Matsuno

20190126 yapc tokyo keynote
20190126 yapc tokyo keynote 20190126 yapc tokyo keynote
20190126 yapc tokyo keynote Tokuhiro Matsuno
 
最近のPerlバイナリマネージャー Perl 編
最近のPerlバイナリマネージャー Perl 編最近のPerlバイナリマネージャー Perl 編
最近のPerlバイナリマネージャー Perl 編Tokuhiro Matsuno
 
Plenv and perl build, and search.cpan.org
Plenv and perl build, and search.cpan.orgPlenv and perl build, and search.cpan.org
Plenv and perl build, and search.cpan.orgTokuhiro Matsuno
 
MyBatis を利用した web application 開発についてのご紹介
MyBatis を利用した web application 開発についてのご紹介  MyBatis を利用した web application 開発についてのご紹介
MyBatis を利用した web application 開発についてのご紹介 Tokuhiro Matsuno
 
Openjdk 入門してみた話
Openjdk 入門してみた話Openjdk 入門してみた話
Openjdk 入門してみた話Tokuhiro Matsuno
 
promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus c...
promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus c...promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus c...
promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus c...Tokuhiro Matsuno
 
Server::Starter meets Java
Server::Starter meets JavaServer::Starter meets Java
Server::Starter meets JavaTokuhiro Matsuno
 
Java web application testing
Java web application testingJava web application testing
Java web application testingTokuhiro Matsuno
 
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)Tokuhiro Matsuno
 
Test::Kantan - Perl and Testing
Test::Kantan - Perl and TestingTest::Kantan - Perl and Testing
Test::Kantan - Perl and TestingTokuhiro Matsuno
 
MySQL のチューニングについて考えてみた
MySQL のチューニングについて考えてみたMySQL のチューニングについて考えてみた
MySQL のチューニングについて考えてみたTokuhiro Matsuno
 

Mehr von Tokuhiro Matsuno (20)

20190126 yapc tokyo keynote
20190126 yapc tokyo keynote 20190126 yapc tokyo keynote
20190126 yapc tokyo keynote
 
最近のPerlバイナリマネージャー Perl 編
最近のPerlバイナリマネージャー Perl 編最近のPerlバイナリマネージャー Perl 編
最近のPerlバイナリマネージャー Perl 編
 
Plenv and perl build, and search.cpan.org
Plenv and perl build, and search.cpan.orgPlenv and perl build, and search.cpan.org
Plenv and perl build, and search.cpan.org
 
MyBatis を利用した web application 開発についてのご紹介
MyBatis を利用した web application 開発についてのご紹介  MyBatis を利用した web application 開発についてのご紹介
MyBatis を利用した web application 開発についてのご紹介
 
Perl6 と web 開発と
Perl6 と web 開発とPerl6 と web 開発と
Perl6 と web 開発と
 
Openjdk 入門してみた話
Openjdk 入門してみた話Openjdk 入門してみた話
Openjdk 入門してみた話
 
promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus c...
promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus c...promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus c...
promgen - prometheus managemnet tool / simpleclient_java hacks @ Prometheus c...
 
Perl6 web-app
Perl6 web-appPerl6 web-app
Perl6 web-app
 
Perl6 meets JVM
Perl6 meets JVMPerl6 meets JVM
Perl6 meets JVM
 
Server::Starter meets Java
Server::Starter meets JavaServer::Starter meets Java
Server::Starter meets Java
 
Java web application testing
Java web application testingJava web application testing
Java web application testing
 
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
 
Test::Kantan - Perl and Testing
Test::Kantan - Perl and TestingTest::Kantan - Perl and Testing
Test::Kantan - Perl and Testing
 
Devel::NYTProf::Apache
Devel::NYTProf::ApacheDevel::NYTProf::Apache
Devel::NYTProf::Apache
 
MySQL のチューニングについて考えてみた
MySQL のチューニングについて考えてみたMySQL のチューニングについて考えてみた
MySQL のチューニングについて考えてみた
 
Archer
ArcherArcher
Archer
 
MySQL::NameLocker
MySQL::NameLockerMySQL::NameLocker
MySQL::NameLocker
 
Inside MF
Inside MFInside MF
Inside MF
 
Web Application FLow
Web Application FLowWeb Application FLow
Web Application FLow
 
madeye agents
madeye agentsmadeye agents
madeye agents
 

Yapc fukuoka crust