はじめに
皆さん普段技術選定はどのように行っているでしょうか?
仕事であればリードエンジニア、先輩エンジニアがすでに選定しているケースや、会社で普段から使用しているものを使うことがほとんどだと思いますが、個人で作る際は自分で選定しなければいけません。
私は自分が作りたいアプリの根幹の機能をサポートしているかを最重要視して技術選定しています。
この記事では私が個人でアプリを作成した際に経験した失敗談から、私の選定基準を話していければと思います。
何を失敗したのか
元々私は個人アプリを作る際、学習もかねて興味のある技術でアプリを作成してきました。
学習目的でアプリを作るだけであればそれで問題なかったのですが、明確に作りたい機能があった際にこの基準で選んでいたのでめちゃめちゃ困りました。
具体的に話していくと、当時シフトの自動計算アプリを作成していました。
要件として
- 必要人数
- 必要能力値
- 必要役職
- 理想人数
- 理想能力値
- 一人当たりの出勤に数
これらを入れると一カ月のシフトを自動で計算してくれるというものです。
技術は触ってみたかった Go, GraphQL, React, ORTool で作成することだけ決めて開発を進めていきました。
Go でそれぞれ必要情報を保存できるようにし、React で mock を使用して大まかな画面作成、GraphQL でそれぞれの内容を取得できるようにした後、根幹の機能である自動計算を ORTool と Go 作ろうとしたしたのですが、これがうまくいきませんでした。そもそも ORTool が Go をサポートしてなかったのです。issue を見ながらできる方法を探しましたが、更新なし。無理やり使えるようにすることはできなくもなさそうでしたが私の技術力では無理でした。
というか ORTool は Google の製品なんだから Go で使えうるようにしとけよ、と思いましたが下調べしなかった私が完璧悪い。
結局、ORTool のサポートしている Python でバックエンドはすべて作り直ししました。
この一件を教訓として
この失敗から使用する技術が根幹の機能をサポートしているかを下調べしてから開発をしています。
根幹となる機能を一番最初に作ることは当たり前のことではあるのですが、個人で開発するときは何してもいい分興味が勝ってしまうんですよね。
こんなミスそうそうしないと思いますが、皆さんの技術選定の一助になれば幸いです。