2024.03から始まり1ヶ月半経つ現場作業で経験したことを時系列順にまとめます。
求人サイトを一から作成する短納期案件です。
使用FWはLaravelで、チーム体制は私とPMの2人から始まり徐々に増え、現在は合計5人で取り組んでおります。
目次
- チームに参加
- 環境構築
- プロジェクト要件調査
- プロジェクト始動
- 先方からの依頼把握
- Blade変換
- 他PGがチームに参加
- 情報共有
- コントローラー化
- 機能実装
- 納期間近
- 学んだこと
- まとめ
チームに参加
チームのSlackに参加し一番驚いたのは、私とPMの二人しかいないことでした。「後ほどメンバーを増やす予定だが如何せん短納期なので動けるメンバーからどんどん進めてほしい」とのPMからのお達しだったのでできることから進めていこうと心に決めました。
<環境構築>
最初に取り組んだのはお馴染みの環境構築です。
これはどの現場でも最初に行います。私はいつもここで一番苦戦するので、あらかじめPMに伝えて丁寧に教えていただくようにしています。今後のプロジェクト全体に関わってくる部分なので、この辺りは特に正直にわからない部分はわからないと伝えて進めるのがおすすめです。
<プロジェクト要件調査>
続いて、PMが先方から順にもらってくるざっくりとしたプロジェクト要件のスプレッドシートを読み込み、調査しました。先方がどういうものを作りたいのかイメージしながら確認することが大切です。
https://docs.google.com/spreadsheets/create?hl=ja
プロジェクト始動
先方からの依頼資料が一通り出揃ったところでプロジェクトが本格的に始動しました。
<先方からの依頼把握>
次に、先方とのイメージすり合わせを行いました。
これはあるあるなのですが、先方にエンジニア経験者がおらず素人目線でのご依頼内容だったので、技術的に見ると曖昧な部分が多かったです。わからない部分はPMを通してどんどん先方に質問しながら今後の流れをまとめていました。今思えば、ここにもっと重きを置けばこのあとより楽に進めたのではと思います。
<デザインをBlade変換>
次に、別部署のデザイナーさんが作ってくださったHTMLをBladeファイルに変換する作業を行いました。
ほぼコピペの中、一部Blade形式に変える必要があったので、楽そうでそれなりに精神をすり減らされる作業でした。
他PGがチームに参加
プロジェクト開始から1〜2週間ほど経つと、毎週1人づつほどメンバーが徐々に増えていきました。それと同時にPMがご多忙になり、最初のメンバーである私が実質リーダーのような役割を務めることになりました。エンジニアとしてリーダーを務めるのは初めてでした。
<情報共有>
メンバーが増えたので、当然ここまでの情報やチームのルールを共有する必要があります。時間は限られているので、的確かつ迅速に伝える必要があります。Power Pointなどで資料を作っておくと良いでしょう。
<コントローラ化>
これまではBladeファイルをブラウザ表示させる最低限のルーティングで作業をしていました。
Route::get('/', function () {
return view('index');
});
が、このあとの機能実装に向けてコントローラを噛ませるようにルーティングを変更しました。
Route::get('/', [App\Http\Controllers\IndexController::class, 'index'])->name('index');
<機能実装>
ここまでBladeファイルで見た目だけ作ってきましたが、ここからはいよいよ機能の実装です。先方からのご依頼内容の通りに機能を作成していきましたが、想定以上に時間を要しました。というのも、作成しているうちに見つかった矛盾点や不明点のせいで作業が滞り、そこを乗り越えたらまた問題が見つかり……の繰り返しでなかなか前に進むことができませんでした。
<納期間近>
元々短納期であったことも相まって、想定より悪い進捗で納期間近に差し掛かってしまいました。PMもお忙しくプロジェクトの進捗を100%把握することができていなかったため、とてもバタバタした現場になってしまいました。
学んだこと
今回の案件を通して、技術的なことももちろんたくさん学びましたが、何より学んだことは俯瞰した視野・わかりやすい報・連・相の2点です。
<俯瞰した視野>
割り振られたタスクに限らずプロジェクト全体を見渡すことで、巡り巡って自分担当箇所に追加しなければならないことや逆に不要な部分が見えてきて円滑な作業を行うことができる。
<わかりやすい報・連・相>
今何を行なっているかや次に何を行う予定かという概要だけではなく、具体的な時間や進捗率(%)をざっくりでもいいので視覚的に伝えることで他のチームメンバーやリーダーがスケジュールを立てやすくなる。
例:【進捗報告】
”作業内容1” 50% 9:00-10:00
"作業内容2" 0% 10:00-12:00
現在"作業内容1"に取り組んでいます。10:00から"作業内容2"に取り組む予定です。
まとめ
今回はLaravelの現場に出てみて体験したことをまとめてみました。社外秘の内容が多く技術的な部分はあまり書けませんでしたが、現場ならではのことをたくさん伝えられたかと思います。当たり前のようで実践は難しい、常識レベルの社会人力を身につけることがプロジェクトに貢献するにあたって一番大切なことです。