こんにちは!クルマ×ITのスタートアップ、MiddleField広報の松田です!
前回、そして前々回では、エンジニアの採用要綱を読み解くべく、エンジニアの職種やプログラミング言語について学んできました。
しかし、エンジニアの募集要綱には、プログラミング言語の他にもまだまだ知らない言葉がたくさん…ということで、今回は、これまでの記事で解説しきれなかった部分の採用要綱を解読すべく、募集要項によく出てくる言葉を集めて解説してみたいと思います!
エンジニアの開発工程や開発手法、データベースについて、開発支援ツールについてなど、今回は幅広く解説していますので、第1回&第2回の補足として、ぜひ最後までご覧いただけますと幸いです!
目次
- エンジニアの開発工程や開発スタイルについて
- データベースに関する用語について
- 開発支援ツールについて
- あとがき
エンジニアの開発工程や開発スタイルについて
エンジニアの採用要綱や他企業さんの採用HPを見ていると、たまに「アジャイル開発」や「スクラム開発」というワードが出てくることがあります。これらのワードは、エンジニアの開発手法を表したものです。これらのワードを理解するために、まずはエンジニアの開発の流れを大まかにご紹介します。
<システム開発の流れ>
①要件定義
→「こういうことをやりたい」「こういうものを作りたい」という要望を、技術的にどのように実現するかというシステムの要件を定義します。具体的には、開発目的や必要な機能の整理、予算やスケジュールなどをまとめます。
②設計
→定義された要件を満たすための、最適な方法を考えるステップです。プログラミング言語やフレームワーク、インフラ環境の選定も行います。
③実装
→実際にコードを書いて、システムを作っていきます。
④テスト
→実装したシステムが問題なく動作するかどうかのチェックを行います。
⑤公開
→実装したサービスやプロダクトを、実際にユーザーが使用できるように本番環境のサーバーに配置します。
⑥保守運用
→公開後のサービスやプロダクトが問題なく動作し続けるように管理をしたり、何か問題が発生した時は対応を行ったりします。
実装に入る前の工程のことを「上流工程」、実装移行の工程のことを「下流工程」と呼びます。
そして、1つのサービスやプロダクトに対して、この開発の流れをどのように行っていくかを決めたルールのことを開発手法と言います。チームで開発をする場合の開発手法には、主に「ウォーターフォール開発」「アジャイル開発」という2つの手法があります。
ウォーターフォール手法は、1つのシステムにおける「要件定義」の工程がすべて終わったら「設計」に進む、「設計」が全て終わったら「実装」に進むというように、上流工程から下流工程に向かって順番に開発を進めていきます。
一方でアジャイル開発は、より短いスパンで開発工程を繰り返しながらシステムを作っていきます。
IT業界のシステム開発を風刺したイラストに「顧客が本当に必要だったもの」というものがあります。もともとは、1970年代のアメリカで生まれたと言われている有名な絵です。
このイラストは、最初に顧客が説明した要件が上手く伝わらず全く違うものができてしまう、それどころか、そもそも顧客が本当に必要なものを理解していないことも多い、ということを表しています。
アジャイル開発は、このような依頼者側とエンジニア間での齟齬を防ぎやすい開発スタイルです。短いスパンで実装&チェックを行う為、ずれがあった時に修正をしたり「やっぱりこっちがいい」と変更を行ったりすることが臨機応変に行えます。
データベースに関する用語について
前回、プログラミング言語はフロントエンドとサーバサイドで別の言語を使うということを書きましたが、データベースに対する処理を実行するための「SQL」という言語があります。データベースに関するワードが要綱に出てくることもあるので、少しだけ解説しておきます。
エンジニアの採用要綱で使われる「データベース」という言葉は、データベース管理システムのことを指すことが多いです。データベース管理システムとは、その名の通り、データベースを運用したり、管理したりするシステムやソフトウェアのことを指します。データベース管理システムは、データベース内から必要なデータを取り出したり、収納したりする役割を果たします。
データベース管理システムは、データベースを保持する形式によって様々な種類があり、主に「RDBMS」と「NoSQL」に分けられます。
「RDBMS」は「Relational DetaBase Management System」の略で、日本語では関係データベース管理システムと言います。「SQL」という言語は、RDBMSに処理を実行させるための言語です。RDBMSは、さらに「MySQL」「PostgreSQL」「Oracle Database」などの種類があり、機能などがそれぞれ異なります。
「NoSQL」は、Not only SQLの略で、大まかに「RDBMS」以外のデータベース管理システムのことを指します。名前の通り、SQLを使わずにデータの操作ができるもののことです。具体例としては、「MongoDB」「Cassandra」「Redis」等の名前が上げられます。
NoSQLは、RDBMSでは対応しきれないようなビッグデータ等を取り扱う為に生まれた技術で、RDBMSに比べて高速な処理が可能です。データベースとしてはまだRDBMSが主流ですが、NoSQLをサポート的に利用する企業も増えているようです。
開発支援ツールについて
エンジニア向けに、様々な開発支援ツールが提供されています。ここには書ききれないので、MiddleFieldのエンジニアチームが使っているものを例としてご紹介します。
◆Redmine
→プロジェクト管理ツールです。担当者は誰なのか、期限はいつなのか、作業の進捗はどの程度なのか等の情報が一括で管理できます。MiddleFieldでは、「チケットを切る」という形で、他チームから開発チームへの依頼を管理する目的でも使われています。
◆GitHub(ギットハブ)
→「Git」とは、簡単に言うと”プログラムのソースコードなどの変更履歴を記録・追跡するためのバージョン管理システム”です。Gitを利用することで、自分のPC(ローカル環境)上にリポジトリ(システムを構成するデータやプログラムの情報が納められたデータベースのこと)が保存できるようになり、前のバージョンに簡単に戻ったり、オフラインでも開発が進められたりします。
このGitの仕組みを利用して、世界中の人たちがプログラムコードやデザインデータなどを保存できるようにしたウェブサービスがGitHubです。
◆Vagrant(ベイグラント)
→仮想環境を簡単に構築できるようにするソフトウェアです。
イメージとしては、PCに入っているOSの中に、もう1つ別のOS領域を確保してくれるようなイメージです。エンジニアはその領域を「自分だけのスペース」として活用でき、システムを本番環境や開発環境に配置する前に、自分だけのスペース上で開発を進めたり、テストを行ったりすることができます。
◆Docker(ドッカー)
→コンテナ型の仮想環境を作成するためのソフトウェアです。
PCの中にもう1つ別のOSを作るVagrantとは違い、Dockerの仮想環境はPCにすでに入っているOSの上に作られるイメージです。ベースとなるOS(船)の上に仮想環境(コンテナ)が乗っかるイメージから「コンテナ型」と言われます。
◆Sketch
→アプリやWebサイトのUIデザインに特化したデザインツールです。
◆inVision
→WEBページやアプリケーションのプロトタイプを作成できるツールです。作成したプロトタイプはチーム内で共有でき、コメントを入れたり共同作業を行ったりすることができます。
ちなみに、エンジニアが使うツールのロゴはポップでかわいいものが多いです。例えば、こちらのGitHubのロゴ(公式サイトに使用ガイドラインがあり、ダウンロードできるようになっています)。
右のキャラクターは「Octocat」。MiddleFieldのエンジニアによると、エラーが起きた時に「Octocat」が出てくるようになっていて、ちょっと癒されるらしいです。他にも「Docker」のクジラのロゴなどが有名です。ロゴの由来を調べてみるのも楽しそうですね。
あとがき
ここまで3回に渡ってエンジニア採用に関するブログを書いてきましたが、いかがでしたでしょうか?
私がエンジニアの採用要綱を理解するために始めた企画でしたが、1人でも多くの採用に関わる方のお役に立てていたら幸いです!
MiddleFieldでも、今回解説した各職種のエンジニアを大募集しています!
ご興味をお持ちいただけましたら、ぜひお気軽にお問い合わせください!
このnoteや採用に関するお問い合わせはコチラから↓
Twitter:@shoko_m26
Facebook:shoko.matsuda.18
最後までお読みいただきありがとうございました!また次回のブログでお会いしましょうー!
MiddleField株式会社では一緒に働く仲間を募集しています