未経験から7日間でコーダーとして現場投入させるまでのカリキュラムを忘れないようにメモっとく

エンジニア不足と言われて久しいですが、できる経験者を採用するのはますます難しくなっていますね。

そんななか、弊社ではひょんな縁からエンジニア未経験の新人をエンジニアとして採用することになりました。未経験とはいえ、弱小企業の弊社には悠長に育てている余裕がないため、7日間で現場投入を目指してカリキュラムを組みました。

だいたいうまくいったので、メモがわりに晒しておきます。

# 前提条件

誰でも7日間でエンジニアになれると言っているわけではありません。あくまで一例として捉えていただければ幸いです。

## 担当してもらう予定の領域

* HTML/CSS コーディング
* JavaScript はそこそこで（動きのエフェクトやカルーセルを仕込める程度）
* concrete5 テーマの開発（PHPファイルに `foreach` を入れていくイメージ、WordPress と変わらない）

流石にアプリケーション開発で7日間は無理ゲー。逆にいうと、コーディングくらいであれば割とサクッと実戦レベルにはなれるかも？という算段での、未経験採用です。

## 本人のスペック

* HTML/CSS は、自分のサイトを作ろうと思って触ったことがある程度で、特にスクール等には通っていない（サイトもまだ公開していない）
    * FTP, SSH, Git という単語は知らなかった
* 大学生
    * ただし、休学中
* 女性
    * 性別はエンジニア適正に関係ないと思うけど、珍しいかなとは思うので一応記載
* 芸術系
    * ここポイントかも。キレイなデザインを見てテンションが上がったり、モノを作るということに根源的な喜びを感じないと、モチベ的にきついかと思うので。

# カリキュラムという名のログ

## 初日

* 支給マシン（Mac）のセットアップ
    * 弊社では世間的には利用者の少ない Mac が標準OSなので、慣れてもらうためにも初期セットアップをやってもらいます。
    * セキュリティ関係の設定やインストールするソフトは指示に従ってもらいます。
* 出退勤システム（MoneyForward）の説明
* IDE（PHPStorm）の概要説明
    * [Brackets](http://brackets.io/)を触ったことがあるとのことで、割とすんなり。

## 2日目

MDN マジ神。入門書不要。MDN を使って基本知識を解説していきます。

* Web開発の基本を解説（座学）
    * [ファイルの扱い](https://developer.mozilla.org/ja/docs/Learn/Getting_started_with_the_web/Dealing_with_files)
    * [HTMLの基本](https://developer.mozilla.org/ja/docs/Learn/Getting_started_with_the_web/HTML_basics)
    * [CSSの基本](https://developer.mozilla.org/ja/docs/Learn/Getting_started_with_the_web/CSS_basics)
    * [JavaScriptの基本](https://developer.mozilla.org/ja/docs/Learn/Getting_started_with_the_web/JavaScript_basics)
    * [ウェブサイトの公開](https://developer.mozilla.org/ja/docs/Learn/Getting_started_with_the_web/%E3%82%A6%E3%82%A7%E3%83%96%E3%82%B5%E3%82%A4%E3%83%88%E3%82%92%E5%85%AC%E9%96%8B%E3%81%99%E3%82%8B)
    * [ウェブのしくみ](https://developer.mozilla.org/ja/docs/Learn/Getting_started_with_the_web/How_the_Web_works)
* HTMLの基礎を解説（座学）
    * [HTMLをはじめよう](https://developer.mozilla.org/ja/docs/Learn/HTML/Introduction_to_HTML/Getting_started)
    * [head には何が入る? HTML のメタデータ](https://developer.mozilla.org/ja/docs/Learn/HTML/Introduction_to_HTML/The_head_metadata_in_HTML)
    * [HTML テキストの基礎](https://developer.mozilla.org/ja/docs/Learn/HTML/Introduction_to_HTML/HTML_text_fundamentals)
    * [HTML要素の一覧](https://developer.mozilla.org/ja/docs/Web/HTML/Element)
* マークアップしてみる
    * マークアップがしっかりしていて、なおかつ文書構造が見た目からも判別しやすい教材として、自治体サイトを活用
    * [世田谷区](http://www.city.setagaya.lg.jp/)のサイトの適当な下層ページ（どれかは忘れた）で、見出し、箇条書き、表組み、画像、外部リンクが揃ったページを見て、ソースを見ずにHTMLを作ってみる
* CSSの基礎を解説（座学）
    * [CSSの構文](https://developer.mozilla.org/ja/docs/Learn/CSS/Introduction_to_CSS/Syntax)
* スタイルを付けてみる
    * マークアップしてみたHTMLの見出しなどを、世田谷区サイトに似せて付けてみる

## 3日目

引き続き世田谷区サイトに似せてCSSを当てていきます。

* サイドバーを作る
    * float の練習
        * 社内外から今から教えるならFlexboxじゃないの？というツッコミがあったが、既存サイトの修正の仕事もあるので、まだfloatから知っておいたほうがいいという判断
* 座学
    * [ボックスモデル](https://developer.mozilla.org/ja/docs/Learn/CSS/Introduction_to_CSS/Box_model)

## 4日目

ヘッダー・フッター・サイドバーを揃え、ウェブサイトらしい構成を作ってみます。

* ヘッダーを作る
    * position を使ったレイアウトの練習
* ulを使ったナビゲーションのマークアップとスタイリング
    * 先頭のマークを消したり、縦に並べたり横に並べたりのアレ
* jQuery基礎（座学）
    * 社内外から今から教えるのにjQuery？というツッコミがあったが、既存サイトではまだまだ使われてるしconcrete5もまだjQueryに依存してるし…。いいじゃん、jQuery教えたって！
    * 資料は公式の[jQuery Learning Center](https://learn.jquery.com/)を使います。

## 5日目

JavaScriptに慣れつつ、案件で頻出するjQueryプラグインを触っていきます。

* jQuery プラグインを導入してみる
    * 実戦でよく使うライブラリに慣れておくことと、JavaScriptに対する恐怖感を和らげるため、簡単に動くというイメージを持ってもらう
    * [jQuery Smooth Scroll](https://plugins.jquery.com/smooth-scroll/) - とりあえず、入れれば動く
    * [Slick](http://kenwheeler.github.io/slick/) - 言わずと知れたカルーセルの決定版
    * [Magnific Popup](https://dimsemenov.com/plugins/magnific-popup/) - 言わすと知れたモーダルの決定版

以上で、マークアップの基礎の基礎は終了です。

## 6日目

ネットで入手できるフリーのデザインカンプをコーディングしていきます。支給されたデザインを再現するという、コーダーのお仕事の実践編です。

[こちらがお題です](https://www.sketchappsources.com/free-source/3840-connected-cars-landing-page-sketch-freebie-resource.html)。Sketch App Sources からダウンロードできます。

なぜSketchかというと、タイポグラフィやカラーリングなどある程度のCSSはSketchが教えてくれるため、実習の時間短縮が可能だからです。カラーピッカーで色を取ったり、フォントサイズを合わせたりは、１回やれば十分。

* Sketch の基本的な使い方
    * スタイルの取り方とパーツの書き出し方程度
* Flexboxの解説
    * [A Guide to Flexbox](https://css-tricks.com/snippets/css/a-guide-to-flexbox/)
* CSSでの実現手法についてディスカッション
* 黙々と作ってみる
    * 余白、フォントサイズ、グリッドについて、デザインと実装の差分について逐次指摘して直させる

## 7日目

* フォームのマークアップの概要（座学）
    * [HTMLフォームガイド](https://developer.mozilla.org/ja/docs/Learn/HTML/Forms)
* 引き続き黙々とコーディング
    * 随時デザインとの違いについて指摘
* 納品クオリティの担保
    * 入れるべきChrome拡張
        * [HTMLエラーチェッカー](https://chrome.google.com/webstore/detail/html%E3%82%A8%E3%83%A9%E3%83%BC%E3%83%81%E3%82%A7%E3%83%83%E3%82%AB%E3%83%BC/ohdllebchmmponnofchalfkegpjojcaf?hl=ja)
            * 閉じタグ漏れなど、初学者にありがちなミスをサクッと指摘してくれるため、重宝します。
        * [HTML5 Outliner](https://chrome.google.com/webstore/detail/html5-outliner/afoibpobokebhgfnknfndkgemglggomo?hl=ja)
            * マークアップにあたっては、デザインの再現だけでなく、文書構造としても適切であることが求められます。アウトラインを可視化できるこのツールは非常に便利です。
        * [Web Developer](https://chrome.google.com/webstore/detail/web-developer/bfbameneiokkgbdmiekhjnmfkcnldhhm)
            * JavaScript を無効にした状態での確認、ブラウザデフォルトCSSの無効にした状態での確認、alt属性値の可視化、あたりが初学者にとって必要な機能ですが、それ以外にも様々な便利な機能があり、フロントエンドエンジニア全てにおすすめできる拡張かなと思います。
    * バリデータ
        * [HTMLバリデータ](https://validator.w3.org/)
        * [CSSバリデータ](http://jigsaw.w3.org/css-validator/)
* セマンティックの基礎
    * [HTMLでのセマンティクス](https://developer.mozilla.org/ja/docs/Glossary/Semantics#HTML_%E3%81%A7%E3%81%AE%E3%82%BB%E3%83%9E%E3%83%B3%E3%83%86%E3%82%A3%E3%82%AF%E3%82%B9)

まで、7日間の研修終了！実践編、たった２日で終了。

# 8日目以降の主な研修

実際は実践編の期間は１週間ほど取ってクオリティを詰めたかったのですが、新人が入ったのでコーディングの仕事ができるよ〜とFacebookでつぶやいたところ、早速お仕事の依頼が取れてしまったので、研修強制終了。翌日からは実際のコーディング案件を担当させています。

## 8日目

* デザインが .ai で支給されたので、Adobeのインストール
    * イラレで切り抜きのレクチャー（ここよくわからないので、社内のデザイナーにバトンタッチ）
* [Semantic UI](https://semantic-ui.com/) の解説
    * Semantic UI を使う理由は、普段よく使うというわけではなく、支給されたデザインからの逆算です。あと初心者にも使いやすい
    * 弊社CTOのオススメは[Tailwind CSS](https://tailwindcss.com/docs/what-is-tailwind/)なのですが、最初に使うには難しいので…。

## 10日目

* Git の使い方と初期セットアップ
    * 教材は当然、[サルでもわかるGit入門](https://backlog.com/ja/git-tutorial/)
* メディアクエリの解説
    * [CSSでメディアクエリ(Media Queries)の基本的な書き方、記述の意味を理解し、「何となく使う」を卒業する。](https://wemo.tech/839)

## concrete5 テーマ作成

クライアント確認の合間を塗って、弊社監修の『[世界一わかりやすいconcrete5導入とサイト制作の教科書](https://amzn.to/2JBRxD8)』を使って、concrete5のテーマ制作とテンプレートカスタマイズについて自習させました。

本を使っての自習はだいたい丸２日間で終わらせました。concrete5のテーマ制作は、考え方が独特なのでつまづく人も多いのですが、詰まった時のサポートさえあれば正直かんたんなので、これくらいで学べます。

# まとめ

もちろん足りない知識だらけなので、都度知識は補填しながら、１ヶ月が経過しました。現在は２つ目の案件のコーディングを担当しています。

自分がこの業界に入った時（10年ちょっと前）に比べると、何もかも楽になったものだとしみじみ思います。

何かしらの参考になれば幸いです。

# 追記

覚えるの無理じゃね？的な反応も多いので追記します。

で、7日でこれ全部覚えるのは**もちろん無理**。

ただ、外注ではなくチームのメンバーなので、実案件の途中でも詰まったらどんどん質問してもらうし、その都度、あのとき教えたあの話だよ〜と戻って思い出させる必要があります。この記事はそのためのメモです。