トレタ開発者ブログ

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

トレタAdventCalendar2023:エンジニアkentaroが語るインフラ移行の舞台裏

こちらはトレタAdventCalendar2023 24日目の記事です。
タイトルはAIタイトルアシストにつけてもらいました。

qiita.com

はじめに

こんにちは、トレタでソフトウェアエンジニアをしているkentaroです。
トレタO/Xという飲食店向けモバイルオーダーの開発を担当しています。
担当しているゲートウェイサーバのインフラを GCP に移行したのでその話を紹介したいと思います。

O/Xのシステム構成図。赤枠がゲートウェイサーバー。ちなみに筆者はユーザー向けアプリ・スタッフ向けアプリの開発も担当している。

なぜインフラを移行するのか

移行前は AWS の EKS 環境でした。当時は環境を追加したい等インフラに手を加える際にはインフラエンジニアへ作業を依頼して実施してもらう形をとっていました。
このスタイルのメリットはアプリケーション担当のエンジニア(自分)の工数があまりかからないことと、インフラを得意とするエンジニアによる作業なので安心感があったことです。
デメリットとしてはインフラエンジニアが複数のプロジェクトを横断してサポートしていたので日程調整のコストが発生していたことと、担当エンジニアのインフラの解像度が低くなってしまいがちなことでした。

ちょうどO/Xでは各サービスの担当者がオーナーシップを持って開発を推し進めていくことを重要視していく機運が高まっていた(し、自分もその方針のほうが性に合っていると考えていた)ので、当時のスタイルのデメリットのほうが大きくなってきていました。
そこで、多少不慣れであってもサービスの開発者自身がインフラも含めて一気通貫で開発ができるようにしていく意思決定を行った次第です。

採用したのはGoogle Cloud の Cloud Run で、オペレーションの負担をなるべく小さくするという意図があります。

アーキテクチャ

ゲートウェイサーバーのインフラアーキテクチャ図

アキーテクチャは上図のとおりです。
Cloud Run の前段に Cloud Load Balancing を配置しています。今後 Cloud Armor などを入れやすくするのが目的です。

デプロイ周り

Cloud Build で Docker build して Artifact Registry に push し、 Cloud Run にデプロイしています。

Infrastructure as Code (IaC)

Terraform を利用し、 GitHub でバージョン管理しています。
PRでのレビューを実施できるのが嬉しいですし、手動でのうっかりミスが発生しないという点も嬉しいです。
Apply は Terraform Cloud を利用しています。特定のブランチへ向けたPRがマージされたら自動的に Plan が、設定によっては Apply まで行われるので便利です。

担当者のスキルセット

普段は TypeScript でバックエンドもフロントエンドも開発しています。
また、 Flutter を触ることもあります。
O/X にジョインするまでは予約台帳アプリのiOS開発を担当していました。

今は得意な言語も好きな言語も TypeScript です。

というわけでインフラ周りを業務でガッツリ触るのは今回が初でした。

移行を終えた感想はどうなのよ?

よかったこと

インフラに変更を加えたいときに、チームレベルでさっと対応できるのがスピード感があっていいなと感じています。 オーナーシップの醸成にも寄与しているかなと。

大変だったこと

インフラ初心者なので、何かするたびにつまづくのが大変でした。
具体的には Terraform Cloud で Plan や Apply コケまくる問題が発生したことです。
トライ & エラーを繰り返したり、インフラの知見を持つメンバーに助けてもらったりしながらなんとか移行を終えました。

おわりに

経験のない分野のことでもどんどん挑戦していきたい方、あるいは自分の得意分野でバリューを発揮したい方。飲食店の未来をアップデートする事業に興味があれば気軽に話を聞きにきていただければと思います。何卒!

corp.toreta.in

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

© Toreta, Inc.

Powered by Hatena Blog