Mojoliciousを使ったwebアプリケーション開発 実践編
Abstract
近年、PerlでWebアプリを作る環境はとても恵まれています。 PerlBeginner向けの講座(Perl入学式)や入門記事なども豊富に公開されており、 Amon2やMojoliciousなどのWAFを使えば、簡単にWebアプリを実装することができるようになりました。
しかし、作ったWebアプリをいざ真面目に運用しようとすると、立ちはだかる様々な問題が いくつもいくつも あり、すぐに壁にぶち当たると思います。
そこで、「YAPC::Asiaサイトで実際に動いているシステム」を例に 入門から一歩踏み込んだWebアプリ開発について 様々な問題を事前に知り、解決する方法としての具体的な対応例を紹介していきます。 Webアプリが作れようになって更にステップアップしたいと言われた時に、これは知っておきたい!というトピックをまとめて取り上げていこうというのが本トークの狙いです。
社会人Perl歴3年くらいの私が、実際に仕事やPerl界隈の方々を通じて感じたことや学んだこと、経験談や壮絶な失敗談、実際の事例などを加えながらお話していきたいと思います。 「ただ、こうしましょう」だけで終わるのではなく、「なぜこうするのがいいのか」「他にはどんな方法が考えられるか」なども話していけたら最高です。ツッコミも大歓迎です。
想定観客層
- Perl(Mojolicious/Amon2)で簡単なアプリを作ったことがある PerlBeginner
- これから仕事でPerlを使ってWebアプリを書く新卒/若手エンジニア
- 昨年の「Mojoliciousでつくる!Webアプリ入門」トークの内容がある程度分かる or これから見る
- 実際の処理を意識したWebアプリを書きたい / 本番の環境構築・運用についてざっくり知りたい
- 入門をすっ飛ばして実践編でも平気だという方
がっつりとPerlの話中心です。アプリケーションを作成してデプロイしてサービスを運用に載せるところまでを対象にしています。 Amon2の場合も取り扱いますが、WAF自体の基本的な話はあまりしません。そのため、Mojoliciousに限らず何かしらのWAFについて基本的な知識があるとより理解が深まると思います。
いまのところ以下の様なことをお話できたら嬉しいなと思っています。
アプリケーション
- Mojoliciousの基本構成 / ローカル環境構築
- Cartonでモジュール管理
- 本番環境と開発環境で読み込む config を変えよう
- MVCのModelをつくる / O/R MapperでDB操作
- Cacheを導入してデータアクセスを高速化 / 効率的なCacheの方法
- Containerの仕組みを取り入れよう / Flyweight/Singletonパターンでインスタンスを再利用する
- RendererをText::Xslateに変更 / テンプレートのsyntaxを TT に変更
- テンプレートキャッシュを意識しよう / テンプレ内の処理はシンプルに
- セッションの仕組みとCSRF対策について
- Perl Mongerがよく使う定番モジュール紹介
- 複数人開発できるように対応しよう (git/dev tools)
- 効率的に開発するために最低限のテストを書こう
- ソーシャルアカウントでログインできるようにしよう (OAuth)
- ネット経由でファイルをDLしてサービスに反映するbatchを書こう
- 運営上重要な数値を可視化できる仕組みをつくろう (HRForecast)
環境構築、システム構成、運用、デプロイ
- 本番環境を構築する (xbuild)
- nginx(httpd) + perl(psgi) + mysql 構成を構築する
- nginxでhttpdを立ててアプリにproxyする
- staticファイルは nginx で配信する
- daemontools(&svc) でアプリのプロセス管理
- runファイルの書き方とログ管理
- server_starterでhot deployできるようにする
- deployを自動化する
- 様々な監視の話
Talk Details
Venue | Main Hall (Fujiwara Hiroshi Hall) |
---|---|
Starts On | 2014-08-29 15:50:00 |
Talk Category | Tutorial |
Language | Japanese |
Slide Subtitles | Japanese |
Talk Duration | 40 minutes |
Material (Difficulty) Level | Regular |
May we take your photo? | allow |
May we record your talk? | allow |