🦔

事業構築しながらシステム構築をやってみる!(仮)

2023/04/19に公開

あくまで現在進行形なので途中の変更、失敗などがあったらご容赦を。
また、モデルに相違が無いよう事業モデルは現実と少し変えて記載しています。

【事業の概要】

法人顧客から不要な商品を専用BOXで預かり、写真を撮ってオークションに出品代行する。

  • 預かった時点で預かり保管料・撮影料金は月額課金(サブスク)
  • 落札された場合は落札金額から手数料を引いて顧客へ支払う。
  • 落札されなかった商品は顧客へ返還
    配送は自社にもリソースがあり、ヤマトなどの他社を利用する場合もある。
    集客は新規で行い、サイトも新規で立ち上げる。集客はチラシとネットの併用。

【システムの検討方針】

  • 事業構築を最優先にする(顧客が商品を認知し、契約、課金までを短期に終わらせる)
  • なるべくOSSや既存サービスを利用(車輪の再発明はしない)
  • システム拡大の余地は事業拡大の余地。乗り換えが厳しいものは避ける。

1.まずECサイトを探す

大抵のものに付いている機能

  • 会員管理
  • 課金
    たまについていないECサイトがある
  • 月額課金(サブスク)
  • その顧客だけに商品を出す
    苦労したポイント
  • 顧客に専用BOXを送り、後日預かるという2回配送が発生する。通常想定されていない。
  • 落札されなかった場合に戻す

通常の「返品」機能を名称変更して使うことを検討したが、それだと後でデータが削除されてしまったり、配送関係が上手く処理出来ないなどちょっと無理が過ぎる。
そのため、カスタマイズは必須という結論になった。

2.ECサイトの比較

検討したもの

  • STORES
  • BASE
  • 楽天
  • Shopify
    結論、shopifyに。
    デザインのカスタマイズだけで見ればStores、BASEも全然OK。
    ただ、2回発送する部分の機能カスタマイズを考慮すると、使えるAPIの数や範囲、カスタムアプリの仕組みを作っているShopify一択。
    カナダの会社のようだが、自社ECサイトに機能を作りこむのではなく、アプリストアやデザイナーが儲かる仕組みを上手く構築して、shopify経済圏的なエコシステムを上手く構築しているように感じた。

3.技術の選定

開始以前はC#を主に利用してプログラム開発をしていた。Windowsアプリやasp.net mvc。クラウドはAzure中心。jsフレームワークはvueを主に扱ってきた。

  1. Shopifyで使われている技術やShopifyのECサイトとしてのポリシーを研究
    サイト・商品を顧客に素早く表示することに集中しているイメージ(遅いと購買行動が落ちる)。
    一昔前はReact中心に推していたが、現在はRemixというサーバーサイドでレンダリングする技術を推している。データ回りもGraphQLを中心(一部OpenAPIも残るが必須ではない)
  2. 事業の拡大・拡張を検討
    プログラムの流行りだけではなく、事業の流れも考慮して技術選定。
    特に、法人顧客を中心にスタートするが、個人顧客にも拡大していくことを重視。
    スタートはshopifyのサイトをカスタマイズして構築するが、後々は専用サイトにしていきたい。
    そのことを考慮すると、顧客データの一部は自社内DB(クラウド含む)で保有する形にする必要がある。

今後の柔軟性を考えると、なるべくmicroservice化させることを視野に入れる。
そのため、サーバーはクラウド。今まで使ってきたAzureにすることに(事業安定までは新たな学習は避ける)。データベースもAzureSQLにしようかな(SQLサーバーの経験があったので、ザックリな考えで選定。MySQLとかPOSTGREなどそのうち比較する必要はあるかも)
GraphQLとデータベースの連携を考えたら、AzureSQL-GraphQLよりも、gRPC-GraphQLの繋ぎこみの方がオープンソース事例が多そう。なので、AzureSQL-dotnet API-gRPC-GraphQLの流れに。

開発環境はGitHubCodespacesに。
新しい技術選定時に綺麗な環境を常に用意することが出来るのは大変便利。
話は少しそれますが、
長年自分がプログラミングしたものを、実務に投入し、サポートもしてきました。
トラブルの際に多いのが、プログラム以外での問題。
例えばデータがおかしいとか、画面がここから動かないなど問い合わせを受けて色々操作をしてもらうが原因が分からない。。
現場に行って色々試してみるとHUBの電源が落ちてるとか、勝手にネットに繋げてOSの更新かけたとか、機械や電源など根本的な部分でのトラブルが多くプログラム関係ないことが多かった。
Codespaceであれば、Docker上で動いているのでOSや利用するライブラリの組み合わせなどの悩みが減る。また、試行錯誤して環境を汚したとしても5分では新しい環境に移行できる。
この簡単に開発環境が入れ替えできるのは試行錯誤する中ではとても重要。
事業開発の方に集中できる。

パソコン自体はWindowsとMacどちらもある。後々配送部分はIT技能の低いスタッフでも扱えるようにする必要があり、アプリ化を視野にいれており、Macは所有。

続く

Discussion