web-step-01

Web系エンジニア-脱入門への学習ステップ

はじめに

 今回の記事の内容ですが、「どの程度の事が出来れば、Web系エンジニアの入門を卒業し初級に入ったと言えるのか」と、それまでの学習ステップをまとめてみました。
 最近の言葉ですと「ロードマップ」という言葉で置き換えられることもありますが、ここでは”いつ”までにやらなければならないとか、具体的な計画表でもありませんので、学習ステップという言葉で進めていきます。

注意事項

・これらの学習ステップは筆者の独断と偏見にて書かれています。
・学習スピードや習熟度は人それぞれですので、学習時間の目安などは記載していませんが、早い人だとこの位という程度の記載はあります。
・プログラミングは物を作ってみないと始まりませんので、どの内容を覚えたから次のステップという意味合いではなく、これが作れたら次に進んでもいいかなという感じで進めていきます。
・Web系エンジニアの脱入門ですので、フロント・バックエンドエンジニア両方が被っています。
・デザイン力は考慮していません。

  


第一ステップ(基礎知識と静的画面の作成)

 最初のステップは基礎学習です。どんな勉強も同じですね。
 最近ですと[HTML&CSS]から入っていく人も多いですが、エンジニアという肩書を目指すのであれば、やはりコンピュータ関係の基礎知識は必要です。
 では、コンピュータ関係の基礎知識が無ければ先に進んではダメかと言うとそんな事はありません。[HTML&CSS]を勉強する傍ら、インターネットやWebの基礎知識、コンピュータ、ネットワークの基礎知識を学んで行けばいいと思います。

 次に[HTML&CSS]でフォームが作成できる程度になったら、[JavaScript]に入って基礎文法や[DOM&Event]関係の処理を勉強していきましょう。そうすれば、[JavaScript]を使ってフォーム入力時のエラー処理なども出来るようになります。
 ここまで来ると、お問い合わせフォームやログインページなどが作成できるようにり、氏名の所に数字を入れたらエラーを表示するといった事が出来るようになります。

  

  


第二ステップ(Webサイトの構築と動的画面の作成)

 ここまでは、パソコンとメモ帳があれば出来た内容ですが、これからは実際のWeb環境を作成して、その中でプログラミングを実行していく事になります。
 そうなってくると開発環境の構築など、なかなか普段行わない作業をするようになり、専門的な事と相まって、あきらめてしまう方が出てくる場所でもあります。
 しかし、今の時代ネットを探せばインストール方法の動画や丁寧に解説してあるサイトもありますので、そういった所を頼りにしながら環境構築を行ってください。

 今回、最初に覚えるWeb系の言語としては[PHP]を選択しています(この時点ではフレームワークは使いません)
 理由ですが、[PHP]が1995年、[Ruby]が1995年、[Ruby on Rails]が2004年。今ですと[Ruby]と[Ruby on Rails]はセットで覚えることが多いですので、生まれが先だった[PHP]を先に勉強しておきます。

 「[PHP]と[Ruby]どっちがいい?」という様に、[PHP]と[Ruby]は常に比較される関係にありますが、最終的には気にせず両方覚えましょう。エンジニアである以上複数言語を操れた方が幅が広がります。
 また、どちらも[Perl]の影響を受けていますので、興味のある方は[Perl]も勉強してみてください。今では[Perl]で作成されたサイトは少なくなりましたが、作れば普通に動きますし、個性のある言語で使っていて面白いです。
※筆者はログ集計などで今でも[Perl]を使ってたりします。

 ある程度[PHP]の勉強が進んでくると、フォームに入力した値をサーバ側に保存できるようになります。
 これが出来る様になれば、入力したデータをサーバ側で処理できるという事ですので、「新規ユーザ登録処理、ログイン処理、商品登録など」入力操作に対して出来ることが一気に広がります。

  

  


第三ステップ(データベース作成とバージョン管理の実施)

 開発にはデータベースとソースコードのバージョン管理も重要なアイテムの一つですので、これらの学習も漏れなく実施しておきましょう。

 データベース側の学習内容としては、データベースの構築とテーブル作成、基本的なSQL分の書き方が基本となります。
 表結合などの書き方も、将来データベースを扱う上では必須となりますが、この時点ではデータの登録と参照を主に学習していけばいいと思います。受け取ったデータを[PHP]側で処理をするのも大切なステップの一つです。
 また[MySQL]には、Web経由から管理できる[phpMyAdmin]というツールがありますので、これらを使って管理していきましょう。

 バージョン管理ソフトでもある[Git&GitHub]は、広く一般的に使われているソフトです。
 解説サイトも多いですので、それらを参考にしていけば、基本のバージョン管理をしていく事はそこまで難しくはないと思います。

 引き続き[HTML,CSS,JavaScript]に関しても、浅く広く学習を続けていきましょう。

  

  


第四ステップ(フレームワーク、MVCモデルの学習)

 [HTML,CSS,JavaScript,PHP,MySQL,Git,GitHub]の基礎的学習を行っていれば、この段階でもちょっとしたECサイトの仕組みを構築することは可能です。
 しかしながら、実際の開発を行う場合「コードの統一性、開発時間の短縮」などが求められる事になり、言語の学習だけでは足りない部分が出てきます。
 そのため、これらの要求を達成するために「フレームワーク、MVCモデルの学習」が必要となってきます。(MVCモデルを目指し開発されたフレームワークを使用することで、開発工数やコードの可読性は大きく向上します)

 [Ruby]のフレームワークと言えば[Ruby on Rails]が有名ですので、あまりフレームワークの選択で迷う事は無いかと思いますが、[PHP]の場合では多くのフレームワークが存在しています。
 その中でも、今回学習対象とするフレームワークは[Laravel]を選択しています。
 これは、比較的古いフレームワークを改善する目的で登場してきましたので、より現代的な記述方法が可能になっており、可読性が高く使いやすい所がポイントです。あと日本語のマニュアルもあるのもポイントです。

 また、フレームワークを手にすることで、データベースとの連携が容易になります。(テーブル名を書いて呼び出すことが出来たりします)
 そうなってくると、格段にデータベース操作がやりやすくなる半面、きちんと[key,index,unique]を理解しないと検索に時間が掛かるようになってきます。
 ですので、この時点でリレーショナルシップの概念や表結合の仕方、それに必要な[index,key]の設定方法についても学習を行っていきましょう。

  

  


第五ステップ(第二言語の学習)

 ある程度フレームワークが使える様になると、デザイン面を考慮しなければ、自分が作ってみたかったサイトや、よく見かけるECサイトなども構築することが出来るようになります。(この時点で「脱入門」だと考えても良いかと思います)
 そして、このまま初級者の道に入り、実戦経験を積みながらより深く勉強しても構いません。

 しかし、エンジニアとして領域を広げたいと思っている場合は、別の言語取得を目指すのも悪くありません。
 初級から中級に入るには実戦経験なくして達成することは出来ないでしょう。逆に言えば実戦経験を積んでいる間に、別の事を学習するチャンスも出来ます。

 [PHP]と[Ruby]両方の言語が使用できれば、サイト開発の幅も増えることになりますので、欲張って複数言語の習得を目指すのをお勧めします。

  

  


最後に

 以上で、「Web系エンジニア-脱入門への学習ステップ」になります。
人それぞれ、得意不得意はあるかと思いますが、ある程度勉強したら、とりあえず作ってみるという意識は常に持っておいた方が良いでしょう。実際に作ってみないと、自分の現時点での力は、なかなか掴めないものだと思います。

 それと、脱入門までの時間ですが1年~1年半ぐらいは掛かるのではないかと思います。時間が取れる人であれば半年で習得する人もいるかもしれませんが、プログラミング未経験の人が独学で勉強するとなると、やはり1年は見ておいた方が良いかと思います。
 コンピュータ専門学校卒の方は、2年間勉強していることになりますので、実は1年間と言ってもそんな長い時間ではなく、それぐらい必要だと思って本格的に勉強をしていった方が良いでしょう。

 最近ですと、プログラミングスクールなどで「3ヵ月間でエンジニアに」という宣伝なども見ますが、正直な感想を言うと3ヵ月でエンジニアは無理かなと。よく言ってエンジニア見習い前の作業者といった感じでしょうか。

 私自身、採用の現場でそういった彼らと向き合う事がありますが、「基礎がない、コンピュータに関する知識がない」という所は共通していると思います。
 ですので周りに流されずに、着実に勉強→実績→勉強→実績を積み重ね、出来ることを増やしていった方が、結果的にエンジニアになれる道に近づけると思います。