「IT未経験からシステムエンジニアに就職・転職したい」と思っているあなたへ。システムエンジニアの仕事を調べていて、次の悩みがありませんか?
- システムエンジニアの仕事はプログラムを作る、システム開発すると聞いたが何のことか分からない。
- システム開発すると何ができるようになるの?身近な例を教えてほしい。
- システム開発は分かるがどういう流れで進んでいくか分からない。
結論は次のとおりです。
- システム開発とは、ITを使って問題解決の道具を作ること。
- システム開発で私たちの日常で使うサービスが便利になる。
(例)銀行ATMのシステム、コンビニのPOSシステム、公共交通のICカードシステム、スマートフォンのアプリ、オンラインショッピングサイトなど - システム開発の流れは、要件定義→基本設計→詳細設計→製造→単体テスト→結合テスト→総合テスト→リリース。
当記事ではシステムエンジニアとして20年以上の経験を持つ私が、システム開発をわかりやすく解説します。当記事を読むことで、システム開発は何をしているのかを理解できます。
※当サイトでは、IT未経験者がシステムエンジニアの世界を理解するために、以下の全7STEPで解説してます。興味があれば参考にしてください。
\ ビジネススキル・ITスキルがいつでもどこでも学べる!/
\ プログラミング未経験者・初心者必見!/
システムエンジニアのシステム開発とは、ITを使って問題解決の道具を作ること
「システム開発」とは、IT(情報技術)を使って、日常やビジネスで遭遇する問題を解決するための「道具」を作ることです。この「道具」とは、コンピューターやスマートフォンで使われるプログラムやアプリなどを指します。「システム開発」は「ソフトウェア開発」や「アプリ開発」とも呼ばれます。
この分野で専門的に働く人たちを「システムエンジニア」と呼びます。彼らは、ITを使いこなして、様々な問題を解決するためのプログラムやシステムを考え、作り出します。
ITに初めて触れる人や、これからIT業界に入りたい人にとって、システムエンジニアは魅力的な職業です。この仕事では、技術的な能力だけでなく、チームで協力する力や、人とのコミュニケーション能力も大切になります。システム開発の経験を通して、多くの知識とスキルを身につけることができるでしょう。
システムエンジニアがよく聞く「システム開発」と「プロジェクト」の違い
ITの世界でよく使われる「システム開発」と「プロジェクト」は、初めて聞くとややこしいかもしれませんが、簡単に違いを理解することが大切です。
これらを分かりやすく説明するために、「家を建てる」例を使います。
- プロジェクトは、特定の目標に向けた全体の計画や活動です。家を建てる際に、計画を立て、土地を選び、工事を管理し、家を完成させる過程全体を指します。
- システム開発は、プロジェクトの中の技術的な部分です。家を建てる例で言えば、設計図を描いたり、材料を選んだり、建築作業をする部分に相当します。
要するに、
- プロジェクト = システム開発 + 他の活動(計画、調整、管理など)
- (例)家を建てる = 家の建設 + 計画や管理
この違いを理解することで、システムエンジニアとしての業務がスムーズになり、IT業界の動きを的確に把握できるようになります。また、これらの工程を適切に実施できれば、依頼者の要望を実現することが可能です。これが、システムエンジニアとして成功するための第一歩です。
システムエンジニアのシステム開発が生活を便利にした例16選
システムエンジニアの技術は、日常生活の多くの面で私たちに便利さをもたらしています。次の表は、システムエンジニアによるシステム開発が、過去と現在で私たちの生活をどのように変えたかを示しています。
サービス | 昔の状況 | 現在の状況 |
---|---|---|
銀行ATMのシステム | 銀行窓口でしか取引できなかった。 | ATMを使っていつでも取引が可能。 |
コンビニのPOSシステム | 手動で価格を計算し、ポイントの管理も困難だった。 | 商品のバーコードをスキャンするだけで、価格やポイントが計算される。 |
公共交通のICカードシステム | 現金での乗車券購入や支払いが必要だった。 | ICカードを使って現金なしで乗車や支払いが完了する。 |
オンラインショッピングサイト | 店舗でのみ物理的に商品を購入できた。 | スマホやパソコンから商品をオンラインで購入できる。 |
スマートフォンのアプリ | 情報はパソコンや書籍でしか得られなかった。 | スマートフォンのアプリを通じて、どこでも情報を得られる。 |
オンラインバンキング | 銀行業務は銀行の支店でのみ行う必要があった。 | インターネットを通じて自宅から銀行業務が可能に。 |
遠隔医療サービス | 医療サービスは対面でのみ受けられた。 | オンラインで医師の診察や相談が可能に。 |
スマートホーム技術 | 家庭内の機器は手動で操作する必要があった。 | スマートフォンや音声コマンドで家庭内の機器を遠隔操作できる。 |
クラウドストレージサービス | データは物理的なメディア(CD、フロッピーディスクなど)に保存されていた。 | オンラインでデータを保存し、どこからでもアクセス可能。 |
GPSナビゲーションシステム | 道案内は地図や道路標識に頼っていた。 | GPSナビゲーションシステムを使って、正確なルート案内が得られる。 |
教育分野のEラーニングシステム | 教育は主に対面授業で行われていた。 | オンラインでの授業や自己学習が可能に。 |
自動運転車のシステム | 運転は完全に人の手によって行われていた。 | 自動運転技術により、車両が自律的に運転を行う。 |
デジタルマーケティングツール | マーケティングはアナログや直接的な手法が主流だった。 | オンラインでのデータ分析やターゲティングが可能に。 |
ウェアラブルヘルスデバイス | 健康管理は主に医療機関や個人の意識に依存していた。 | 個人がウェアラブルデバイスで健康状態を常時モニタリング。 |
仮想現実(VR)エンターテイメント | エンターテイメントは物理的な空間や媒体に依存していた。 | VR技術により、仮想空間での没入型エンターテイメントが実現。 |
農業技術の自動化 | 農業作業はほとんどが手作業によるものだった。 | 精密農業や自動化技術により、効率的かつ科学的な農業が可能に。 |
この表は、私たちの生活に密接に関わるサービスが、システムエンジニアの技術によってどのように進化し、便利になったかを示しています。システムエンジニアの専門技術と努力により、私たちの日々の生活はより豊かで快適なものとなっています。システムエンジニアとしてのキャリアを目指す方々にとって、このような影響力のある職業に挑戦することは、非常に魅力的であると言えるでしょう。
システムエンジニアによるシステム開発の流れ
システムエンジニアのシステム開発は、要件定義からリリースに至るまで様々な段階を踏みます。システム開発の流れを分かりやすく説明するため、「家を建てる」を例に比較します。
段階 | 説明 | 「家を建てる」での例 |
---|---|---|
要件定義 | 依頼者のニーズを明確にする | 土地選びや家の大きさを決めること |
基本設計 | システムの大枠を決める | 設計図を描いたり、部屋の配置を決めたりすること |
詳細設計 | システムの具体的な仕様を決める | 配線や配管の計画、使う材料の選択 |
製造 | プログラミングする | 実際に家を建てる工程そのもの |
単体テスト | プログラムの一部が正しく動くかテストする | 窓や水道の機能をチェックすること |
結合テスト | いくつかのプログラムがうまく連携するか確認する | 電気と水道の組み合わせの確認 |
総合テスト | 全体が要望通りに動くかを検証する | 家が完成した後の最終チェック |
リリース | 完成したシステムを実際に運用開始する | 新築された家を引き渡し、住み始めること |
これらの課題にしっかり対処することで、システムエンジニアは良いシステムを作り続けることができます。完璧なシステムを目指す過程は、いつも困難と学びが伴います。
システムエンジニアがシステム開発で出会う炎上プロジェクトとは
システムエンジニアがシステム開発しているといつか「炎上プロジェクト」に出会う可能性があります。システム開発における「炎上プロジェクト」とは、計画と現実の間に大きな差が生じ、その結果として大きな問題が発生する状態を指します。具体的には以下のような原因が考えられます。
原因の分類 | 具体的な原因 |
---|---|
予定と現実の違い | ・開発期間の大幅延長と納期遅れ ・予算の大幅超過 |
コミュニケーション不足 | ・チーム内の情報共有不足 ・お客様との要件に関する認識の齟齬 |
技術的な問題 | ・新技術の導入による未知のエラーやバグ ・既存システムとの互換性問題 |
要件の変更 | ・進行中のプロジェクトでのお客様の要望変更 ・法規制や市場変化による要件調整 |
資源の不足 | ・適切なスキルを持つ開発者の不足 ・ハードウェアやソフトウェアの物理的資源不足 |
これらの問題は、システム開発の過程で発生しやすく、プロジェクトの進行を著しく妨げることがあります。しかし、これらの困難を乗り越えることで、システムエンジニアとしてのスキルが向上し、より良いプロジェクト管理能力を身につけることができます。
例えば、私自身はシステム開発のプロジェクトで2回の炎上を経験しました。特に2回目のプロジェクトは、次のような数多くの問題が絡み合っていました。
原因の分類 | 具体的な原因 | 結果 |
---|---|---|
プロジェクトの大規模さ | 自社メンバー数百人(大きなビルの2フロア貸し切り)、多くの関連システム | 管理の複雑化、調整の困難化、作業負担の増大 |
開発期間の短さ | 限られた時間内での膨大な作業量 | 過度なプレッシャー、作業の質の低下、メンバーの疲弊 |
要件の確定しない状況 | お客様との要件合意が困難 | プロジェクトの方向性が不安定、作業の再計画が必要 |
専門家の不足 | 自社とお客様両方に開発システムの業務に詳しい人材不足 | 要件決定や技術的課題解決の遅延 |
関係システムが多すぎ | 多数の関連システムとの仕様決定や調整が必要 | プロジェクトの進行遅延、調整作業の複雑化 |
チーム間のコミュニケーション不足 | 情報共有の不十分さ | 作業の重複、誤解の発生、全体的な効率の低下 |
これらの問題が重なり、「不夜城」となりました。「不夜城」とは、開発者が夜遅くまで、あるいは夜通しで作業を続けることです。私もピーク時には、朝6時に家を出て、深夜3時に帰宅するという過酷なスケジュールを1ヶ月間続けました(ピークの1ヶ月間以外は終電が多かったです)。
このような状態が長く続くと、体調や心の健康が悪化し、プロジェクトから離脱する人も増えます。システムエンジニアになることを目指す方々には、このような困難もあるという現実を知っておいてほしいです。しかし、こうした経験から学ぶことも多く、それが将来の仕事に生かされることもあります。
「完璧なシステム開発」は本当にできるのか?システムエンジニアの現実
システムエンジニアとしての仕事は、新しい技術を生み出す魅力がありますが、完璧なシステムを作ることは現実的には大きな挑戦です。以下では、システム開発でよくある課題と、それにどう対処するかを簡単に説明します。
課題 | 課題の内容 | 対処法 |
---|---|---|
複雑な要件 | クライアントやユーザーの要望が複雑で、全てを満たすのが難しい | 明確な要件定義と柔軟な対応 |
技術の進化 | IT技術は常に進化し、使っている技術が古くなることがある | 新しい技術を学び、システムを最新の状態に保つ |
人間のミス | 作業ミス、仕様の考慮漏れ、プログラムミス、互換性の問題などによるエラーや不具合 | ミスから学び、仕様やコードを詳細にレビューし、定期的なテストと品質管理を徹底する |
予期せぬエラー | 新しい技術の導入や外部要因で予測できないエラーが発生することがある | トラブルシューティング能力を養い、迅速に問題を解決する |
これらの課題にしっかり対処することで、システムエンジニアは良いシステムを作り続けることができます。完璧なシステムを目指す過程は、いつも困難と学びが伴います。システムエンジニアのキャリアは、技術スキルを高めるだけでなく、柔軟な思考と問題解決能力を育てる挑戦的な仕事です。
私の経験上、多くのプロジェクトで、システムの不完全さの大部分は人間のミスに起因していました。人がプログラムを作る以上、ミスを完全に避けることは不可能です。
例えば、私が過去に半年かけたシステム開発では、リリース後に表面上は不具合が1件だけという例外的なケースもありました。しかし、この数字は表面的なもので、潜在的な問題が隠れている可能性もあります。システム内には目に見えない箇所での小さなミスや潜在的な問題が存在し、これらは時に大きなトラブルへと発展するリスクを秘めています。それを踏まえると、人が作っている以上、「完璧なシステム開発ができた。」と言い切れる人はいないはずです。
※参考までに次の記事では、みずほ銀行の大規模システムの大規模システム障害について触れてます。
システム開発を知り、将来のシステムエンジニアとしての自分の仕事をイメージしよう!
当記事ではシステム開発をわかりやすく解説してきました。まとめると次の通りです。
- システム開発とは、ITを使って問題解決の道具を作ること。
- システム開発で私たちの日常で使うサービスが便利になる。
(例)銀行ATMのシステム、コンビニのPOSシステム、公共交通のICカードシステム、スマートフォンのアプリ、オンラインショッピングサイトなど - システム開発の流れは、要件定義→基本設計→詳細設計→製造→単体テスト→結合テスト→総合テスト→リリース。
システム開発は何をしているのかを理解できたことでしょう。システム開発の将来性や魅力を知り、未来に就職・転職した会社での自分のシステムエンジニアとしての仕事をイメージしましょう。
※当サイトでは、IT未経験者がシステムエンジニアの世界を理解するために、以下の全7STEPで解説してます。興味があれば参考にしてください。
\ ビジネススキル・ITスキルがいつでもどこでも学べる!/
\ プログラミング未経験者・初心者必見!/