なかなか埒が明かない.パッケージを作るのにPkgTemplates.jlというのが出てきた.これを試してみよう.
https://julialang.org/contribute/developing_package/
ここではGitHubを使っている.アカウントは作ってあるので,乗ってみることにする.まず,
using Pkg
Pkg.add(“PkgTemplates”)
でPkgTemplatesをインストールし,次に以下のテンプレートを作る.
using PkgTemplates
t = Template(; user=”your-GitHub-username”,
authors=[“your-name”],
plugins=[
License(name=”MIT”),
Git(),
GitHubActions(),
],
)
エラーが出てしまった.user名が通らない.ArgumentError: Git: Global Git config is missing required value ‘user.name’ “babalabos” で登録しているはずなのだが… 中にピリオドが入ることが必須なのだろうか?⇒GitHubは将来(近未来的)使うことになるような気もしているのだが,どうもとんだ回り道になりそうな気がしてきた.PkgTemplatesというのを下調べしてみた方がよさそうだ.PkgTemplatesはJulia パッケージを新規生成しようとするときの手段を与えるものだ.典型的には,既存のGit 構成から起こすというのが手っ取り早い.最初からGitに繋がっているので,いろいろ好都合ということなのだろう.これは,もうちょっと手が空いてからということにしておこう.
https://qiita.com/mametank/items/9fc1c9227303d6ca304b
この記事はJuliaのプロジェクトについての分かり易い解説になっている.この続きでPkgTemplatesを解説している.現行の開発環境では,トップに蜜蜂天国GUIというフォルダがあり,その下に蜜蜂天国GUI→ 蜜天GUI→ 蜜天→ という構成になっている..code-workspace は蜜天GUIの並びにあり,蜜天の並びには.gitと.vscodeがある.このプロジェクトはGitに登録しているので,その際に.gitが生成されたのだろう..vscodeにはlaunch.jsonが入っている.これはVS Codeに関係するものだ.つまり,Julia的には外部に当たる.
蜜天というフォルダがJuliaのプロジェクトファイルに当たる.まだプロジェクトは生成されていないが(一度は生成しているが,後に削除)srcというフォルダが残っていて,蜜天.jlが配置されている.プロジェクトとして構成するためには,ここにProject.tomlとManifest.tomlを置く必要がある.これとは別にJulia本体がインストールされたユーザ環境がある.babalabo\.juliaで,この下のenvironmentsにもManifest.tomlとProject.tomlがある.Project.tomlを開いてみると,
[deps]
Gtk = “4c0ca9eb-093a-5379-98c5-f87ac0bbbf44”
JuliaFormatter = “98e50ef6-434e-11e9-1051-2b60c6c9e899”
PkgTemplates = “14b8a8f1-9102-5b29-a752-f990bacb7fe1”
Printf = “de0858da-6303-5e67-8744-51eddeeeb8d7”
のようになっている.Gtk, JuliaFormatter, PkgTemplates, Printfの名前が見える.これらは比較的最近導入されたもので,それ以前にインストールしたPlotsなどの名前は出てこない.この記事では最初にPkgモードでgenerateによってプロジェクトを作っている.これは前にやったことがあるが,もう一度作り直してみよう.蜜天というフォルダは温存して,別にmittenというプロジェクトを起こしてみる.
pkg> generate mitten
mittenというフォルダが生成され,その中にProject.tomlというファイルとsrcというフォルダがあり,srcにはmitten.jlというファイルが作られている.このままactivateしてみよう.
(@v1.10) pkg> activate mitten
Activating project at `D:\蜜蜂天国GUI\密天GUI\mitten`
(mitten) pkg>
プロンプトの表示が(mitten) pkg> のように変わり,「環境」が変化したことを示している.mitten.jl には以下のコードが入っている.
module mitten
greet() = print(“Hello World!”)
end # module mitten
しかし,実行しても
> Connecting to debugger… Done!
が出るだけで,何も表示されない.println(“蜜蜂天国”)を追加すれば出る.greet()は単に宣言されているというだけのようだ.確かに,呼び出せば実行できる.⇒動画を1本観た(1時間物).
Juliaのパッケージ開発2022年版 @ Bio”Pack”athon2022#2
https://togotv.dbcls.jp/en/20220421.html
ようやくコンパイルが通ったようだ.コンパイル後にアプリの実行が始まった.正常に動作している.コマンドは
julia> using PackageCompiler
julia> create_app(“mitten”, “compiled”)
で compiled フォルダには,julia.exe だけではなく,mitten.exe もできている.ただし,これを実行しても画面をちらっと見せただけで閉じてしまう.ともかく,一度バックアップしておこう.⇒julia_mainをGtk.gtk_mainで置き換えるという修正を入れてようやく動くようにはなったが,今度は最後にエラーが出るようになってしまった.
[00m:19s] PackageCompiler: compiling nonincremental system image
ERROR: failed process: Process(`’C:\Users\babalabo\.julia\juliaup\j…
バックアップに戻ってもう一度やり直してみよう.なぜだろう.フォルダがやけに大きくなっている.56KBしかなかったものが,700MB以上になっている.システムイメージを持っているかいないかの違いだ.しかし,こんなに大きなパッケージを配布するなど非現実的だ.
確かにこのバージョンではエラーは発生していない.この版ではJulia_main も gtk_main も使わずにモジュール内で単純にループしているだけだ.clickの中でもループカウントをチェックしていて,オーバーするとexitを実行するようになっているが,これを止めても動作は変わらない.ただし,ウィンドウは開いたままになってしまう.これでもう一度ビルドしてみよう.いや,おそらくEXEでウィンドウを開いたままにするには,gtk_mainが必要なのではないか?
.