バックエンドエンジニア向けメンタリング業務マニュアル

対象者

バックエンドエンジニアを未経験から目指し、システム開発領域での転職を目指している方(SIer、SES)

内容

初回:ビデオ通話による面談とロードマップ資料のプレゼント

  • なぜ、エンジニアを目指すようになったのか?(きっかけ、背景)
  • エンジニアに求める要素は?なりたいモチベーションは?(スキル、お金、肩書き、働き方 etc. )
  • 日々どれくらいの勉強時間が取れるか?
  • 今の技術レベル・知識
  • ゴールはどこか?(転職・独立・スキルアップ)

2回目以降:学習方法・やり方に合わせて自走のサポートをする(週に1時間のメンタリングとチャットサポート)

  1. 「ウェブシステムの全体像を把握する」から選んでもらったトピックの説明
  2. 「ブログサービスを構築する(管理画面とサービス画面)」の質疑応答、詳細ロードマップの作成、転職活動やキャリアについての相談

ウェブ制作・ウェブサービス開発・業務システム開発の違い

ウェブ制作会社とWebサービスを運営している事業会社と大規模な業務システムを請負で開発している会社では、求められる技術も人物像もまるでことなる。ビジネスモデルを理解した上でどういう人材が求められるかを理解しよう。

プログラミングの基礎を理解する

  • プリミティブな値と事前定義された命令と制御構造
  • 変数と関数、またそれぞれの定義方法と実行方法
    • 変数、定数、代入
  • オブジェクト指向(クラス・オブジェクト)の基礎
  • 順次・分岐・繰り返し
  • 状態の管理(データベース、セッション、メモリ)
  • プログラム実行環境(エンジン)とプログラムとコンパイラと開発環境

ウェブシステムの全体像を把握する

PHPやLaravelの理解と共にサービス開発の全体像を知っておく上での重要であろう項目をリストアップしました。面談や現場等で質問されて全く聞いたことないということがないように、用語の意味や概要、実際の使われ方などを知っておきましょう。

  1. ウェブサーバーとブラウザ
    • Webページが見れる仕組みを理解する
    • HTMLとCSSとjavascriptについて
    • PHPとMySQLについて
    • ApacheとNginxについて
    • Linuxについて(ターミナル・シェル)
  2. サーバーと通信の種類(DBサーバ/APPサーバ/メールサーバ)
    • アプリケーションによって変わるサーバー構成の例
    • 通信プロトコル(HTTP/FTP/SSH/POP3/IMAP)
    • DNSとドメインとIPアドレス
  3. 開発環境について
    • 仮想開発環境(Virtual Box、Vagrant、Docker)
      • 仮想化技術とは?
      • Dockerはインフラ構築をコードで自動化できる
    • バージョン管理
      • GitとGitHub
    • IDEとコードエディタ
      • PHPStormとVSCode
    • ライブラリとフレームワーク
      • MVCフレームワーク
    • パッケージ管理ツールとパッケージ
    • オブジェクト指向
  4. 本番環境について
    • クラウド(AWS)について
    • オンプレミス/レンタルサーバー/クラウドの比較
    • 自動デプロイ(CI/CDツール)
  5. APIについて
    • jsonとXML
    • jsonサーバーとjavascriptによるDOM操作
    • JWT/OAuth
    • RESTAPIと外部アプリとの連携
    • SDK
  6. 開発案件の業務フローについて
    • 要件定義
    • 外部設計
    • 内部設計
    • 開発
    • テスト
      • 単体テスト
      • 結合テスト
      • 総合テスト(負荷テストetc.)
  7. ドキュメントの読み方
    • PHPマニュアルとAPIドキュメント
      • 関数・引数・返り値
      • クラスとメソッド
    • 公式サイト
      • GettingStartedとInstallation
      • GuideとTutorialとExamples
      • DocumentationとRefference
      • Downloads

はじめは細かく全てを理解する必要はないとおもいます。また、どこまで事前に理解していないといけないかについては現場によるところでもあります。実務で必要になった時に、自分の理解が浅いところを把握しておけば、あとから自分で調べて補えるので最初は問題ないと思います。

ブログサービスを構築する(管理画面とサービス画面)

実際に手を動かしながらバックエンドの開発を理解していく上で一番学びになるのはブログサービスの構築だと判断しました。

データベースの設計、CRUD(新規作成/一覧/編集/削除)の機能、ルーティング、認証機能、フロントの一般的な画面遷移(一覧/検索/詳細)が一通り学べるかと思います。

  1. CRUD機能を備えた管理画面を開発する
    1. DB作成・テーブル作成
    2. テーブルとフォーム(GET/POST/PUT/DELETE)とリンクを作成する
    3. MVCフレームワークとルーティング
  2. 管理画面にログイン機能を実装する
    1. ログイン画面/ダッシュボード/ログアウトボタンを作成
    2. ログイン/ログインユーザー判定/ログアウト機能を実装
    3. その他管理画面ページをログインユーザーページに統合する
    4. 会員登録/パスワード変更/退会機能を実装
  3. サービスページを開発する
    1. 一覧画面を作成する(記事一覧)
      1. 記事一覧リストの出力
      2. ページネーションの出力
    2. 記事詳細画面を作成する
      1. 投稿を取得・表示する
    3. 一覧画面に検索機能を実装する
      1. 検索フォームの作成
      2. 検索機能の作成

今回のブログサービスができたあとはECサイトの構築がおすすめです。

ECサイトには、以下の機能があります。

  • 決済機能
  • 在庫管理
  • 定期実行
  • メール配信
  • 帳票作成
  • CSVインポート/エクスポート

マニュアルの改善点

テストや仕様書の作成、プログラム修正に際しての影響範囲の調査、不具合の原因調査の方法などがあるとより実践的な内容になる。