0から学んだポストモダンPerl @ YAPC::Asia Tokyo 2013
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

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

on

  • 5,989 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,989
Views on SlideShare
2,978
Embed Views
3,011

Actions

Likes
8
Downloads
12
Comments
0

15 Embeds 3,011

http://blog.wktk.co.jp 1389
http://yosuke-furukawa.hatenablog.com 855
http://takiguchi0817.github.io 604
http://rejasupotaro.github.io 90
http://localhost 29
http://cloud.feedly.com 29
https://twitter.com 5
http://feedly.com 2
http://www.feedspot.com 2
http://digg.com 1
http://summary 1
http://newsblur.com 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 Presentation Transcript

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