個人開発のすすめ
エンジニアは個人開発するべきですよね?というかきっと誰でもやらざるを得ないと思うんですよね。
なぜなら、エンジニアがスキルを身に着けていくには、とにかく開発しないと意味がない。からです。
ずっと本ばかり読んでいてもエンジニアとしては仕事につながりません。
で、やりたい開発なんて、そんなピンポイントでできるとも限りません。
ということはどうするか?
そう、自分で作っちゃえ!!ですね。
では、どうやって個人開発していくか見ていきましょう。
個人開発の進め方
個人開発やりたいなー、やらないとなー...と思っていても、なかなか進められない。
とか何からやっていいかわからない、とか、考えが散漫としていてまとまらない。という人もいるかと思います。
では、実例を上げてやってみましょう。
やりたいことをまとめる
個人開発でやりたいこと。これが大事です。目的ですね。
目的は一つである必要はないと思います。
例えば、
- webアプリを作りたい
- Go言語を習得したい
- フロントエンドもモダンなものを使いたい
- 人に見せられるポートフォリオにしたい
始めにざっとこのような目的・欲求があったとしましょう。
そして次に、さて、どういう技術スタックで開発しようか。と考えます。
(こういうの考えるのが結構好きだったりします(笑))
技術スタックを決める(仮決めでOK)
そしたら技術スタックを決めましょう。
これは仮決めで全然OKです。実際やってるうちに変わってくる場合がありますので。
例えば、
- バックエンド:Go
- フロントエンド:JavaScript(フレームワーク:Angular)
- DB:MySQL
- サーバー:GCP
で作ってみようかな。と決めます。
どんなサービスを作るか決める
次にどんなサービスを作るか決めましょう。
今回は例としてwebサービスを作ることにしているので、ブラウザで動作するwebサービスを作ります。
DBを使うので、CRUD機能がついているほうがいいですね。
CRUDとはCreate(生成)、Read(読み取り)、Update(更新)、Delete(削除)のことで、登録、参照、更新、削除の機能が付いたものです。
ブログのようなwebサービスを作る場合も、登録、参照、更新、削除の機能が一通り必要になります。
では、どんなサービスを作りましょうか...?
あなたが実際にあればいいな!と思うものが良いと思います。が、すぐに思いつく人は良いですが、なかなかアイディアってでてこないですよね?
私もいつも、こんなに想像力ないかってくらい出てこないです(笑)
まあ、よくあるものとして、ブログ、家計簿、勤怠管理、健康管理、マッチングサービス、などなど。
UI/UXやデザインに凝ったりすると、結構時間が掛かったりするので、そこは、目的に合わせて作りたいものを決めましょう。(あ、webデザイナーの人は逆でむしろ見た目が大事ですが)
バックエンドエンジニアのポートフォリオ用だったら、フロントエンド側でかっこいいグラフ化したりと凝るよりも、しっかりDBアクセスしてたり、MVCの考え方がちゃんとわかって作ってますというようなアピールに活かせるところに時間をかけたほうがいいですかね。
また、実際に不特定多数の人に実際に使ってもらいたいものを作る場合は、急いで雑に作るよりも、使い勝手がよいものにするほうがいいでしょうし。
今回は「バックエンドエンジニアのポートフォリオ用」が目的なので、「観光地の口コミサービス」にしましょうか。
サービスの仕様を決める
では「観光地クチコミサービス」にはどんな機能が必要でしょうか?
- ログイン機能
- 観光地クチコミの登録/更新/削除
- 観光地クチコミの検索
- 観光地クチコミへのコメント
ざっくり、こんな感じでしょうか?
では、続いて、画面をデザインします!
画面デザインを決める
開発の進め方はざまざまですし、常に進化していっていると思いますので、一概には言えませんが、一般的に、
- ワイヤーフレーム
- デザインカンプ
- HTML/CSSコーディング
- 実装(サーバーサイド/フロントエンド)
- テスト(単体テスト、結合テスト、システムテスト...)
- リリース
となります。
もちろんプロジェクトによって様々ですので、あくまでご参考で。
今回は
- ワイヤーフレーム
- デザインカンプ
をまとめて、GoogleスプレッドシートやHTMLテンプレートやAdobe XDで作ってしましましょう。
それをもとに静的なHTML/CSSを作りましょう。この時点ではボタンを押しても動かなくて良くて、あくまで見た目とページが必要なページができてる感じです。
画面遷移はできた方がわかりやすいですが、個人開発なのでどっちでもいいです。(チーム開発では、紙芝居のように画面遷移ができる状態にして、次のフェーズに渡すことが多いです)
実装!
さあ、実装です!
今回はGo言語とJavaScript(フレームワーク:Angular)を用いて実装しますので、思う存分ググりながら実装していきましょう!
テスト!
そして、モノができました!となったら、まだ終わりではありません。
テストをしましょう。
ある程度の規模のプロジェクトになると、テストフェーズを分けて行いますが、今回は出来上がったものを実際に動かして、エラーにならないか、想定通りの動きをしているか、を確認しましょう。
もちろん、テストをすると不具合が見つかりますので、都度修正していきます。
テストは本来とても大事です。機能、性能、負荷、セキュリティなど様々な観点で確認が必要です。
リリース!
まだ、ローカルで動いている状態だと思うので、リリースするにはサーバー上にデプロイしなければなりません。
今回はクラウド上のGoogle Cloud Platform(GCP)を使おうということなので、GCPにデプロイします。
その他
その他、ポートフォリオの一環としてソースコードを公開するのであれば、GitHubにアップするなどしましょう。
以上、超ざっくりですが、このような流れで進めていくことで個人開発によるwebサービスが作れるかと思います。
ぜひ、チャレンジしてみてください!