12
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Juliaのライブラリの書き方

Last updated at Posted at 2018-03-06

はじめに

Juliaという言語は主に数値計算で使われている言語ですが,ライブラリがまだあまり豊富ではないので簡単なライブラリ(パッケージともいう)の書き方を紹介したいと思います.
また,本記事のJuliaのバージョンは0.62を対象としています.

どのようにつくるのか

PkgDevを使います.
https://github.com/JuliaLang/PkgDev.jl

インストール方法はjuliaを起動するかjupyterのjuliaカーネル内で
Pkg.add("PkgDev") と実行します.
そのあとにusing PkgDevを実行.

ライブラリのひな形を生成するには以下を実行します.
PkgDev.generate(ライブラリ名,ライセンス)

今回下記で紹介しているライブラリを作成する場合は
PkgDev.generate("AddTwoDigit","ASL")

使用可能なライセンスの種類

MITライセンス : "MIT",
BSDライセンス : "BSD",
ISCライセンス : "ISC",
Apacheライセンス : "ASL",
Mozilla Publicライセンス : "MPL",
GPLバージョン2.0ライセンス : "GPL-2.0+",
GPLバージョン3.0ライセンス : "GPL-3.0+",
LGPLバージョン2.1ライセンス : "LGPL-2.1+",
LGPLバージョン3.0ライセンス : "LGPL-3.0+"

使用可能なライセンスの一覧は次のコマンドで表示できます.
PkgDev.license()

実際に作ったライブラリ

AddTwoDigit.jl
構造を理解するために世界一簡単であろう数字(Float64)を2つ足すだけの単純なライブラリです.
(PkgDevを使用せずに作ったので一部ファイル構造が異なります.)
https://github.com/Ooshita/AddTwoDigit.jl

ライブラリの構造

関数群であり自分で作成する.
ここでは数字を足すだけ.

src/add_two.jl
# Float64型の数字を足すだけの関数
function add_two_digit(d1::Float64, d2::Float64)
    return d1 + d2 
end 

こっちはファイル名を指定される.PkgDevを使えば自動生成.

src/AddTwoDigit.jl
module AddTwoDigit
    export add_two_digit # add_two_digit関数を使えるようにする.複数の関数がある場合はカンマ(,) で区切り宣言する.
    include("add_two.jl") # add_two.jlを読み込み関数を使えるようにする.
end

簡単なテスト

テストは基本的にはruntests.jlに書きます.
今回は簡単な数字を足すライブラリなので,1.0+2.0が3.0だったらOKという簡単なテストです.
詳しいテストの書き方は以下を見てみてください.
https://docs.julialang.org/en/stable/stdlib/test/

test/runtests.jl
using AddTwoDigit

try
    @assert add_two_digit(1.0,2.0) == 3.0
catch e 
    throw(string(e.msg))

テストを書いたらPkg.test()で実行してみましょう.

[追記]
@bicycle1885 さんコメントのように@testを使用して書くほうが現在だと一般的のようです.

作ったライブラリのインストール方法

Pkg.publish() でjuliaの組織に登録するように申請することができるそうです.
受諾されるとPkg.add()でインストールできるようになります.
(実際に申請していないので詳しくは分かりません.)

Githubにあげている野良ライブラリの場合は
**Pkg.clone(git@github.com:Ooshita/AddTwoDigit.jl.git)**などでインストールすることが出来ます.
[追記]
また、コメントでの指摘のようにattobotを使う方法もあるそうです.そちらを使うほうが良さそうです.

最後に

どうでしょう,簡単だという印象を持っていただけたでしょうか.
私自身,Juliaは素人ですが想像以上に簡単に作れることを知りました.
複雑なライブラリを作るのも今回紹介した方法を基礎にしております.トライしてみてはいかがでしょうか.
またJuliaのユニットテストにしろ使い方にしろ書籍がほぼないので誰か書いてください.

現在だと以下の書籍があるようです.

日本語
Anshul Joshi (著),‎ 石井 一夫 ら (翻訳)
Juliaデータサイエンス―Juliaを使って自分でゼロから作るデータサイエンス世界の探索

英語
Zacharias, Ph.D. Voulgaris (著)
Julia for Data Science

Sandeep Nagar (著)
Beginning Julia Programming: For Engineers and Scientists

Ivo Balbaert (著)
Getting Started With Julia

宣伝ですがブログも書いてます.
https://whispon.com

12
9
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?