Julia関連の備忘録

Electron.jlの基本的なこと (参考

パッケージの作り方

Juliaのパッケージ(pkg> add XXX)で追加できるやつを自分で作る方法

まず、REPLのパッケージモードでプロジェクトを作る。

pkg>  generate <パッケージ名>
  Generating  project <パッケージ名>:
    <パッケージ名>\Project.toml
    <パッケージ名>\src\<パッケージ名>.jl
作ったパッケージ環境に入る。
pkg>  activate <パッケージ名>\\
  Activating project at `C:\Users\sator\<パッケージ名>`
デフォルトで書かれているもの以外でProject.tomlに書くものは、 depsとweakdepsはパッケージモードでaddすれば自動的に記述される。srcディレクトリに自分のパッケージの 内容を書く。外部からusing <パッケージ名>を実行すると<パッケージ名>.jl が実行される。

パッケージにaddすると、Manifest.tomlが生成される。これにはその環境にインストールされるパッケージが すべて記述される。(パッケージが依存するパッケージとか。あと、rmしたパッケージもgcするまでは一定期間 保管される。逆にパッケージ関連でコケる場合はgc --allしてみるといいかもしれない。) Mainfest.tomlは基本的に人間が編集するものではない。Manifest.tomlの内容は環境依存なので、githubに上げたり 他人とは共有しない。gitなら、.gitignoreに/Manifest.tomlと書く。

なぜ私はJuliaを使うのか?(エッセイ)

私が初めてプログラミングに触れたのは中学生の時だった。当時は(今も?)Minecraftが流行っていて、 部活用のPCにこっそりインストールし、顧問の目を盗んでプレイしていた。特に、MODと呼ばれるゲームに追加する アドオンを使って遊んでいた私が自作のMODを作りたいと思うようになったのは自然な流れだった。

MODの作り方を調べると、どうやらJavaという言語を勉強する必要がありそうなことが分かった(MinecraftはJavaで 開発されている。当時はJava版しか無かった)。そんなわけでJavaを勉強するうちにだんだんとプログラミング それ自体に興味が移っていった。ただ、中高生のうちはそれほど本格的にJavaを扱うことはなく (クラスやオブジェクト指向の概念さえよくわかっていなかったと思う)、むしろ カシオのプログラム関数電卓FX-5800Pでのプログラミングを楽しんでいた。片道1時間半バス通学だったので、その道中で 遊ぶのにちょうどよかった。授業中暇な時間にノートにプログラムを書き、バスで打ち込みとデバッグを行うのが 日課になっていた。

大学入学後、学部1~2年のころは特にプログラミングにのめりこんだ。Javaをきちんと使えるほどには理解できて、 パソコンの中で自分が設計したプログラムを動かすのは、まるで小宇宙を設計して支配しているような感覚だった。 そんな中、Javaだけでなく様々な言語に触れた。羅列すると、C++、Pythotn、Scala、Kotlin、Javascript、 Haskell、Ocaml、Ruby、Idrisなど。これらの言語の豊かな世界に触れるうちに、 自分の言語(=自分の世界)を設計したいと思った。当時自分が一番自由に使えるのが Javaだったので、パーサジェネレータ、VM、コンパイラを自作した。 しかし私の技術は自身の理想からは程遠く、この夢は破れることになる。

そんな中、Juliaに出会った。Juliaは私の理想の言語だった。Juliaの利点としてよく「速い」ことが挙げられるが、 私はむしろ直感的な記法や多重ディスパッチ、マクロに惹かれた。型のない言語としては、Juliaに勝る言語は 無いと今でも思っている。ちょうどそのころ研究室に配属された私は 研究の共としてJuliaを選び、私とJuliaの関係は決定的なものになった。

そんな私がJuliaを使う理由をまとめると次のようになる。

そんなわけで最近はもっぱらJuliaばっかり使っているが、そうなるとオブジェクト指向が恋しくなることもある。 Javaで生まれ育った私は、あのクラスを組み立てていくレゴブロックのような楽しさも忘れることはできない。