Wiita

自分にとってのメモと, プログラミングに関する情報を発信していきます. サイト名の意味は特にありません.

1年かけて作ったサービスがわずか2ヶ月で休止するらしい

昨年の2月頃にお手伝いを始めたとあるスタートアップからやっとこさ2020年2月に正式にサービスをリリースしました :tada: めでたくリリースしたサービスですが, 今話題になっているコ○ナの影響で休止が決まりました.

そんなわけでこの1年を振り返りたいと思い, 自己満で書いていこうと思います.

作ってたサービスの詳細は省きますが, 言ってしまえばタイ○ーのようなものです.

書いてること
  • 使ってた技術
  • どんな開発体制でサービス開発してたか
  • 技術的な振り返り
  • よかったこと
書いてないこと
  • サービスの具体的な内容
  • お金の話

使ってた技術

最終的に

Android

  • Kotlin
  • MVVM

iOS

  • swift
  • VIPER(っぽい)

WEBフロント(クライアントさんの管理画面)

  • React
  • TypeScript

バックエンド

インフラ

  • WEBフロント: AWS(S3, cloud front)
  • バックエンド: heroku(ClearDB)

どんな開発体制でサービス開発してたか

立ち上げ当初

立ち上げ当初はバックエンド1人, フロント(iOSのみ)1人でした. 僕は学生をやりながらなので, 週10時間稼働するかどうかで, もうひとりのアプリエンジニアも副業で合間を縫って作ってくださってました.

僕は主にAPIの開発を進めてたのですが, 当初から2〜3回のピボット繰り返し, DBも何もかもぐちゃぐちゃになりながらの開発でした. ほぼ作り直しだってなったときは「もう辞めてやろう」って一瞬思いました.

ここまでやってるのが疑問でしかありませんが, 何故か手伝ってしまうようなメンバーです.

立ち上げ当初は人数2人くらいのほうがスピードは早いかもですw

リリース前の暗黒時代

犠牲者が1人増え3人での開発でした.

っていう感じでした. 新犠牲者が自分で勉強・調査しながら自走できる上に, 休学中でたっぷり時間という犠牲を払ってくれたため, 暗黒時代を乗り切ることができました.

実はもう1人エンジニアが居ます. 初学者なので緊急度の高いリリースに直結したものはお願いせずに, 「リリース後にすぐほしいもの」を時間かけて作ってもらってましたので上では書きませんでした. 「新しいページまるごとReactで作って」という初学者には大変申し訳無いことをやってしまってましたが, どうにかやりきってました!すごい.

この4人中僕含め3人が副業で, 新・犠牲者だけがほぼ週5という感じでした. この時期はタスク管理はスプシでした. そんなに悪くなかったかなって思います.

f:id:ustrgm:20200408180702p:plain
タスク管理方法

今回に関しては機能を削って削ってリリースしましたが, 良かったと思います. 結構社長に文句意見を言って削りまくりました. それと, PM(僕らで言う社長)に意見を言える環境で良かったし, PMも意見を聞いてくれて皆が納得行く方向で進めれたので良かったと思います.

このときくらいから, APIのドキュメントが重要そうだっていうのがわかりました. 皆副業なため, 気軽にサーバーサイドの人に話を聞けないから...

リリース後

何故か人数は増えデータサイエンティスト含めてエンジニアは7人になりました. デザイナーも1人居ます. 1人だけフルコミットでほかは全員副業という感じです.

ちなみに, リリース前に飛び込んできた犠牲者は2月に社員になりました!すごい.

初学者の方には変わらず緊急度の低いものをお願いしつつ, 他全員でやるという感じです. 副業の方は時間がとれなかったりもするので, そういうときは無理にアサインせずにレビューをお願いしていました.

タスク管理もJiraに移行して, 毎週ミーティングで直近やるものをざっくりと確認して, 「これ本当にいまやる?」みたいな議論とか「直近はXXXを解決する施策メインでやりたいと思ってる〜」みたいな共通の認識だけ合わせて, Jiraのカンバンに持ってくるのはPM(社長)がやってる感じでした. まだそんなに見てませんが, 何がボトルネックだったかとかも見れるようになっているはずです...多分. 軽く見たときはレビュー中が少し溜まってる時期があったりしたので, Androidのうちスタイル変更がメインのものは僕がレビューするようにしたり...どうにか副業の集まりでもうまくやっていこうと試行錯誤をしている最中でございます.

f:id:ustrgm:20200408181853j:plain
JIRAでタスク管理

ちなみにここまで, APIドキュメントは最初にPOSTMANで作ったものでしのいでいました. 最近, それが消えちゃったんですがAPIが増えることは少なく, 増えても小さい追加だったのでなんとかなっている感じです. そろそろやばいね, と言っていたところで休止です.

技術的な振り返り

基本的に技術選定で間違ったところはそんなになかったと思います. herokuでmysql使うならClearDBよりはjawsDBの方が良さそうではありました.

Railsはやっぱり早く作れるし, herokuだと自動デプロイも簡単に構築できるのでリリース頻度も多くできてます.

それと常識なのかも知れないけれど, サーバーが受け付けるリクエストと, 返すレスポンスのjsonのkeyがスネークケースだったりキャメルケースだったりしたのは大きな失敗でした. Hashをそのまま返したらスネークケースだし, ActiveModelSerializer使っていて, それを通せばキャメルケースだったり...

地味にそれを確認するのは面倒なので, 揃えたほうが良いです(最近揃えた).

APIドキュメントの自動生成みたいなところが知識がなくて作れてないのも解決したい... 最初からGraphQLを使っていれば, 「APIの仕様どうなの」問題は多少解決できていたかもしれないです. ただGraphQL使うならRailsである必要もなさそうだなぁとか思ってたりします.

それと, 最初からfirebaseとBigQuery使って, 登録からコンバージョンまでの離脱率を出してくれたんですが, 以上に数字が悪いところがあって, 不具合に気づけたっていうのもあるので, Analytics系はできるだけ早いうちに可視化しておくほうが良いと思いました. リリース当初からそこに手をつけるのってなかなか判断難しいかも知れないですけど.


React vs Vueはどっちでも良いと思います. 多分好み.


Androidを手伝ってもらいながらゼロから作ったけど, まだまだ知らないこと多いし, navigationとか使ってもっと簡単に書けるところは簡単に書けるようにしたいです. テストは1行もないけど, 今の所何も不便はないです. 大事なところはClashlyticsが教えてくれますw

少しだけ, FlutterやReactNative, KotlinNativeのようなマルチプラットフォームの方が良かったかも知れないと思うことがありますが, ノウハウを持った人が身近に居ないので結果それぞれで作って正解だったと今は思ってます.

今後のためにKotlin Nativeか, Flutterは少しでも勉強しておきたいとは思います.


iOSはStoryBoardがしんどいね... 僕はiOSだけ何も知りません.


初学者のエンジニアにはすこし可哀想な環境ではあったと思います. 緊急度が低いタスクとはいえ, 「M月D日くらいまでにほしい」とゆるい納期はあるので, なかなかしっかり理解はできなかったのではなかろうか... HTMLやJSもあまりやったことないのに, いきなりReactやらされるし... 初学者がゼロイチフェーズのスタートアップ行くのは得られるものも多いだろうけど, もっともっと理解してインプットする余裕があるようなところの方が良いのかも知れない...今でもその彼は手伝ってくれてますのでありがたい... できるだけ頑張ってサポートします...

良かったこと

ゼロから何かを作る時って作ったことがあるものだったらそんなに学べることって多くはないんですけど, サービスをリリースしてから2ヶ月, 事業伸ばす上で何が課題で, できるだけ小さい工数で解決するならどうするか っていうのをたくさん考えれたのは良かったなと思います.

基本的にはPMの人がどういう施策をするかベースは作ってくれるんですが「なんでこれ作るんでしたっけ」「それだったらこうでもよくないですっけ」みたいな議論をしながら少しずつプロダクトをよくできたと思います. 良くしたいところは無数にありましたが, 取捨選択をしっかり考えて行っていけてて, そのプロセスはなかなか味わえないことだと思うので経験できてよかったです.

サービスは休止するけれど

今回のサービス休止は全力でやっても敵わない敵が出てきたので仕方がないと思ってます. どうしようもないw

新しいサービス作るなら, これまでの過程での反省点とか直したいところは自分の中で言語化しておきたいと思ったのでブログにしました. 会社でも振り返る会やりたいから持ちかけてみようかな.

あと, 会社はまだ潰れないのが幸いです. これからもがんばります.

ちなみに僕はアルバイトでこれから就活します. 第一志望はメガベンチャーです.