未経験からWEBサービスを開発する為に必要な知識
カタカタジムの開発者タカモリです。 私はIT企業とは全く関係のない企業で働いているのですが「WEBサービスが作りたい!」という思いから、かれこれ約4年前くらいにプログラミングを初め、今は自分の時間で専らカタカタジムの開発に専念しています。
今日はそんな私が「WEBサービスを開発したい!」と私のように思っているプログラミング初学者を対象に、最速でWEBサービスを開発する為の方法について思うことを述べていきたいと思います。
WEBサービスを作るにあたって必要な知識
まず、WEBサービスを作るにあたってどのような知識が必要になのかがわかっていないとサービスは作れません。
WEBサービスを作るにあたって必要な知識は大きく分けて以下のようなジャンルになるかと思われます。
- インフラ
- バックエンド(サーバーサイド)
- フロントエンド
また、これらの他にもデザインや利用規約・マーケティング等のプログラミング以外の知識というものも必要になるかと思われますが、今回はプログラミングに焦点を当てて解説していきたいと思います。
ではこれらの知識をどのように学習すれば良いのかについて、私なりの考えをまとめていきますね。
プログラミングにおける基本的な知識
まず上記の中に「インフラ」や「バックエンド」・「フロントエンド」という言葉が出てきましたが、これらはそもそもどういう意味なのでしょうか。
簡単に説明すると「インフラ」とはプログラミングが動作する環境を整えるための知識。「バックエンド」はサーバーで動作するプログラミングの知識。「フロントエンド」は、あなたのパソコンで動作するプログラミングの知識です。
少しでもプログラミングを学習したことがある方はわかるかもしれませんが、所謂「環境構築」がインフラに当たり、「HTML」や「CSS」はフロントエンドの知識、「PHP」や「Rails」などの知識がバックエンドに該当します。
しかし、こういった分け方も会社や人により多少意味合いが異なる場合もありますので、だいたいそうなんだという感覚で覚えていただければOKです。
WEBサービスを作るためにはこれら全ての知識が必要になりますが、最速でWEBサービスを作るためには深入りする必要のない知識もあったりしますし、できる限り効率よく学習しなければならないことは言うまでもありません。
では初学者はどのようにプログラミングを学ぶべきなのでしょう。
初学者はまずフロントエンドから学べ
まず、多くの方がプログラミングの効率的な学習方法について情報提供していると思うのですが、一番初学者にとって大事なのは「挫折しないこと」です。
プログラミングは思っているより難しいので、できる限り簡単なところから始めないと、嫌になったり諦めてしまう方も多いのです。
では何故フロントエンドから学ぶことが良いのでしょうか。それは後述する「環境構築」を必要としないからです。つまりインフラの知識ですね。
プログラミング初学者にとって「インフラ」の知識は厄介です。とても大事な知識なのですが、正直プログラミングとは全く異なった知識が必要になるので「思ってたのと違う!」と初学者はなりやすいのです。
その点、フロントエンドは環境構築も必要とせず、すぐに開発に取り掛かることができます。
フロントエンドには以下のような種類があります。
- HTML
- CSS
- JavaScript
HTMLやCSSはプログラミング言語とは言えないのですが、この中で三番目のJavaScriptについては完全なプログラミング言語です。
環境構築は置いておいて、まずどんなものなのかと言うことについて一通り学習していきましょう!
自分のパソコンで動作する簡単なゲームのようなものまで作れれば完璧ですね!
環境構築は時間をかけろ
フロントエンドの知識が学習できたあなたは、続いて「バックエンド」の知識が必要になりますが「おっとその前に」やってくるのが環境構築です。
自分のパソコンでプログラミングを楽しめるようになったあなたは続いて「サーバー」で動作するプログラミング言語の学習に入るわけですが、サーバー側のパソコンを動作させる為には、あなたのパソコンにサーバーとしての機能を持たせてあげる必要があります。
これを環境構築と言ったりしますが、これを行うことで以下に記述するサーバーサイド言語が動作します。サーバーサイドの言語は複数あるのですが、代表的なものは以下の通りです。
- PHP
- Ruby
- Java
ここで、あなたに是非やって欲しいことがあります。 それはマインドの問題なのですが。。 絶対に「早くサーバーサイド言語をやりたい!!」と思わないでください!
何故かというと、環境構築は初学者が思っている以上に大変です。 ここで挫折する方も多くおられると聞いていますし、現に私が学習していたときも、わけがわからず「いつになったらプログラミングできるんだよ!!」とかなり戸惑った記憶があります。
環境構築は「プロでも難しい」作業です。初学者のあなたにとって簡単なはずがありません!それを理解して環境構築を是非乗り越えてください。
そしてできる限り環境構築は焦らず、一つ一つを理解していくのがオススメです。何故なら、たまたま環境構築がうまくいったとしても、後ほど必ずインフラの知識は必要になりますし、エラーの原因が環境にあったなんてことも珍しくはありません。
とは言いながらも奥の深い世界ですので、全てを理解する必要はありませんが「焦る必要はない!」これをしっかり胸に刻んでおいてください。
サーバーサイド言語でより実践的なWEB開発へ
環境構築を乗り越えられたあなたはようやくの思いで、サーバーサイド言語にありつくことができました!
サーバーサイドの言語は複数あるのですが、WEB開発で使われている言語は以下の通りです。
- PHP
- Java
- Ruby
フロントエンドと違って、サーバーサイドはこれらの言語全てを覚える必要は全くありません。どれか一つを徹底的に学習すれば良いのです。
私はPHPを学習してきましたが、他の言語も人気です。 難しさの違いは私の感覚だとあまりないように思いますが、どれもオススメなので優劣は控えます。調べてみて自分に合った言語を選択してみてください。
サーバーサイド言語ができるようになると、データベースの操作やログイン機能の作成など、WEBサービスに直接必要なものが作れるようになります。
とは言いながらも、バックエンドも難しい知識が必要ですしフロントエンドとは違って、動作していることが目に見えにくい世界です。
バックエンドはそのWEBサービスのセキュリティにも大きく関わってくる箇所ですので、学習には相当時間がかかるはずです。
いざWEBサービスを公開へ
フロントエンド・環境構築・バックエンドと乗り越えたあなたは遂に念願のWEBサービスを作り切ることができました!
是非実際に運用されているサーバーにそれらを載せて運用してみてください!
・・・
と、その前に「どうやって乗せればいいねん!!」
そうです。ここで再度インフラの知識が必要になります笑
頑張って自分のパソコンでWEBサービスを作り切れても、実際のWEBサービスとして運用する為には、またもや「インフラ」の知識が必要になるわけですね。
インフラ恐ろしい。。 もちろん、WEBサービスで異常があった時もインフラが原因であることもありますので、ここの知識は超重要です。
本番で動作する環境にあなたのソースコードをアップロードして初めて、WEBサービスの完成です。
「いやぁ長かったですねぇー」。
しかし、ここまで来たあなたは相当な知識を要しているはず。
そのサービスが成功するしないは、別の話にはなりますが、間違いなくあなたの実力を担保するものになります。
WEBサービスの改良を続けていこう!
最後にはなりますが、WEBサービスは作って終わりではありません。作っている道中に時間の都合で妥協した点や、改良したい点など次々と出てくるはずです。
もちろんバグが発生する可能性もありますし、バグのないサービスなんてないと言われているのも事実です。
そういった日々の改良がWEBサービスの運営には必要です。
しかし、ここまで乗り切ったあなたならもう余裕ですね! もちろん私も力の限り改良を続けていきます!
共に頑張っていきましょう!


