なかなか埒が明かない

なかなか埒が明かない.パッケージを作るのに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が必要なのではないか?

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA