現状において、プログラムというのは、OSの標準実装の
コンパイラや、SmallBASICのようなVisalBASICやC#を
覚えるのに向いているものやTinyBASICのような、懐かし
い入門言語のようなものがありますが、基本的に、開発言
語を覚え、その使用を学習すると、そうした言語を使用した
プログラミングが可能になります。
基本的に、プログラミングと言うのは言語によって構文
が異なるのですが、その記述の仕様と構造物の構築と、
当たり前に動く状態でソースコードを記述し、それを実行
する事になるのですが、こうしたソースコードを打ち込む
作業を【 コーディング 】と呼ぶのですが、インタプリタ
言語の場合、実行できる環境(つまり、コンパイル言語の
インストールおよび必要なフレームワークなどの実装を
行い、環境変数を設定して動く状態にする)があれば、
こうした言語の場合、ソースコードの実行がそのまま行
えます。
これに対し、コンパイル型言語と言うのはコンパイラを
使用する事になるので、コンパイラーを使った実行形式
に変更する必要があります。そのため、WINDOS環境
だとeceファイルを出力する事になるのですが、この場
合、その言語の統合環境を実装する必要があります。
この二者の違いは、前者は、実行段階で順を追って
機械語返還をして処理をするのに対し、後者は、一括変
換されている違いがあります。このため、インタプリタ型言
語は遅く、コンパイル型言語は高速に機能します。
とりあえず、こうした言語ですが、言語の系統が異なり
ますが、Linux環境だとg++を実装すれば、当たり前に
実行可能で、WINDOWS環境だと、前述のとおりコンパ
イル型言語は利用できます。LinuxでCやBASHは当た
り前に通るのですが、基本的に、CUIでのコンパイルと
なると上記のような状態になります。
MAC環境だと大昔からObject-Cがあったので開発
言語はそれがあったのですが、現在はX-CODEのイン
ストールでObject-Cよりもオブジェクト指向の強いものを
使えるようになっているのですが、基本的ン別途インストー
ルすればそういうのが可能になるのはどの閑居も同じです。
LinuxだとJAVAとC++ベースで考えると、Ecripsや
NetBeansがあるのですが、マイクロソフトだとVisualS
tudio Cominuty 2015アップデート3などでしょうか。
コンパイル型言語の場合、そんな感じになっているの
ですが、どの環境でもOSが入っている状態でそのまま
動くものが存在しています。
それは、
■ HTML
■ CSS
■ XML
■ JavaScript
です。基本的にタグで構成されているマークアップラン
ゲージとインタプリタ言語になるのですが、基本的に、
XML以外はHTMLファイルに包含してすべて実行す
る事が出来ます。
■ マークアップランゲージ
これに関しては、配置用言語なので、ワープロソフ
トが雑になったような状態でリッチテキストを作れる言
語と言う感じでしょうか。
その為、通常の2バイト文字の構成の文字まみれ
のコンテンツとは異なり、マルチメディアファイルを包
含したモノを構築する事が出来ます。
こう書くと少しわかりにくいですが、今のWEBを見
れば当たり前に見かけるものなんですが、SNSにおい
て動画や画像をアップできますが、それを投稿すると、
その投稿には、添付ファイルがそのまま表示されてい
ますが、あれはテキストとそうしたファイルを同時に表
示したモノになります。
プログラムのソースコードやメモ帳やテキストエディ
タではこうした事は出来ないので、あれは何かしらの事
をしてそれを行っているという事になります。
もともと、コンピューターのテキストの取り扱いと言う
のはテキストエディタの振る舞いで、2バイト文字も特殊
なモノに該当するので、それに対してマルチメディアファ
イルを配置する処理自体が通常とは異なる処理になりま
す。
それを行う場合に、HTMLを使って表示してあるわけ
です。
とりあえず、後述でローカルに置いたHTMLファイルと
ネット上のそれの違いについて書きますが、基本的に、
あれはリッチテキストを表示する言語が使われているの
は確かです。とりあえず、そういう事が出来るのが、マー
クアップランゲージになっています。
それがXMLやHTMLになります。XMLはタグで詳細
情報を入れこむ事が出来るので少し違うのですが、HT
MLではそうした事が出来ます。
その為、【 著作権などに注意が必要 】なんです
が、基本的に
■ 音声ファイル
■ 画像ファイル
■ 映像ファイル
などを配置する事が出来ます。これとは別に、現在の開
発言語では当たり前に利用できるウィジェットの利用も当
然のように行えるので、フォームを配置しテキストボックス
やチェックボックスなどの配置が可能になっています。
その為、一通りのことはできるようになっていますが、
基本的に配置用の言語でしかないという事は確かです。
これとは別に、印刷物やワープロソフトでのレイアウト
レベルでそれをコントロールするものがCSSになります。
これについては、
【 タグに対しての属性指定が出来る 】
ので、オブジェクトのプロパティー指定のようなものになり
ます。つまり、フォントを例に出すとフォントの種類や、スタ
イル、配置、色、背景色などを設定できます。
これとは別に、CSSであh、サイズは位置の設定が可能
なので、従来のHTML飲みで行った場合の雑な配置やサイ
ズ指定の縛りが存在しない末期な状態の回避が出来ます。
その為、ピクセル単位でで位置やサイズを指定して、そ
れを配置していくような事が可能です。これに加えて、x-In
dexなどで配置における上下関係を指定できるので、グラ
フィックツールのレイヤーような処理が出来ます。これに加
えてフィルター処理もありますから、配置するものが平面的
な状態からそうではない構造で構成する事が出来るように
なります。
HTMLも背景にイメージを配置できるので、サイズ指定
をしてコンテンツを作ると、レイアウトとして画像とテキスト
の構造物を二層のみで構成する事は可能なんですが、
z-Indexに関しては、10層くらい用意できるので出来る
事が異なります。
基本的に配置に関してはこの二つになります。ちなみ
にActive-Xコントロール系のモノに見られるプラグイン型
の追加機能に関してはEmbedタグなどで呼び出すのが
過去の方式(現在のHTML 5.0は異なります。)なんです
が、FALSHやJavaアプレットなどは完全に外部プラグイ
ンになります。
つまり、そうした機能を実装するかいないあの話にな
るのですが、HTMLで処理しているモノではなく、外部参
照になります。
ブログを書く時ンいHTML表示があるので、現在だと
こういうのが特別だという認識はないと主追いますが、
とりあえず、そういう仕様になっています。
■ WEBで使うスクリプト言語
これに関しては、VBScriptの選択肢もあったので
すが、Internet Explorerのみですから、実質的に、
これを制御する言語と言うのは、JavaScriptの一択
になっている感じです。
記述に関しては、C言語などで見かけるハッシュ
で囲まれた文法なので、スティーブ・ジョブズ氏が
アップルから追い出される前あたりの時代のBASIC
しか知らない人だと全くわかりません。
と言うよりも、構文があからさまに違うので、そ
の場合、JavaScript以前にマークアップランゲー
ジが解りません。つまり、こういう分野だと、それが
知識であった場合、昔取った杵柄は存在しません
から、何も知らない人と同じレベルでスタートする
事になります。その為、それがあるのでモノが解る
と言うのは酷い錯覚なので、そういう間違いをして
る輩は信用しないほうがいいのは確かです。w
とりあえず、これについてですが、基本は
■ ヘッダーにソースを書き込む
■ Bodyタグで呼び出すかScriptタグで呼び出す
ような状態になります。
とりあえず、こうした言語については、古いBASICインタプ
リタのように
【 スティーブ・ジョブズ氏しかマウスの存在を用意しなかった 】
ような時代のそれだと、基本的にマウスアクション用の処理が
存在しません。というおも汎用デバイスで存在sないのですか
らなくて当然ですが、そんな不便なモノがマウスの普及したネ
ットが普及した時代に存在するわけがありませんから、通常の
処理におけるマウスの処理は入っています。こういうのは、時
代が違うと現在のようなタッチパネルが大々的に普及してる時
代とは異なるので、そうしたモノが存在しないのと同じです。
とりあえず、JavaScriptに関しては、18年前に初版が出てる
ような書籍ですら、マウスの取り扱いについては処理系が確立
されているので、当然のようにそれが使えます。
とりあえず、基本となるのは、蒸気の方式での利用になるの
ですが、WEBオーサリングツールに関しては、タグ挿入型のア
クション登録が可能になっています。その為、
■ CSSのようにタグ挿入で機能するもの
もあります。例えば、ページの読み込みと同時に表示させる
<BODY OnLoad='alert("文字列");'>
のようなBODYタグに挿入するものや、
<a href="sample.html" onMouseover='alert
("文字列"):'>リンク先の名称やアドレス</a>
のように、マウスが重なるとアラートが出る処理もできます。
また、HTMLではフォームを作れるので、
<form method="post">
<input type="button" value="OK" onclick='alert("文字列");'>
</form>
のようにすると、ボタンと連動したスクリプトになります。つま
り、WEBなどもそうですが、ソースコードを見て怪しい場合は
押してはならないという事になります。とりあえず、Googleの
翻訳が【 押すな!=Push Me 】と言う【 フリ 】を覚えた
ように(というか、通常は、 押すな =Don't Push Me で
すが。)押せと言うのが不利で実はトンd目御なく危険な何か
であり、酷いことになるかもしれませんから、注意が必要です。
つまり、オンロードで変な場所に飛ばされてはいないだろう
か?かあるたがう事も重要なので、やはり、モノを知ったほうが
防御はしやすくなるのでその辺りの知識はあったほうがいいと
いう事になります。
とりあえず、構造物でいうと、
■ ページ全体の表示非表示及び、ブラウザのステータ
スバーなどの処理だとボディータグ
■ マウスの処理などについては、ボタンやリンクなどの
タグ
になります。しかし、これは、その振る舞いがダイレクトに来る処
理ですが、プログラムにいて発生する、数的処理及び、変化が
発生する条件は、
<sclipt Langage="JavaScript">
<!--
プログラム
//-->
</sclipt>
をBodyタグに実装したり、ヘッダーにそれを記述する場合だと、
<html>
<head>
<sclipt Langage="JavaScript">
<!--
プログラム
//-->
</sclipt>
</head>
<body>
<sclipt Langage="JavaScript"><!--
Functionで指定した名称
//--></sclipt>
</body>
</html>
となります。とりあえず、通常は、
<sclipt Langage="JavaScript">
<!--
function 任意の名称()
{
処理
}
//-->
</sclipt>
となります。構文としては、C#や他の言語で見られるように、
ハッシュの間にそれを入れる状態になるのですが、他の言語
では[ 0,1,2,3,4 ]などでアレイを構築できるのですが、Jav
aScriptでは、
■ 変数名 = new Array();
で指定するようで、その次の行に
■ 変数名[0] = 処理
■ 変数名[1] = 処理
:
:
のようにして複数のデータからモノを選ぶような構成になるようで
す。こうした処理を入れる場合も、他の言語と同様に、ハッシュに
包含した記述になるわけです。
この言語については、マウスの座標取得や、マウスの移動や
ドラッグなど操作系を全て命令で呼び出して、リアクションの設
定が出来ますから、動的なモノが作れるのですが、通常のサイト
の構成では、ヘッダーで記述したモノをファンクションに指定され
た名称でボディーで呼び出して利用するか、もしくは、CSSを外
部において、Link RELで呼び出すように外部に用意したスクリ
プトファイルを呼び出して使うような方法になっています。
とりあえず、まともに動くPCや現行のブラウザが動く環境で
当たり前のモノを作る場合だと知識でいうと
■ HTML 5.0
■ CSS 3.0
■ JavaScript 2.0
の構成になるので、あまり古めかしいHTMLやJavaScriptの
本を参照しなほうがいいのですが、JavaScript 2.0だと、過
去には影響が出ていたJSONがまともに動くとかもありますし、
タグについてもCANVASタグの登場やVIDEoタグの登場で記
述がつい安く泣て居たり、自由度が高くなっているので、昔の
それでは難しい事が出来るようになっているのですが、これに
関しては、コンパイラなどは全く必要としません。
あと、外部プラグインでいうと、FLASHやJAVAアプレットな
どがありますが、前者はアクションスクリプトでAirなどを使用
することになり、後者は、単なるJAVAのソフトウェアになるので
開発環境は別途必要で、実行はプラグインを利用する事にな
ります。現在は実装機能が面白いことになっており、ビデオカ
ードの性能を高くしておく必要がありますが、WEB-GLという
WEB 3Dの技術が存在しており、プラグインでそうした機能を
実装するものもありますし、そうした機能を合わせてゲーム開
発なども行われています。
現在は、こうしたローカルで作れるHTMLファイルの生成で
ゲームを作れるようなゲームエンジンも複数登場しているので、
いろいと多機能に利用できる状態はあります。
■ ローカルとサーバの違い
とりあえず、上記の方法が制作時のソレなので、基本的に
ネットにも何にも繋がっていない、個人が所有するPC内部で
の処理になるのですが、これがネットワークとなると話が変わ
ってきます。
とりあえず、個人が使っているネットワークと言うのはロー
カルネットワークでDTCP-IPとかDNLAだと思うのですが、
個人が保有しているモノ以外だとインターネトのサーバ上の
アカウント辺りではないかなと思います。
とりあえず、上記の方法では、確かにインターネット上に
は作るホームページは作れますが、ソーシャルの写真やコ
メントなどと同じでそれをアップロードしない事にはどうにも
なりません。
こうした場合に、自前でサーバを所有しているか、当たり
前にきょいなインフラを所有捨てる企業のサービスを利用し
てレンタルサーバの状態で使うかの二択になります。
実際の話、この辺りの話はサーバ云々になるので割愛
して、個人おコンテンツのアップロードと種類について書くと
サーバ上にアップする作業はそうなんですが、実際の話、
ソーシャルで何かをアップするような状態とは異なる状態
になります。
まず、こうした処理ですが、ファイルのアップロードに
ついてはブログ同様にファイルの一括アップロードとかも
可能なんですが、そもそも、アカウントの考え方そのもの
が異なります。
まず、ソーシャルですが、運用しているサービスをユー
ザーが利用している状態ですから、ここにアカウント全体
の管理権限がある訳がありません。
というか、アカウントの管理は個人でもできるので少し
解りやすく書くと、サービスと言うのはその仕様に合わせ
た設定の変更なんですが、
【 WEBのアカウントと言うのは、何も入っていない
PC内部にある空のフォルダーのようなもの 】
です。そして、アプリケーションへのアクセス権限は当然あ
りませんし、そKに存在しているサービスと言う音は、CGI
の解放の有無(Perlの利用が出来るか否か)や他のスク
リプトの利用の有無(Cシェルなど)で、基本的にApatch
などが走ってるだけの構造物と考えたほうがいいです。
つまり、グローバルIPが存在し、ソレにDNSでアドレス
が当たってる状態のものに外部からアクセスできる状態
になってるのがそれです。
その為、レンタルサーバを借りても中身は何もありま
せん。当然、これをサイトとして構築していくことになるの
ですが、アカウントのツリー攻勢などは自分で考える事
になります。
ソーシャルが普及しているので、今現在、URLにリンク
すると言うのが何か解らない人は減っていると思うのです
が、これが
■ 相対パス
■ 絶対パス
となると話は変わってきます。基本的ンい、URL全てが、
絶対パスになるのですが、ソシャルでつぶやく場合にボ
タンがないようなサイトだと、リンクを張ってつぶやくしか
ないですが、その場合の 【 http://www.~ 】 と
言うサーバから存在している何かが絶対パスです。
当然、アドレスがそれですから、そこにしか飛ばないの
で、この指定をすると、間違いなくそのアドレスにアクセス
できます。
ハイパーリンクの仕様は既にわからない人は殆どいな
くなってるような気がするのですが、ざっくり書くと
【 ネット上のアドレス表記であるURLに対してアクセス
するための指定番号のようなもので、それを行う処
理がソレ 】
になります。まぁ、Pixivに飛ぶとか、YouTubeに飛ぶと
か、現在のソーシャル連づのブログの状態を見ればリン
クが特別なモノではなくフツーの機能なのはいうまでもな
いですが、アカウントを取得しているという事は、
【 サーバ名などは固定されている 】
ので【 Http://www~サーバ名/ユーザー 】
のような部分は省略しても問題ないという話になります。
これは、ディレクトリーの移動をコマンドラインで行った
場合の事になるのですが、基本的に同一階層の物の場
合、ファイル名の指定だけで実行できるという内容があ
りますから、同一の仕様なので、同一階層の同地フォル
ダー内のファイルの場合、パスの指定を簡略化できます。
http://www~サーバ名/ユーザー/1.jpg
http://www~サーバ名/ユーザー/index.html
と言う状態があったとします。この場合において、
【 index.html 】
<html>
<head>
</head>
<body>
<!--
【 上記の、1.jpgを呼び出したい 】
-->
</body>
</html>
となっており、1.jpegを呼び出すとしましょう。この場合、
そうすろと、絶対パス指定だと
<img src="http://www~サーバ名/ユーザー/
1.jpg">
となります。しかし、これは同一階層のファイルなので、
<img src="1.jpg">
で呼び出しが可能になります。これが、相対パス指定です。
基本的に、処理において無駄な記述をだらだらとしても
仕方ないので、相対パス指定と言うのが存在しており、この
条件だと、
【 ./1.jpeg 】
が同一階層の表記になります。しかし階層構造が深くなる
と、アドレスの記述が必要になる為、
【 ./フォルダー名/ファイル名 】
と言うことになります。つまり、
【 同一階層 = 同一フォルダー名 】
なので、その条件が合わない下層だとそうした指定になり
ます。では、この1.jpegを新規に作ったIMGフォルダーに
移動したとしましょう。アカウント内にフォルダーを作れば、
それは一つ下の階層になりますから、
【 ./IMG/1.jpg 】
がそのアドレスになります。では、この画像をGalleryの画
像として利用するとして今後増やすことを想定し、index.
htmlとは異なる【 Gallery 】フォルダーにあるa.html
から呼び出すようにするとしましょう。そうなると、
■ index.htmlからのa.htmlへのリンク
./Gallery/a.html
■ Galleryからの1.jpgへのリンク
./IMG/1.jpg
となるわけです。しかし、これだと一方通行なので相互リ
ンクをさせないとこうz物として破たんしているので、Gall
eryをindex.htmlに戻れるようにする必要があります。
そのばあい、一つ上の階層で単一のものですから
../index.html
になります。これが上層フォルダーが2つ存在した場合に
アクセスする場合だと、フォルダーの名称をそれぞれMA
INとSUBとし、それぞれに1.htmlを用意した場合上記の
記述だとどうしようもないですから、
../MAIN/1.html
のようになります。これと同時にファイルのアクセス権限を
用意する必要があるのですが、基本的に降雨構造物をH
TMLファイルを配置してコンテンツを作るだけでも発生しま
す。
この時に、スクリプトやCSSや、マルチメディアファイ
ルを配置するような状態になる訳です。それを行う事で
リッチコンテンツの表示が可能になるわけです。
しかし、コンテンツにおいて取得できるものがローカル
のキャッシュ程度に限定されるので、サーバ内のデータと
のように常時記録されたものとは異なる状態になります。
さーっば内のデータと言うのは、HTMLをアカウントに
配置するようにアップロードしない事にはそれを常時利用
する事はできませんから、サーバサイドスクリプトが必要
になる訳です。
とりあえず、HTML+JavaScriptの構成で動かした場合、
ローカルデータしか扱えないので、サーバサイドに何もない
場合、次にアクセスした時にそれを維持する事が出来ません。
つまり、ブログとかで実装されているアクセスカウンター
の系統はまたt九作れませんし、WORDPRESSなどで作
れるようなサービスの記事の保存が全くできないわけです。
その為、こうしたモノを使う場合、Perlを使ったスクリプト
で動的な処理をさせるというほうほうになります。つまり、ク
ライアントにストックしたのでは処理できない物をストックす
るための処理系統を実装する必要が出てきます。と言うの
も、オープンで公開しているようなサイトの場合、アクセスと
言うのは自分のクラウドストレージではないので、当然のよ
うに他人も来るわけです。そうなると、自分がオフラインの時
に発生したアクセスおよびそお挙動と言うのは、全くわかり
ませんし、そのデータを取得する術もありません。
そうした場合、サーバサイドスクリプトで、何かしらの処理
が発生するようなものを用意しておく必要性があるわけです。
そうなると、これはHTMLだけではどうしようもない状態に
至ります。と言うのも仮に何かしらのデータを取得したとして
も端末がアクセスしているのはクライアントなので、そのデー
タのストックをするようなスクリプトがサーバサイドにない場
合、そのデータと言うのはアクセスした個人おくら案とに残す
術が存在する程度の話でしかないからです、となると、サー
バで何かが残るような気形式御サービスは少し無理になっ
てきます。つまり、この場合、クライアント内部に保存された
データを作る選択はあるとしても、これをサーバで使う術が
ないわけです。そうなると簡素な掲示板のようなものやカウ
ンターすら作れなくなる訳です。とりあえず、そうした点から、
HTML+CSS+JAVASCRIPTの構成のものをアカウントを
用意して公開するというのは
【 表示したモノがネットから見れるようになっただけ 】
でしかありません。その為、データを記録するファイルが存
在する場合にそれに記録するような処理の場合、ローカル
サイドのスクリプトではなく、サーバサイドスクリプトになり
ます。つまり、ブラウザで鵜後k鵜クライアントサイドスクリ
プトだけだと、他人がアクセスした時に死量出来るブログ
のような構造物や動画や画像を取り扱えるソーシャルのよ
うなものが作れないわけです。
その為、取得できる情報が増える事はいろいろと作れる
物の変化があるのでいいのですが、それを記録し、アクセ
ス権限がある程度広目にしてあるものだと様子が変わって
くるわけです。
そして、使う物で変わってくるのですが、データ管理なども
ローカル彩度でモノを作る場合にCVSやSQLなどを使う事例
がありますが、サーバも同様で、そうしたモノを何かしらの形
式で保存するとして、それをコントロールするものを作る事を
仮定するクライアントサイドスクリプトではなくサーバサイドス
クリプトになるような気がします。
つまり、不特定多数の空くせそ予備アクションにおいての
何かしらの記録が残る条件だとクライアントサイドスクリプト
だけではどうしようもない訳です。
とりあえず、サーバサイドスクリプトの場合、サーバソフ
トを入れたローカル駆動の環境を作ってLANで利用する
ような状態で、学習する事になるのですが、基本的にクラ
イアントで動かすものとは少し異なるものになります。
IISが選択できるので、そういうのが出来ないわけでは
ないのですが、そのままインストールした直後だと基本
的には前述のローカルサイドスクリプトになります。
IISを追加した場合だと、OSそのままだtごPowersh
ellとか.netFrameworkでコントロールすることになり
ますが、SQLは表示順で入ってるわけではないですし、
サーバの場合はいろいろと追加する事になります。
とりあえず、OSのインストールされた環境だとブラ
ウザは実装されているので、ブラウザベースで動くも
のは構築可能で、JavaScriptなどを使った物だと環
境を問わずプログラミングが可能になっています。