10
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AI駆動開発でElixirライブラリをリリース

Last updated at Posted at 2025-05-26

CursorによるAI駆動開発でElixirライブラリをリリースしました。

開発したElixirコードについて

Elixir/Erlangで分散コンピューティングをするときに、Erlang Port Mapper Daemon (epmd)というプログラムを仲介するのですが、epmdが起動しているかどうか(active?)、epmdの起動(activate)・停止(deactivate)、epmdのフルパスの取得を行う関数(find_epmd_executable)をまとめたEpmdUpというモジュールを作成しました。

EpmdUpという命名自体も、AIと相談しながら決めました。

epmdが起動しているかどうかの判定と、epmdの停止は、公式ドキュメントDistribution Protocolに準拠して決めましたので、ロバストなのではないかなと自負しています。

epmdの起動に関して、deamonモードで起動するのが正式だとは思っています。

Cursorの設定

Cursorは英語モードで使用しました。設定の仕方は忘れました。

英語モードにした理由は、2つあります。

  • OSSとして公開するので、commit logやissueなど、全て英語にしたかったから
  • 日本語でプロンプトを書くと、頭や入力モードを英語と日本語に切り替えるのが煩雑だと思ったから

AIにさせたこと

  • commit logの生成: Check git diff, and generate a commit log
  • PRの生成: Check git diff main, and generate PR
  • 命名の提案: Propose a name of ...
  • Issueの生成: Generate an issue of ...
  • ドキュメントの生成: Generate document of ...

今回AIにさせなかったこと

  • Elixirコードの生成: 何も情報を与えない状態では、Cursorは満足なElixirコードを生成できませんでした。
  • テストコードの生成: Cursorは結構まともなテストコードを生成することは知っていましたが、今回作成したプログラムは少し特殊だったので、テストは自分で書きました。

ふりかえり

  • commit logやissue、PRの英文を自動生成してくれるのは、とてもありがたく、生産性と可読性が向上しました!
  • 命名の提案もありがたかったです。モジュール名や関数名がとてもわかりやすくなりました。
  • 英文ドキュメントの生成も、手間なくできてありがたかったです。要らないこともたくさん書いてくるのですが、削るのは容易ですし、心も痛みません。

P.S. 同じ手法で、続けて2つリリースしました!

後者は @mnishiguchi さんと一緒に書いたバージョンを、EpmdUpGetHostを使うようにしてリライトしました。 @mnishiguchi さんの書いたコードのおかげで、あっという間にリリースできました。改めて御礼申し上げます。

10
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?