マインドセット

エンジニアが仕事を受けてからリリースするまでの工程と意識すること

オフィスでモニタを見る2人

こんにちは、まどです!

今回は、エンジニアが仕事を受けてからリリースするまでにどんな工程があるのか、またその際に意識するポイントを紹介します。

ちなみにこれは超初心者向け書いているのでかなーりざっくりです。

先日こういったツイートをしました。

こちらの内容に関して深堀りしていこうと思います。

まだまったく仕事を受けたことがないという方は事前に意識しておくことで、スムーズに仕事を進めることができると思うので見ておいて損はないかと。

ただ、開発の工程や内容は現場によって大きく違うので、これが世の中の正解というわけではありません。

あくまで私が経験してきた現場の話です。

それでは見ていきましょう。

リリースまでの工程

紙飛行機に掴まる人達

まずはそれぞれの工程がそもそも何なの?っという方に向けて、簡単に説明していきます。

調査

仕事を受けた際にまずやることは調査です。

こういうことをやりたい!という要望があっても、そもそもそれが実現できるのかどうか知る必要がありますよね。

なのでまずはやりたいことが実現できるのか、実現するにはどういった技術が必要なのかを明確にします。

技術検証といったりもしますね。ここで実現が難しいということがわかったら、どうすれば実現できるのか、代案を出せればベストですね。

設計

どうやって開発していくかの設計図を作るイメージです。ざっくり、こういう仕組みで作っていこうという方針を決めるといった感じです。

ここがしっかりしていれば、実装する際に迷うことなくコードを書いていけますし、トラブルも起こりにくくなるので重要です。

私はよく紙にどこでどんな処理をするのかを手書きでかいたりしていました。

頭の中だけで考えるには限界があるので、なんらかの形にアウトプットすると整理しやすいです。

実際のコードレベルで書き出すのではなくて、「〇〇の処理をする」みたいな感じで、何をやりたいのかを文字レベルで書くという感じです。

ちなみに、ざっくりした設計を基本設計、とっても細かい設計を詳細設計といったりします。

実装

みんな大好き実装です。
実際に手を動かしてコード書いていく工程ですね。

ここに関しては特に説明はいらないかなと思います。
設計でつくった設計書をもとにコードに落としていくイメージですね。

検証

実装が終わったらテストを行います。

作って終わり!っといきたいところなんですが、自分が作ったものがちゃんと動くか確認しないといけないですよね。

テストといってもかなりレベル感があり、ざっくりシステム全体をさわって確認することもあれば、メソッド(関数)単位で確認することもあります。

本来テスト仕様書というテスト項目をまとめたものを用意して、それを見ながらテストをしていくイメージなんですが、それがない会社もたくさんありますね。

検証はかなり大切な工程で、私がいた現場では、実装にかけた時間と同じ時間検証にもあてるべきと言われていました。

公開

ついにリリースですね。

これも会社によって手順が異なるんですが、ファイルをFTPでアップしておわりのところもあれば、Git(バージョン管理システム)などの仕組みを使ってアップするところもあります。

Gitなどを使う際はサーバーでコマンドを叩いたり様々な手順があるので、マニュアル化されていたりもしますね。

ちなみに公開するだけといってもここで起こるミスは致命的で、本番環境を破壊してしまったりする事件を何度も見てきました。

最後まで気を抜かないようにしましょう。

工程の中で意識すること

設計書

ツイートにも書いたとおり、この中で一番大切なのは設計かなと思います。

なぜなら、設計がミスっていると取り返しのつかないトラブルが起こる可能性があるからですね。

具体的には、

  • 実装中に想定漏れの部分が見つかり、根本からコードを組み直さないといけなくなった
  • そもそも実装不可能な設計だった

こんな感じのトラブルが実際ありました。

よく駆け出しのころにありがちなのは、いきなり手を動かしてコードを書いてしまうことですね。

その場で考えながら実装してしまうと上記のようなトラブルが起きやすくなるのであまりおすすめはできないです。

なので、設計こそ一番時間をかけて、抜け漏れがないようしっかり準備するべきかと思います。

ここまで読んで、「設計にそんな時間かけていいの?実装が一番大変じゃないの?」と思う人もいるかもしれません。

気持ちはよくわかります。私も最初はそう思っていましたので…。

ただ前述したようなトラブルが起きると、数週間~数ヶ月レベルで手戻りが発生してしまうこともあるので、こういったことを回避できるための保険だと考えればそこに割く時間は十分に価値があるのかなと思います。

また、設計さえしっかりしていれば、実装は何の迷いもなくスムーズに終わるのでむしろこっちのほうが早いということもありますね。

っということで、私は設計が一番大切だと思います。

まとめ

エンジンを整備するエンジニア

ざっくりでしたがリリースまでの流れとポイントを説明しました。

冒頭にも書きましたが、工程や内容、それに対する考え方は現場や人によって全然違います。

実装こそすべてという現場もあるかもしれません。

ただ、今回説明した内容は正解のひとつであり、内容に共感できたのであれば今後のご自身に活かしていただければと思います。

っということで今後もこんな感じで私が思うエンジニアとしてのマインドセットをメモ書き程度に残していこうかなと思いますので、興味があれば覗いてみてください。