際際滷

際際滷Share a Scribd company logo
Haskell で Webアプリ
゛ Yesod を聞って中易かったこと ゛
 幄塀氏芙ワ`クスアプリケ`ションズ
     u鍋 賠表 (@seizans)
徭失B初
? u鍋賠表   (@seizans)
? いままでI(1定)         ★ 芙坪SE(1定) ★ F(3定)
? おしごと
 ? Webアプリのセキュリティレビュ`
 ? Cloud児P(AWS)の室g編^とサ`ビス二鮫?\喘
? 箸龍叉派宗S匂、ゲ`ム、己いもの
? Haskells1定磯(2011定3埖゛)
? Yesods紺訥(2012定2埖゛)
? 恷除深えてること困匹Δ笋辰             Haskell で碧並するか
徭失B初
? Haskell   を兵めたきっかけ
  ? mayahjp
      さんへ|仝採すればプログラミングできる
   ようになりますか拭
? Yesod   を兵めたきっかけ
  ? Haskell
       で採か恬って\喘してみたかった
  ? 豚泙Qまっているネタがあったので恬ってみた
氏芙B初
? 幄塀氏芙ワ`クスアプリケ`ションズ
? ERPパッケ`ジ仝COMPANY々(繁並o嚥、氏、吉)
の_k、咫隠便\喘
? グル`プ芙T方   2000 ~ 4000 のgくらい
? 冩梢_k何Tでは10繁くらい箸龍で       Haskell をiみき
? 昧rエンジニアを勅鹿しています
兆硬塁といえば
? 兆硬塁忽H氏h




? 兆硬塁???また佩きたいですね???
Web Framework 採があるか
? http://www.haskell.org/haskellwiki/Web/Frameworks
Yesod overview その念に
? Yesod   Quick Start?
 ? http://www.yesodweb.com/page/quickstart?
? 歌深喘のコ`ド
 ? https://github.com/seizans/yesod-tutorial?
 ? コミットログそれぞれで1つ採かわかるようにしてる
 ? もうちょっとやしていこうと房っています


? いいからかせろという圭はもうどんどんいてみて
 ください
Yesod overview
? フルスタックの Web        アプリケ`ション フレ`ムワ`ク
? Haskell
     のメリットを試かせるように恬られている
? 巷塀サイトhttp://www.yesodweb.com/
? ソ`スhttps://github.com/yesodweb/yesod
Yesod overview
? 侏システムの寓{
 ? TypeSafe URL坤汽ぅ板擇魯螢鵐俳れoし
 ? XSS採鍔崛个htmlに托めzむHにエスケ`プされる
? DB   はxべる
 ? PostgreSQL、MySQL、SQLite、MongoDB
? セキュリティ坤妊侫ルトで契いでくれる
 ? XSS、CSRF、SQLI   は噸宥にやると秘らない
 ? セッションハイジャックもデフォルトで契ぐ(IPる)
Yesod overview
? パフォ`マンス
 ? 堀いというベンチマ`クがある
 ? スケ`ラブルなセッションC
   ? スティッキ`ではなく、m俳にI尖されCookie   に
? DSLで DRY
 ? Model 協x、Routing 協x
Yesod の兵め圭
? Haskell-Platform   をインスト`ル左
? Yesod をインスト`ル
  ? cabal install yesod-platform?
? Yesod   プロジェクトを恬撹して build
  ? yesod
       init?
  ? ディレクトリを卞
  ? cabal   install --only-dependencies?
  ? yesod   devel?
?☆  cabal-dev を聞う圭隈を根めた盾hは參和です
  ? http://taketoncheir.hatenablog.com/entry/
    2012/08/14/020456
ペ`ジを恬る
? 採を協xすればペ`ジができるか
? URL?
 ? URL   にして Resource を協xする
 ? 1佩くだけなので護
? Handler
      (I尖)
 ? 醤悶議なI尖をくので肝でh苧
? View   ┘謄鵐廛讒`ト
 ? テンプレ`トでやりたいことはできる
 ? 麿の冱Zでやるのとほぼ笋錣蕕覆い里埜
Handler をく
? User   テ`ブルを畠周テンプレ`トに局してHtmlを卦す




? UserId   でレコ`ド哈いて Json を卦す(oければ404)
Handler をく
? User   テ`ブル喘の Form を伏撹して鮫中をつくる
Handler をく
? POST    した Form を鞭けてレコ`ド弖紗I尖をく




 ? デ`タのQは徭咾任笋辰討れる
 ? bind
     してくれるのでパタ`ンマッチで函り竃す
 ? 払,栽は FormFailure か FormMissing になってる
デ`タ侏の
? 聞うデ`タ侏がこんなだとする




? やりたいこと
? DBテ`ブルとvB原け
? UserName   フィ`ルドとか Unique にしたい
? Json   とのQも徭啜弔砲靴酉しい
デ`タ侏の
? これをけば TH   を聞ってよろしくやってくれる




? やりたかったこと
 ? DBテ`ブルとvB原け
 ? UserNameフィ`ルドとか Unique にしたい
 ? Json とのQも徭啜弔砲靴酉しい


?☆   gHには方為佩のコ`ドに婢_されています
その麿の}
? REST    のサポ`ト
 ? Json
      のやりとりがg
 ? PUT や DELETE の Handler も揖に恬れる
 ? Accept   ヘッダによって html か Json か徭咾笋┐
? 箭翌があんまり竃ないか
 ? ケアが駅勣な廠順I囃は Yesod      がやってくれる
 ? 匯     DB が鯛ちてて宥佚エラ`、とかはありえる
その麿の}
? Subsite?
 ? アプリをモジュ`ル晒して聞いまわせる碧Mみ
 ? 箭Auth    モジュ`ル、Wiki モジュ`ル
? J^
 ? ということで巷_されてる Subsite を聞えばOK
 ? gは 屡にそのアプリにJ^C嬬が秘っている
 ? 駅勣なJ^は匯宥りプラグインが屡に恬られている
 ? 富し{屁して聞うだけ
h廠とか
? テスト
? CIツ`ルの試喘
? デプロイ
テスト
? 歌深Y創
 ? http://www.mew.org/~kazu/material/2012-test.pdf?
? Hspec   HUnit の旗紋瞳
 ? 碧ライクにけるg悶テスト
? QuickCheck?
 ? 來|をくとテストを徭喇撹してくれる碧Mみ
? doctest?
 ? ドキュメントに旋喘箭や來|をき、それを徭啜
   にテストする碧Mみ
テスト
? Webアプリケ`ションのテスト
? DBI尖のテスト
? HandlerのテストHTTPリクエストを鞭けたY惚
? 鮫中狼のテストJavaScript   のI囃
テスト
? yesod-test   パッケ`ジがテストフレ`ムワ`クを戻工
  ? scaffold
          すると tests/HomeTest.hs に箭ができてる
  ? HTTP リクエストを恬って レスポンスをテストする
テスト
? yesod-test   の試喘圭隈 その2
  ? テスト喘 runDB を戻工してくれているので
  ? DBI尖まわりのテストもOK
CIツ`ル
? Cabal?
 ? .cabalファイルにプロジェクトの光N碧を峰する
   ? 箭卆贋ライブラリ、g佩コマンド、テスト、...
 ? .cabalファイルに   test suites を鞠hしてg佩する
   ? yesod init したプロジェクトの .cabal をましょう
   ? yesod test コマンドはYで cabal test をしています
CIツ`ル
? Travis?
 ? http://about.travis-ci.org/docs/?
 ? CIツ`ルのホスティングサ`ビス、Haskell            も
 ? Github   とB亊
   ? push
       を hook してI尖を指してくれる
   ? O協ファイル(.travis.yml)を富しくだけ
CIツ`ル
? Travis?
 ? .travis.yml   をこれだけけば




 ? push阿g佩
デプロイ
? 淵妊廛蹈ぅ挑`ルっぽいのKeter_kされ嶄
 ? 匯魕颪任咾
 ? https://github.com/snoyberg/keter?
? Heroku   にホスティング
 ? http://taketoncheir.hatenablog.com/entry/
   2012/08/14/020456?
? Mighttpd(Haskellu Webサ`バ)       を聞うとか
 ? http://amkkun.hatenablog.com/entry/2012/08/13/160523
デプロイ
? Mighttpd?
 ? Haskelluの互堀Webサ`バ
 ? ル`ティングとO協ファイルを峺協して軟
 ? かんたんに聞える
? Angel?
 ? Haskelluの   daemontoolsクロ`ン
 ? C嬬坤廛蹈札垢離禰`モン晒、Oと壅伏撹
 ? Bump    がサ`バで聞っている
 ? O協ファイルを峺協して軟
 ? かんたんに聞える
もう匯つのxk岔
? それは      Scotty
 ? http://blog.fujimuradaisuke.com/post/26887032662/haskell-
  de-json-web-api?
 ? Yesod   と揖 persistent と aeson を旋喘
  ? persistentDB巓りのORマッパ`のようなもの
  ? aesonJson      ライブラリ
 ? 卆贋ライブラリが富ない
 ? tコ`ド楚が富ないので、畠何を壼く委燐したい繁
  鬚韻も
  ? Yesod の scaffold はtコ`ド楚がYあるので
まとめ
? 返Xに Webプログラミングをスタ`トできる
  ? scaffold
         して MVC を怎していくだけ
  ? DSL が屁えられているのでgにける
? g喘議
  ? フレ`ムワ`クに豚棋することは匯宥りできる
  ? Cabal   や Travis で徭咼咼襯匹筌謄好箸OK
? Haskell   らしいメリットが輅椶任る
  ? 中宜なQ狼のI尖は Yesod      がやってくれる
  ? _k宀は互邦覆癖製腓房嶄できる
  ? Subsite    でかんたんにプラグイン_k
Happy Haskell Web Programming!!

More Related Content

What's hot (20)

PDF
皆河晦による禽霞稼温馨看禽京の荷恬
Sugawara Genki
?
PDF
ES6 in Practice
Teppei Sato
?
PDF
ネタし?ゃない皆界温鉛温.逮壊
takezoe
?
PDF
ヒ?ス?リ`チの仟サ`ヒ?スをScalaて?恬ってみた ?マイクロサ`ビスのY #jissenscala
takezoe
?
PDF
SmartNews TechNight Vol5 : SmartNews AdServer 盾悶仟 / ポストモ`テム
SmartNews, Inc.
?
PPTX
干温厩温皆界姻庄沿岳から旋喘する酷庄姻艶恢温壊艶
Takuji Shimokawa
?
PPTX
20161208 Classmethod Codenize Tools
Kazuki Ueki
?
PDF
Elasticsearch at Makuake
Yoshiaki Yoshida
?
PPTX
Introduction to DocumentDB
Takekazu Omi
?
PDF
What is doobie? - database access for scala -
chibochibo
?
PDF
Service worker か?謡く mobile web の仟しいかたち
Kinuko Yasuda
?
PDF
イマドキの岾,琶垢┐覺害恒慌好薀ぅ屮薀衒打
takezoe
?
KEY
APACHE HTTP SERVER
岻 罪
?
PDF
2015定GMOペパボ仟怱エンジニア冩俐 Web_k冩俐イントロダクション
Takahiro Okumura
?
PDF
WordCamp2012 テストサ`バ`でWordPressをBしよう
H2O Space. Co., Ltd.
?
PDF
Scala Warrior and type-safe front-end development with Scala.js
takezoe
?
PDF
Scala + Finagleの帆
Kota Mizushima
?
PPTX
Amazon DynamoDBのB初と|識ハンス?て?の試喘について
Taiji INOUE
?
PDF
GDG Tokyo Firebaseを聞った Androidアプリ_k
Fumihiko Shiroyama
?
PDF
Closure Compiler Updates for ES6
Teppei Sato
?
皆河晦による禽霞稼温馨看禽京の荷恬
Sugawara Genki
?
ES6 in Practice
Teppei Sato
?
ネタし?ゃない皆界温鉛温.逮壊
takezoe
?
ヒ?ス?リ`チの仟サ`ヒ?スをScalaて?恬ってみた ?マイクロサ`ビスのY #jissenscala
takezoe
?
SmartNews TechNight Vol5 : SmartNews AdServer 盾悶仟 / ポストモ`テム
SmartNews, Inc.
?
干温厩温皆界姻庄沿岳から旋喘する酷庄姻艶恢温壊艶
Takuji Shimokawa
?
20161208 Classmethod Codenize Tools
Kazuki Ueki
?
Elasticsearch at Makuake
Yoshiaki Yoshida
?
Introduction to DocumentDB
Takekazu Omi
?
What is doobie? - database access for scala -
chibochibo
?
Service worker か?謡く mobile web の仟しいかたち
Kinuko Yasuda
?
イマドキの岾,琶垢┐覺害恒慌好薀ぅ屮薀衒打
takezoe
?
APACHE HTTP SERVER
岻 罪
?
2015定GMOペパボ仟怱エンジニア冩俐 Web_k冩俐イントロダクション
Takahiro Okumura
?
WordCamp2012 テストサ`バ`でWordPressをBしよう
H2O Space. Co., Ltd.
?
Scala Warrior and type-safe front-end development with Scala.js
takezoe
?
Scala + Finagleの帆
Kota Mizushima
?
Amazon DynamoDBのB初と|識ハンス?て?の試喘について
Taiji INOUE
?
GDG Tokyo Firebaseを聞った Androidアプリ_k
Fumihiko Shiroyama
?
Closure Compiler Updates for ES6
Teppei Sato
?

Viewers also liked (20)

PPTX
Erlang
Kiminari Homma
?
PDF
掘姻鉛温稼乙を乾ってみた
Yoichi Toyota
?
PDF
GHC 6.12.1 マルチコア鬋薀鵐織ぅ爛轡好謄爐砲弔い
Mitsutoshi Aoe
?
PDF
v方侏Xい府初
Daniel Perez
?
KEY
Yesod でブログエンジンをつくってみた
Hiromi Ishii
?
PDF
及匯指v方侏冱Z茶氏 寄昜
Naoki Kitora
?
PDF
酷#で僥ぶv方プログラミング秘壇
pocketberserker
?
PPTX
v方侏冱囂兜伉宀の鯵が酷#乾ってみた
Takashi Nishisaki
?
PDF
酷永楼母業レベルと酷皆鞄温姻沿恰の鴛岳艶姻温岳艶艶
pocketberserker
?
PDF
Pythonista による Pythonista のための Scala B初 in BPStudy #49
shoma h
?
PDF
Katagaitai CTF茶氏 #4 Crypto
trmr
?
PDF
JSer Class #1
mizuky fujitani
?
PDF
これから Haskell をくにあたって
Tsuyoshi Matsudate
?
PPTX
歓v方侏アルゴリズム秘壇
Kimikazu Kato
?
PDF
120901fp key
ksknac
?
PDF
v方侏冱囂とオブジェクト峺鰕墫錚會嫗
tadaaki hayashi
?
PDF
デ`タベ`ス秘壇3
tadaaki hayashi
?
PDF
Monad tutorial
Hideyuki Tanaka
?
PDF
v方プログラミング秘壇
Hideyuki Tanaka
?
PDF
PFIセミナ` 2013/02/28 仝プログラミング冱Zの書々
Preferred Networks
?
掘姻鉛温稼乙を乾ってみた
Yoichi Toyota
?
GHC 6.12.1 マルチコア鬋薀鵐織ぅ爛轡好謄爐砲弔い
Mitsutoshi Aoe
?
v方侏Xい府初
Daniel Perez
?
Yesod でブログエンジンをつくってみた
Hiromi Ishii
?
及匯指v方侏冱Z茶氏 寄昜
Naoki Kitora
?
酷#で僥ぶv方プログラミング秘壇
pocketberserker
?
v方侏冱囂兜伉宀の鯵が酷#乾ってみた
Takashi Nishisaki
?
酷永楼母業レベルと酷皆鞄温姻沿恰の鴛岳艶姻温岳艶艶
pocketberserker
?
Pythonista による Pythonista のための Scala B初 in BPStudy #49
shoma h
?
Katagaitai CTF茶氏 #4 Crypto
trmr
?
JSer Class #1
mizuky fujitani
?
これから Haskell をくにあたって
Tsuyoshi Matsudate
?
歓v方侏アルゴリズム秘壇
Kimikazu Kato
?
120901fp key
ksknac
?
v方侏冱囂とオブジェクト峺鰕墫錚會嫗
tadaaki hayashi
?
デ`タベ`ス秘壇3
tadaaki hayashi
?
Monad tutorial
Hideyuki Tanaka
?
v方プログラミング秘壇
Hideyuki Tanaka
?
PFIセミナ` 2013/02/28 仝プログラミング冱Zの書々
Preferred Networks
?
Ad

Similar to Yesod(at FPM2012) (20)

PDF
20120527yesod
Seizan Shimazaki
?
PDF
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
Naoya Ito
?
PDF
Yesod on Heroku
Takahiro Himura
?
ODP
書送佩りのウェブアプリ蝕k桟廠額艶看馨温稼
tomo_masakura
?
PDF
Haskell で恬る室侏イベントのY
Nobutada Matsubara
?
PDF
Yapc2012ltthon
Junya Murabe
?
PDF
酷#+掘姻鉛温稼乙で酒gなシュ`ティングゲ`ムを恬ってみている
pocketberserker
?
PDF
謹蛍モダンな安艶恢アプリ蝕k
tak-nakamura
?
KEY
京艶鞄温岳+皆霞馨韓看稼霞2ではじめる京禽禽階秘壇
士 h表
?
PPT
2009定の永堰永フレ`ムワ`ク
Takuya Sato
?
PDF
Alluren of prototype-based OOP
azuma satoshi
?
PDF
YAPC::Asia 2014 - 磯極なPHPDisでPHPerに、俳Δ錣譴覆い燭瓩Perl Monger鬚益醫PHP並秤
Junichi Ishida
?
PDF
Symfony2 Behat/BDD (#Symfony2study 4)
Hidenori Goto
?
PDF
恷仟室宝強鬘2011定貧豚
Mahito Ogura
?
PDF
皆界温晦温+晦庄韓岳とか
youku
?
PDF
kyotovim#1
Naoya Inada
?
ODP
Introduction of Python
Tomoya Nakayama
?
PPTX
JavaFX + NetBeansh廠におけるJenkinsの試喘Jenkins及鎗指茶氏
Ryusaburo Tanaka
?
PDF
Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails (a晩云Z井)
Toru Kawamura
?
PDF
PHP Codeception テスト -- 晩云Z
Florent Batard
?
20120527yesod
Seizan Shimazaki
?
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
Naoya Ito
?
Yesod on Heroku
Takahiro Himura
?
書送佩りのウェブアプリ蝕k桟廠額艶看馨温稼
tomo_masakura
?
Haskell で恬る室侏イベントのY
Nobutada Matsubara
?
Yapc2012ltthon
Junya Murabe
?
酷#+掘姻鉛温稼乙で酒gなシュ`ティングゲ`ムを恬ってみている
pocketberserker
?
謹蛍モダンな安艶恢アプリ蝕k
tak-nakamura
?
京艶鞄温岳+皆霞馨韓看稼霞2ではじめる京禽禽階秘壇
士 h表
?
2009定の永堰永フレ`ムワ`ク
Takuya Sato
?
Alluren of prototype-based OOP
azuma satoshi
?
YAPC::Asia 2014 - 磯極なPHPDisでPHPerに、俳Δ錣譴覆い燭瓩Perl Monger鬚益醫PHP並秤
Junichi Ishida
?
Symfony2 Behat/BDD (#Symfony2study 4)
Hidenori Goto
?
恷仟室宝強鬘2011定貧豚
Mahito Ogura
?
皆界温晦温+晦庄韓岳とか
youku
?
kyotovim#1
Naoya Inada
?
Introduction of Python
Tomoya Nakayama
?
JavaFX + NetBeansh廠におけるJenkinsの試喘Jenkins及鎗指茶氏
Ryusaburo Tanaka
?
Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails (a晩云Z井)
Toru Kawamura
?
PHP Codeception テスト -- 晩云Z
Florent Batard
?
Ad

More from Seizan Shimazaki (7)

PDF
PFDS8.1
Seizan Shimazaki
?
PDF
Yesod and Auth
Seizan Shimazaki
?
PDF
Pfds20120304
Seizan Shimazaki
?
PDF
Cryptography
Seizan Shimazaki
?
PDF
Digital Signature and PKI
Seizan Shimazaki
?
KEY
匯圭鬟魯奪轡繪v方(One-way Hash Function)
Seizan Shimazaki
?
KEY
メッセ`ジJ^コ`ド(Message Authentication Code)
Seizan Shimazaki
?
Yesod and Auth
Seizan Shimazaki
?
Pfds20120304
Seizan Shimazaki
?
Cryptography
Seizan Shimazaki
?
Digital Signature and PKI
Seizan Shimazaki
?
匯圭鬟魯奪轡繪v方(One-way Hash Function)
Seizan Shimazaki
?
メッセ`ジJ^コ`ド(Message Authentication Code)
Seizan Shimazaki
?

Recently uploaded (9)

PDF
Forguncy 10 u瞳古勣Y創 - ノ`コ`ドWebアプリ_kプラットフォ`ム
フォ`ガンシ`
?
PDF
芦硫 暖, 防和 高. h廠Z崑を楚辛嬬にするためのみ繁垢岑嬬僥氏及4指碧賺а仂浸, 2018.
Matsushita Laboratory
?
PPTX
茶氏_タ`ミナルコマント?秘薦儻堀晒_20250620. pptx. .
iPride Co., Ltd.
?
PPTX
Vibe Codingを兵めよう ?Cursorを箭に、ノ`コ`ドでのプログラミング悶Y?
iPride Co., Ltd.
?
PDF
芦硫 暖, 儲旗 圍岻, 防和 高. f{議秤鵐肇螢〒`ジにおけるコミュニケ`ションの唹についての篇, 及11指デ`タ垢僥と秤鵐泪優献瓮鵐箸哩vする...
Matsushita Laboratory
?
PDF
猟B初Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
?
PDF
芦硫 暖, 臼翫 誰伏, 防和 高. 頂Πk伏rにおける瓜墾彜r委燐を朕議とした秤鷙禾丱轡好謄爐了A篇, 徨秤麝佚僥氏HCGシンポジウム2018...
Matsushita Laboratory
?
PPTX
弼について.pptx .
iPride Co., Ltd.
?
PDF
猟B初AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
?
Forguncy 10 u瞳古勣Y創 - ノ`コ`ドWebアプリ_kプラットフォ`ム
フォ`ガンシ`
?
芦硫 暖, 防和 高. h廠Z崑を楚辛嬬にするためのみ繁垢岑嬬僥氏及4指碧賺а仂浸, 2018.
Matsushita Laboratory
?
茶氏_タ`ミナルコマント?秘薦儻堀晒_20250620. pptx. .
iPride Co., Ltd.
?
Vibe Codingを兵めよう ?Cursorを箭に、ノ`コ`ドでのプログラミング悶Y?
iPride Co., Ltd.
?
芦硫 暖, 儲旗 圍岻, 防和 高. f{議秤鵐肇螢〒`ジにおけるコミュニケ`ションの唹についての篇, 及11指デ`タ垢僥と秤鵐泪優献瓮鵐箸哩vする...
Matsushita Laboratory
?
猟B初Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
?
芦硫 暖, 臼翫 誰伏, 防和 高. 頂Πk伏rにおける瓜墾彜r委燐を朕議とした秤鷙禾丱轡好謄爐了A篇, 徨秤麝佚僥氏HCGシンポジウム2018...
Matsushita Laboratory
?
弼について.pptx .
iPride Co., Ltd.
?
猟B初AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
?

Yesod(at FPM2012)

  • 1. Haskell で Webアプリ ゛ Yesod を聞って中易かったこと ゛ 幄塀氏芙ワ`クスアプリケ`ションズ u鍋 賠表 (@seizans)
  • 2. 徭失B初 ? u鍋賠表 (@seizans) ? いままでI(1定) ★ 芙坪SE(1定) ★ F(3定) ? おしごと ? Webアプリのセキュリティレビュ` ? Cloud児P(AWS)の室g編^とサ`ビス二鮫?\喘 ? 箸龍叉派宗S匂、ゲ`ム、己いもの ? Haskells1定磯(2011定3埖゛) ? Yesods紺訥(2012定2埖゛) ? 恷除深えてること困匹Δ笋辰 Haskell で碧並するか
  • 3. 徭失B初 ? Haskell を兵めたきっかけ ? mayahjp さんへ|仝採すればプログラミングできる ようになりますか拭 ? Yesod を兵めたきっかけ ? Haskell で採か恬って\喘してみたかった ? 豚泙Qまっているネタがあったので恬ってみた
  • 4. 氏芙B初 ? 幄塀氏芙ワ`クスアプリケ`ションズ ? ERPパッケ`ジ仝COMPANY々(繁並o嚥、氏、吉) の_k、咫隠便\喘 ? グル`プ芙T方 2000 ~ 4000 のgくらい ? 冩梢_k何Tでは10繁くらい箸龍で Haskell をiみき ? 昧rエンジニアを勅鹿しています
  • 6. Web Framework 採があるか ? http://www.haskell.org/haskellwiki/Web/Frameworks
  • 7. Yesod overview その念に ? Yesod Quick Start? ? http://www.yesodweb.com/page/quickstart? ? 歌深喘のコ`ド ? https://github.com/seizans/yesod-tutorial? ? コミットログそれぞれで1つ採かわかるようにしてる ? もうちょっとやしていこうと房っています ? いいからかせろという圭はもうどんどんいてみて ください
  • 8. Yesod overview ? フルスタックの Web アプリケ`ション フレ`ムワ`ク ? Haskell のメリットを試かせるように恬られている ? 巷塀サイトhttp://www.yesodweb.com/ ? ソ`スhttps://github.com/yesodweb/yesod
  • 9. Yesod overview ? 侏システムの寓{ ? TypeSafe URL坤汽ぅ板擇魯螢鵐俳れoし ? XSS採鍔崛个htmlに托めzむHにエスケ`プされる ? DB はxべる ? PostgreSQL、MySQL、SQLite、MongoDB ? セキュリティ坤妊侫ルトで契いでくれる ? XSS、CSRF、SQLI は噸宥にやると秘らない ? セッションハイジャックもデフォルトで契ぐ(IPる)
  • 10. Yesod overview ? パフォ`マンス ? 堀いというベンチマ`クがある ? スケ`ラブルなセッションC ? スティッキ`ではなく、m俳にI尖されCookie に ? DSLで DRY ? Model 協x、Routing 協x
  • 11. Yesod の兵め圭 ? Haskell-Platform をインスト`ル左 ? Yesod をインスト`ル ? cabal install yesod-platform? ? Yesod プロジェクトを恬撹して build ? yesod init? ? ディレクトリを卞 ? cabal install --only-dependencies? ? yesod devel? ?☆ cabal-dev を聞う圭隈を根めた盾hは參和です ? http://taketoncheir.hatenablog.com/entry/ 2012/08/14/020456
  • 12. ペ`ジを恬る ? 採を協xすればペ`ジができるか ? URL? ? URL にして Resource を協xする ? 1佩くだけなので護 ? Handler (I尖) ? 醤悶議なI尖をくので肝でh苧 ? View ┘謄鵐廛讒`ト ? テンプレ`トでやりたいことはできる ? 麿の冱Zでやるのとほぼ笋錣蕕覆い里埜
  • 13. Handler をく ? User テ`ブルを畠周テンプレ`トに局してHtmlを卦す ? UserId でレコ`ド哈いて Json を卦す(oければ404)
  • 14. Handler をく ? User テ`ブル喘の Form を伏撹して鮫中をつくる
  • 15. Handler をく ? POST した Form を鞭けてレコ`ド弖紗I尖をく ? デ`タのQは徭咾任笋辰討れる ? bind してくれるのでパタ`ンマッチで函り竃す ? 払,栽は FormFailure か FormMissing になってる
  • 16. デ`タ侏の ? 聞うデ`タ侏がこんなだとする ? やりたいこと ? DBテ`ブルとvB原け ? UserName フィ`ルドとか Unique にしたい ? Json とのQも徭啜弔砲靴酉しい
  • 17. デ`タ侏の ? これをけば TH を聞ってよろしくやってくれる ? やりたかったこと ? DBテ`ブルとvB原け ? UserNameフィ`ルドとか Unique にしたい ? Json とのQも徭啜弔砲靴酉しい ?☆ gHには方為佩のコ`ドに婢_されています
  • 18. その麿の} ? REST のサポ`ト ? Json のやりとりがg ? PUT や DELETE の Handler も揖に恬れる ? Accept ヘッダによって html か Json か徭咾笋┐ ? 箭翌があんまり竃ないか ? ケアが駅勣な廠順I囃は Yesod がやってくれる ? 匯 DB が鯛ちてて宥佚エラ`、とかはありえる
  • 19. その麿の} ? Subsite? ? アプリをモジュ`ル晒して聞いまわせる碧Mみ ? 箭Auth モジュ`ル、Wiki モジュ`ル ? J^ ? ということで巷_されてる Subsite を聞えばOK ? gは 屡にそのアプリにJ^C嬬が秘っている ? 駅勣なJ^は匯宥りプラグインが屡に恬られている ? 富し{屁して聞うだけ
  • 21. テスト ? 歌深Y創 ? http://www.mew.org/~kazu/material/2012-test.pdf? ? Hspec HUnit の旗紋瞳 ? 碧ライクにけるg悶テスト ? QuickCheck? ? 來|をくとテストを徭喇撹してくれる碧Mみ ? doctest? ? ドキュメントに旋喘箭や來|をき、それを徭啜 にテストする碧Mみ
  • 22. テスト ? Webアプリケ`ションのテスト ? DBI尖のテスト ? HandlerのテストHTTPリクエストを鞭けたY惚 ? 鮫中狼のテストJavaScript のI囃
  • 23. テスト ? yesod-test パッケ`ジがテストフレ`ムワ`クを戻工 ? scaffold すると tests/HomeTest.hs に箭ができてる ? HTTP リクエストを恬って レスポンスをテストする
  • 24. テスト ? yesod-test の試喘圭隈 その2 ? テスト喘 runDB を戻工してくれているので ? DBI尖まわりのテストもOK
  • 25. CIツ`ル ? Cabal? ? .cabalファイルにプロジェクトの光N碧を峰する ? 箭卆贋ライブラリ、g佩コマンド、テスト、... ? .cabalファイルに test suites を鞠hしてg佩する ? yesod init したプロジェクトの .cabal をましょう ? yesod test コマンドはYで cabal test をしています
  • 26. CIツ`ル ? Travis? ? http://about.travis-ci.org/docs/? ? CIツ`ルのホスティングサ`ビス、Haskell も ? Github とB亊 ? push を hook してI尖を指してくれる ? O協ファイル(.travis.yml)を富しくだけ
  • 27. CIツ`ル ? Travis? ? .travis.yml をこれだけけば ? push阿g佩
  • 28. デプロイ ? 淵妊廛蹈ぅ挑`ルっぽいのKeter_kされ嶄 ? 匯魕颪任咾 ? https://github.com/snoyberg/keter? ? Heroku にホスティング ? http://taketoncheir.hatenablog.com/entry/ 2012/08/14/020456? ? Mighttpd(Haskellu Webサ`バ) を聞うとか ? http://amkkun.hatenablog.com/entry/2012/08/13/160523
  • 29. デプロイ ? Mighttpd? ? Haskelluの互堀Webサ`バ ? ル`ティングとO協ファイルを峺協して軟 ? かんたんに聞える ? Angel? ? Haskelluの daemontoolsクロ`ン ? C嬬坤廛蹈札垢離禰`モン晒、Oと壅伏撹 ? Bump がサ`バで聞っている ? O協ファイルを峺協して軟 ? かんたんに聞える
  • 30. もう匯つのxk岔 ? それは Scotty ? http://blog.fujimuradaisuke.com/post/26887032662/haskell- de-json-web-api? ? Yesod と揖 persistent と aeson を旋喘 ? persistentDB巓りのORマッパ`のようなもの ? aesonJson ライブラリ ? 卆贋ライブラリが富ない ? tコ`ド楚が富ないので、畠何を壼く委燐したい繁 鬚韻も ? Yesod の scaffold はtコ`ド楚がYあるので
  • 31. まとめ ? 返Xに Webプログラミングをスタ`トできる ? scaffold して MVC を怎していくだけ ? DSL が屁えられているのでgにける ? g喘議 ? フレ`ムワ`クに豚棋することは匯宥りできる ? Cabal や Travis で徭咼咼襯匹筌謄好箸OK ? Haskell らしいメリットが輅椶任る ? 中宜なQ狼のI尖は Yesod がやってくれる ? _k宀は互邦覆癖製腓房嶄できる ? Subsite でかんたんにプラグイン_k
  • 32. Happy Haskell Web Programming!!