はじめに
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
ライブラリの構造
関数群であり自分で作成する.
ここでは数字を足すだけ.
# Float64型の数字を足すだけの関数
function add_two_digit(d1::Float64, d2::Float64)
return d1 + d2
end
こっちはファイル名を指定される.PkgDevを使えば自動生成.
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/
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