Julia の REPL で時計を表示/そして公式パッケージに登録まで

2021/11/15に公開

本日は

こそっと作った Julia パッケージ TerminalClock.jl の紹介です.

  • 今何時?
  • カップ麺のタイマー
  • ⏱ ストップウォッチ

を REPL 上で表示してくれるようになります.

  • 投げ銭してくれると中の人が喜びます.

インストール

pkg> add TerminalClock

使い方

基本的に TerminalClock.jl をご覧ください

using TerminalClock; clock() # v0.2.0 で動作.

動作原理

去年作成した Qiita で紹介しているテクニック Julia のREPL上でカラフルな出力をする(お遊び) を思い返しながら作りました.

  • 時計の文字盤を文字列で作って print 関数で表示
  • ここにも書いてあるように カーソルを上に戻しながら表示した文字列を順次消す命令を実行
  • 表示時刻を更新し対応する文字盤文字列を print 関数で表示

時刻の取得に関しては Dates.jl パッケージに依存しています.

公式パッケージの登録の方法

簡単にですがメモをしておきます:

手元のPCで作業

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 というコメントによって登録作業を開始する. コメントの入力の仕方はふた通りあるらしい:

      1. 登録しようとしている GitHub リポジトリのコミットにコメントを入れる 例えばこんな感じ
      1. Issue のコメントに記述 例えばこんな感じ
    • 前者は特定のコミット・ブランチを厳密にして指定したい場合, 後者はとりあえずコメントをした時点での最新の状態で登録を依頼するという雰囲気かも(←これは適当に発言している)
  • 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日間まつと自動的にマージされて晴れて公式パッケージになる.

  • 公式パッケージになったら SNS で自慢しましょう. そしてみなさんに使ってもらえるようアピールしましょう. 以上.

GitHubで編集を提案

Discussion