Web プログラミングは難易度が高い?

記事
IT・テクノロジー

Web プログラミングは難易度が高い?

プログラミングを学習する際に、どこから始めれば良いか迷う事があるかと思います。Web プログラミングは、フリーランスでも仕事が多く、人気の分野ですがやや難易度の高い分野になります。この記事では、Web プログラミングに必要な要素を考えながらその難易度を検証します。


Web プログラミングに必要な要素は?

Web プログラミングは、前提として Web ブラウザを利用して使うプログラムを作成することになります。 Web ブラウザで利用するために、いくつかの制約事項があります。

* 表示できるのは HTML
* プログラムの実行は Javascript
基本的にこの二点は、Web ブログラミングの二つの大きな前提条件になります。

従って、Web プログラミングをする上での最低限のスキルは、

* HTML・CSS が書ける
* Javascript が書ける
という事になります。CSS は書かなくても機能の実現はできますが、使いやすく、見栄えのするアプリに仕上げるには CSS も必須ということになります。

一方で、デースクトップのアプリの場合は、どうでしょうか? デスクトップの場合、プログラミング言語を含めて選択肢がたくさんあるので、単純に比較する事ができません。 C や C++でも開発できますし、いろいろなプラットフォーム(OS)で動作させることを考えると、Java や Python なども便利です。 いずれのプログラミング言語の場合でも、基本的に、開発用の PC で動作させることのできるプログラミング言語ならば、プログラミング言語の基本を学習すれば開発ができます。

そう考えると、学習する内容が多い、Web プログラミングの方が難易度が高いように見えますが、実際は少し違います。

最近のアプリの基本は、GUI(Graphical User Interface)を利用して、「直感的」な操作が可能なアプリにするのが主流です。 ゲームなどのアプリは少し事情が変わってきますが、「実用的」なアプリの場合は、こうしたユーザーインターフェースの設計がアプリの使い勝手を左右するので大切になります。

実は、こうした GUI の実装は、データを処理するプログラムとは少し違った知識や書き方が必要になります。

Web プログラミングの場合は、ユーザーインターフェースを作るのが HTML と CSS と考えることができます。 一方で、デスクトップアプリの場合は、利用する言語や OS などによって、このユーザーインターフェースの作り方が違います。 Python では、Tk を利用する場合が多いですし、Java の場合は、独自のユーザーインターフェース設計のためのライブラリ(Swing など)を用意しています。Linux 系では、X ウインドウをベースにしたウインドウシステムのライブラリを使う事になります。

こうした事を考えると、Web プログラミングでもデスクトッププログラミングでも学習に必要な分野は余り大きな差がなくなります。

プログラムを動かす仕組みが違う!
では、プログラムを動かす仕組みはどうでしょうか?前回紹介したように、プログラムを実行するには、プログラムを何らかの形で、動作させるシステムのメモリにコピーして実行する仕組みが必要です。デスクトップのアプリの場合は、開発用の PC に実行環境を作れば、あとは簡単に実行できます。しかし、作成したデスクトップアプリを配布するには、実行環境を含めた設定を行う必要が出てきます。

通常は、インストーラのような形で、実行環境を含めて設定ができるようなパッケージを作成して配布するのが一般的です。 ただし、デスクトップアプリの場合は、実際に利用するシステムのインストールだけではなく、どのようにパッケージを配布するかも考える必要があります。これは、開発には直接関係はないのですが、自分自身でそのプログラムを利用する場合以外には、配布方法を考えておく必要があります。

Web アプリの場合は、Web サーバーに作成したアプリを入れて設定をする必要があります。前回お話ししたように、Web アプリの場合は、Web ブラウザを利用して、アプリのページにアクセスして、必要なプログラムを Web ブラウザが自動的にダウンロードしてくれるので、利用者は特別な設定をしなくても実行することが可能になります。また、URL がわかればプログラムを利用できるので、作成したプログラム自体を配布する必要はなくなるので便利です。

開発時とサービス公開時では違う動作環境
Vue や React などフロントエンドのフレームワークを利用して開発する場合、開発時は、開発用の PC で簡単に作成したプログラムを実行する仕組みが用意されています。従って、説明通りに操作すれば、特別な知識がなくても実行できます。実際に、インターネットにアプリを公開する場合は、どの Web ホスティングを利用するかで、設定のやり方が違います。しかし、多くの Web ホスティングのサービスでは、必要なファイルを、Web サーバーに簡単にアップロードする仕組みを提供してくれているので通常は大きな問題にはなりません。

ただし、開発用の環境と公開用の環境では、設定が若干異なる場合があって、その辺の対応をしないといけないので少し面倒です。

一つの例は、React や Vue の場合は、殆どの場合、一つのページに表示する情報を書き換えてページの切り替えを行なっています。 1ページアプリの場合は余り問題はないのですが、React Router や Vue Router をハッシュモード以外で利用する場合には、Web ブラウザでページの URL を指定した場合の動作がうまくいかない場合があります。開発用の実行環境ではこうした対応を予めしているので問題にはなりませんが、公開用のサーバーは別途設定する必要がある場合が殆どなので、動作に問題が出る場合があります。

こうした場合には、Web アプリが動く仕組みやサーバー側の設定などの知識が必要になってきます。

プログラミングをする上では、こうした、Web アプリの仕組みやサーバー側の設定や動作を知らなくても大きな問題にはなりませんが、実際に起きる問題を対処する場合には、こうした知識があるかないかで大きな差が出てきます。

複雑なアプリになるとさらに面倒に!
それでも、フロントエンドで完結できる Web アプリの場合は、余りデスクトップアプリと大きな差はありません。 しかし、バックエンドの処理を実装したり、 Web ホストのデータベースなどの利用が必要になってくると、サーバー側の知識は必須になってきます。

Web サーバーを動作させて、HTTP のデータのやりとりをサポートすると同時に、バックエンドのサービスを起動して、バックエンドの処理を行う設定も必要になってきます。さらに、フロントエンドとバックエンドの別々のプログラムでどのようにやり取りをするかの取り決め(プロトコルや API)をきちんと理解する必要が出てきます。

所謂、フルスタックのエンジニアを目指す場合には、そうした知識や経験が必要になってきます。

まとめ
Web プログラミングは、何となく簡単なイメージがありますが結構複雑な仕組みの上で動作しています。 シンプルなアプリの場合は、デスクトップのアプリと余り差はありませんが、複雑なアプリになってくると、ネットワークやサーバー側の知識が要求されます。

また、サービスの公開の際には、開発したイメージを Web サーバー側に設定する必要があるので、デスクトップのアプリに比べると面倒な部分が出てきます。その分、プログラムの配布の心配をしなくて良いので、シンプルな部分もあります。

簡単な Web プログラミングから始めて、少しづつサーバー側の知識や経験を広げていく道筋を立てて学習に取り組むのがコツです! 順番にステップアップしていけば、Web プログラミングは決して難しい物ではありません!
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す