⏰
Julia の REPL で時計を表示/そして公式パッケージに登録まで
本日は
こそっと作った Julia パッケージ TerminalClock.jl の紹介です.
- 今何時?
- カップ麺のタイマー
- ⏱ ストップウォッチ
を REPL 上で表示してくれるようになります.
- 投げ銭してくれると中の人が喜びます.
インストール
pkg> add TerminalClock
使い方
基本的に TerminalClock.jl をご覧ください
using TerminalClock; clock() # v0.2.0 で動作.
動作原理
去年作成した Qiita で紹介しているテクニック Julia のREPL上でカラフルな出力をする(お遊び) を思い返しながら作りました.
- 時計の文字盤を文字列で作って
print
関数で表示 - ここにも書いてあるように カーソルを上に戻しながら表示した文字列を順次消す命令を実行
- 表示時刻を更新し対応する文字盤文字列を
print
関数で表示
時刻の取得に関しては Dates.jl パッケージに依存しています.
公式パッケージの登録の方法
簡単にですがメモをしておきます:
手元のPCで作業
-
Package-naming-guidelines を見て名前を考える (例えばここでは
YourPkg.jl
とする) - PkgTemplates.jl でパッケージの雛形を作る 手順はこちらなどを参照
using PkgTemplates
t = Template(;
dir=pwd(),
julia=v"1",
plugins=[
License(; name="MIT"),
Git(; manifest=false, ssh=true),
GitHubActions(;
extra_versions=["1.0", "1.6", "nightly"],
),
Documenter{GitHubActions}(),
Readme(;
inline_badges=true,
badge_order=DataType[
GitHubActions,
Documenter{GitHubActions},
]
),
]
)
t("YourPkg")
- そうすると作業ディレクトリに
YourPkg
というディレクトリが作成される. さらに その直下にProject.toml
,src
,test/runtests.jl
,docs
.github/workflows/CI.yml
などの典型的な雛形が出来上がる. - わかっている人は
Pkg.generate
でスタートして色々追加しても良い. -
src/YourPkg.jl
などに機能を実装する.- 各自頑張って実装すること
-
test/runtests.jl
にテストを記述する.- ここでのテストというのはソフトウェアとしての品質を保つための意味であなたは60点というテストではないです.
- 例えば機能追加する時に前までは動いてたけれど,開発した後動かないというような現象を防ぐ効果もあります.
- テストを書くというこは使い方を実際に動作するコードとして見せることになるため, 使う側から見るとドキュメントに書いていない使い方をコードレベルで確認することができるメリットもあります. 開発する側はテストをしやすくするためにそれに対して良いコードを書こうとする動きになるのでテストを書くことは大事です
-
docs
以下は充実させると映えるでしょう. - README.md も丁寧に書きましょう. 図があると丁寧です.
- コードを整えます.
登録の手続き
-
https://github.com/JuliaRegistries/General の README をさらっと読む.
- 原理的にはここに必要な情報を Pull Request によって追加していくことになる.
- ただし, あくまで原理的なので実際は人間が手動ですることは普通はしない. 下記の
Registrator.jl
が提供するbotを経由して行う. - よほど特殊なことをしない限り人間はbotに命令をするだけで済む.
-
https://github.com/JuliaRegistries/Registrator.jl の README をよく読む.
- GitHub でコードを管理していて,それを公式パッケージにする場合であれば `Via the GitHub App` の section をよく読む.
- よく読んだら下記の図の青色のボタンをクリックする
- こうすると GitHub App 経由で bot をインストールすることになる. 当該のリポジトリにのみインストールすればよい.
-
@JuliaRegistrator register
というコメントによって登録作業を開始する. コメントの入力の仕方はふた通りあるらしい: -
https://github.com/JuliaRegistries/General に bot 経由でプルリクエストが得られる.
- JuliaRegistries/General 側でのPRが提出されると GitHub Action によってテストが回る.
- 例えば, ライセンスファイルがないとちゃんとつけてね!って
JuliaRegistries/General
側のボットが人間に対して指導する. 他にも必要に応じて修正したのち 改めて@JuliaRegistrator register
をする. Issue の上でトリガーした場合同じIssueでコメントすれば再申請手続きをしてくれる. - 例えば,
Project.toml
の[compat]
項目でjulia
がないと怒られる. これは「あなたのパッケージは Julia の 1.5 以上でサポートする」とか 「1.x ならなんでも動作するよ」 などを指定する意図を込める項目である. -
[compat]
に関しては https://pkgdocs.julialang.org/v1/compatibility/ を参照. 他の公式パッケージを眺めて真似するのでも良さそう.
-
上記の修正などで要件を満たせば3日間まつと自動的にマージされて晴れて公式パッケージになる.
- ただし 「公式」 だからと言って人間の目によって逐次確認しているわけでもない
- https://github.com/JuliaRegistries/General#disclaimer
-
公式パッケージになったら SNS で自慢しましょう. そしてみなさんに使ってもらえるようアピールしましょう. 以上.
Discussion