• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
0から学んだポストモダンPerl @ YAPC::Asia Tokyo 2013
 

0から学んだポストモダンPerl @ YAPC::Asia Tokyo 2013

on

  • 5,556 views

Perl初心者だった私が、普通にPerl開発できるようになるまでの、1年間の涙と感動の軌跡をトークいたします。 ...

Perl初心者だった私が、普通にPerl開発できるようになるまでの、1年間の涙と感動の軌跡をトークいたします。
- Apache/FastCGIベースのアプリケーションをPSGI/Plackに移行したり
- モジュール管理をCartonにしたりcpanm生にしたりして悩んだり
- Data::DumperやB::Size2::Terseの不具合で悩んだり
- Amon2をベースとしたウェブアプリケーションフレームワーク作成したり
- CPANにXSモジュールをアップロードしたり

Statistics

Views

Total Views
5,556
Views on SlideShare
2,595
Embed Views
2,961

Actions

Likes
8
Downloads
11
Comments
0

14 Embeds 2,961

http://blog.wktk.co.jp 1367
http://yosuke-furukawa.hatenablog.com 842
http://takiguchi0817.github.io 604
http://rejasupotaro.github.io 80
http://localhost 29
http://cloud.feedly.com 29
http://feedly.com 2
http://www.feedspot.com 2
http://digg.com 1
http://newsblur.com 1
http://summary 1
http://www.newsblur.com 1
http://news.google.com 1
http://www.instapaper.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    0から学んだポストモダンPerl @ YAPC::Asia Tokyo 2013 0から学んだポストモダンPerl @ YAPC::Asia Tokyo 2013 Presentation Transcript

    • 1 0から学んだ ポストモダン Perl YAPC::Asia Tokyo 2013 グニャラくん (末永 匡)
    • Perlについて ほとんど知らない この僕が 2
    • 社内用Web アプリケーション フレームワークを 作ることになって 3
    • いろいろ 壁に ぶち当たりつつも 4
    • Perl mongerに 近づけたお話 5
    • 本発表の概要 • 前半 「俺が考えるWebアプリケーションフ レームワークとは」 • 後半 「酒と泪と俺とPerl」 6
    • 7
    • 自己紹介 8
    • 自己紹介 • グニャラくん • 「東横イン評論家」 でGoogle検索1位 9
    • まともに Perl 書いたこと なかった 10
    • Perlのイメージ 11
    • Perlといえば(1) 12
    • Perlといえば(2) 13
    • そんな僕が いまや 14
    • GitHub認定? • Perl monger? • 単なる Old style engineer 15
    • なぜか? 16
    • Perlを 使う会社に 転職したから 17
    • 所属 • 株式会社ディー・エヌ・エー • ソーシャルゲーム開発部門に所属 • 海外向けソーシャルゲーム開発部署に配属 18
    • ある日 指令が 下った 19
    • 20 国内向けWeb ソーシャルゲーム を海外移植せよ
    • Web S.G.の移植 • DeNA社内Webアプリケーション フレームワーク MobaSiF • 2003年から稼働 • たくさんのゲームがMobaSiF上で稼働 21
    • MobaSiF • /home/xxxx/以下の固定パス • Apacheが動作していることが前提 • 職人芸的mod_rewrite • ゲーム・プラットフォーム・フレーム ワークが密結合 22
    • 海外向けに 単一のゲームだけ 切り出すのは 面倒だな… 23
    • さらに 困難な 事情が 24
    • 日本ローカル • ベトナム人エンジニアに説明しづらい • What is DoCoMo? / What is Emoji? • スマフォ向けだから使わないのだが • コメントや設定ファイルが文字化けし て破壊される • ソースコードはEUC、テンプレートはShift-JIS 25
    • 困った 26
    • 27
    • そういえば こんな仕事も やってたな 28
    • フレームワーク調査 • JSON on HTTPやWeb APIを各言語 でどうやって実装するのか • http://blog.wktk.co.jp/archives/234 29
    • よっしゃパパ Plack上で MobaSiF互換 層作っちゃうぞー 30
    • 旧GunyaSiF誕生 • Plack上に構築されたMobaSiF互換レ イヤ • ソースコード/テンプレートはUTF-8 に移行 • テンプレートはXslate/TTerseに移行 31
    • 旧GunyaSiFの成果 • Mac上でVMなしに開発できるように • Mobageお手製パッチ済みFlash生成 用Mingライブラリの64bit対応 32
    • 結構簡単に できた Plackスゲー 33
    • そこから しばらく ゲーム運用 したあと 34
    • 上長に 呼ばれる 35
    • 36 お前 ゲーム向け フレームワーク 作れ
    • フレームワーク作りへ • 誰かがやらねばならないことだし • 前職で従事していた「ニコニコ大百 科」というサービスも、フレームワー ク手作りだったし 37
    • GunyaSiF 爆誕 38
    • フレームワークの中身 • Amon2ベース • 複数アプリケーションをホスト • 継承できる環境設定ファイル • 社内の各種APIへの対応 39
    • どうでもいい 40
    • もっと 一般的な 話をします 41
    • Web アプリケーション フレームワークに 俺が求める機能 42
    • 実は 43
    • ほとんどない 44
    • Plackスゲー • Plack/PSGIの時点で、ある程度Web アプリケーションをつくる土台がある 45
    • こんなのはいらない • ルーティング • Router::Simpleでよい • O/Rマッパー • Tengでよい 46
    • アプリケーション 側で 好きなモジュール 使えばいい 47
    • 大事なこと • 必要な部品はCPAN上にある • それをいかに組み合わせるか 48
    • Web アプリケーション フレームワーク を再定義すると 49
    • 50 Web開発に必要な モジュールセットの提案 と モジュールを結びつける グルーコードの実例
    • WAFの作り方 • 適切なCPANライブラリを選ぶ • グルーコードを書く 51
    • グルーコードをどう書くか • グルーコードはOld Style Perlで十分 • Mouse/Mooなにそれ? • アクセサが必要なものは汎用的なモジ ュールくらい • 追い出したモジュールはCPANにアップロードする 52
    • blessで 十分!!! 53
    • 54 これが ポストモダン Perl
    • CPANには 多くのWeb向け モジュールがある 55
    • ただ 56
    • 57 足りないと思う モジュールが いくつかある
    • 足りない モジュール その1 58
    • Plack::App:: phpMyAdmin 59
    • phpMyAdminスゴイ • 実用上テーブルビューワは欲しい • P::A::PHPCGIで動かすのもいいけど • ファントムファイル表示など、値がフ ィルターできればなおよい 60
    • GunyaSiFでは どうしたか • スクラッチで書いた • LDAP認証とか妙に凝った • 正社員かどうかによってテーブルごとに閲覧権限を設 定できたり • キモすぎてCPANに上げられない… 61
    • 足りない モジュール その2 62
    • js/css 自動コンパイラ minifier 63
    • デザイナーにやさしい • Sprocketsによるアセットパイプライ ンとか、Gruntとか • Sass/SCSSくらいは対応したい • Coffee/JSXにも対応したい 64
    • Sass/SCSS 対応 65
    • Text::Sass • Text::Sassでイケるじゃん、と夢見て いたころが僕にもありました • Filesys::Notify::Simpleと組み合わせ れば自動コンパイルできるはず 66
    • 67 イケません!!!
    • README on Text::Sass • This is most definitely a work-in- progress. It only implements a subset of the specification • (snip) • No support for @import of sass 68
    • うう… ツラい 69
    • GunyaSiFでは どうしたか • CSSはCompassを採用 • Rubyだけど • 開発時は、CSSへのHTTPアクセス時に動的にコンパ イル • JS MinifyはClosure Compilerを採用 • Javaだけど 70
    • 前半まとめ 71
    • 前半まとめ • WAF = Web向けCPANモジュールの 集合 + グルーコード • グルーコードはポストモダンPerlで • 足りてないモジュールもあるよね 72
    • 73
    • 酒と泪と 俺とPerl 74
    • Perl まじめに さわり始めた 感想 75
    • … 76
    • 普通じゃん! 77
    • Perlへの感想 • 普通 • perlbrew/plenv • cpanm/Carton • Plack • 他言語で便利なものがちゃんとある 78
    • モジュールの管理方法 • GunyaSiF開発時はCarton 1.0前 • Carton採用してたが、carton execめ んどいのでcpanm化 • Carton.lockからcpanfileを出力するスクリプトを書 いた • cpanfile.snapshotになったから今は不要…なの? 79
    • Perlで ハマったところ 80
    • Data::Dumper • 開発中に使うモジュールランキング第 1位(俺調べ) • Rubyでいうところのpp • んな大事なモジュールが壊れてるわけ ない 81
    • 壊れてました… 82
    • 壊れているという惨事 83
    • id:gfxに泣きついた • Data::Dumper が壊れているという惨 事 • http://d.hatena.ne.jp/gfx/ 20130305/1362496416 • Perl 5.13で導入された isWORDCHAR()がなかった 84
    • P::M::MemoryUsage • Plack::Middleware::MemoryUsage • packageごとのメモリ使用量 • リクエストを処理する前後の増分 • B::Size2(::Terse)を使ってる 85
    • 壊れてました… (SEGVする) 86
    • id:gfxに泣きついた • B::Size2をデバッグしたときのメモ • http://d.hatena.ne.jp/gfx/ 20130201/1359701228 • SvMAGIC()の中で落ちてた 87
    • (元)同僚 スゴイ人が多くて とても助かる 88
    • なぜ こんなに 地雷を踏んだか 89
    • だいたい Perl 5.10 のせい 90
    • なぜ Perl 5.10を 選んだか 91
    • バージョンの選び方 • CentOS 6系のsystem Perlのバージ ョンは5.10.1 • 枯れてるからそれ使おう 92
    • 間違い 93
    • ライブラリは進化する • CPANライブラリのバージョンも固定 しないんだったら、環境として枯れて いない • むしろ、リスクを増大させてしまった 94
    • バージョン新しくしよう • 最新のPerlにフォローアップすべし • セキュリティパッチが提供されている • ハッシュ衝突攻撃のパッチを当てるのも面倒だった • 便利機能や性能向上などいろんな恩恵もある 95
    • そんな おっちょこちょい な僕でも 96
    • CPAN Authorに なれました 97
    • 98
    • CPAN参加への動機 • コミュニティに還元したい • コミュニティから受けた恩恵は計り知れない • 設計上の密結合化の防止 • グルーコードはつなぐモジュールがな いと意味がない! 99
    • CPANの感想(1) • 意外とカンタン • 敷居低くてカジュアルに参加できる 100
    • CPANの感想(2) • Minilla普通に便利ですね • その代わり、隠蔽されている部分について知識がない と、イレギュラーな場合に死ぬ 101
    • CPANの感想(3) • モダンなXSモジュール作成法がよく 分からない • typester先生のプレゼンはある • https://speakerdeck.com/typester/xsnimatuwaruhua • Module::Build::Pluggable::XSUtilはなんかつらかった • http://blog.wktk.co.jp/archives/331 102
    • CPANの感想(4) • Plack::Middleware名前空間のモジュ ールを上げると、どこかのIRCに通知 が出るらしくコワイ 103
    • 後半まとめ • Perlは最新版に近いものを使おう • CPANへの貢献はカジュアルに! • 機能がかぶろうが、名前空間がちょっとおかしかろう が、TMTOWTDIの精神で 104
    • まとめ 105
    • まとめ • 汎用的な処理はCPANモジュールとし て公開することを前提に書こう • グルーコードを書いて世の中に面白い Webサービスをどんどん出していこう 106
    • ご静聴ありがとう ございます! 107
    • 108
    • ストーリーから 浮いてる スライド (未使用) 109
    • フレームワークの苦労 • フレームワークだけ書くのつらい • MobaSiFだって、大百科用フレームワークだって、ア プリケーションを作りながらフレームワーク書いてい た • アプリ開発者のニーズと乖離する 110
    • C言語でWebApp(1) • C言語でWebAppの開発に必要なN個 のこと • http://blog.wktk.co.jp/ja/entry/2013/09/10/ clang-webapp 111
    • ジョークエントリ では ないんです 112
    • C言語でWebApp(2) • 前職で作ったフレームワークはいたる ところにC言語が使われていた • メンテナンス性が最悪だった 113