PaketとGistで始める簡単パッケージ管理

追記: 現在は推奨していません。

対象読者: パッケージマネージャのないスクリプト言語のユーザー全般 (HSP3とか)

導入

モジュールと呼ばれるスクリプトは汎用的なため、使い回しが可能なわけですが、いかにして使い回すかはちょっとした問題です。 最初に思いつきそうな:

  • スクリプトが必要になるたびに、ファイルをコピーを作成して使う。(コピペ法)

という方法だと、例えばモジュールにバグがあった場合などにモジュールを書き換えた後、それらのコピーを上書きして回ることになります。 めんどうですね。

そのため:

  • ファイルをまとめておいておき、それを直接 #include して使う。 (共有法)

というようにしている人も少なくないでしょう。

しかし、これにも少し問題があります。 スクリプトを配布するときに、どのファイルが必要なのか分からなくなるのです。 単純に「#include されているファイル」を集めるだけでは、「あるモジュールが他のモジュールを使用している」といった状況には対処できません。

※不要なものも全部いっしょくたにして同梱してしまう、という富豪的な方法もあります。

パッケージ管理ツール

さて、私がおすすめするのは、パッケージ管理ツールと呼ばれるツールを使用することです。 ここでは Paket を利用します。

※Paket は HSPとは全く無関係な環境ために開発されているものですが、汎用的な機能を備えており、使うのがとても簡単なので、採用しています。

Paket をインストールする

まず始めに、ひとまとまりのソフトウェアのスクリプトを入れていくためのフォルダを1個作ります。 以下、このフォルダを ソリューションルート と呼びます。

次に、ソリューションルートに .paket という名前のフォルダを作ります。 (エクスプローラーでは、 .paket. という名前のフォルダを作ろうとすると、 .paket フォルダが作られます。興味深い。) そこに、「Paket の最新版」から paket.bootstrapper.exe をダウンロードして配置し、実行します。 すると、最新版の paket.exe がダウンロードされます。 Paket のインストール作業はこれで完了です。簡単でしょう?

モジュールを使用する

スクリプトからモジュールを使用するときの作業を解説します。 例として、拙作の dirlist_rec モジュールをインストールしてみます。

https://gist.github.com/vain0x/561a66531363ab1e0e73 (リンク切れ)

ソリューションルートに、 paket.dependencies という名前のファイルを作り、次のように記述します。 (すでにある場合は書き足します。)

gist vain0x/561a66531363ab1e0e73 dirlist_rec.hsp

※真ん中にある「vain0x/英数字」は、URLの末尾です。

paket.dependencies を更新したら、「paket install コマンド」を実行する必要があります。 そのためには、ソリューションルートをエクスプローラーで開き、「Shift キーを押しながら、ソリューションルートのフォルダを右クリック」して、「コマンドプロンプトを開く」メニューを選びます。 黒いコンソール画面が出てくるので、そこに次のように入力して enter を押します。

.paket\paket install

すると、 paket-files フォルダの深いところに、 dirlist_rec.hsp がダウンロードされます。

モジュールを実際に使ってみましょう。 ソリューションルートの下に app フォルダを作り、そこに main.hsp ファイルを作成して、以下のように記述してみます。

#include "../paket-files/vain0x/561a66531363ab1e0e73/dirlist_rec.hsp"

  dirlist_rec paths, "*.*"
  repeat stat
    mes paths(cnt)
  loop

dirlist_rec モジュールが使えていますね。

その他のコマンド

paket には install のほかにもたくさんコマンドがありますが、2つだけ紹介しておきます。 「.paket\paket update」を使うと、モジュールの最新版をダウンロードしてきます。 「.paket\paket outdated」を使うと、使用しているモジュールの、新しいバージョンがあるかを調べることができます。

モジュールを公開する

最後に、モジュールを公開する方法を説明します。 ここでは一番簡単な、Gist というウェブサイトを使用する方法をとります。

まず Github のアカウント(無料)を取得します。

https://github.com/

ログインしてから、Gist に行きます。 見て分かると思いますが、「Filename including extension…」と書かれた小さな入力欄に「ファイル名.hsp」を書き、大きいテキストボックスにスクリプトを貼り付けて、「Create secret/public gist」 を押せばアップロード完了です。

※secret gist で公開すると、検索にひっかからないので、URLを知っている人だけがアクセスできるようになります。

モジュールの依存関係を記述する

モジュールが他のモジュールを使用している場合は、そのことを Paket に教えておくと便利です。 というのも、Paket はあるモジュールをダウンロードするとき、それが必要とする他のモジュールも一緒にダウンロードしてくれるのです。

そのためには、先ほどスクリプトを書いて公開した Gist のページに行き、「Edit」ボタンを押して編集画面を開き、「Add file」ボタンを押します。

新しいファイルには、やはり paket.dependencies という名前をつけて、上で例にあげたのと同様に「gist 誰々/英数字 ファイル名」などと書きます。 「Update」(更新)ボタンを押して保存するのを忘れませんよう。

こうしておけば前述の通り、そのモジュールが paket install される際に、 必要な他のモジュールも一緒にダウンロードされるようになります。

これが役に立つ場面もあることでしょう。

関連記事