Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

モジュール開発におけるぼくの試行錯誤

3,650 views

Published on

Kichijoji.pm #2

Published in: Technology
  • Be the first to comment

モジュール開発におけるぼくの試行錯誤

  1. 1. モジュール開発における ぼくの試行錯誤 id:karupanerura
  2. 2. Hello!! Kichijoji.pm!!
  3. 3. about me id:karupanerura Kenta Sato Perl/Java/JS/elisp/etc.. Mobile Factory, Inc. Web/Native Gotanda.pm Author
  4. 4. My CPAN Modules TOML::Parser Plack::App::Vhost Parallel::Async Plack::Middleware::HTMLLint etc…
  5. 5. 試行錯誤
  6. 6. Plack::Middleware::Gzip
  7. 7. Plack::Middleware::Gzip Plack::Middlewareでgzip圧縮したかった CPANでgzipって入れたけど出てこなかった なさそうだし、作ってみるか! → できた 初めてCPANに上げる TRY!!!
  8. 8. ERROR!!
  9. 9. WHY? P::M::Deflater があった! id:miyagawa さんに教えてもらった (当時)ぼくが知らなかった非同期レスポンス などのPSGI仕様にも対応していた 2つある意味はない CPANから消しました
  10. 10. 学び 検索結果をよく読み、よく探す 検索ワードを変えてみる よく見落とすので数日考えるようにした 意味ないなって思ったら上げない CPANは砂場じゃない
  11. 11. Sledge::Template::Xslate
  12. 12. Sledge::Template::Xslate 内定先(MF)はSledge Sledgeつかうかー SledgeでXslateつかいたい CPANにないなー やっぱりないな。つくるかー → できた TRY!!!
  13. 13. ERROR!!
  14. 14. WHY? インターフェースがクソ TT2Likeとかを継承で実装していた 自由度めっちゃ低い
  15. 15. 学び インターフェース重要 みんなが使うもの 簡単に変更しにくい (Wrapperの場合)機能がなるべく制限されな いほうが良い
  16. 16. Memoize::Class::Constructor
  17. 17. Memoize::Class::Constructor (S::T::Xslateで)Xslateのインスタンスを キャッシュしたいなー Memoizeだとできなさそう…。 CPANにないなー やっぱりないな。つくるかー → できた TRY!!!
  18. 18. ERROR!!
  19. 19. WHY? Memoizeでできる 用途が限定的すぎる そもそも(S::T::Xslateに)そんな仕様必要な いのでは?
  20. 20. 学び CPANに上げずともブログに書いてTwitter に流せばある程度のフィードバックがもら えることがある 既存モジュールでできることをよく調べよ う 劣化コピー版を作る意味は無い わかりやすい名前をよく考える
  21. 21. Cache::KyotoTycoon::Serialize
  22. 22. Cache::KyotoTycoon::Serialize Cache::KyotoTycoonでSerializeしたい pull-reqこわい…… 継承して機能追加したモジュール作ればい いのでは? TRY!!!
  23. 23. ERROR!!
  24. 24. WHY? あまりにもクソすぎてリリースできない 既存の実装の一部をコピペしている
  25. 25. 学び 本体に入れたほうが良さそうなものは積極的 にpull-reqしよう serializeくらいなら本体に入って良いはず 無理して別モジュールにしても良いことない 恐れずにpull-req!! 日本人authorならまずは日本語で
  26. 26. Class::Accessor::List
  27. 27. Class::Accessor::List IO::KQueueがArrayRefにblessしてたな そういえばArrayRefにblessしたほうが速い んだっけ? アクセサ自動で作ればよいのでは? C::A::Liteと似た名前でおもしろくね? TRY!!!
  28. 28. ERROR!!
  29. 29. WHY? 配列にblessしたところで速度は大して変わ らない C::A::Liteと似ててややこしい
  30. 30. 学び ややこしいもん作らない ネタやるならネタで、実用なら実用で ネタならAcme名前空間に
  31. 31. Filesys::Notify::KQueue
  32. 32. Filesys::Notify::KQueue (当時)F::N::SimpleがKQueueサポートして ない FreeBSDなどでめっちゃ遅い つくるかー => できた TRY!!!
  33. 33. SUCCESS!!
  34. 34. WHY? 既存に無い、新しい価値を提供できた
  35. 35. 学び pull-reqを恐れずにする F::N::Simpleにpull-req 取り込まれた! 便利なもの作れば使ってもらえる
  36. 36. まとめ CPANにほいほいモジュール上げる前によく 既存モジュールを確認 CPANは砂場じゃない 本体に入れてほしい機能は作者に相談してみ よう issue/pull-reqも恐れずに!!
  37. 37. YAPC::Asia 2015やります Yet Another Perl Conference アンケートやってます! http://bit.ly/yapc_i_want http://bit.ly/yapc_enquete

×