4 min read

Komono(2)MVPの作成

Komono(2)MVPの作成

プロジェクトスタック選定

プロジェクトを迅速にMVPを先に作りたいため、T3パッケージを使用してセットアップした。

できるだけ馴染みのあるスタックで構成した。特にバックエンドはまだ不慣れなため、一度でも使用経験のある構成を選んだ。例外として、tRPCは初めての使用となる。

  • 技術スタック
      • TS、Next.js、React:すでに慣れているフロントエンドのモダンスタック
      • Tailwind:スタイリング、CSSを一つ一つ書く必要がないため便利
      • データベース関連
        • tRPC:APIフレームワーク
          • クライアントとサーバーを一人で担当するため、できるだけシンプルにしたく、GraphQLより簡単だと考えてtRPCを使用
        • Prisma:ORMツール
          • Prismaを使用するとTypeScriptコードでデータベースを操作できるため便利。フロントエンド開発者がフルスタック開発を行うのに適している。
      • NextAuth:認証ライブラリ

MVP 制作過程の記録

最初のテーブル作成 - Products

  • テーブル作成時に考慮した内容
    • 作品のsize: Float vs Int
      • mm単位で表示するため、Windsurf(AI agent)はFloatを使用することを推奨しましたが、小さな彫刻の特性上、mmで4桁の数字を表示すれば十分だと思われるので、Intで選択した。
    • year: Date vs Int
      • Dateを使用する場合:
        • 短所: 作品の年は通常、完成年のみを記録するため、月/日は保存する必要がない。Dateを使用する場合、月/日は固定で記録するが、使用しないこと。
        • 長所:日付演算、整合性、標準の日付関数活用が可能。
      • Intを使う場合:
        • 短所: 無効な年度(20250のような5桁の数字)
        • 長所: 不必要な月/日情報がない 。
          • 極端に保存スペースが重要ならSmall Int(2Byte)を使う方法もあるが、一般的にはIntを使うようになってる 。
      • 結論: どうせ両方とも4byteなので、性能差は微々たるものだと思う。意味的にも年は日付が正しいし、後でformatなどをすることもできるので、Dateで使うのが正しいと思います。
The type integer is the usual choice, as it offers the best balance between range, storage size, and performance. The smallint type is generally only used if disk space is at a premium. The bigint type should only be used if the integer range is not sufficient, because the latter is definitely faster.
  • 実際に使ってみた感想
    • PostgreSQL(データベース層): まだよくわからない。
    • Prisma(ORM層)
      • SQLを直接書くわけではないので、SQLの文法を見落とす可能性がある。勉強のために生成されたSQLを見る必要がある。(migration.sql)
      • Node.js ORMは色々あるそうだが、PrismaORMとどんな違いがあるのかな。例えば、TypeORM。
        • TypeORMを使った事がないから、詳細は分かないけど、調べてみたら抽象化レベルが違うそうだ。
    • tRPC(API層)
      • tRPCを使うと、サーバーとクライアントで型を共有することができる。このプロジェクトはクライアントコードとサーバーコードが含まれているから、両方ともTSを使うし、tRPCを使うのに適している。
      • サーバーでTypeを全部管理して、フロントエンドでは管理しなくてもいいい。これがどれほど便利かはもっと使ってみないと分からないと思う。

次のステップ

  • 管理者アプリの構造設計

リンク

  • Komono Blog Post
Komono(1)プロジェクト企画
プロジェクト企画 私の周りにはアーティストが多い。特に私は彫刻科を卒業したため、画家より彫刻家が多い。 彫刻は一般的に売れにくく、販売が困難である。そのため、作家は生活に困窮したり、副業を持たざるを得ず、制作に専念できない状況にある。 そこで、私の彫刻家の友人たちは、彫刻が売れない理由を分析し、それぞれ対策を講じている。 * その内容は以下の通りである: * 平面作品は管理が容易で、リビングなどに飾りやすい。彫刻は立体的なため、管理が難しい。 * また、購入者の立場からすると、絵画は油彩やアクリルなど、クラシックな素材が多く使用されている(ギャラリーや購入者はこれらの素材に慣れている)が、彫刻は比較的馴染みのない素材を多用し、変数も多い。 * 懸念1:強度が不十分で破損の可能性 * 懸念2:重量過多の不安など * そのため、彫刻家たちは展覧会で発表する作品の一部をレリーフ形式のフレームとして制作したり、立体作品のドローイングを展示するなど、平面作品を代替手段として使用している。 しかし、これらの代替策では不十分である。彫刻家なのに平面作品ば
  • コードリポジトリ
GitHub - humonnom/sculpture: An Online Marketplace for Small Objects
An Online Marketplace for Small Objects. Contribute to humonnom/sculpture development by creating an account on GitHub.