ここで言うWebについてはサイトやアプリケーションの事になるのだけど、
WebサイトやWebアプリを構成する技術を覚えるのには骨を折る。
とは言っても、常に使い続けないとすぐに忘れてしまう。そらで使いこなそうとするならなおのこと。
なぜならその技術はいくつかの複数の技術が必要であるからだ。年々徐々に進化しつつあるのも面白くもありまた厄介でもあるが。
何を学習すべきかを明確にする為にここに覚え書きしておくとするなら、
Web上でサイトなりアプリを作ろうとしたとき、
まずはHTMLを覚えるべきだ。
HTMLはタグというくくりで文書をマークアップする言語であり、Webページを構成する骨格となる構造をページを表示させる為のブラウザに読み込ませる文書の形でもある。
その構造の基本となる書き方と、表示させる文章や画像などを囲う主なタグの種類と用途を覚えれば、自由に操れるようになる。
挿入する文章や画像などの種類に応じてタグの種類を使い分け、囲うだけで良い。
(囲わないタグもあるが)
その階層構造や役割をよく把握する必要がある。
それはまさに人間で言うところの骨、骨格である。
次にCSS。
CSS(カスケーディングスタイルシート)はページの装飾または肉付けといったところである。
色やグラデーションや画像を使用した模様付けから、文字の大きさやフォントの種類やレイアウトの幅や高さや並びなど、装飾から構成のようなページの肉付けを行う。
人間でいうと筋肉や皮膚などを担当すると言える。
ここまでの技術でもサイト作りは充分である。最近のCSSは高度な装飾からアニメーションまでこなすので上の二つだけでも問題ない。
アプリや企業サイトや、伝達という目的以上の事をするなら足りないかもしれないが。
しかしそれらを補完するTwitterやFacebookを始め多くのWebサービスをウィジェットなどの形で取り入れマッシュアップして補う事で、作業の時間や費用などのコストを抑えられるのでそれらを考慮すればたいていの機能は問題ないと考える。
そして重要だがあれば良い技術として、
画像処理ソフトを使えれば、ページの見栄えと伝達力が格段に上がる。
Photoshopがその代表格であるが、フリーソフトのGIMPなども充分な機能を持つ。
Photoshopマスターになる必要もないが、写真の修正やバナーやボタンの画像や簡単なイラストが作る事ができればWebの用途としては充分である。
それ以上にできれば活躍の場はさらに広がる。
これもCSSに加えて装飾ではあるが、衣服や化粧といったところか。
ここからはプログラミングになる。
Webに最も必要とされているであろうJavascriptがある。
フロントエンド、つまりページの表示に関わる部分をプログラム制御するのが主だ。
HTMLやCSSだけではあらかじめ記述した内容しか表示できないので、閲覧者のアクションに応じてページに様々な動きをダイナミックに与える事ができる。
一部、サーバとの通信も可能になりバックエンドの処理も可能になってきている。
AJAXやサーバ側のプログラムたしてNode.jsなど。
変数などの型付けがなく厳密でなく他の言語よりは学習する量も少なく、実行環境もブラウザのみなので最も入門しやすい。
次はサーバ側で動かすプログラミングができると完璧である。
自分の場合は、メールフォームを作るのに必要なので覚え始めた。
主に閲覧者の動きに応じて、アクションを返す点ではJavascriptも似た役割を果たせるが、メールフォームなどの入力した物をサーバで受け取りページをそれに応じた形に整形して返すような動きを持たせる事ができる。
ブラウザ上のみだけでの処理ではなく、ブラウザとサーバを介する処理になる。
そのときのプログラミングの選択肢として、サーバ上でCGIという形式で使えるならどの言語でも可能でメジャーな言語なら大体はどれでも使う事ができる。PHPは別でPHPとして許可されていれば可。
しかしサーバをレンタルする場合は対応している言語も確認する必要もあり、人間向けに書かれたプログラミング言語を機械が読み取れるように翻訳するコンパイルの必要のない軽量言語を使うのが良い。
今の主流は、
PHP Ruby Python Perl
である。
Web上でのできる事とその目的はほぼ同じなのでどれを選んでも構わない。
プログラミング自体その文法や目的は基本部分は共通しているので一つ覚えたら、複数チャレンジしてみても幅が広がるので良いかもしれない。
多くの商品などのデータを扱う場合は、
データベースも上記のサーバサイドのプログラミングとあわせて覚えておくとよい。
データベースのアプリケーションを備えたサーバにサーバサイドプログラミングでアクセスしSQLというデータベース用の言語を操作し入力や削除や更新などを行う。そしてその整形されたデータを再度プログラミングでページに書き加えて表示する。
商用のデータベースもあるが、オープンソースのMySQLなどが始めやすい。
もし自分でサーバを立てるとしたら、
サーバの、主にlinuxとそのコマンドとサーバ周り及びインターネット自体のおおまかな知識を学んでおくと、
Web上に存在すサイトやアプリやサービスやその他の通信技術に理解が深まり、かつ規模の大きいサービスを作るのに役立つ。
Javascript が人間でいうと関節だとしたら、
サーバサイドプログラミングやデータベースは内臓器官や脳機能などだろうか。
サーバは心臓部だろうか。
Illustratorが使えると、
ロゴ作成や拡大しても粗くならないSVG画像やFlashの素材やサイトのカンプのレイアウトを作りやすい。
Flash は近年ではアプリ作りやオリジナルのアニメーションには良いが、
Web用としてはスマートフォンの多くがその表示に対応していないので、それがいつの日か解除されるのかという点で今はまだ様子を見る必要があるように感じる。表現力の要る案件などでは需要はまだまだありそうだが。
スマートフォンのデバイスにおける表示においても、スマートフォンにおけるWeb用へのFlashのコード変換サービスもあるらしい。
しかしJavascriptやCSSの組合せでアニメーションも代替可能になってきているのでそちらに切り替えても良い。
しかしFlashの表現力は豊かなので使う場を考えながら使うのが良いかもしれない。
Javascript を覚えたら、そのライブラリでありそれを扱うjQueryを覚えると
Javascript より簡単に豊かな表現をブラウザの差異を吸収しつつ実現できるので、そちらも余裕があれば覚えると良い。
大規模なサービスの場合はJava servlet を覚えると良い。
Web上で使えるJavaのサーバサイドプログラミングということになるが、CGIと異なり最初の起動以外は同時に多数な各閲覧者への処理ができるのでユーザーを待たせる処理時間がCGIより少なく済むので、利用人数の多い場合には適している。
Java の文法とservlet の仕様を学習すると良い。
Webの場合、C言語でcgi を作成すると非常に高速な処理ができるらしい。自身は行った事がないのでいつかチャレンジしてみたい。が大規模サービスのバックグラウンドに向いてそうだ。そんな機会も無いような気がするが。
とはいえ、機械語などを除く全ての今現在のメジャーの言語の成り立ちを知るにはC言語を学んで損はない。
確かにこの言語から入門する道もあるのにはうなづける。
以上、とりあえず上記のHTMLからデータベースまでの技術をマスター、とまで行かなくともレベル1くらいにして学んで行けば、たいていのWebサイトなりWebアプリなりのサービスは作れるようになっていく。後は独創的な発想が必要になりそうだ。
狭く深くから探求するのも学問の学ぶあり方としては良いが、
広く浅くから始めて見るのも、Webでは良いかと考える。