パッケージを作る

先日のJuliaTokyo#1のこの発表資料がわかりやすいので読むと吉。
http://www.slideshare.net/KentaSato/julia-36649709
↑の方のパッケージ(juliaのランダムフォレスト)は実際にコードを書く上で参考になる。
https://github.com/bicycle1885/RandomForests.jl
以下は作業メモ。

まとめ

いきなりだがまとめると以下のような流れである。

Pkg.generate("Yo", "MIT") # 骨組みを作る。
# ファイルを編集
Pkg.test("Yo") # テスト
# githubに公開していればこの時点でインストールできる
Pkg.clone("git@github.com:dichika/Yo.jl.git") # 野良からのインストール
# ここからは公式レポジトリへの公開方法
Pkg.register("Yo") # ローカルのMetadataへの登録
Pkg.tag("Yo") # バージョンタグの付与
Pkg.publish() # 公式レポジトリへのプルリクエスト

# プルリクが受け付けられれば公式からインストールできるようになる。
# 私のパッケージはまだです。
#Pkg.update()
#Pkg.add("Yo") # 公式レポジトリからのインストール

雛型をつくる

まずは雛型をつくる。
Pkg.generate()を使う。Rのpackage.skeleton()と同様。
Pkg.generate("パッケージ名","ライセンス")のように設定する。
この時gitのユーザー名、メールアドレスが設定されていないとエラーになるので設定しておく。下記参照。
http://www.backlog.jp/git-guide/reference/config.html

Pkg.generate("Yo", "MIT")

パッケージの中身をつくる

~/.julia/v0.3下に上記パッケージ(今回の場合はYo)が作成されている。
src内のYo.jlを編集する。
以下参照。
https://github.com/dichika/Yo.jl/blob/master/src/Yo.jl

パッケージをテストする

Pkg.test("Yo")とすることでtest/runtests.jlが実行されてテストできるが今回はとばした。
繰り返しになるが下記パッケージのtest以下を参照されたい。
https://github.com/bicycle1885/RandomForests.jl

githubにアップしてインストールしてみる

githubにレポジトリを作ってアップすると以下のようにインストールできる。

Pkg.clone("git@github.com:dichika/Yo.jl.git")

公式に登録してインストールする

上記だとまだ野良パッケージなので公式レポジトリ(RでいうところのCRAN)に登録してみる。
http://pkg.julialang.org/
ただプルリクを受け付けてもらう時に説明が足りないと、What is Yo??????みたいなこと言われたりもする。
Yoは個人情報を収集するために作られたアプリなんだ!!!とかいう陰謀論がフランスからとんできたりもする。
https://github.com/JuliaLang/METADATA.jl/pull/1093
公式に登録したい場合説明責任を果たしましょう。私はめんどいです。

Pkg.register("Yo") # ローカルのMetadataへの登録
Pkg.tag("Yo") # バージョンタグの付与
Pkg.publish() # 公式レポジトリへのプルリクエスト

上記がマージされればこれで晴れてPkg.add()でインストールできるようになる。
が、現時点ではまだマージされないのでインストールできません。

#Pkg.update() # METADATAを最新のものにして新しいパッケージがインストールされるようにする
#Pkg.add("Yo")

以下の2つ及びJuliaTokyoの発表が大いに参考になった。

enjoy!!!