トークストック
日常のあらゆるお困りごとを、AIに向けて質問し回答を得て、それらをほかの利用者が評価しあって、お困りごとを解決していく「トーク」の共有サービスです

| フロントエンド | Next.js 13, TypeScript, bulletproof-react(一部カスタマイズ) |
| バックエンド | Echo(Golang), REST API, MySQL, Amazon Cognito, OpenAI API(エンドポイント: Chat Completions API, モデル: GPT-4o mini), microCMS(お知らせ・リリースノート管理), SendGrid(メール送信) |
| インフラ | AWS(ECS Fargate / Aurora RDS / S3 / CloudFront / Lambda@Edge / Route53 / ACM 等), Docker |
| プロビジョニング | Terraform |
| CI/CD | GitHub Actions |
| 主要パッケージ等 | 【フロント】Redux, MUI, Axios, SWR, React Hook Form, Zod, react-content-loader(スケルトンスクリーン) 【バック】Gorm, golang-migrate, go-playground/validator, crypto, logrus |
| 品質保証 | Jest, React Testing Library, Storybook, Chromatic, Swagger(コードファーストアプローチ) |
| ビルド | SSG |
| コーディング規約 | ESLint & Prettier, Husky & lint-staged |
| その他 | GoogleTagManager, GoogleAnalytics(GA4), GoogleSearchConsole, Illustrator |
「カテゴリー」や「トークの相手」をボタンで選び、入力フォームに質問内容を入力し「聞いてみる」ボタンを押すことで、トークアシスタント(生成AI)から3つの選択肢をもらうことができます。
その中から「いいね」と感じた回答を選ぶことで質問が公開され、ユーザーからのコメント・反応を待つことができます。
サービスを利用する全てのユーザーは、ログイン不要で投稿されたトークに対して自由にコメントをすることができます。
私たちが日常を過ごすなかで、 コミュニケーションにまつわる悩みは日々誰しも抱えていると思います。 たとえば、 「色んな人と交流したいけど、どんな話題を話すのがいいだろうか」 「あのときの言い方、相手を不快にさせてしまわなかっただろうか」 など考えたことはありませんか?
AIが勢いよく発展している近年ですが、そんなAIであっても解決の難しい課題があります。
それは、これらの「トーク」です。


従来はQ&AサイトやSNS、質問箱など、ユーザー同士で直接解決しあっていました。
しかし、Q&Aサイトは文章を考えて投稿するのがやや面倒だったり、 SNSはフォロワーの評価やいいねの反応が気になってしまったり、 といったデメリットがあります。
そこで、それを解消すべく、ユーザーとのあいだにAIを挟むことで気軽に質問し、それを人が見て感じて評価できるサービスのアイデアが浮かびました。
AI相手なら気軽につぶやける。まずは"AI"からすぐに、いくつかのざっくりとした回答をもらえる。
そして、あとからそのつぶやいた質問を見た"ヒト"が具体的なコメントや反応をくれる。
アイデアを実現するため、AIとヒトが共存できるサービスの開発をすることにしました。
UI/UX向上のため、ボタンで質問のカテゴリーとトークの相手を選択できるようにし、ユーザーが入力する文字数や負担をなるべく減らすようにしています。
また、いいね機能はあえて実装せず、一覧からクリックした時点で"そのユーザーは一定以上の興味がある"と判断し、「閲覧数」を表示するようにしています。
理由として、Q&Aサイトの「役に立った」などのボタンは、意外と押すまでのハードルがあるように感じ、 また、そもそも押すにはログインが必要であるサービスが多く、あまり使われない機能だろうなと考えたためです。
お知らせ・リリースノートはmicroCMSを採用し、画面上から簡単に更新できるようにしています。
開発言語には、できる限りバグを減らすため、静的型付け言語のTypeScriptとGolangを使用しています。

クラウドサービスにAWSを採用しています。 フロントエンドはAWS S3 & CloudFrontでホスティングし、APIはECS Fargateでデプロイ、データベースはAurora RDSで構築しています。 インフラは、IaCであるTerraformを用いてコード化しています。
また、AWSを使ったWebサービスのポートフォリオ用として構築したため、コスト削減の理由から、 EventBridge & Lambdaを用いて、指定した時間(平日の日中など)のみバックエンドを稼働させるバッチ処理を実装しています。
フロントエンド
リポジトリへのプッシュをトリガーに、GitHubActionsのCI/CDを実行し、S3 & CloudFrontへアップロードしています。
バックエンド
リポジトリへのプッシュをトリガーに、GitHubActionsのCI/CDを実行し、ECRへイメージをプッシュおよびECSのタスク更新を行っています。
IaC
リポジトリへのプッシュをトリガーに、GitHubActionsのCIのみを実行しています。 安全性を考慮し、デプロイはTerraformのコマンド操作によって手動で行っています。