はじめに
私は 2024 年 10 月に株式会社FoundingBase 一人目のエンジニアとして入社しました。
今日まで仕様を詰めたり、技術選定をし、実装を進めたりと様々進めてきましたが進める中で気をつけたり意識していることをまとめました。
意識していること
(なるべく) インフラを持たない
1人で大きなインフラの面倒を見ることはもちろん可能です。
しかし、限られたリソースをインフラだけに割くのは望ましい状態ではありません。
最近は、 Firebase や Supabase, Convex 等 BaaS (Backend as a Service) が充実しており立ち上げ初期は BaaS を積極的に採用していきたいと考えています。
BaaS を使用することでリソースを投下する場所を明確にし素早くプロダクトを立ち上げることを第一に進めています。
ドキュメント、ログはしっかり残す
当たり前と言われる可能性もありますが、一人しか居ないからこそドキュメント、ログはしっかり残すようにしています。
事業、サービスが順調に成長、人の採用も進め様々なものがスケールしたとき、「仕様は私の頭の中です」となればボトルネックになるのは渡しになってしまいます。
もちろんコードを読めば現時点の処理を追うことは可能ですが、どういった背景で変更されたか。処理になっているかは Git の変更履歴から完全に追うことは少々困難です。
Git のコミット1つ1つはもちろん、GitHub の Issue やドキュメントツールなど必要な情報にたどり着くことができる環境を用意しようと思っています。
FoundingBase では (今のところ) GitHub の Issue (及び GitHub Project) でチケット管理し、 Docusaurus を使用してドキュメントを管理しています。
凝った技術選定をしない
(今のところ予定はありませんが) エンジニア採用や委託する際に使用している技術が障壁とならないように技術選定をしています。
明確な線を引くことは難しいですが、今から数年(3~6年)、あわよくば10年は戦えるであろう技術。一定以上コミュニティ等成熟していること。必要となればパッチをあてたり、ライブラリを作れることを。を条件としています。
FoundingBase では (今のところ) React, Remix + TypeScript を利用しています。
テストは (できる限り) 書く
基本的なテストを記述するようにしています。
もちろん人の手でテストする必要な場面はありますが、毎回手でテストすることは現実的でありません。加えてテストが無いことで後々様々な問題も発生しやすくなります。
繰り返し作業を回避する
開発中に実施する繰り返し作業は人の手を介すのではなく機械的に実行するようにしています。
繰り返し作業には、何も生み出さない(時間だけを使ってしまう)タスクが存在している場合があります。なるべくそのような時間を少なくすることでより生産的かつ効果的に動くことができると考えています。
エディタの設定はもちろん CI/CD で workflow を実行するなどできることは様々です。
過度な自動化は望ましくありませんが、定期実施にかかる時間を自動化の工数は常に比較し手を打てるようにすべきだと考えています。
さいごに
弊社では一緒に地方共創を行う仲間を募集しています。ぜひ地域や事業に興味がある方はご覧ください。
今後エンジニアの採用もできるようにプロダクトづくり頑張ります