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

Preview:

Citation preview

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++勉強会 #2http://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」

ライブラリのインストール

Page: 11

gem install multiset

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

Page: 14

gem install [ライブラリ名]

2011.7.2 Ruby-Sapporo Session Time

楽しい

仲間(ライブラリ)がPage: 15

gem install [ライブラリ名]

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

Page: 19

gem install [ライブラリ名]

2011.7.2 Ruby-Sapporo Session Time

楽しい

仲間(ライブラリ)がPage: 20

gem install [ライブラリ名]

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

Page: 26

gemspecを

エディタでごりごり書いて

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

Page: 31

gem install jeweler

2011.7.2 Ruby-Sapporo Session Time

Page: 32

jeweler multiset

2011.7.2 Ruby-Sapporo Session Time

雛形できちゃった!Page: 33

jeweler multiset

2011.7.2 Ruby-Sapporo Session Time

しかもgit付き!Page: 34

jeweler multiset

2011.7.2 Ruby-Sapporo Session Time

Page: 35

jeweler multiset --rspec

2011.7.2 Ruby-Sapporo Session Time

rspecの雛形も!Page: 36

jeweler multiset --rspec

2011.7.2 Ruby-Sapporo Session Time

githubの雛形も!Page: 37

jeweler multiset --create-repo

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

Page: 41

jeweler [ライブラリ名]

2011.7.2 Ruby-Sapporo Session Time

楽しい仲間

(自作ライブラリ)がPage: 42

jeweler [ライブラリ名]

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)DevNullRubyの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

Recommended