この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。 # スキル分析 ITエンジニアと一言で言っても、多種多様な業務を行います。 その全てを短時間で身につけることは不可能です。 本サイトでは、業務対象をWebアプリケーション開発とし、各フェーズを一通り担当できるスキルを身につけることを目標とします。 Webアプリケーション開発を選択した理由は、案件数が多いからです。 また、基本となる部分は共通するのでWebアプリケーション以外の業務についても得られるものはあるでしょう。 プログラミング言語としては基本的にJavaを採用します。 こちらも案件数が多いことが理由ですが、Webアプリケーション開発以外でも多く使われる言語であり、汎用性が高いです。 ## 開発フェーズ 開発プロジェクトでは一般に「要件定義・設計・実装・テスト・リリース・運用」のような開発フェーズがあり、 エンジニアのランクに応じて担当する部分がおおまかに決まっています。 ### 要件定義フェーズ 要件定義についてはSIer(エスアイヤー)や上級エンジニアが担当し中堅以下はあまり参画しないでしょう。 小規模開発においては中堅エンジニアが受け持つこともありますが、その場合はすでに要件がおおまかに固まっていることが多いでしょう。 本サイトの趣旨である「最低限必要なスキルを短時間で身につける」の中に含まれないので、要件定義については本サイトの対象外とします。 ### 設計フェーズ 設計は、仕様を明確にし設計書に記載するフェーズです。 基本的には既存のドキュメントが存在するため、それに沿って追加機能や修正機能の内容を既存ドキュメントに反映します。 このフェーズで必要なスキルは、ドキュメントに記載されている内容を理解し、それを記載できることです。 ソフトウェア開発の設計書の章立てはおおまかに決まっており、章ごとに記載する内容が決まっています。 どういった内容が記載されるものなのかを知識として覚えるとよいでしょう。 また、各ドキュメントには様々な図表が表れます。 図表の種類やその特性を理解し、読み書きできるようになると良いでしょう。 ### 実装フェーズ 実装は、仕様書に沿ってプログラムを書くフェーズです。 まずは指示された通りに動作するプログラムを書くスキルが必要です。 これはこのフェーズでの最低限のスキルです。 実際に業務で書くプログラムはフレームワーク上で動作することが普通です。 フレームワークの特性を理解していることも実装フェーズでは重要です。 フレームワークも多種多様に存在しますが、まずは有名なフレームワークを使った開発を経験するのがよいでしょう。 作成したプログラムの読みやすさや再利用性、効率性なども重要ですが、よっぽど悪い作りでない限り、機能を満たしていれば他の要素は大目に見られることが多いです。 初心者はまず機能を満たすプログラムを書けるようにし、若手から中堅に向かうにつれ機能以外の要素も意識して書けるように気をつけると良いでしょう。 また、Webアプリケーションにおいてはセキュリティも問題になることが多いです。 プログラムを書くうえで一般的なセキュリティ対策は重要です。 さらに、問題発生時に問題を特定できるようにログを必要十分に出力することも重要です。 ### テストフェーズ テストは、実装されたプログラムが仕様のとおり動作するかを確認するフェーズです。 手動テストと自動テストがありますが、自動テストはテストするためのプログラムを作成することになるため初心者や若手には難しいです。 まずはどういった観点でテストをすべきなのかを理解することが重要です。 この部分は手動でも自動でも同じです。 観点を理解し妥当なテストケースを作成できるようになれば、あとはプログラミングスキルが上がれば自動テストにも対応できるようになるでしょう。 ### リリースフェーズ リリースは、作成された成果物を本番稼働しているサーバーに置くフェーズです。 作られたプログラムがどういった仕組みで公開されているかを理解することが必要です。 WebアプリケーションはWebサーバー上で稼働しますが、OSはLinuxが使用されることが多いです。 Linuxの操作に慣れる必要があります。 ### 運用フェーズ 運用は、サーバーの稼働状況を確認し問題が発生しそうな部分を発見し対処したり、問題発生時に問題を特定するフェーズです。 各種モニタリングの利用やプログラムの解読ができると良いでしょう。 モニタリングはLinux端末の情報を確認することになるので、こちらもLinuxの操作に慣れることが良いでしょう。 プログラムの解読は実装フェーズで記載しているように、読みやすいプログラムを事前に書いていることが重要要素になりますが、人のプログラムを読む練習を積むことで解析能力を高めることも重要です。 ## 中堅エンジニア・若手エンジニアの業務内容 若手エンジニアは中堅エンジニアから各フェーズ内での作業タスクを割り当てられ、スケジュールに従って作業を進めます。 中堅エンジニアは若手エンジニアの成果物をレビューしたり、進捗が遅れないようにフォローするなどの管理業務が追加されます。 また、中堅エンジニアは仕様の不明点などを顧客にヒアリングするなどの調整業務も必要です。 よって、中堅エンジニアには開発スキルに加えて多少の管理スキルや調整スキルも必要になりますが、本サイトでは開発スキルに重点をおいて学習します。 管理スキルや調整スキルが開発スキルに対して必要性が低いというわけではありませんが、これらのスキルは人とのやり取りの中で培われるものが多いため、机上で身につけることは難しいです。 まずは開発スキルを身につけ、開発プロジェクトに参画し、自分に与えられた開発タスクを問題なく進められることを目標としましょう。 開発スキルに余裕が生まれれば、管理者や上長の仕事内容にも目を向けられるので、管理スキルや調整スキルはそこから学習すればよいでしょう。 管理や調整ができるが開発はできないというのはエンジニアとして問題があります。 まずは開発できることを目指しましょう。 ## 各フェーズで必要なスキル <uml> @startwbs * 必要スキル ** 設計フェーズ *** 設計書の基礎概念の理解 *** 設計書に使用される図表の習得 *** オブジェクト指向の基礎概念の理解 *** データベースの基礎概念の理解 ** 実装フェーズ *** Javaプログラミングの基礎習得 *** SQLの基礎習得 *** HTML/CSS/JavaScriptの基礎習得 *** フレームワーク利用経験 *** ソースコード管理ツールの操作習得 *** ソフトウェア品質の理解 ** テストフェーズ *** 各種テストの基礎概念の理解 *** テスト手法の理解 *** テストドキュメントの基礎概念の理解 **** ケース表 **** 結果報告書 **** バグレポート ** リリースフェーズ *** サーバー基礎知識の習得 *** ネットワーク基礎知識の習得 *** Linux操作の基礎習得 ** 運用フェーズ *** サーバー監視 **** 稼働状況の確認 **** ログの確認 @endwbs </uml>