トレタ開発者ブログ

飲食店向け予約/顧客台帳サービス「トレタ」、モバイルオーダー「トレタO/X」などを運営するトレタの開発メンバーによるブログです。

GPTsでGoのテストアドバイザーを作ってみた

はじめに

こんにちは、サーバーサイドエンジニアの@shiroemonsです。

こちらはトレタAdventCalendar2023 22日目の記事です。

11月上旬、OpenAIからChatGPTの新機能「GPTs」が発表されました。

この新機能は、ChatGPTを特定の目的や用途に合わせてカスタマイズできる点が特徴です。

この記事では、GPTs作成と作成したGPTsを紹介しようと思います。

GPTsとは

GPTsは、自然言語処理を行うAI技術であるChatGPTを、特定の目的や用途に合わせてカスタマイズできる機能です。

この機能は、OpenAIが開発したGPTモデルに基づいており、膨大なテキストデータから学習した自然言語理解と生成の能力を持っています。

GPTsの特徴はその柔軟性にあります。ユーザーは自分のニーズに合わせてモデルをカスタマイズし、特定の業界やタスクに適したAIアドバイザーを作成できます。

これにより、ビジネス、教育、研究など、様々な分野での応用が可能になります。

詳細はOpenAIのブログをご覧ください。

注記: GPTsを使用、作成するには、ChatGPT Plus($20/月)の加入が必要です。

GPTs作成方法

GPTsを作成する手順は非常にシンプルです。以下のステップの通りです。

  1. ChatGPTホーム画面のアクセス
    ChatGPTホーム画面から左側のメニューにある「Explore」または「探索する」を選択します。これにより、GPTsの作成に必要なさまざまなリソースにアクセスできます。

左メニューの「探索する」をクリックする

  1. 新規GPTの作成
    「My GPTs」セクションから「Create a GPT」を選択します。ここでは、新たに作成するGPTの基本設定を行います。

「Create a GPT」をクリックする

  1. 詳細設定の入力
    対話形式で、GPTの目的やアイコン画像、参照情報などを設定します。ここでは、GPTがどのような機能を持つか、どのような応答を提供するかを定義します。 アイコン画像は、DALL·E 3で作成した画像を使用することができます。

対話形式で設定していきます

このプロセスは非常に直感的で、特別な技術知識は必要ありません。ただし、特定の用途や業界に特化したGPTを作成する場合は、その分野に関する知識があるとより効果的なカスタマイズが可能です。

活用事例の紹介:「Go Tester」の作成

GPTsが使えるようになってすぐ、私はGo言語のテストに関する課題を解決するための特化したアドバイザーを作成しました。

Go Tester

背景

Go言語のテストに関する知見が不足していると感じ、Go言語のテスト方法に関するアドバイスを提供する「Go Tester」というアドバイザーをGPTsを使って作成しました。

機能

「Go Tester」はGo言語に関するテストに特化したアドバイザーです。

Goのテストに関する質問をすると、具体的なアドバイスやテストの書き方の提案を行います。

サンプル

利用のメリット

  • 初心者から中級者まで: Goのテストに関する基本的な知識から、より高度なテクニックに関する質問にも答えられます。
  • 効率的な学習支援: 実際のテストケースに即したアドバイスを受けることで、Goのテストスキルを効率的に向上させることができます。
  • 実用性の高い提案: 完璧ではありませんが、実際のプロジェクトで役立つテストの書き方を提案してくれます。

まとめ

Go Testerは、Go言語のテストに関する知識を深め、より良いテストコードを書くための有用なツールです。

GPTsを使って、特定の技術分野に特化したアドバイザーを作成することで、エンジニアの学習と実践の支援が可能になります。

公開について

「Go Tester」はGPTsの機能を試すために作成したツールです。現在、このツールの公開は行っておらず、社内限定での使用となっています。(社内データやコードを使用しているわけではありません。)

特に、弊社内でGo言語を使用するプロジェクトの開発メンバーには、Goのテスト方法に関する知識を深めるためのリソースとして共有しています。

所感と展望

GPTsは、対話形式で簡単にカスタマイズ可能なAIアドバイザーを作成できることに、本当に驚きました。

現在の「Go Tester」はまだ初期段階にあり、設定が粗いため、回答の精度には改善の余地があります。

今後は、このアドバイザーの精度を向上させるためにさらなる努力を続けるつもりです。

終わり

トレタでは一緒にチームで働いてくれるエンジニアのメンバーやプロダクトマネージャーとして活躍してくれる人を求めています。飲食店の未来をアップデートする事業に興味のある方はお気軽に話を聞きにきてください。

corp.toreta.in

21世紀のターミナル「Warp」のショートカットキーの紹介

はじめに

こんにちは、サーバーサイドエンジニアの@shiroemonsです。

こちらはトレタAdventCalendar2023 20日目の記事です。

前日の記事でシリコンMacに移行した記事を書きました。

tech.toreta.in

最近、Warpというターミナルを使い始めました。今回の記事はもともとWarpの機能について詳しく紹介するつもりでしたが、他のブログと内容が重複してしまうことに気づきました。

実際に、Warpを使い始めたばかりで、まだ完全には慣れていないため、学ぶべきことも多いです。そこで、この記事ではWarpで使える便利なショートカットキーに焦点を当ててみました。この記事を通じて、Warpのショートカットキーを効率よく覚えるお手伝いができればと思います。

Warpのショートカットキー一覧

公式サイトに掲載されている情報を基に、より理解しやすいように順序を変えてWarpのショートカットキーをまとめてみました。公式の情報を参考にしつつ、読者にとって分かりやすい形で情報を整理しました。

docs.warp.dev

Warp Essentials

ショートカットキー テキスト表記 機能
⌘ + L cmd + L ターミナル入力へのフォーカス
⌃ + R ctrl + R コマンド検索
⌃ + ⇧ + R ctrl + shift + R ワークフロー
⌃ + ` ctrl + ` AIコマンドの提案
⌃ + I ctrl + I Warpifyサブシェル
⌃ + ⌘ + L ctrl + cmd + L 設定パレットの起動
⌃ + ⌘ + T ctrl + cmd + T テーマピッカーの開始

Blocks

ショートカットキー テキスト表記 機能
⌘ + A cmd + A すべてのブロックを選択
⌘ + B cmd + B 選択したブロックをブックマーク
⌘ + K cmd + K ブロックのクリア
⌘ + I cmd + I 選択したコマンドを再入力
⌘ + ↑ cmd + 前のブロックを選択
⌘ + ↓ cmd + 次のブロックを選択
⇧ + ↑ shift + 上の選択したブロックを拡張
⇧ + ↓ shift + 下の選択したブロックを拡張
⌥ + ↑ option + 最も近い上のブックマークを選択
⌥ + ↓ option + 最も近い下のブックマークを選択
⇧ + ⌘ + I shift + cmd + I 選択したコマンドをルートとして再入力
⌃ + M ctrl + M ブロックのコンテキストメニューを開く
⇧ + ⌘ + S shift + cmd + S 選択したブロックの共有
⇧ + ⌘ + C shift + cmd + C コマンドのコピー
⌥ + ⇧ + ⌘ + C option + shift + cmd + C コマンド出力のコピー

Input Editor

ショートカットキー テキスト表記 機能
⌘ + A cmd + A 全て選択
⌘ + Z cmd + Z 元に戻す
⌘ + ⇧ + Z cmd + shift + Z やり直し
⌘ + ← cmd + ホーム
⌘ + → cmd + エンド
⌘ + ↓ cmd + カーソルを最下部へ移動
⌘ + I cmd + I コマンドの検証
⌘ + BackSpace cmd + backspace 左側を全て削除
⌘ + Delete cmd + delete 右側を全て削除
⌃ + A ctrl + A 行の開始へ移動
⌃ + E ctrl + E 行の終わりへ移動
⌃ + P ctrl + P カーソルを上に移動
⌃ + B ctrl + B カーソルを左に移動
⌃ + F ctrl + F カーソルを右に移動/自動提案を受け入れる
⌃ + N ctrl + N カーソルを下に移動
⌃ + G ctrl + G 次の出現箇所を選択
⌃ + J ctrl + J 改行を挿入
⌃ + D ctrl + D 削除
⌃ + H ctrl + H 前の文字を削除
⌃ + W ctrl + W 左の単語をカット
⌃ + K ctrl + K 右側をカット
⌃ + L ctrl + L 画面のクリア
⌃ + C ctrl + C コマンドエディタのクリア
⌃ + U ctrl + U 選択した行をコピーしてクリア
⌃ + ⇧ + ↑ ctrl + shift + 上にカーソルを追加
⌃ + ⇧ + ↓ ctrl + shift + 下にカーソルを追加
⌃ + ⇧ + A ctrl + shift + A 行の開始まで選択
⌃ + ⇧ + E ctrl + shift + E 行の終わりまで選択
⌃ + ⇧ + B ctrl + shift + B 左に1文字選択
⌃ + ⇧ + F ctrl + shift + F 右に1文字選択
⌃ + ⇧ + P ctrl + shift + P 上を選択
⌃ + ⇧ + N ctrl + shift + N 下を選択
⌃ + ⌥ + ← ctrl + option + 1サブワード後ろへ移動
⌃ + ⌥ + → ctrl + option + 1サブワード前へ移動
Meta + . meta + . 前のコマンドの最後の単語を挿入
Meta + A meta + A 段落の開始へ移動
Meta + E meta + E 段落の終わりへ移動
Meta + F meta + F 1単語前へ移動
Meta + B meta + B 1単語後ろへ移動
Meta + D meta + D 右の単語をカット
⌥ + BackSpace option + backspace 左の単語を削除
⌥ + Delete option + delete 右の単語を削除
⌥ + ⌘ + F option + cmd + F 選択範囲の折りたたみ
⌥ + ⌘ + [ option + cmd + [ 折りたたみ
⌥ + ⌘ + ] option + cmd + ] 展開
⇧ + ⌘ + K shift + cmd + K 選択した行をクリア
⇧ + Meta + < shift + meta + < バッファの開始へ移動
⇧ + Meta + > shift + meta + > バッファの終わりへ移動
⇧ + Meta + B shift + meta + B 左の1単語を選択
⇧ + Meta + F shift + meta + F 右の1単語を選択

Metaキーは、馴染みがないですね...

Terminal

ショートカットキー テキスト表記 機能
⌘ + D cmd + D 右側にパネルを分割
⇧ + ⌘ + D shift + cmd + D 下にパネルを分割
⌘ + W cmd + W パネルを閉じる(現在のセッションを閉じる)
⌥ + ⌘ + ↑ option + cmd + パネルを上に切り替え
⌥ + ⌘ + ← option + cmd + パネルを左に切り替え
⌥ + ⌘ + → option + cmd + パネルを右に切り替え
⌥ + ⌘ + ↓ option + cmd + パネルを下に切り替え
⌥ + ⌘ + V option + cmd + V 詳細なアクセシビリティ通知の設定
⌘ + , cmd + , 設定を開く
⌘ + G cmd + G 検索クエリの次の出現箇所を検索
⌘ + P cmd + P コマンドパレットの切り替え
⌘ + R cmd + R マウスレポーティングの切り替え
⌘ + [ cmd + [ 前のパネルをアクティベート
⌘ + ] cmd + ] 次のパネルをアクティベート
⌃ + ⌘ + K ctrl + cmd + K キーバインディングエディタを開く
⌃ + ⌘ + ↑ ctrl + cmd + パネルのサイズ調整: 分割線を上に移動
⌃ + ⌘ + ← ctrl + cmd + パネルのサイズ調整: 分割線を左に移動
⌃ + ⌘ + → ctrl + cmd + パネルのサイズ調整: 分割線を右に移動
⌃ + ⌘ + ↓ ctrl + cmd + パネルのサイズ調整: 分割線を下に移動
⌃ + ⇧ + ? ctrl + shift + ? リソースセンターを開く
⇧ + ⌘ + G shift + cmd + G 検索クエリの前の出現箇所を検索
⇧ + ⌘ + P shift + cmd + P ナビゲーションパレットの切り替え
⇧ + ⌘ + Enter shift + cmd + enter アクティブなパネルの最大化の切り替え

Fundamentals

ショートカットキー テキスト表記 機能
⌘ + - cmd + - フォントサイズの縮小
⌘ + = cmd + = フォントサイズの拡大
⌘ + 0 cmd + 0 フォントサイズをデフォルトにリセット
⌘ + F cmd + F 検索
⌘ + C cmd + C コピー
⌘ + V cmd + V 貼り付け
⌘ + T cmd + T 新規タブを開く
⇧ + ⌘ + T shift + cmd + T 閉じたタブを再開
⌘ + 1 cmd + 1 1番目のタブに切り替え
⌘ + 2 cmd + 2 2番目のタブに切り替え
⌘ + 3 cmd + 3 3番目のタブに切り替え
⌘ + 4 cmd + 4 4番目のタブに切り替え
⌘ + 5 cmd + 5 5番目のタブに切り替え
⌘ + 6 cmd + 6 6番目のタブに切り替え
⌘ + 7 cmd + 7 7番目のタブに切り替え
⌘ + 8 cmd + 8 8番目のタブに切り替え
⌘ + 9 cmd + 9 9番目のタブに切り替え
⌃ + ⇧ + ← ctrl + shift + タブを左に移動(タブごと移動、切り替えではない)
⌃ + ⇧ + → ctrl + shift + タブを右に移動(タブごと移動、切り替えではない)
⇧ + ⌘ + { shift + cmd + { 前のタブをアクティブ化(タブの切り替え)
⇧ + ⌘ + } shift + cmd + } 次のタブをアクティブ化(タブの切り替え)
⌘ + Q cmd + Q Warpを終了する

一部カスタマイズ

日本語のMagic Keyboardを使用しているんですが、フォントサイズの拡大のショートカットが効かなかったので、以下にカスタマイズしています。

ショートカットキー テキスト表記 機能
⌘ + ^ cmd + ^ フォントサイズの拡大

他のアプリと競合しているショートカットキーや上手く効かないショートカットキーもあるかと思います、そこは適宜使う使わないを判断してショートカットキーをカスタマイズして行くと良いと思います。

まとめ

この記事では、Warpのショートカットキーに焦点を当て、まとめました。これらのショートカットキーは、ターミナル操作を効率的にするのに大いに役立ちます。

Warpを使い始めたばかりの方には、これらのショートカットキーを覚えて使ってみることをお勧めします。日々の作業がよりスムーズになるでしょう。

自分もこれから覚えていきます💪

終わり

トレタでは一緒にチームで働いてくれるエンジニアのメンバーやプロダクトマネージャーとして活躍してくれる人を求めています。飲食店の未来をアップデートする事業に興味のある方はお気軽に話を聞きにきてください。

corp.toreta.in

シリコンMacへの開発環境移行体験談

はじめに

こんにちは、サーバーサイドエンジニアの@shiroemonsです。

こちらはトレタAdventCalendar2023 19日目の記事です。

この記事では、開発用PCをインテルMacからシリコンMacに移行した際の経験を共有します。

背景

私の開発PCは、頻繁ではないですがフリーズやパフォーマンスの低下を経験していました。

特に、Google Meetでの会議中のフリーズは、作業の妨げになっていました。

そんな中、M3チップを搭載したMacBook Proの発表があり、これを機に新しいMacBook Proへの移行を決意しました。

12月9日に新しいMacBook Proが届いたことで、移行のプロセスが始まりました。

スペックの変化

移行前後のPCのスペックを比較すると、大きな変化がありました。

メモリが増えたことにより、複数の開発ツールやアプリケーションを同時に動かしてもスムーズに作業できるようになりました。

旧PC 新PC
種類 13インチ, 2019, Thunderbolt 3ポート x 4 14インチMacBook Pro
仕上げ スペースグレイ スペースブラック
メモリ 16GB 36GB
ストレージ 512GB SSD 512GB SSD
プロセッサ 2.8 GHz クアッドコアIntel Core i7 1コアCPU、14コアGPU、16コアNeural Engine搭載Apple M3 Proチップ

移行アシスタントを使用しない理由

新しいMacBook Proへの移行にあたり、私は意図的に移行アシスタントの使用を避ける選択をしました。この決断に至った理由は以下の通りです。

同僚の経験からの学び

私の前にインテルMacからシリコンMacへ移行した同僚から、移行アシスタントを使用した際の経験を聞きました。彼らの体験によると、移行アシスタントを使用しても、チップの違いにより多くのアプリの再インストールが必要でした。

再インストール vs 新規インストール

移行アシスタントを使用する場合と同様にアプリを再インストールする必要があることから、新規インストールの方が状況に応じてより柔軟で、手軽な方法と考えました。

クリーンな環境の維持

移行アシスタントを使うことにより、必要のない古いファイルや使用していないアプリが新しいPCに転送される可能性がありました。新しいPCをできるだけ「クリーン」な状態に保ちたいという思いから、手動での移行を選択しました。

このように、移行アシスタントを使用しないことで、必要なアプリやファイルのみを選択し、新PCを最適化された状態で使い始めることができました。

移行方法

新しいMacBook Proへの移行は、移行アシスタントを使用せず、手動で行いました。以下は、移行プロセスの主なステップです。

必要なアプリのインストール

  • プロセス: 私はまず、旧PCから新PCで使用するアプリのリストを作成しました。次に、このリストに基づいて新PCに必要なアプリを一つずつインストールしました。
  • 目的: 新しい環境にのみ必要なアプリを選び、不要なものは除外することで、新PCを最適化しました。

ファイルの共有

  • 方法: 重要なファイルやローカル環境の設定ファイルなどは、AirDropを使用して新PCに転送しました。
  • 利点: AirDropの使用により、ファイルの移行を迅速かつ簡単に行うことができました。

進捗管理

  • ツール: 移行作業の進捗は、Notionに記録していきました。
  • 効果: これにより、作業の進行状況を把握し、計画的に進めることができました。

認証情報の管理

  • ツールの利用: 移行の際、同僚からのアドバイスに従い、認証情報やログインデータは1Passwordで一元管理しました。
  • 成果: この方法により、移行中のログインや認証プロセスがスムーズに行われ、特に大きな問題は発生しませんでした。

このような手動での移行プロセスは、新しい開発環境を清潔かつ整理された状態で維持することに役立ちました。 また、必要なアプリやファイルのみを移行することで、効率的かつ最適化された作業環境を実現しました。

開発環境の変更点

Shellの変更:fish shellからzshへ

今回のPC移行に伴い、Shellをfish shellからzshに変更しました。

fish shellの使用経験

fishshell.com

  • 使用感: 旧PCでfish shellを使用していた期間は、概ね満足していました。特に、ユーザーフレンドリーなインターフェースや豊富な機能は高く評価しています。

POSIX非互換の問題

しかし、fish shellの最大の欠点はPOSIX非互換であることです。 これにより、一部のスクリプトやコマンドが期待通りに動作しない場合があり、開発効率に影響を与えることがありました。 実際、私と同様にこの問題に直面し、zshに戻る開発者も多く見かけました。

zshへの回帰

  • 理由: POSIX互換性の重要性を再認識し、より一般的なシェルスクリプトやツールとの互換性を高めるために、zshへ戻ることを決めました。
  • 結果: zshに戻ってからは、互換性の問題に悩まされることなく、スムーズな開発が可能になりました。

この変更は、開発環境の安定性と互換性を考慮したものです。 POSIX互換性は、多様な開発環境やツールとの互動において重要な要素であり、これによりより幅広い開発作業を効率的に行えるようになりました。

ターミナルの変更:iTerm2からWarpへ

開発環境の改善の一環として、私はターミナルアプリケーションをiTerm2からWarpに変更しました。

Warpとは

www.warp.dev

  • Rust言語ベース: WarpはRustで開発されており、高速で安定したパフォーマンスを提供します。
  • スタイリッシュなUI: モダンで直感的なユーザーインターフェースが特徴です。
  • 動作環境: 現在WarpはmacOSでのみ利用可能です。
  • 登録が必要: Warpを使用するには、事前にサインアップが必要です。

Warpの機能

Warpには機能が多く搭載されていますが、詳細な紹介は省略します。

公式のDemoがありますので、興味がある方はご覧ください。

youtu.be

bindkeyの非対応

Warpの主な注意点として、bindkey コマンドの未対応が挙げられます。 これはGitHubのIssueでも取り上げられています。 私は、ghqfzf を使ったリポジトリ検索に bindkey を使用していましたが、以下の関数を用意することでこの問題を回避しました。

# fzf + ghq を使用したリポジトリ検索
fg() {
  local repo_name="$(ghq list | fzf-tmux --reverse +m)"
  if [[ -n "$repo_name" ]]; then
    cd "$(ghq root)/$repo_name"
  fi
}

この関数により、ghq で管理しているリポジトリを fzf で効率的に検索し、選択したリポジトリへ素早く移動できるようになりました。

移行完了と感想

新しいMacBook Proの開発環境でのビルドやテストを実行して確認し、無事移行作業を完了しました。

移行アシスタントを使わない選択は、大正解だったと感じています。

開発パフォーマンスも向上したと感じます。特にDockerの起動速度の向上は感動しました。

この記事が皆さんのPC移行の参考になれば幸いです。

終わり

トレタでは一緒にチームで働いてくれるエンジニアのメンバーやプロダクトマネージャーとして活躍してくれる人を求めています。飲食店の未来をアップデートする事業に興味のある方はお気軽に話を聞きにきてください。

corp.toreta.in

© Toreta, Inc.

Powered by Hatena Blog