創業1年半のスタートアップで働いているWebエンジニアです。
スタートアップにおいて、「開発が早いこと」は大きな強みとなります。
スタートアップは新規性の高いプロダクトを作成します。売れるかは当然わからないため、PDCAのサイクルを高速で何度も回し、売れるものを見つけます。一方で資本が十分にありません。半年から2年ほどの間で、上記を達成する必要があります。
普段の開発でも1年前ほどから生成AIを積極的に利用しています。
生成AIは開発のスピードアップに大きく寄与しますが、適切に利用しないと逆に開発スピードを下げてしまうことが知られています。
高速な開発プロセスを繰り返す中で自身の中でパターンが定まってきましたのでこの記事を書きました。
本記事ではそれらパターンを開発プラクティスとして紹介できればと思います。
この記事では最大2週間程度で終わる機能追加や、機能改修の開発をイメージしています。
仕様を最初に決める
最初に仕様を固めます。
現時点で持っている情報を洗い出します。顧客インタビューの議事録や、ユーザデータ、競合プロダクトが提供する類似機能などです。
将来どうなるか、どのような可能性があるかを想像することも大切です。
本当に売れるかは誰にもわからないので、考えすぎない、作り込みすぎないこともとても大事です。
フェーズを分ける
開発スコープが大きくなるときはフェーズを分けます。
開発アイテムを最小限の価値に分解することで、いち早くBizや顧客サイドからのフィードバックを得ることができます。
本当に売れるかどうかのインサイトをより早く掴むことができます。
事前に設計を固める
まずは設計を行い、設計書に書き起こします。
データモデリング、処理のプロセス設計などの概念設計をまず行い、
テーブルのカラムや制約、各コードのインターフェースなどの詳細設計を行います。
既存コードを正しく読み込むことが大事です。既存コードとの一貫性が取れているのか、データの不整合が起こらないかなどを注意します。
設計書をAIや上司にレビューしてもらい、ミスや考慮漏れを事前に修正します。
リファクタリングは事前・事後に実施
既存のコードで問題になりそうな箇所はこの段階で修正を入れます。
修正に時間がかかる or 今回の実装に影響が少ない場合は、後で入れるようにします。
リファクタリングと実装を同時並行することはスピードが落ちる原因になるためできるだけ避けます。
適度な大きさでタスクを切り出した上で実装する
実装には生成AIを利用する場合、大きすぎるタスクはアンチパターンだと考えています。
タスクが大きすぎると、一度AIが道を外すと軌道修正が大変、コードを追いきれずバグに気づけないが大きな理由です。
それを避けるために、設計書からタスクを生成します。
各タスクは小さく、凝集度が高くなるように作成しておきます。
他にも難易度が高いタスクは単一タスクに切り出すことで、修正の影響範囲を限定させるなどの工夫が可能です。
作成したタスク・仕様書をAI Agentに渡して、タスク単位で実装を進めていきます。
各タスクごとにPR / commitを作成し、実装にミスがないかを確認しながら進めていきます。
おわりに
今回記述したプラクティス以外にもたくさんのプラクティスがあると思います。
よりスピード感のある、高品質な開発ができるように研鑽していきたいです。