Raycastのsnippetで生産性を上げよう！

## はじめに

日々の業務で繰り返し使うフレーズや定型文は、手動で入力していると非効率的な場面が多くあります。この記事では、私がRaycastのスニペット機能をどのように使っているかを紹介します。ご自分で使いやすいようにアレンジして取り入れていただければと思います。

## Raycastとは

https://www.raycast.com/

Raycastは、Mac用の高機能ランチャーアプリケーションです。簡単にRaycastの主な機能をまとめると…

### 基本機能
- アプリケーションの起動
- ファイルの検索
- スニペットの管理
- インターネット検索
- クリップボード管理
- ウィンドウ管理
などがあります。

本記事では**スニペットの管理**にフォーカスしていきます。

私は社内の人に勧められて利用し始めました。下記の記事を参考にしながら設定などを行いました。

他にもRaycastを便利に使用するための様々な方法が調べると出てくるのでそれを参考にしつつ設定などを行うと必ず素晴らしい体験を得られると思いますので、もし利用していない方はぜひ積極的に利用しましょう！

https://zenn.dev/lclco/articles/45d2a49650ebf9

## スニペットの基本的な使い方

### 登録方法

**Raycast**内で`create snippet`と入力してenterを押すとsnippetの登録画面に遷移します。

![スクリーンショット 2024-09-22 0.55.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3734276/c6a07a97-1c34-d983-afb7-9f22e8320a14.png)

Name　: わかりやすい名前を入れましょう（極論、なんでもよし）
Snippet : 省略したい内容を入力しましょう(複数行もOK)
Keyward: Snippetを表示するための、簡潔なKeywardにしましょう

「⌘ + ↩︎」で登録しましょう。

### 使用方法

上の画像の通りに登録を行い「m;sample」と入力すると、「sample@example.com」と表示されます。

※実際に利用する場合は「m;sam」などのように、他と被らない意味が理解できてできる限り短いKeywardを考えましょう！

![画面収録-2024-10-17-17.37.05.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3734276/70751206-c8e6-4367-5f6e-294d05d78f68.gif)

見ていただいたら、わかるかも知れませんが日本語入力のままだったという場合もそのまま変換されるのでとても便利です

## 登録する場合の考え方

私の場合ですが、「大;中;小」のように考えています。
大きい枠組みから徐々に小さい枠組みを指定していく感じです。

例えば、私は議事録を書く機会があります。ミーティングするクライアントによって様々な議事録のテンプレートがあったり、参加メンバーが異なったり、クライアントと行うものか、インナーのミーティンングかなどあります。その場合は「t;client_name;i」「t;client_name;c」というように分岐します。

私は複数行にわたるテンプレートの場合にはt;（template）という接頭辞で始めるという規則で登録をしています。

```md
[t;client_name;i]
↓
~~~~~~~~~~~~~~~~~~~~
## 日時
2024年月日（）

## 参加者（敬称略）　
山田、山田、山田、山田

## 資料
[資料の名前](link)

## 内容
- 議題
    - 結論

## メモ
- 議題
    - 議題に対する内容を五月雨に書いていく
~~~~~~~~~~~~~~~~~~~~
```
曜日や、参加者、資料等がある程度決まっている場合は、可能な限り情報を埋めた状態で登録しておきましょう。

## 他の使用例
### GitHubでPR(pull request)を出す場合
PRを書く時に、ある程度書かないといけないことは決まっていると思います。ですので、一度テンプレート化してしまって「t;gh;pr」（template;github;pull request）のように設定すればPRを書く時間を短縮できます。

:::note info
PRのテンプレートは設定できるので、わざわざsnippetとして登録しないほうがおすすめです。
:::

https://qiita.com/KoutaKawaguchi1101/items/22f7ae38882bd69133d1

## ある程度の文字列はわかりやすい接頭辞をつける
### メールアドレスはm;から始める

私は「会社のメールアドレス」という場合には、「m;com」と設定を行います。メールアドレスは一律でm;から始めるという規則で設定をしています。

### 名前はn;から始める

変換時にスッと出てこない、「太い」「朗らか」→「太郎」のように入力する必要のある名前の方は、登録しておくととても便利です。

- n;ln → 苗字（name;LastName）
- n;fn → 名前（name;FirstName）
- n;full → フルネーム（name;FullName）

私の場合、上の形だと覚えにくかったため「n;sato」→「佐藤」のように直接名前を入れてしまっています。この場合の利点は自分以外の入力機会が多いものの変換が出てこない方の場合も対応できるというところです。

> 接尾辞をつける場合
n;l;; → 苗字（name;LastName）
n;f;; → 名前（name;FirstName）
n;full;; → フルネーム（name;FullName）

<details><summary>接尾辞をつける場合の利点</summary>
ーーーーーーーーーー

接尾辞を明示的につけるようにすると、意図せず被ってしまい変換されてしまうということを防げます。

```md
n;f → 名前（name;FirstName）
n;full → フルネーム（name;FullName）
```
n;fullと入力する前にn;fとして変換されてしまいます。

ーーーーーーーーーー
</details>

### まとめ
mail,nameのようにパッと思い浮かびやすく覚えやすい単語を元にするとわかりやすいです。

## ChatGPTへのリクエストもスニペットで
開発時にChatGPTを活用することも多いですが、その際に質問を効率的に入力するためにt;gptというスニペットを設定しています。

### JavaScript
例えば、JavaScriptに関する質問をする際には、「**t;gpt;js**」と入力すると、以下のようなテンプレートが表示され、質問内容を簡単に構成できます。

```
#役割
あなたはJavaScriptの熟練プログラマーです。

#タスク
以下の要件に基づいて、JavaScriptコードを作成してください。

#要件
[具体的な機能や目的を記述]

#制約条件
- ES6+の機能を活用してください
- 非同期処理にはPromiseまたはasync/awaitを使用してください
- 可能な限り、副作用を最小限に抑えてください

#出力形式
- コードブロックを使用してください
- JSDocコメントを含めてください
- 必要に応じて、使用方法の例を追加してください
```

既存の書いているコードを元にGPTに質問を投げたい場合も多いと思います。その場合は「**t;gpt;code;js**」のように間にcode;を挟みます。

~~code;は長いのでc;のように短縮したほうがいいかもしれません…~~

```
#役割
あなたはJavaScriptの熟練プログラマーです。

#タスク
以下のコードと要件に基づいて、JavaScriptコードを作成してください。

#コード
｀｀｀js

｀｀｀

#要件
[具体的な機能や目的を記述]

#制約条件
- ES6+の機能を活用してください
- 非同期処理にはPromiseまたはasync/awaitを使用してください
- 可能な限り、副作用を最小限に抑えてください

#出力形式
- コードブロックを使用してください
- JSDocコメントを含めてください
- 必要に応じて、使用方法の例を追加してください
```

言語ごとに様々なプロンプトをテンプレートとしてsnippet登録すれば、毎回詳細なプロンプトを入力する手間が省け、より素早く精度の良い回答を得ることが可能になります。

例えば、私はVue.jsを使用することが多いですが明示的に示さないとComposition APIに対応していないコードが出力されたり、TypeScriptが使用されていないコードが出力されたりと不便に感じることがあります。

みなさんの使用している、言語やフレームワークごとに指定しないと最新の記法で出力されないなどという場合にもとても便利に働いてくれます。

:::note info
ChatGPTには事前に設定できる機能があります。

使用している、言語やフレームワークごとの指定は事前に設定しておいた方がより効率的かと思います。

設定→カスタム指示ON→ChatGPTをカスタマイズする で設定できます。
:::

## まとめ
Raycastのスニペット機能を使うことで、日常的に繰り返す作業の時間を大幅に削減できます。特に、定型文やメールアドレスの入力が効率化され、余計な手間を省けるので体験として気持ちがいいです。日々の業務で繰り返し使う作業がある場合、ぜひスニペットの活用を検討してみてください。

Raycastのsnippetに限らず、色んな便利なスニペットの記事も存在していますので自分なりに情報を集めて生産性を上げていきましょう！