2011.7.2 Ruby-Sapporo Session Time




  はじめての
Rubygemsへの
ライブラリ公開
    H.Hiro(Maraigue)
   Twitter: @h_hiro_
                                    1
2011.7.2 Ruby-Sapporo Session Time




自己紹介

                         Page: 2
2011.7.2 Ruby-Sapporo Session Time


        H.Hiro
    (別名:Maraigue まれーぐ)
      Twitter: @h_hiro_
• 大学院生(大学9年目)
• Ruby大好き
• C#とかC++とかもよく書きます
• 最近はPythonにも手を出したり
                                   Page: 3
2011.7.2 Ruby-Sapporo Session Time


        H.Hiro
    (別名:Maraigue まれーぐ)
      Twitter: @h_hiro_
• 大学院生(大学9年目)
• Ruby大好き
• C#とかC++とかもよく書きます
• 最近はPythonにも手を出したり
                                   Page: 4
2011.7.2 Ruby-Sapporo Session Time




   明日(7/3)
 札幌C++勉強会 #2
http://atnd.org/events/16805



                                      Page: 5
2011.7.2 Ruby-Sapporo Session Time




今回のテーマ

                          Page: 6
2011.7.2 Ruby-Sapporo Session Time




  はじめての
Rubygemsへの
ライブラリ公開
    H.Hiro(Maraigue)
   Twitter: @h_hiro_
                                    7
2011.7.2 Ruby-Sapporo Session Time



Rubygems




                           Page: 8
2011.7.2 Ruby-Sapporo Session Time




 言わずと知れた
Rubyのライブラリ
  管理システム
                            Page: 9
2011.7.2 Ruby-Sapporo Session Time




 ご存じない方の
ために、念のため
 説明しておくと
                          Page: 10
2011.7.2 Ruby-Sapporo Session Time


Rubyのいろんなライブラリを
 コマンド一発でネット上から
    インストールできる

 例:拙作「multiset」
ライブラリのインストール
 gem install multiset
                                 Page: 11
2011.7.2 Ruby-Sapporo Session Time




  依存関係の
解決もやってくれる

                          Page: 12
2011.7.2 Ruby-Sapporo Session Time




PerlでいうCPAN
PHPでいうPEAR

                            Page: 13
2011.7.2 Ruby-Sapporo Session Time




gem install [ライブラリ名]

        で



                                 Page: 14
2011.7.2 Ruby-Sapporo Session Time




gem install [ライブラリ名]

    で
   楽しい
仲間(ライブラリ)が
                                 Page: 15
2011.7.2 Ruby-Sapporo Session Time




                      Page: 16
2011.7.2 Ruby-Sapporo Session Time




本題

                       Page: 17
2011.7.2 Ruby-Sapporo Session Time




  はじめての
Rubygemsへの
ライブラリ公開
    H.Hiro(Maraigue)
   Twitter: @h_hiro_
                                   18
2011.7.2 Ruby-Sapporo Session Time




gem install [ライブラリ名]

        で



                                 Page: 19
2011.7.2 Ruby-Sapporo Session Time




gem install [ライブラリ名]

    で
   楽しい
仲間(ライブラリ)が
                                 Page: 20
2011.7.2 Ruby-Sapporo Session Time




                      Page: 21
2011.7.2 Ruby-Sapporo Session Time




 自分の手元に
  他の人の
 ライブラリが
ポポポポーンした
                          Page: 22
2011.7.2 Ruby-Sapporo Session Time




  自分が作った
  ライブラリを
   みんなに
ポポポポーンするには
                           Page: 23
2011.7.2 Ruby-Sapporo Session Time




本来の手順


                        Page: 24
2011.7.2 Ruby-Sapporo Session Time




 ディレクトリと
gemspec作って
                           Page: 25
2011.7.2 Ruby-Sapporo Session Time




   gemspecを
エディタでごりごり書いて
                            Page: 26
2011.7.2 Ruby-Sapporo Session Time




一から作ると
面倒くさい('A`)

                           Page: 27
2011.7.2 Ruby-Sapporo Session Time




  ぐぐって
雛形貼り付けても
 面倒くさい('A`)
                            Page: 28
2011.7.2 Ruby-Sapporo Session Time




 魔法の言葉で
   雛形が
 ポポポポーンと
出ればいいんだけど
                          Page: 29
2011.7.2 Ruby-Sapporo Session Time




もしかして:存在する


                           Page: 30
2011.7.2 Ruby-Sapporo Session Time




    ちなみに私は
   jewelerという
  ツールを使いました
http://tomohiro.me/tips/jeweler_gem_release.html

        gem install jeweler
                                                Page: 31
2011.7.2 Ruby-Sapporo Session Time



jeweler multiset




                               Page: 32
2011.7.2 Ruby-Sapporo Session Time



 jeweler multiset




雛形できちゃった!                       Page: 33
2011.7.2 Ruby-Sapporo Session Time



 jeweler multiset




しかもgit付き!                       Page: 34
2011.7.2 Ruby-Sapporo Session Time



jeweler multiset --rspec




                                   Page: 35
2011.7.2 Ruby-Sapporo Session Time



 jeweler multiset --rspec




rspecの雛形も!                          Page: 36
2011.7.2 Ruby-Sapporo Session Time



jeweler multiset --create-repo

             ↓



githubの雛形も!                           Page: 37
2011.7.2 Ruby-Sapporo Session Time




    あとはガリガリ
    設定ファイルと
    単体テストと
   本体のコードを書く
http://tomohiro.me/tips/jeweler_gem_release.html
                                                Page: 38
2011.7.2 Ruby-Sapporo Session Time




 ライブラリの生成や
Rubygemsへの公開を
     するのも
    rakeで一発
http://tomohiro.me/tips/jeweler_gem_release.html
                                                Page: 39
2011.7.2 Ruby-Sapporo Session Time




すごい楽に
出来ちゃう!

                         Page: 40
2011.7.2 Ruby-Sapporo Session Time




jeweler [ライブラリ名]

      で



                              Page: 41
2011.7.2 Ruby-Sapporo Session Time




jeweler [ライブラリ名]

    で
  楽しい仲間
(自作ライブラリ)が
                              Page: 42
2011.7.2 Ruby-Sapporo Session Time




                      Page: 43
2011.7.2 Ruby-Sapporo Session Time




 ライブラリの
Rubygemsでの
   公開は
難しくないよ!
                           Page: 44
2011.7.2 Ruby-Sapporo Session Time




   私が
ポポポポーンした

 ライブラリ
                          Page: 45
2011.7.2 Ruby-Sapporo Session Time




      私が
  ポポポポーンした
Rubygemsで公開した
    ライブラリ
                             Page: 46
2011.7.2 Ruby-Sapporo Session Time



(1)Multiset
多重集合。Setに近いが、
同じ要素を複数格納することができる。
s = Set[:a,:b,:c,:a]
# => #<Set: {:b,:c,:a}>
ms = Multiset[:a,:b,:c,:a]
# => #<Multiset:#1 :b,#1 :c,#2 :a>
ms << :b
# => #<Multiset:#2 :b,#1 :c,#2 :a>
                                           Page: 47
2011.7.2 Ruby-Sapporo Session Time



(2)DevNull
RubyのIOと同じインターフェイスを持ち、
/dev/null と同様に働くクラス。
log = file ? open(file,"a") : nil
log.puts "message1" if log
log.puts "message2" if log
↓
log = file ? open(file,"a") : DevNull.new
log.puts "message1"
log.puts "message2"
                                              Page: 48
2011.7.2 Ruby-Sapporo Session Time




     インストール方法:
   gem install multiset
    gem install devnull

           詳しくは↓
http://rubygems.org/profiles/maraigue

                                          Page: 49
2011.7.2 Ruby-Sapporo Session Time




 ありがとう
ございました
                         Page: 50

2011.7.2 Ruby勉強会@札幌 「はじめてのRubygemsへのライブラリ公開」