AIが9つのステップで導く！目標達成をシンプルにサポートするWebアプリを作ってみた

## はじめに
AIを使った逆引き系のサービスを作れないかなと考えていまして、目標から過程(そこに到達するまでのステップ)を提案するようなWebアプリを作ってみました。

ロードマップや学習教材などを作ってくれるサービスは既にいくつかあるので、とにかくシンプルに、ライトに使える感じにしています。

## 作ったもの

**The Nine Steps**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/649608/e7995cdb-5f99-5f5f-d0ed-7429c94bf6d1.png)

https://ninesteps.reflex.run

<details>
<summary>ホーム画面に追加することでアプリのようにお使いいただけます。</summary>


![IMG_0544.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/649608/68b4b4eb-0a6d-4e5a-9ad5-94e5e97a7e4d.jpeg)

※ホーム画面への追加の仕方
https://support.bccks.jp/faq/pwa_2020/

※ReflexでPWA化する方法
https://qiita.com/papasim824/items/1e3bfd3984b7af155ade


</details>




目標、やりたいこと等を入れてボタンを押すと
![IMG_0536.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/649608/e371fda1-3bbc-3511-fc74-1f1f0bf2f54a.jpeg)

9つのステップをAIが提案してくれます。(すでに生成されているテーマは再利用されます。)

![IMG_0550.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/649608/1fd6c00a-a98f-a868-22e8-28f423fc654a.jpeg)


各ステップを押すと詳細が表示され

![IMG_0537.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/649608/50c87f5e-4447-3b3b-9202-5feba9537f57.jpeg)

キーワードからGoogle検索、Amazon書籍検索、Youtube検索を行うことができます。

![IMG_0538.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/649608/a7ffcfde-db6b-72e6-a592-2ddc1091f87c.jpeg)

地味にそのままシェアもできます。
![IMG_0535.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/649608/f6c85abe-20cd-6c96-72b0-66173d79b852.jpeg)



全く馴染みのないことについて調べてみると意外と面白かったりします。(面白いのが出たら是非シェアしてください。)

<details>
<summary>いくつかサンプル</summary>

![IMG_0548.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/649608/79ec5ae2-eae0-1d5c-7db5-6284a3d953a9.jpeg)

![IMG_0549.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/649608/8b87d3f0-2615-1e1f-8285-8fe818eb7838.jpeg)


![IMG_0547.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/649608/c1959d67-79c0-ed46-2be8-4f6ba2e7f432.jpeg)


</details>

:::note 
あくまでAIによる自動生成ですので、内容の正確性については保証できません。
:::

## 技術まわりの話

### フレームワーク

Reflex

https://reflex.dev/

PythonだけでWebアプリが作れる系のフレームワークです。
裏ではNext.js＋FastAPIの構成に変換されています。

UIデザインにはChakra-UI、Radix-UI、Tailwind CSSが採用されており、通常のCSSパラメータも指定可能です。

また、npmで公開されている任意のReactコンポーネントを取り込むことができるのも便利です。

https://reflex.dev/docs/wrapping-react/overview/


### データベース
Supabase

https://supabase.com/

いわゆる BaaS (Backend As A Service) ですが、今回は純粋にRDBMSのみを利用しています。WebUIが抜群に使いやすいです。

※ReflexではDB情報を設定することでalembicを使ったマイグレーションや、ORMとしてSQLAlchemyが利用可能です。
以下の記事がわかりやすいです。

https://qiita.com/SFITB/items/b339cc42290a74860af9


### テキスト生成
OpenAI API
> 現時点で最新の```gpt-4o-2024-08-06```を利用しています。


## ホスティング
Reflex Hosting Service

https://reflex.dev/docs/hosting/deploy-quick-start/

Reflexが公式でサポートしているホスティングサービスです。

CLIからの操作になりますが、```reflex init```でプロジェクトを作っていれば、```reflex deploy```だけで完了できます。（環境変数の設定など若干めんどくさいですが、shellを作っておけばそこまで面倒ではないかなという印象です。VercelやFly.ioのようにリッチなWebUIはないので好みがわかれるかも。）

※Next.jsとFastAPIとしてビルドされるので、それぞれコンテナに詰めてデプロイすればどこでもホスティングはできるようです。

## モックアップ画像
技術的な内容ではないんですが、サービスのモックアップ画像（PCとiPhoneにサービス画面をはめ込んでいる画像）は以下で作成しています。

https://techsini.com/multi-mockup/index.php

## おわりに
思いつきからリリースまで3日ほどでできてしまうReflexの凄さを感じました。
ただ、公式のホスティングサービスには5個までしか公開できないようなのでご注意ください。