cover

KV Store Manager - Mattermost Plugin を開発しました

はじめに

私は普段からMattermostを利用しています。これはSlackのようなコミュニケーションツールであり、セルフホストが可能なので、友人に運営してもらっています。

その流れで、Mattermostのプラグインをたまに作成しています。以下はRSS Feedをチャンネルに登録してみんなで一緒に購読できるプラグインです。

https://github.com/manybugsdev/mattermost-plugin-feed

ボットが記事を投稿している様子

開発するまでは以下のプラグインを利用していました。記事更新の判定条件が特殊で、過去の記事が大量に再投稿されてしまうことがありました。それを対策するために作ったのです。

大量投稿

https://mattermost.com/marketplace/rssfeed-plugin/

さて、Mattermost プラグインの開発においては、状態を保存しておくためにアプリケーション内部で提供されているKV Storeを利用することができます。しかし、プラグインの外部からKV Storeの状態を確認する方法がなく、いちいちログファイルに書き出すなどして確認していました。

そこで、Mattermostプラグインで使用されているKV Storeの状態をコマンド一つで確認できるプラグインを作ろうと考えました。ただ単純なプログラムだったので、最近流行しているVibe Codingの手法で開発することにしました。

Vibe Codingとは?

https://www.ibm.com/think/topics/vibe-coding

自分でほとんどコーディングすることなく、自然言語で指示を出し、生成AIがコーディングを行うという開発手法です。最近は生成AIも随分と賢くなってしまって、簡単なものであれば全て実装を任せることができるようになっています。

私が好んで使っている AI は Github Copilot です。生成AIツールの中でも特に魅力的な料金体系です。エージェントモードが10$/monthで使えるのは他にないでしょう。GitHub Issueと連携して、実際のチーム開発のような運用もすることができるため、こちらを使ってVibe Codingを行いました。

開発の流れ

GitHub Copilotエージェントを使った開発は Issueを作ることから始まります。プログラムの要件を書き、AssigneesにCopilotを割り当てます。これだけです。

最初のIssue

AssigneesにCopilotが表示されない場合は、Copilot Proを契約していないか、リポジトリアクセスがCopilotに提供されていないと思われます。こちらから確認できます。

https://github.com/settings/copilot/coding_agent

Issueを作るとCopilotが作業を始めます。数分すると作業が完了し、プルリクエストが作成されます。コードや実行結果などの確認を行います。

作成されたコードの差分表示

プルリクエストが気に入ればマージし、作成されたブランチを削除します。もし、気に入らない場合は、プルリクエストとブランチを破棄し、Issueを作るところからもう一度やり直します。

このように、GitHubを利用したチーム開発と同じ流れで作業することができます。GitHubを使う練習にもなります。

指示の出し方のコツ

私は指示の出し方として、あまり細かく伝えすぎないということを意識しています。プロンプトエンジニアリングのようにこちら側の作業が多くなってしまうと本末転倒です。いかに簡潔に自分のイメージをAIと共有するかを考えるのが面白い所だと思います。

でもこれは説明しなさすぎました。

説明なさすぎたIssue

結果

満足のいくものが作成できました。/kv listを実行してKV Storeのkeyを全て表示させることができます。/kv get plugin_name:keyで対応する値も表示させることができます。

https://github.com/manybugsdev/mattermost-plugin-kv

KVプラグインの様子

私はぼっち開発者なのですが、チームで開発したような感覚で楽しかったです。モバイルアプリでもレビューが可能で、ちょっとした時間でプログラム開発ができるのは感動しました。いまいち思い通りにいかない部分もあったのですが、異常なコーディングスピードで修正してくれるので、単純なプログラムはVibe Codingで十分だと感じました。

ただ、レビューが面倒だったのが唯一ストレスでした。自動でデプロイすると確認も楽なのですが、私は手動でファイルをアップロードしており、いちいちパソコンを開かなければなりませんでした。レビューがすぐできるようにまずは環境を整えた方がよいです。AIに任せてもいいのですが、SREまわりはあまりうまくいかない印象です。

まとめ