今回は前回のプロジェクト管理編に引き続き、この「SEROKUフリーランス」開発プロジェクトを開始するにあたっての準備にはどういったものが必要だったかを紹介したいと思います。このSEROKUだけに限らず、何を開発するにも開発準備は必要だと思うので、参考になれば幸いです。個人での開発では必須ではないかもしれませんが、チーム開発を行う上ではwikiなどの情報共有のためのツールは不可欠であると思います。プロジェクトの大筋には関係ありませんが、個人でも会社でもメンバーが一番使い慣れていたり、使いたい機能があるものを選定し、何かを始める際にはそのセットをすぐに立ち上げられるように準備しておくことが良いでしょう。開発を行う上で要件を確認せずにいきなり開始するプロジェクトはそうありませんよね。ウォーターフォール型開発を採用していないので長い長い要件定義フェーズというものがあるわけではありません。そこで行うのが大まかな要件の確認です。コアとなるサービスの機能や、必要なことが確実にわかっている最低限の要件というものを洗い出していきます。場合はフリーランスユーザと企業ユーザの2種類がいてユーザ登録とログインができるフリーランスユーザはオークション形式で自分のスキルの出品ができる企業ユーザは出品されてるオークションに対して入札ができるといったような具合にシステムの大まかな要件を洗い出していきます。そのほかの要件については、アジャイル開発を進めていくうえで都度優先度を決めて追加していきます。アーキテクチャ選定あらかたシステムの基礎となる要件の確認ができたら、実際に開発で使うアーキテクチャの選定を行います。選定するうえで大事なのは下記のようなものを気にするとよいと思います。挙がっている要件を実現できるか流行っているか、コミュニティが成熟しているか扱える人材がチームにいるかチームメンバーの宗教上扱うことが可能か挙がっている要件を実現できるかこれは当たり前ですね。作ろうとしているものが技術上の制約で実現できなければ意味がありません。言語やフレームワークが作ろうとしているものに対しての向き・不向きも、もちろん考える必要があります。流行っているか、コミュニティが成熟しているか流行っているかどうかも技術の選定上では重要なファクターであると思います。廃れているような技術やもう開発が終了していてコミュニティが盛んでないような技術は、問題が発生した際に対応することが難しかったり、そもそも情報がどこにも無いということがあります。その際に自分達だけで解決しようとすると余計な工数がかかってしまうという危険性があります。扱える人材がチームにいるか当たり前のようですが「流行っているから」とか「よさそうな記事を見つけたから」という理由で採用し、学習コストばかりかかってしまっても最終的にハッピーとは言い難かったりします。いえ「最新技術を積極的に取り入れていきたい」という気持ちももちろんあると思います。技術選定のフェーズで試しに誰かが最新技術を使ってみて、その人がチーム内での先駆者となり主導していくということを行ったりします。使う技術を先駆者の導きにより、見事チーム全員が翌日には難なく扱えるようになっていました。使うアーキテクチャの選定が終わったらソースコードの管理についても考える必要があります。これを含めてアーキテクチャ選定と言ってもいいかもしれません。集中型ソースコードの管理にはバージョン管理システムを使っているチームがほとんどだと思いますが、バージョン管理システムには大きく分けて2種類あります。基本的にはテキストファイル(ソースコードなど)の管理には分散型を用い、バイナリファイル(画像など)は集中型を使う、といったように併用しています。クラウドサービス管理するための技術の選定が出来たら、ソースコードのバージョン管理を行うサーバが必要です。はじめとしたホスティングサービスが使えます。大体のサービスはプライベートリポジトリを作成しようとするとお金がかかります。*2一方オンプレで管理をするのであればサーバの電気代などの諸経費を考えなければ外部にお金を払う必要ありません。万が一問題が起きた場合や構築するための人件費などを考えると必ずしも安上がりではないことに注意したいです。開発スタートアップ執筆ここまで割と一般的なことを述べてきましたが、おそらく開発スタートアップというものはどこの開発チームでもやっているものではないと思います。行うプロジェクトにおいては必ず開発スタートアップというドキュメントを用意しています。このドキュメントを書くことで、個人特有の環境の差異で出てしまうバグなどを未然に防ぐことであったり、新しくチームにジョインしてきた人もスムーズに開発へと参加できます。ドキュメントを作成するためどうしても最初にコストはかかってしまうのですが、十分にペイできていると思います。必須と言っても過言ではないと言われてきています。環境の構築は施されています。これまでに「開発をする際に開発者が気持ち良く開発をできるようにするにはどういう準備、どういう仕組みが必要なのか」を吟味した結果です。これらの構成が決定版ということではなく、これからも技術の進歩とともに変化していくものだと思っていますので一例としての参考になればうれしいです。逃がすという手法も一般的になってきています。「SEROKUを支える技術〜CI/CD編〜」からの転載です。weseek_incはてなブログをはじめよう!weseekさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。