# ターミナル × OpenAI！ -ShellMateを使ってみた-

> ターミナル操作を効率化するShellMateについて、導入、使い方、特徴、感想を紹介します。自然言語での質問に基づき、関連コマンドを提案するAI支援ツールです。

- 公開日: 2024-08-22
- 著者: しんじょう
- タグ: ShellMate, 生成AI
- URL: https://tech.anycloud.co.jp/articles/shellmate-terminal-openai

---

開発者にとって、ターミナルにコマンドを打つことは日常の一部になっていると思います。

普段よく使うコマンドであればすぐに打てるのですが、あまり使わないコマンドだと、「どういうコマンドだったっけ？」とターミナルとブラウザを往復する作業が発生。

これが地味にめんどくさいと感じます。

今回の記事では、そんな悩みを解決し、ターミナルが直接答えてくれたらという理想を形にした、ShellMateというツールについて紹介します！

## ツールの概要

ShellMateは、ソフトウェア開発者やデベロッパー向けに設計されたAI支援ツールで、ターミナル上の操作を効率化することを目的としています。

このツールは、自然言語クエリを解釈して、OpenAIによる関連するコマンドの提案により、迅速に開発を進める手助けをしてくれるオープンソースのコマンドライン生産ツールです。

参考：[公式サイト](https://www.deepspring.ai/shellmate)

## 特徴

ShellMateの特徴には以下が挙げられます

-   **自然言語処理**
    
    →ユーザーが入力した質問に対して、AIが即座にコードやアドバイスを提供
    
-   エラーの検出や修正
-   コマンドの提案

## 使い方

### インストール

ShellMateは[こちらのサイト](https://www.deepspring.ai/shellmate#download)からEmailを登録することでダウンロードできます。

<figure><img src="./image-001.webp" alt="ShellMateのダウンロード" width="733" height="239"></figure>

ダウンロードしたdmgを開くと、以下の画像のようなダイアログが表示されます。

<figure><img src="./image-002.webp" alt="ShellMateの利用契約" width="646" height="465"></figure>

ダイアログに記載されているざっくりとした内容は以下です。

> OpenAI APIを使用して、ターミナルからのテキストを処理し、提案を生成します。 知らないコマンドを実行しないように注意してください。
> 
> このソフトウェアおよび関連するドキュメントファイルのコピーを取得したすべての人に、無償で使用、複製、変更、統合、公開、配布、サブライセンス、販売する権利が許可されます。
> 
> 条件は、著作権表示と許可通知をすべてのコピーまたは主要部分に含めることです。
> 
> このソフトウェアは「現状のまま」提供され、いかなる種類の保証もありません。著作者または著作権者は、ソフトウェアの使用やその他の取引に起因または関連して発生した請求、損害、またはその他の取り扱いに関して一切責任を負いません。

このダイアログで`Agree` を押すと、以下の操作画面が現れ、MacにShellMateがインストールされます。

<figure><img src="./image-003.webp" alt="ShellMateをMacにインストール" width="1200" height="820"></figure>

### ShellMateを試してみた

ShellMateの使い方は非常に簡単です。

アプリを立ち上げると以下のようにターミナルも開きます。

<figure><img src="./image-004.webp" alt="ShellMateアプリの立ち上げ" width="2276" height="860"></figure>

そして、Macのターミナル上でコマンドを入力するところに質問したい内容を入力します。

日本語入力でも質問を認識して回答してくれるのはありがたいですね。

`Generating suggestion` と表示されると回答を生成してくれています。

※公式のサイトには、質問の前にsmを入力して質問をするようにと記載

<figure><img src="./image-005.webp" alt="ShellMateへの質問1" width="2242" height="938"></figure>

しかし、smを入力しなくても問題なく質問を認識して回答してくれました。

<figure><img src="./image-006.webp" alt="ShellMateへの質問2" width="2212" height="950"></figure>

次はわざと間違ったコマンドを入力してみます。

<figure><img src="./image-007.webp" alt="ShellMateが間違ったコマンドを指摘" width="2002" height="740"></figure>

すると、`correct directory change command` というようにコマンドの間違いを指摘して修正案を提示してくれます！

### 認識されない質問

ShellMateはOpenAI APIを使用しているため、どんな質問でも答えてくれるのではないかと考え、以下の質問をしてみました。

<figure><img src="./image-008.webp" alt="ShellMateの認識されない質問" width="2116" height="836"></figure>

すると、`echo 'Please update the terminal with relevant info so ShellMate can generate a good suggestion.’` というように、関連情報を入力するように促されます。

これは、利用規約にあった”知らないコマンドを実行しないように注意してください”の部分につながってきそうですね。

ShellMateはコマンドライン生成に特化して利便性を上げるために、このような仕様になっているのではないかと思います。

## 評論

ShellMateは開発者にとって、ターミナル操作を凄く効率的にしてくれるツールだと感じました。

中でも、日本語でも質問の内容を把握してくれるため、「あの操作を行うコマンドって何だっけ？」となったときに、ターミナルとブラウザを行き来する必要がなくなるのはありがたいです。

しかし、一点だけ自分が操作する上で気になったのは、Macのデフォルトのターミナル上だけで動作するという点です。

自分は普段、[Warp](https://www.warp.dev/)というターミナルを使っているため、Warpでは使えないのが自分にとっては少し気になりました。

## まとめ

今回、初めてShellMateを触ってみました。

普段の開発などで、度々遭遇していた「あのコマンド何だっけ？」となる度にブラウザとターミナルを行き来するという機会が、ShellMateを使うことで無くなりそうですね！

Macのターミナルをよく使われている方にとっては、必須のツールになるのではないかと思います。

ShellMateのおかげで、コマンドを覚えなくて良くなりそうです！
