🎉

Raycast Storeで拡張機能を公開した話

2024/01/15に公開

以前記事に書いた拡張機能 SnapJot が Raycast Store にて公開されました。
https://www.raycast.com/k41531/snap-jot/commands
https://zenn.dev/k41531/articles/6e939befa79cf5
コマンドが一つしかない非常にシンプルな拡張機能ですが、せっかくなので公開までの記録を残しておきます。

Raycast Storeで公開を考えている方の参考になれば幸いです。

SnapJot について

Raycastから特定のローカルファイルに、タイムスタンプ付きのメモを取ることができます。

私はメモするのにObsidianのデイリーノートを活用しています。
今まではObsidianをショートカットで開き、デイリーノートを開いてメモを取っていました。
手間というほどではないですが、メモを取る動線は出来るだけ短い方が良いです。
そこで、よく使うランチャーであるRaycastからメモを取れるようにしたのがこの拡張機能です。

機能としてはメモしかないので、正直Storeに公開するほどではなかったかと思っています。
ただ、これと同等の機能を持つ拡張機能がなかったので、公開することができました。

公開されて10分後に以下のようなissueをいただきました。
やはり、Obsidianでの需要はあるようです。
https://github.com/raycast/extensions/issues/10130

公開までの準備

以下のリンクに拡張機能をストアで公開するための準備について書かれています。
https://developers.raycast.com/basics/prepare-an-extension-for-store

主な注意点としては、以下のようなものがあります。

基本的な確認事項

  • authoreフィールドがRaycastアカウントのユーザー名と同じか
  • licenseフィールドがMITか
  • 最新のRaycast APIを使っているか
  • パッケージマネージャーがnpm
  • サードパーティーのライブラリを使っている場合は利用規約を確認する
  • 拡張機能を提出する前に、npm run buildnpm run lint を実行する

拡張機能やコマンドの名前について

拡張機能とコマンド名は、Apple Style Guide に従って下さいと書いてあるが、これが長い。
Raycastのページに書いてるサンプルを引用すると

✅ Google Workplace, Doppler Share Secrets, Search in Database
❌ Hacker news, my issues
🤔 It's okay to use lower case for names and trademarks that are canonically written with lower case letters. E.g. iOS , macOS , npm.

  • 拡張機能名前は、Storeと設定でのみ使用される
    • ストアで見た時にわかりやすい名前にする
    • 名詞より動詞の形が良い
    • 多様なコマンドを提供しない場合、一般的な名称は避ける
  • コマンド名は、<動詞><名詞> もしくは <名詞> が良い
    • 他の拡張機能のコマンド名を真似る
    • 冠詞は不要
    • 何ができるのかわかる名前にする

アイコン

  • 512x512のPNGファイルを用意する
    • ライトテーマでもダークテーマでも見やすいもの
  • デフォルトアイコンはリジェクトされる

README

  • 拡張機能の利用する際に、設定が必要な場合はREADMEに説明を記載する
    • 例えば、APIのアクセストークンなど
    • 最初に拡張機能を開いた際に、READMEへリンクするボタンが表示されるようになる

カテゴリー

  • カテゴリーをpackage.jsonで設定しましょう。

スクリーンショット

  • ストアに公開する際には、スクリーンショットを用意する必要があります。
    • 2000x1250のPNGファイルを用意する
      ドキュメントには、少なくとも3枚あると拡張機能の詳細ページの見た目が良くなると書いてあります。
      私の場合は、コマンドが一つしかないのでスクショも一つで良かったです。

他にもいくつか注意点はありますが、基本的にはドキュメントに書いてある通りにすれば問題ないです。

Storeへの提出

buildとlintが通ったら、Storeへの提出を行います。
npm run publish を実行すると、RaycastのextensionsリポジトリにPRが作成されます。
https://github.com/raycast/extensions
ここから先は、通常のPRと同じです。
レビュワーがレビューを行い、問題がなければマージされてStoreに公開されます。

私の場合は既に似たような拡張機能があったので、どのような違いがあるのかを聞かれました。
回答として、既存の多くの拡張機能はサードパーティーのサービスと連携するものが多いこと。
単純にテキストファイルに書き込むだけの拡張機能が欲しいということを説明しました。
また、もっとユーザーフレンドリーにして欲しいといことで、いくつか初期設定の変更を求められました。
以下のリンクで、そのやり取りが見れます。
https://github.com/raycast/extensions/pull/9875

レビュワーが一部修正してくれるなど、思っていた以上に丁寧な対応をしていただきました。
そして、無事にStoreに公開されました🎉

感想

Store公開に関するドキュメントが英語かつそこそこ量がありますが、今はDeepLとChatGPTという強力な助っ人がいるのであまり手間はかかりませんでした。
また、レビュワーさんが丁寧にレビューしていることがわかったので、他の拡張機能も安心して使えそうです。

Discussion