この記事はRaycast Advent Calendar 2024の15日目の記事です。
14日目の記事はtykiさんの「Dynamic Placeholders で Raycast の力を引き出す 🏋🏻 🔥」でした。
Dynamic Placeholdersは使ったことがなかったので、使ってみます。
あらためて、こんにちは。せーじです。普段はWebやバックエンド、時々アプリの開発をしています。
私は業務や私生活で日常的にRaycastを使っています。
最近、Raycast Proに課金しました。課金した↓経緯はこちらの記事から。
$16/monthという、自分にしてはかなり高価なサブスクにチャレンジしましたが、後悔はなく、とても満足しています。
ただ、「せっかくお金払ってるならもっと使い倒したい」という欲が出てきました。人間とは欲深いものです。
そこで思ったのが、「RaycastのAIの機能をRaycastの外から使えると、 もとが取れる 色々便利になるのでは?」(もはやRaycast関係ないというツッコミはおいておいて...)
思ってしまったし、できるかとりあえず探っていたところ「Raycast Port」というextensionを見つけたので、この記事では、「Raycast Portでなにができるか?」を深掘っていきます。
Raycast Portの公開日は2024年12月8日と、公開されたばかりで、仕様の変更等が今後あるかもしれません。
最新の情報はRaycastのStoreを通して確認してください。
https://www.raycast.com/litomore/raycast-port
Raycast Port
「Raycast Port」は「Raycastの外からRaycastの機能を呼び出す」ことを目的に作成されています。
This allows you to use Raycast features out of Raycast.
これにより、Raycast の外部で Raycast 機能を使用できるようになります。(日本語訳 via Raycast)
現状できることとしては、
- スキーマを利用してraycastの機能を呼び出す
- callBackに指定したurlをブラウザで開く
- このとき、raycastのAIに問い合わせた内容を
RAYCAST_PORT_AI_ANSWER
で参照できるみたい
- このとき、raycastのAIに問い合わせた内容を
# terminalで実行できる、サンプル
deeplink="raycast://extensions/litomore/raycast-port/ai-ask?launchType=background&context=$(jq -rR @uri <<< '{"askPrompt": "hello", "callbackOpen": ["https://example.com/?answer=RAYCAST_PORT_AI_ANSWER"]}')"
open $deeplink
Raycast Portのソースコード↓
通信の構成図としてはこんな感じ
ここで、CallBack処理はRaycastの「callbackLaunchCommand」を利用していました。
なので、CallBackにはurlを開く以外もRaycast別のextensionを立ち上げるなど、色々できるようです。
余談
私はまだ、RaycastのExtensionsを開発したことがなかったんですが、RaycastにはさまざまなAPIが用意されており、その一つにAIを利用できるAPIもありました。
とても使いやすそう。
おわりに
興味本位で深掘っていきましたが、RaycastのAPIの使いやすさとExtensionの作り方をはからず学べました。
今のところ、自分で「こんな機能ないから、RaycastのExtensions作ろ!」という衝動は発生していませんが、「なんだか楽しそうだしちょっとやってみよ」という衝動には駆られました。
近々、Extensionsまわりの記事を執筆しようと思います。
最後までお読みいただき、ありがとうございました。