Julia パッケージ作成用の雛形を作ってみたメモ

ずっと育てている Julia のコードを野良パッケージ化するために、Github に雛形を作ってみたので、メモを残しておきます。
自分で試す場合は、"mat-der-D" の部分や "SpectralMethodTools" の部分は適宜自分の環境に合わせて読み替えてください。

目次

環境

Ubuntu 18.04
Julia version 1.4.2

Githubリポジトリの作成

SpectralMethodTools.jl という名前の空のリポジトリを作成*1。どうやら (アッパーキャメルケースの文字列).jl というリポジトリ名にすると REPL から呼べていい感じらしい。
ちなみに Github のアカウント名は "mat-der-D" であり、以下はそれを前提に進めます。

git の設定

SSH の公開鍵を設定して登録。こちらを参考にしました。
お前らのSSH Keysの作り方は間違っている - Qiita

補足

  • 誤ってリポジトリの settings を開いて「Add SSH Key なんて項目ないやないかい!」って突っ込んでましたが、プロフィールの setting から行くみたいです。同じ轍を踏まないでください。。。
  • キーのタイトルはなんでもいいと思いますが、私はシンプルに「UbuntuNotePC」にしました。

PkgTemplates.jl を使って雛形を作成する

ここが一番苦労しました。公式ドキュメント読んでも設定多すぎるから何がなんだかだし、CI????*2という感じだったので作っては壊しを繰り返しました。
結果的には以下のページが一番分かりやすかったかもしれない。
PkgTemplates による Julia パッケージの作り方(前半) - Qiita
PkgTemplates による Julia パッケージの作り方(後半) - Qiita

最終的にはとりあえず以下の設定にしました。なおこれを実行するときのカレントディレクトリ直下に SpectralMethodTools というディレクトリが切られるので、Github 用のディレクトリを置きたい場所で実行してください。

# ↓入っていない場合は REPL の pkg モードで add PkgTemplates を先に実行
using PkgTemplates 
tmpl = Template(;
    user="mat-der-D",
    dir=".",
    authors="Smooth Pudding",
    julia=v"1.4",
    plugins=[
        License(; name="MIT"),
        Git(; manifest=true, ssh=true),
        TravisCI(),
        Documenter{TravisCI}(),
        Codecov(),
        Coveralls()
    ]
)
tmpl("SpectralMethodTools")

各設定の意味は PkgTemplates.jl の公式ドキュメントとにらめっこしながら考えてください。
上記を実行すると、カレントディレクトリ直下に "SpectralMethodTools" というディレクトリが作成され、その中に以下のようなファイルが自動生成されます。

$ tree ./SpectralMethodTools
SpectralMethodTools/
├── LICENSE
├── Manifest.toml
├── Project.toml
├── README.md
├── docs
│   ├── Manifest.toml
│   ├── Project.toml
│   ├── make.jl
│   └── src
│       └── index.md
├── src
│   └── SpectralMethodTools.jl
└── test
    └── runtests.jl

4 directories, 10 files

Githubリポジトリに git push

ここまでの設定で既に Github の SpectralMethodTools.jl への紐付けは完了しています。これは SpectralMethodTools ディレクトリ内で以下を実行することで確認できます。

$ git remote -v
origin	git@github.com:mat-der-D/SpectralMethodTools.jl.git (fetch)
origin	git@github.com:mat-der-D/SpectralMethodTools.jl.git (push)

Github 上のリポジトリは空なので、そのまま git push すればokです。

$ git push origin master
Enumerating objects: 24, done.
Counting objects: 100% (24/24), done.
Delta compression using up to 4 threads.
Compressing objects: 100% (19/19), done.
Writing objects: 100% (24/24), 4.92 KiB | 720.00 KiB/s, done.
Total 24 (delta 0), reused 0 (delta 0)
To github.com:mat-der-D/SpectralMethodTools.jl.git
 * [new branch]      master -> master

最後に

上の作業で作成したリポジトリは(当然ですが)以下のURLにあります。
https://github.com/mat-der-D/SpectralMethodTools.jl
自動生成された各ファイルの役割は「参考にしたサイト」の中にいろいろ詳しく書いてあるので、知りたい方はそちらを読んでみてください。私もこれから読みます。

*1:Github のアカウントがない方は作ってからリポジトリ作成してみてください。

*2:CI=継続的インテグレーション。参考: https://cloudbees.techmatrix.jp/devops/ci/