MyEnigma

とあるエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

JuliaのREPLを使った開発フロー


Juliaプログラミングクックブック ―言語仕様からデータ分析、機械学習、数値計算まで

目次

はじめに

以前、プログラミング言語Juliaを紹介しましたが、

myenigma.hatenablog.com

JuliaにはREPL(read-eval-print loop)と呼ばれる対話的実行環境があり、

今回はこちらをもちいた開発の方法について説明したいと思います。

 

REPL実行と終了

JuliaのREPLはコマンドラインから

$ julia

と入力することで起動できます。

終了はCtrl + d または quit()でできます。

Julia REPLのモード

JuliaのREPLにはいくつかのモードがあります。

1. Juliaモード

Juliaのコードを入力すると、実行してくれるモードです。

JuliaのREPLのデフォルトはこのモードで、

REPLの行の左側が >julia となっていると、

Juliaモードです。

MATLABと同様に、変数は保存され使い回すことができます。

一つ前の実行された値はansに保存されます。

これもMATLABと同じです。

 

ちなみにREPLで一度実行された関数は、

JITコンパイルされた状態で残るため、

二度目に読んだ場合は計算が早くなります。

2. helpモード

REPLで?を入力するとhelpモードになります。

ここで、型や関数、マクロを入力すると、

その説明が表示されます。

 

下記のようなフォーマットでコメントを書いておくと、

helpモードで自作の関数の説明もみれて便利です。

"""
    rad2deg(x)
Convert `x` from radians to degrees.
# Examples
\```jldoctest
julia> rad2deg(pi)
180.0
\```
"""
rad2deg(z::AbstractFloat) = z * (180 / oftype(z, pi))

3. Shell モード

セミコロン;を入力すると、Shellモードになり、

シェルのコマンドが使えるようになります。

4. Searchモード

Ctrl + rを押すと、Bashと同じように、

過去のREPLの履歴を検索することができます。

5. Pkgモード

] を押すと、Pkgモードというモードになり、

外部パッケージングをインストールしたり、

開発中のパッケージを読み込んだりできます。

 

REPLで開発する時に便利なツール

下記のツールを利用すると便利です。

OhMyREPL.jl

このパッケージをインストールして、startup.jlで起動するようにすると、

REPLのコードがハイライトされたり、対応する括弧が自動で設定されたりします。

github.com

Revise.jl

モジュールを開発していると、

変更部分を適用するために、毎回REPLを再起動する必要があり、

面倒ですが、

このRevise.jlを使うと、自動的に変更部分を認識し、

REPLの再起動無しに、変更部分のみを再コンパイルしてくれます。

github.com

docs.julialang.org

 

workspace()関数

REPLでworkspace()とすると、

REPLの環境をクリアすることができます。

GitHub上のJuliaパッケージを開発する方法

下記の通りに実施できます。

  1. GitHub上でforkして、手元にcloneする

  2. REPL上で、pkgモードにして, dev /path/to/moduleとする

  3. Reviseを起動して、対象となるモジュールをusingする

  4. あとは自動的にREPL上で変更が適応されるため開発して、PRを作る

参考資料

qiita.com

 

参考資料

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

MyEnigma Supporters

もしこの記事が参考になり、

ブログをサポートしたいと思われた方は、

こちらからよろしくお願いします。

myenigma.hatenablog.com