会社とか謎の奢り*1で Claude Code を使わせてもらえるようになって,生活の中で思いついたアプリケーションやライブラリ,資料等を Claude Code と一緒に作ることが増えました.ほかのことにも使っていますが,ここではタイトルのとおりの活動を報告します.
つくったもの
tomio2480/php-serial : PHP でシリアル通信をするための PHP で書かれたライブラリ
packagist.org
serdevmock : シリアルポートの向こう側につながるデバイスのモックをやってくれる Python で書かれたライブラリ
pypi.org
前提知識
自分がなんとなく把握している範囲で,今回登場する概念やツールの情報を置いておきます.
Packagist,Composer
Packagist は Composer という仕組みで管理可能になった PHP ライブラリを登録しておくサイトのようです.
packagist.org
getcomposer.org
記憶している手順としては......
- 単に PHP でライブラリを書いただけではダメで,composer.json を正しく準備して Composer を使って管理できる状態をつくる.
- Composer を使って管理できる状態のライブラリを,GitHub の Public のリモートリポジトリに収める.
- そのリモートリポジトリを Packagist に登録して,GitHub 側で Release をつくる.
- Composer を使ってインターネットを経由して,手元の環境にライブラリがインストールできる.
PyPI,pip
PyPI は pip という仕組みで管理可能になった Python パッケージを登録しておくサイトのようです.
pypi.org
記憶している手順としては......
- 単に Python ライブラリを書いただけではダメで,sdist あるいは wheel という形式で配布物をまとめてパッケージの形式を取る.
- pip を使って管理できる状態のパッケージを,GItHub の Public のリモートリポジトリに収める.
- そのリモートリポジトリを PyPI に登録して,GitHub 側で Release をつくる.
- pip を使ってインターネットを経由して,手元の環境にライブラリがインストールできる.
公開に至るまで
実際の作業はほぼすべて Claude Code がやってくれたので,自分でやったことはアカウント取得くらいのものです.最近のものは GitHub に公開であげてさえあれば,うまいこと Release を作ってやるだけで,いい感じに公開されるようになっていました.
指示としては,公開に耐えうるだけのテストやセキュリティの担保を行なってもらって,ネチネチと本当に大丈夫?みたいなことをやっていった感じです.特にシリアルポートに関するものなので,余計なコマンドを実行してしまうとか,そういう心配が真っ先に立ったので,そのあたりはしつこく問いました.
そうしてやりとりして PHP の開発ガイドラインを定めて markdown にまとめてもらいました.先に PHP についての開発ガイドラインが完成したので,それを参照して Python の開発ガイドラインを定めて取り組んでもらいました.とりあえず PHP の分だけ Gist に移したので,そちらをご覧ください.
気になったこと
今回はじめて自分が作ったライブラリを,公開のパッケージ管理ソフトウェアでインストールできる状態に持っていったので,すべてのお作法がわからず,わなわなしてしまいました.
命名
Packagist は「tomio2480/php-serial」のような形で,ユーザー名が手前につく形で公開され,Composer でもそう指定するのに対し,PyPI は「serdevmock」のようにユーザー名が手前につかず,pip でもパッケージ名だけを指定するのが一般的です.
そのため,PyPI で公開するあまり一般名詞っぽい名前をつけてしまうと,他の人に迷惑かなと悩みました.実際,シリアル通信に関するライブラリは「serial」の名前を含むものが大半ですが,オブジェクトに対してシリアライズ処理をする「serialize」も「serial」とされていることがあり,実は混ざって存在しています.
ためしに,Packagist と PyPI で「serial」を検索した結果のリンクを張っておきます.なんとなく見た感じ,両方ともシリアライズが優勢で,PyPI の方がシリアル通信も混ざりがちな感じがします.
packagist.org
そもそも公開してもいいのか
こういった公共の場では,明示的に書かれているルール以外にも,暗黙のルールがあるんじゃないかなの心配がありました.なんとなくこういう雰囲気でとか,ここに諮って進めてねとか,そういうのってなかなか初心者では気づけなくてイカンと参っていました.
そういうのがちょっと心配になって,とりあえず Composer や pip でインストールできる状態にはして,GitHub で公開までしておいたのですが,周りの人に訊く限り,まあいいのでは,という感じだったので公開に踏み切った形です.
今でもちょっと心配
自分だけでなく,いろんな人たちが便利になってくれればそれはいいことなのは間違いありません.ただ,進化の早いソフトウェアの世界においては,メンテナンスし続ける胆力が保てるかであったり,そもそもメンテナンスに耐えうる知識や情報を仕入れられるかなど,ソフトウェアエンジニアとしての素養も求められる手前,いっときの思いつきツールをこういう形で公開していいのかは,実はまだ若干気がかりではあります.
まあただ,特にどうといった責任のある立場として公開しているわけでもないし,ある種のお裾分けみたいなもんなので,温かく見守っていただけましたら幸いです.
こういう手ほどき受けられると嬉しいな~の気持ちが高まりましたので,どっかのタイミングで旭川とかで「ライブラリとかパッケージを公開する勉強会」をやれたらと思い始めています.
OSS の世界を良くするというか,悪くしないというか,そういう手を動かした練習も大事ですよね,やっぱり.

*1:なぜかぼくに Claude Max プランを奢ってくれている人が存在します