ポートフォリオ実装にあたり各工程ごとに、学習のアウトプットとして手順や詳細について記し共有させていただきますので、一つの例として参考にしていただければ幸いです。
<アウトプットする理由について>
・"わかった気になっている"を無くすため
・フィードバックを受ける機会を得るため
・得た情報を自分の中にしっかり定着させるため
・数多くの情報から本当に必要な情報を判断できるようになるため
<各工程>
- 要件定義(仕様決め、ガントチャート作成)
- 設計(画面設計、DB設計、URL設計、タスクばらし)
- 実装(たくさん...)
上記のように、各工程で中身がいくつも分岐してくるため 3工程でも何記事かに分ける必要があるかと思います。ポートフォリオ作り終わる頃には合計で 10記事くらいで濃い内容をアウトプットしていく予定です。
また、実装部分については全てアウトプットする必要はないので、自身が難しい、または面白い、メモに残す必要があると判断した機能やエラーなどを記していきます。
#要件定義とは
要件定義は、本格的な開発工程の前段階で、要求をまとめ具体的な進め方を決めることです。システム開発では、ユーザー側の要求を実現することがゴールです。
そのため、開発をスタートする前に、実装する機能や性能などを決めておかなければなりません。要件定義は本格的な開発工程の前段階で、具体的にどのように進めていくかを決めるために必要です。
引用:https://it-trend.jp/development_tools/article/32-0060
とのこと。
難しく書いていますが、個人ポートフォリオで要件定義として私が実施したのは、サービスにどのような機能や技術を実装、使用するかを決める「仕様決め」とすスケジュール管理をする「ガントチャートの作成」の2つだけとなります。
##仕様決め
下記のようにコンセプト〜インフラをどうするかまで詳細を決めていきます。
ついては、自身でもなかなか規模の作品になり相当苦労するだろうと認識しています。
差別化するという箇所としては 私自身、以前にセキュリティエンジニアで脆弱性診断の経験があり、脆弱性診断の自動化の組み込みは何とか実装したいと思っています。
【コンセプト】
舞台観劇を通して繋がる口コミサービス
【言語・フレームワーク】
・Ruby / RubyonRails 5
・bootstrap or vue.js
【開発環境】
ローカル(Rubymine -ver 2019-3)
【実装予定の機能】
・ログイン/ログアウト機能(devise)
・画像付き投稿機能(観た舞台(口コミ)、観たい舞台(期待度とコメント))
・投稿編集機能
・投稿一覧表示機能(ページネーション)
・同じ舞台に関する口コミをまとめて表示機能
・同じ舞台への評価の平均点表示機能
・ユーザーの口コミに対する評価の平均点表示機能
・投稿詳細表示機能(自分の投稿であれば編集可)
・投稿コメント機能
・星評価機能
・プロフィール編集機能(アイコン画像あり)
・いいね機能(非同期処理)
・フォロー機能(非同期処理)
・ダイレクトメッセージ機能
・キーワード検索機能
・都道府県絞り込み機能
・地図検索機能(google map API)
[管理機能]
・管理ユーザーログイン機能
・DBテーブルのリレーション管理
・DBトランザクション制御機能
[Rspec]
・単体テスト機能
・統合テスト機能
【インフラ】
第一段階:Heroku
第二段階:AWS
第三段階:開発環境にDockerを導入
第四段階:CircleCIを使用してCI/CDパイプラインを構築しテスト自動化
余裕があれば、脆弱性診断の自動化の組み込み
https://circleci.com/ja/integrations/devsecops/
また詳細を決め終わったら、スクールやオンラインサロンで実際のエンジニア等にポートフォリオ開発の事前レビューをしていただくことをオススメします。
理由としては、もし仕様決めの時点で何か問題があってそのまま開発を進めていくと後から修正できない事態になりかねないからです。
私は、仕様決め段階でサービスのコンセプト考案に悩み、オリジナリティのあるコンセプトを決めることができなかった点について不安があったのでその点を相談したりして、事前レビューをしていただき、これからの実装について不安点を取り除くことができました。
--------------------------下記、レビュー内容抜粋--------------------------
「過去のご経歴の中で非常に強く感じた問題点の解決」をテーマにした方が企業さん側に響きやすいとは思いますが、そこら辺の判断は人それぞれなので、こちらのテーマでも大きな問題はないのではないかと思います。
「ポートフォリオにおいてほぼ誰でも最低限実装してきそうな一般的な機能だけ」になってしまっているので、もうちょっと印象度が強かったり実用性の高い機能があった方が企業さん側からの評価は高くなりやすいと思います。
##ガントチャート作成
私は Google スプレッドシートのテンプレートを使って直近の予定をざっくり立てました。
ポートフォリオの作成期間としては約2ヶ月半を想定してますが、転職活動をする必要があるので巻きで作業を進めていきたいところですね。
ガントチャートを作成する時点で自分が毎日どれだけ開発に時間をあてることができ、いついつまでに完成させるというを各工程の目安時間と照らし合わせながら、考えていく必要があるため意外とガントチャート作成には時間がかかりまそうです。
しっかりとしたタスク管理ツールを使った方が良いかもしれませんが、ポートフォリオのため自分が一番見やすいガントチャートにいたしました。タスク管理については個々のやり方があるかと思うので、参考までに。
https://www.google.com/intl/ja_jp/docs/about/
以上、要件定義についてのアウトプットといたします。
※ちなみに、要件定義は約2~3日で終わるかと思います!