気の向くままに辿るIT/ICT/IoT
webzoit.net
ホームページ作成・ウェブ開発

ホームページ作り方と開発リファレンス一覧

ホーム前へ次へ
サイト内検索
カスタム検索

【ハードウェア/Hardware】

【スマホ・タブレット】

【パソコン・PC/Personal Computer】

 近年スマートフォンやタブレットといった形態(携帯?)の端末も登場していますが、それ以前にパソコンとは?PCとは?というところに触れてみます。

【ソフトウェア/Software】

【シングルボードコンピュータ/Single Board Computer】

 英国ラズベリーパイ財団が、途上国含む多くの人々にコンピュータを!と教育用に開発したRaspberry Piは、その安価さと消費電力の低さから教育用、電子工作のみならず、家電や通信機器、ロボットなどの組み込み系、ベアボーン(半完成品のハードウェア)の主要パーツ、キーボードやマウス、ディスプレイをつなげてパソコン代わりにと幅広く使われはじめ普及しはじめています。

 尚、むき出しの基板の状態ではなく、ベアボーンなどと呼ばれるシングルボードコンピュータを搭載した半完成品が、市販されていることもあります。

【シングルボードマイクロコントローラ/Single Board Micro Controller】

 AVR、PIC、ARM、Arduinoなど技術者による試作・製品化などの利用に留まらず、個人の趣味で電子工作、近年では、IoT分野などで使われることも多い電子部品で、ARMはラズパイ採用のCPUとしても有名、2005年に誕生したArduinoはその圧倒的な扱いやすさから人気の高いマイコンです。

【電子工作・IoT】

ホームページ作り方と開発リファレンス

 さてパソコンなどハードウェアについてざっとおさらいしたところで、このページでは、ホームページの作り方を導入部としてIT/ICT関連情報を広く眺めてみます。

【Internet インターネットとは?】

【Homepage/HP ホームページとは?】

【やさしいホームページの作り方】

【HTMLとCSS (1)】

 HTMLはホームページの構成となる基本となるお約束事をまとめた仕様、CSSはホームページの装飾を設定する為のお約束事をまとめた仕様です。

【HTMLのタグを使う】
【ちょっぴりCSSに寄り道】
【HTMLに戻りましょう】

ここまで来るとホームページのカタチができますから、試しに公開してみましょう。

【ホームページをインターネットに公開する方法】

さらにテクニックを見てみましょう。

【HTML+CSS (2)】

【ホームページの見栄えを整えてグレードアップ】

【HTML】

【ホームページでフォームを作ってみる】

【CSS スタイルシート】

【HTMLちょっと高度なテクニック】

【JavaScript】

 JavaScriptは、ホームページにとって最も身近なブラウザ用に作られたプログラム言語であり、HTMLやCSSにできることも含め、できないことも、いろいろできます。

 お約束事に沿って列挙するとその構造、装飾通りにブラウザに表示されるHTMLやCSSが静的な言語と表現されることがある一方、JavaScriptは、これに加えて、リアルタイムに動く時計を表示したり、アニメーションを表示させたり、電光掲示板のようなものを作ったり、キー入力に合わせて動く電卓や選択肢によって異なるページを表示するメニューを作ったり、動きのあるものも作れることから、動的な言語と表現されることもあります。

【JavaScriptテクニック作り方を解析】

【ホームページに華を添える】

 JavaScript以外にもホームページを華やかに彩る方法がいくつもありますからいろいろと試してみるとよいでしょう。

【W3C】

 ここまでは足早にとりあえずホームページを作ってWebサーバにアップ(アップロード)、インターネットに接続する環境さえあれば、自身で作ったホームページをどこからでも閲覧できる状態となること、様々なホームページ(ウェブサイト)がどのようにできているんだろう?という概要を見てきました。

 ところで・・・HTMLやCSSは誰がどこで決めたお約束事なのでしょうか?

 HTMLやCSSは、当初、インターネット関連のRFC仕様を策定しているIETF/Internet Engineering Task Forceといわれる団体が管理していましたが、後にコンピュータを使っている人なら誰でも聞いたことがあるようなマイクロソフトやアップル、デルやHP等々といったコンピュータ関連の企業や団体数百社が名を連ね、構成される組織W3Cで決められ、往々にしてその構成企業であるブラウザを作っている企業・団体が、その仕様をブラウザにも反映させています。

 W3Cが、ある仕様を決める前から既にあった(バージョンの)ブラウザだったり、何らかの事情でW3C仕様通りにいかないブラウザがあったり、シェア拡大等の競争原理から独自仕様が生まれたり、時代の変化があったりで利用するブラウザによって挙動が異なることもあるのが現状です(し、HTML5の策定にあたっては紆余曲折もあります)が、基本はW3C仕様です。

 W3Cで決められたHTML、CSSの仕様には、実は、それぞれ時系列的に策定されたバージョンや派生があります。

 最新バージョンの機能が最も豊富なわけですが、ブラウザを利用する端末には複数あり、そもそも同じブラウザでも微妙に違ったり、また、ブラウザ各社の対応状況から、そのすべてが、すぐに反映されるというわけでもないので、その辺りについては、注意が必要です。

【HTML】

【HTML】 HTMLバージョン(HTML2.0/HTML3.2/HTML4.0/HTML4.01/HTML5)

【HTML】 HTMLタグ

【CSS】

【ECMAScript ECMA-262 Edition 5.1ベースのJavaScript文法】

 JavaScriptは誰がどこで決めたお約束事なのでしょうか?

 JavaScriptは、今のFirefoxというブラウザ(とそれを提供しているmozillaにつながる)当時ブラウザを作っていたネットスケープ社が開発、後発のマイクロソフトも独自のスクリプトを作り、それが後にECMA仕様ECMAScriptとして標準化されることになったものの、今尚、独自仕様も残っているというのが現状で、一般的な通称・呼称は、JavaScriptです。

【HTML+CSS+JavaScript】

 HTML/CSS/JavaScriptを使って作られたものの総称としてDHTMLと呼ばれた時期がありましたが、次世代Webという意味合いを込めたWeb 2.0という表現に置き換わり、今では共に使われなくなっています。

【CHTML携帯電話用HTML簡易版】

 ケータイ用のホームページ作成言語としてHTMLの簡略版を仕様としたCompact HTMLの略CHTMLが作られました(が、CSSは流用で特に定められず、後に普及し始めるスマホ用はPC用ブラウザ同様のHTML/CSSが利用されています)。

【XHTML=HTML4+XML1.0】

 HTMLタグも含めてデータとして考えた場合、HTMLのお約束事って余りに曖昧過ぎたよねということから、HTMLの先祖でもあるSGMLを基に厳格な仕様として派生したのが、XML 1.0とHTML4を融合させたXHTMLです。

 Webページの自動作成、更新にあたり、タグを扱いやすくすると共に表示内容をデータとして捉えるCGIスクリプトなどにおいて一時期勢いのあったXHTMLも現実にはHTMLに置き換わる新たなバージョンには成っていません。

 ちなみにXML/XSL/XSLTについてはもう少し先で。

【XHTML Basic=PDA/携帯電話などPC以外の用途用XHTML】

 厳格な仕様であるXHTMLによるケータイ用のホームページ作成言語仕様として作られたのがXHTML Basicです。

 但し、XHTMLがHTMLの後継でないことからケータイ用でもその多くはCHTML(/HTML)が使われており、HTMLの後継バージョンとしてHTML5が仕様化されていること、スマホでは、PC用途同様のHTMLを利用できることから、スマホ用にはHTML4及びHTML5が利用されています。

【URL/URI】

 HTML事情にある程度詳しくなったところで、ちょっとびっくりするかもしれない情報を1つ。

 ホームページの[http://*****.*****]、これなんて呼びます?

 ここからは、覚えたテクニックももちろん使いますが、更に便利で高度な技を磨いていきましょう。

【CGI】

 CGIとは、ブラウザ上で指定した内容をインターネットやローカルネットワークを介してWebサーバと通信し、サーバの実行結果をブラウザに送信して反映させる接続方法とその仕組みです。

 この仕組みを利用するプログラミングをCGIプログラミングと呼ぶこともあり、CGIプログラミングにはいろいろな言語が利用可能です。

 当初は、Web登場以前の1986年からあったサーバ用のスクリプト言語でWebとの相性もよかったPerlが最もよく利用されていましたが、時代の変遷と共に1991年にリリースされたPython、1995年にリリースされたPHP、日本人が開発、2005年にリリースされたRubyなどもよく利用されます。

【Perl】

【CGI Perlの使い方】

 とりあえず、手っ取り早く実行できるコマンドプロンプトやTera Term Pro(TTSSH)などエミュレータのコンソールで実行してみましょう。

 次にローカル環境でウェブサーバというものを意識して利用してみましょう。

 LAMPP、XAMPPなんてフレーズがありますが、LAMPPは、Linux/Apache/MySQL・PostgreSQL/PerlといったCGI作成、実行環境に必要なOS、Webサーバ、DB、スクリプト・プログラミング言語の頭文字であり、XAMPPは、Linuxだけでなく、WindowsやMac OS X、BSD系UNIX、Solarisなどクロス(X)環境で利用でき、Perlの代替としてPHPやPython、Rubyなども想定されています。

 このページの流れでいうとこの時点では必ずしもデータベースは必要ありませんが、Webサービスを構築するなら何れにしても必要となります。

 ちなみにMySQLの権利をOracle社が取得したことでMySQLのオリジナルコード開発者の下、完全なるオープンソースを維持できるようにとMariaDBが開発されるに至りました。

 ここでは、WebサーバをApacheではなく、より簡単にインストール&利用可能なAN HTTPD、データベースはMySQLではなく、PostgreSQLを使って、Windows、AN HTTPD、PostgreSQL、Perlだから略してXAPP?環境をローカルで作ってやってみました。

 XAMPもよいですが、サーバOS上にApacheを立ててできたらもっといいですよね?

 仕事などで本番環境があって自宅でも勉強がてらやってみるってことなら、尚の事、本番と同じでできれば、尚良いですよね。

 そんな時に最適なのが、無料で仮想マシンを作成できる仮想化ソフトウェアを使うことです。

 これなら手持ちのPC上に仮想化ソフトウェアをインストールしてそれで作成した仮想マシン上にOSを走らせることで1台のPCでクライアントサーバ環境ができるから、サーバにしたOS上でWEBサーバを立ててクライアントと仮想ネットワークでつなげば、本番環境さながらの開発環境を構築できます。

 オープンソースのLinuxやPC-UNIX、BSD系のOSなら、多くの場合、インターネット上から無料でISOディスクイメージを入手できますから、業務や本番でそれらを使っているなら、自宅やテスト環境として、まさに限りなく近い環境を構築できるので重宝します。

 ローカルで作り込んで完成したらレンタルサーバを借りてインターネットを介してやってみる。。。なんて、以前はそんな方法しかありませんでしたが、仮想化ソフトウェアがあれば、その必要はないかもしれませんね。

 自前でサーバを持つこともできなくもありませんが、CGIを利用可能な無料や有料のレンタルサーバを借りることもできます。

 レンタルサーバの仕様通りに設定して作ったプログラムを実行できるようになったら、Webブラウザからレンタルサーバ上のCGIプログラムを呼び出して実行してみることができます。

 もし、エラーが出るなどしてうまく実行できない場合には、以下を参考にしてみてください。

 尚、Success CGI!と一行表示する程度のプログラムなら問題ありませんが、借りることになるレンタルサーバは、まず、ほとんどの場合、他のサイトと共有でしょうし、CGIの実行はサーバ自体に与える影響が大きくなる可能性が多分にあり、プログラムエラーなども負荷をかけることになり、場合によっては、それが原因でサーバが落ちることも皆無ではないのでサーバ自体や他サイトに迷惑をかけないよう、出来る限り、ローカル環境でできることはやってプログラムを完成させた(プログラムの完成度を上げた)上でサーバ上で実行するようにしましょう。

 ちなみにレンタルサーバか仮想マシンかに関わらず、ブラウザだけでなく、OSがWindowsでもTera Term Pro(TTSSH)などエミュレータのコンソールからサーバに接続して実行してみることもできます。

 但し、共有レンタルサーバでは、FTPやSSHの接続数を制限している場合がほとんどですから、常に接続できるとは限らず、そういうこともできるということであって常用するような利用方法ではありませんから、仮想マシンを利用するとよいでしょう。

【FastCGI】

 CGIの実行速度を解決する手段を提供するインタフェース仕様の1つとしてFastCGIがあり、PerlやPHPなどでも利用することが可能となっています。

 従前のCGIでは、ユーザーの要求に応じてプロセス生成、実行、破棄を都度行う為、同じプロセスを後で使おうが使うまいが、ユーザーからの要求があればあるほどプロセスが増え、サーバへの負荷がかかりますが、FastCGIでは、プロセスをメモリ上に保持しておくことで無駄なプロセス生成と破棄をする必要がなくなるので、その分、効率がよくなります。

 CGIプログラムとは別に、このプロセスを都度生成しなくて済むような仕組みを持つサーバサイドプログラミング言語にASPやJSPがあります。

 こうしたFastCGIを含むCGIプログラムでは、リンク先のウェブページを動的に生成するウェブサイトや動的な処理を伴う複雑な仕組みを持つウェブサイトの他、BBS・掲示板、お問い合わせフォームなどのメール送信フォームや動的なショーケースやショッピングカートの作成などもできます。

【HTML/CSS/JavaScript/Perl】

 これまでにWebサーバとかFTPとかSSHとか出てきましたが、Webサーバというのは数あるサーバの中の1つで、そもそもサーバとかクライアントというのは、しばしば、オープン系とも呼ばれるクライアント・サーバシステムにおける呼称であり、Web系のシステムにおいては、クライアントに当たるものがブラウザであるということ、サーバとクライアントはネットワークを介して接続されている為にネットワークを介したデータの送受信が必要な中でファイルの転送に使われる手順がFTPであり、より安全な通信手順がSSHであり、サイトへのアクセスを行っている間、情報を保護し、より安全に通信を行うことができる仕組みであること等々、どういう環境の中でどのように使われているかということを体系的に捉えられると、また少し理解も進むことでしょう。

 さて、ここからはウェブとその周辺技術について見ていきましょう。

 ネット閲覧がメインでホームページを作成してみたいというところから入った人にとっては、なんだそりゃって話かもしれませんし、必要に迫られたところだけをかいつまんで覚えてなんとか使えるようになった人や、IT/ICT業界にいた・いる、いないに関わらず、コンピュータとは長年付きあってるけど分野が違うなどの場合、見た事や聞いた事はあるけど、要するに何?っていうものもあるかもしれません。

【IT・ICTとは?】

【クライアントとサーバを分割したシステムづくり】

 メインフレーム(汎用機)やミッドレンジコンピュータ(ミニコンピュータ)、オフコンなどのワークステーションと呼ばれるようなシステムでは、1台の本体とネットワークを介してモニター&キーボード(やその前身)から成る単一や複数の操作卓などがある場合も、その操作卓にはCPUやメモリ、HDDなどはなく、本体のソフトウェアを擬似的にエミュレーションしているに過ぎない構造です。

 近年のクライアントサーバシステムにおいては、後にセキュリティ上の理由から操作卓に近くCPUやメモリは持つが、HDDやUSBやCD/DVDなどの外部記憶装置を持たないシンクライアントも登場しますが、当初は、一般的なデスクトップPC1台1台にクライアント用プログラミング言語で作成したクライアント用のプログラムを用意し、サーバには、サーバ用のプログラムを用意することでクライアントサーバシステムが構成されていました。

 当初のクライアントサーバシステムでは、サーバの負荷分散などからバックアップとは別に用途別にサーバを分ける方がよいという風潮の中、データベース用、ファイル保存用、ネットワークプリンタ用。。。など用途ごとに物理的なサーバを複数台持つ構成でしたが、後述の仮想化が見直され、機能として広く利用されるようになると個々に分けた物理サーバの実稼働状況などからも集約する方がベターであるという方向性に変わりつつあります。

 インターネットがあるのが前提の時代では、当たり前のことですが、サーバとクライアントの通信には、相応の通信ネットワークが必要です。

 通信を行うに当たっては、共通化する為のお約束事が必要です。

 インターネットを介した通信(ウェブサイト閲覧)に当たっては、識別しやすい目印が必要です。

 名残惜しいか、名残惜しくないかは別として、ドメインの成り立ちにも名残があります。

【ウェブサーバ】

 ウェブサイト・ホームページを公開する為には、その目的のためにあるWebサービスを実行可能なソフトウェアがサーバとなるOS上にインストールされ、適切に設定されたWebサーバが必要となります。

 個人でもWebサーバを構築してホームページを公開することも可能と言えば可能です。

 但し、常時公開できるサーバを自前で用意するとなるとバックアップ含む複数台のサーバへの供給電源はもちろん、熱に弱いので室内やサーバ周辺冷却用機器などを24時間365日稼働させるとなると電気代だけでもバカにならず、個人がプライベートで利用する目的としては尚更、往々にして割に合わない為、ウェブサイト・ホームページ公開等でサーバが必要な場合、一般に公開済みのサーバスペースをレンタルすることになります。

 個人で運営するにしてもそうですが、営利企業なら、利益の最大化を追求しつつ、レンタルサーバを効率よく運営しようと思うと低コストのシステムを構築する方法を模索し、レンタル会員が増えるに従い無尽蔵にハードウェアを増設する必要のない方法を選択することが賢明と考えるのが普通ですし、サイトが増えるごとに無尽蔵にハードウェアが増えるということは、世界に唯一のIPアドレスがすぐに枯渇してしまうという課題に直面しますが、これら2つの課題解決策としてバーチャルドメインや仮想マシンを利用するといった仕組みも必要となります。

【DBとデータベースサーバ】

 プライベートユースでもCGIを使う場合、法人に至っては社内ネットワークシステムでの利用、または、インターネットを介して外部にサービス提供する場合、通常は、何らかのデータを大量に効率よく保持する必要があり、効率よくデータを保持できるデータベースというソフトウェアがインストールされ、適切に設定されたデータベースサーバが必要となります。

 オープンソースでも商用有償製品に引けを取らないデータベースソフトウェアも登場しています。

 従来のデータベースソフトウェアでは、その設定や操作はSQL/Structured Query Languageを前提としています。

【データベース接続】

 同じSQLを使う方法でもデータベースやプログラミング言語、時代や環境によっていろいろなデータベース接続方法があります。

【SQLを使わないDBとデータベースサーバ】

 技術が進歩し、量子コンピュータもそう遠くない未来に・・・という昨今、現実的な投資額で大量のデータを相応の転送量・速度で扱うことができる環境が整うに連れ、これまで見過ごされていたデータを分析したら官民ともに活用できるのでは?ということでそれらを膨大で集約しきれないという意味も込めた「ビッグデータ」と呼び、関心が集まっています。

 そんな中、データの転送量・転送速度をより高速化、効率化する為には、SQLを使わないっていう手もあるんじゃないか?というデータベースの考え方も出てきました。

【Home Server/Living Server】

 インターネット回線がADSL、光とブロードバンドとなって家庭でも高速なネットワークを利用できるようになった近年、音楽や映像をパソコンやタブレット、スマホ、液晶テレビを含む家電で共有しようという動きも。

 現在、過渡期もホームサーバーやリビングサーバーなどとも呼ばれ、今や間単に共有できてしまうのです。

【Math】

 2進数である0と1(ON/OFF)だけを理解するコンピュータは、OSや多くの場合、プログラミング言語が人間との溝を埋めてくれていますが、OSやプログラミング言語では、こうした0と1(ON/OFF)から成る1組を1ビットという単位で扱い、便宜上、一般に4ビット、8ビット、16ビット、32ビット、64ビット...といった単位で利用されます。

 コンピュータ上では、CPUの計算速度、メモリやファイルシステムの単位容量、通信におけるデータ分割単位のパケットの大きさ、画像や映像を0と1から成るデータと見た場合のサイズ、HDD容量などの単位としてビットが使われ、容量を表す場合には、8ビットが1バイト、1024バイトが、1KB(キロバイト)、1024KBが1MB(メガバイト)、1024MBが1GB、1024GB 1TB(テラバイト)。。。となります。

【ファイルシステム】

 サーバやクライアントにおいても、一般にその基本ソフトウェアとしてOSを持つのが一般的であり、プログラムにしてもテキスト文書にしてもファイルであり、何れにしてもファイルの扱い方が重要であり、このファイルを扱う仕組みをファイルシステムと呼びますが、OSの種類によってそれぞれ複数の方法や時の経過と共に更新された複数のバージョンがある場合もあります。

 また、OSの枠を超えてファイル共有する仕組みとしてLinux/*BSD/PC-UNIX、後にMac OS X/OS Xで間で共有可能なNFSやこれらに加え、Windowsとも共有可能なSambaもあり、Sambaでは、プリンタの共有も可能となっています。

 組み込み系と呼ばれる中でもモバイル環境はともかく、組み込み家電などにおいては、OSがない、ファイルシステムがないということもあり得ますが、一般には、両方を備えています。

【OS(オペレーティングシステム・基本ソフト)】

 OSは、アプリケーションやキーボード、マウス操作、モニタ表示などにおいてハードウェアとのやり取りを仲介してくれるソフトウェアです。

 OSと言えば、WindowsやMac OSを思い浮かべるかもしれませんが、実は、それだけではありません。

【*BSD/UNIX/Linux】

 1969年〜1972年にアセンブリベースで書かれ、その後、C言語で書きなおされたUNIXが開発されます。

 UNIXは、マシン上に組み込まれるUNIXカーネルとそれ以外の核となるコマンド群から成るユーザーランドのことであり、いわゆるOSの元祖です。

 当初、無償だったUNIXにおいて特許料を徴収することになった結果、大学研究においては、そのあまりに高額な費用を払えない為、1977年、代替として開発が始まったBerkeley Software Distribution(通称BSD)、その後、特許係争となり、その渦中にあった4.3BSD、特許を回避すべく登場した386BSD、このメンテナンスが停止状態となり、NetBSD、FreeBSDがリリースされ、特許に抵触しないことが認定された4.3BSD-Liteの仕様を取り込み、のちにNetBSDからOpenBSDが分離・独立。。。

 一方、1983年BSDの主要開発者の1人によって創立したSun Microsystems社が4.1cBSDを元にリリースしたSunOSは、1991年、BSDベースからSVR4ベースに切り替えるのを機に名称をSolarisと改名、2005年には、オープンソース版OpenSolarisが登場、Sun社がOracle社に買収されるとOpenSolarisの存続が危ぶまれるとみた有志によるOpenIndiana/Illumosプロジェクトが始動、更なる派生も多く登場しています。

 尚、PC/AT互換機いわゆるPCで動作するUNIXを特にPC-UNIXと呼ぶことがあります。

 *BSD、UNIX、Linux共にWindowsやMac OS Xのようにプロプライエタリ(有償だったり、オープンソースでソースコードは無償公開、無償利用も可能とするが、全権利はベンダが保有するなどの形態)やフリーソフトウェアも多数存在します。

 *BSDには、FreeBSD、NetBSD、OpenBSD、Dragonfly BSD...などがあります。

 パッケージ管理システムは、ディストロを特徴づけるものの1つであり、FreeBSDのソースコードベースのパッケージ管理システムPorts CollectionとFreeBSDプロジェクトを中心にNetBSDも開発に寄与したバイナリベースのパッケージ管理システムpkg_*とFreeBSD標準のPortsを参考にNetBSD用に開発し、汎用化したpkgsrcとpkg_*、後に加わったバイナリベースのpkginがNetBSD標準となっています。

 他の*BSDや一部のPC-UNIXにおいては、FreeBSDとNetBSDが標準とする2通り2組のパッケージ管理システムの何れかを採用しています。

 例えば、OpenBSDは、NetBSDから独立したものの、FreeBSDのPortsとpkg_*が標準、Dragonfly BSDは、当初、Portsとpkg_*が、後にpkgsrcとpkg_*が標準、実質、OpenSolarisの後継OpenIndiana、Illumosは、pkgsrcとpkg_*が標準、Linuxカーネル誕生の発端の1つであるMINIXは、後にNetBSDの影響を強く受け、NetBSD互換となり、やはり、pkgsrcとpkg_*、pkginが標準となっています。

 インストール及びインストール済みパッケージの自動アップデートを含むアップデートができるソースコードベースとバイナリベースのパッケージ管理システムを持ち、同じ構成のマシンを複数台持つ場合でも効率的に最新の状態にアップデートができる*BSDやPC-UNIXは、バイナリベースを基本とし、ソースコードベースの管理システムを確立していないLinuxやMac OS X、バイナリベースでもサードパーティ製ソフトウェアの管理システムも持たず(Windows 10では初めて標準採用される模様)、そもそもソースコードベースの管理システムを持たない(プロプライエタリであるがゆえに持てない)Windowsにはない優位性を持っています。

 ちなみにpkgsrcやpkg_*、pkginは汎用として公開されており、LinuxやOS Xにも容易に導入・利用可能ですし、他にもOS X/Darwinで開発、汎用化されているFink、また、GNUが開発したGNUSRC/GSRCなどもあります。

 一方、Mac OS XのベースであるDarwinは、Mach+FreeBSDをベースとしつつ、NetBSD、OpenBSDの技術の多くが取り入れられていることが知られています。

 *BSDにMac OS Xを加えるなら、最も普及しているのは、Mac OS Xでしょうが、これを含めなければ、FreeBSDでしょう。

 そんな*BSDの内、最も多くのアーキテクチャをサポート、最も少ないCPUやRAM、HDD空き容量で動作し、新旧問わず、幅広いハードウェア上で動き、前述のようにパッケージ管理システムが他の多くのディストロで採用されている上、そうでないディストロにも導入が容易な為、多くの環境で同じ操作性で利用できるパッケージ管理システムを開発・公開・標準採用し、汎用的な用途で有用なのは、NetBSDでしょう。

 1991年MINIXが広く汎用向けとしてリリースされないことに業を煮やしたリーナス・トーヴァルズ氏(当時、大学院生)によって公開されたUNIX特許に抵触しないLinuxカーネルは、有志によって手が加えられ、Debian、Slackware、Red Hat Linux(RHL)、後には、これらの派生も多く登場しており、RHLの流れを汲むものにFedoraがあります。

【DOS】

 Microsoft社を世に知らしめることになったWindows以前の主力OSは、MS-DOSであり、Windows 3.xでは併用、Windows 9x/MEでは、インストール時の起動ディスクにMS-DOSが利用されますが、同社はそれ以前にもXENIXというUNIXベースのOSを開発にチャレンジしつつ、その後、ひっそりと姿を消すことになり、MS-DOSに着手するわけですが、その根底にUNIXの存在が前提としてあることは間違いないでしょう。

 MS-DOSの販売・サポートが終了するのを機に代替・後継を目的とし、オープンソースとして開発・リリースされたのがFreeDOSであり、MS-DOSを凌ぐ高機能なOSとなっています。

【PE/Preinstallation Environment/プレインストール環境】

 Microsoft社がネットワークにつながった大量のWindowsマシンを保有する一定規模以上の法人ユーザーやWidowsを大量に一括購入してくれるPCベンダや販売代理店向けに遠隔操作で一斉にOSをインストール可能な仕組みを提供してたら、これは便利!起動ディスクとしてのMS-DOSも要らなくなるじゃんとばかりにBartさんがXP用の同様のソフトウェアを作成するフリーソフトを開発したのを機にご本家も作成環境を無償で提供するようになったソフトウェアがPE/Preinstallation Environmentです。

 その後、XPを自由に構成してブータブルインストールCDを作成できるフリーソフトnLiteやそれ以上にOSが重かったから重宝されたVista用フリーソフトvLiteも当初はインストールDVDだけでなくVistaインストール済みのHDDからインストールDVDを作成できた模様も後にインストールDVDからのみ構成可能となったようです。

 ということでハードディスクからも作成できる上、ちょっと使い勝手向上させてみちゃおうかということでリリースされたフリーソフトウェアWinBuilderへの賛同者も多く、Vistaや7ベースのPEも作成できるようになっており、以降のバージョンにも期待が持てます。

【C/Sシステム開発】

【OS(クライアント)】

 クライアント用のOSは、ネットワークさえ対応すれば、何でもよいわけですが、流通しているその多くは、Windowsでしょうが、Linuxのデスクトップ環境もWindowsに慣れたユーザーでも十二分に使いやすくなっているので特に長年使われてきたXPのセキュリティアップデート含むサポートがなくなるとLinuxに乗り換えるケースが増え、ひいては市場シェアにも大きな変化が現れるようになるかもしれませんね。

【OS(サーバ)】

 サーバOSは、UNIX/Linuxが多く、次いでWindowsであるというのが通説です。

【主な開発言語(サーバ&クライアント)】

 往年のクライアントサーバシステムでは、サーバがC言語、クライアントがVBというケースが圧倒的多数だったのではないかと思われますが、オブジェクト指向言語であるC++やJavaが、後に注目されるようになりました。

【オブジェクト指向開発】

 オブジェクト指向においては、クラスは重要な概念及び実装の1つです。

【モデリング】

 オブジェクト指向の考え方からソフトウェア設計を含む開発においてモデリング技術の重要性が唱えられるようになり、アジャイル開発にも有効であるとされています。

OSブート・デバイスブート

 近年、普及しているPCは、MS-DOSが他ベンダにOEM供給される前に最初に供給されPC DOSとして搭載されたIBM PC/ATの互換機でOSを起動するのにBIOSが使われており、IBMと某BIOSベンダによって開発された仕様が広く使われるようになりました。

 また、BIOSを置き換えることを想定したEFI/UEFI、この一仕様としてMBRタイプのパーティションを置き換えるべくGPTというパーティションタイプも64ビットCPUを中心に普及し始めています。

 OS起動の流れをブートストラップと呼び、ブートに使用されるメディアをブートメディア・ブータブルメディア、これを再生・実行する機器をブートデバイスと呼び、これらが可能となる時代背景などの理由で起動メディアとして指定できない場合でも利用できるケースもあります。

 OSの種類やバージョンによってもブートの流れが異なる場合があります。

 また、1つのHDD、1枚のCD/DVD/BDや1本のUSBメモリで複数のOSやツールを起動することを俗にマルチブートと呼び、2つの場合をデュアルブートということもあります。

【仮想化・Virtualization】

 コンピュータの歴史は、仮想化の歴史と言えるほど、抽象化、仮想化は古くからある考え方であり、抽象化、仮想化によってハードウェアで行っていたことも見掛け上ソフトウェアで実装できるようになったり、機器の小型化も進んでコンピュータ本体の小型化も為されました。

 近年、仮想化をサービスとして提供しようということから改めて仮想化に注目が集まり、そうしたソフトウェアが各種リリースされています。

仮想マシン

 仮想化ソフトウェアの注目を集めるべく、その一環としてオープンソースやフリーソフトウェア、一定試用期間内のみ利用可能な評価版提供なども活発で個人でも使ってみたくなる、とても有用なものとして1台のPC上で異なるOSやバージョン違いのOSなど複数のOSをインストールでき、更にCPUやメモリに余裕があれば並行して実行でき、通常のOS同様個々にアプリケーションもインストール可能、バックアップも他PCでの利用もファイルのコピーや移動でOKという仮想マシン作成・実行ソフトウェアがあります。

 PC自体のOS(ホストOS)としてWindows、Mac OS X、Linux、Solaris...、他方、これらを含む多くのOSを仮想マシン上にインストール(ゲストOS)できる仮想マシン作成・実行ソフトウェアとして多機能で使い勝手がよいものにVMware PlayerやVirtualBoxがあります。
(CPUがx86/IA-64/AMD-64のPC/AT互換機で利用可能)

 元は、Macintosh用でホスト型の仮想化ソフトウェアVirtual PCとして誕生、サーバ仮想化製品も完成間近でしたが、Virtual PCが、WindowsやOS/2にも移植されるとMicrosoft社が関連特許や事業を買収、Virtual PC 2004として販売、Virtual PC 2004 SP1から無償提供すると共にMacintoshのホストOSとしてのサポートを終了、ホストOSをWindowsのみとし、ゲストOSも一部のWindowsとOS/2のみ、後継としてVirtual PC 2007/Virtual PC 2007 SP1、Windows 7でXP Modeをサポートする為のWindows Virtual PC、Windows 8になると先の事業買収時にリリース前だった技術を基にWindows 2008/2012といったサーバ用としてリリースしていたHyper-Vのクライアント版としてWindows 8 pro(x64)に標準採用されるに至り、Virtual PCは、以後リリースされないようです。

 ただ、XP Modeの利用はスムースに進まなかったこともあり、マシンスペックの関係含め、Virtual PC 2007や他の仮想化ソフトウェアへのニーズもまだまだあります。

 Windows上で他のWindowsを使えればよいとか、Windowsとの相性はやっぱりこれと思う場合は、選択肢の1つになるでしょうが、他と比較するとホストもゲストも限定されてしまうことはデメリットでしかないと言えるでしょう。

 また、x86/IA-32/AMD32、ARM、MIPS、SPARCなど、場合によっては、PowerPC、S390などマシンやCPUアーキテクチャーを越えてホスト・ゲストに同じまたは、異なるCPU対応のOSを起動することも可能な仮想化ソフトウェアにQEMUやBochsなどがあります。

 VMware PlayerやVirtual PC、VirtualBoxなどが、物理マシンのCPUを利用する形で実装されるのに比べ、QEMUは、物理マシンとCPUが同一であっても、そのCPU上で、別途CPUを丸ごとエミュレートする為、オーバーヘッドは大きいですが、当該ホストにおいて負担にならない軽量なOSを動かす分には、他のどれよりも軽快で快適と言えます。

 KVMやXen、VirtualBoxなどでは、一部の機能においてQEMUを採用しています。

 この他、Windows上でLinuxを利用することだけが目的ならcoLinux(Cooperative Linux)という選択肢もあります。

 ここでLinux/BSD/PC-UNIXと一口に言っても数多くの種類があるので、それでもほんの一部ではありますが、当サイトで主にVirtualBox、補佐的にVMware Player、QEMUを使って起動、インストールしてみたものを列挙、各リンク先にその詳細を記しておきます。

 下記は、こうしたLinux/BSD/PC-UNIXのスクリーンショットの一覧ですが、このように各種仮想化ソフトウェアを利用しているのは、相性があるからです。

 仮想マシンは、物理PCから見ると1つの大きなファイルであり、通常、1つのフォルダ単位でまとめられています。

 ちょっと知っておきたいことはあるにしても仮想マシンの移動やコピーも簡単にでき、更にちょっとしたテクニックを加えれば、バックアップや別の仮想マシンとしてクローンを作ることもできるということです。

 一方、このように複数の仮想化ソフトウェアで仮想マシンを作成していると時にある仮想化ソフトウェアで作った仮想マシンを違う仮想化ソフトウェアで使えたら。。。といった衝動に駆られることがあります。

 そんな時、知っていると便利なのが、以下で他の仮想化ソフトウェアで作った仮想マシンを直接、または、間接的、または、変換して再生することもできたりします。

 仮想マシンよりもリソース消費が格段に少なく素早く高速に構築でき、並列稼働、連携までできてしまう仮想化技術にコンテナ型があり、知名度の高いものにLinuxコンテナ(LXC)や当初、これをベースエンジンとして開発されたDockerがあります。

 Dockerなら、Dockerfileというテキストにやることを書いておけば、何度でも、いくつでも全く同一の環境を、DockerをインストールしたパソコンとDockerfileがあれば、どこにいても自動的に構築してくれます。

 ここで試したCoreOSでもDockerが使われていますが、Dockerは、その仕組みからDocker内や仮想マシン、クラウド上でも起動させることができることもあり、一層、注目を浴びています。

 こうした仮想化ソフトウェアを使うと新たにPCを購入しなくても低コストまたは、コストをかけずに異なる環境の勉強、研究、検証ができたり、開発環境、コンパイル環境、実行環境としてもOS含めて調達することができますし、古いPCや壊れたPCのOSをゲストOSとして継続利用でき、そこでしか動かないアプリケーションやゲームを実行することもできたりしますし、OSがWindowsでPCが古いだけなら、それに最新、または比較的新しい軽量Linuxをインストールしたり、ファイルサーバや外付けHDD、各種外付けデバイスやセカンドモニタ代わりやルータとして利用するといった新たな展開も生まれたりするのでいろんなシーンで重宝するでしょう。

 そこでOS選定にあたり、主にLinux/BSD/PC-UNIXに関する情報とMS-DOS/FreeDOS/Windows含むこれまでに検証したOSにおけるRAM容量別の起動状況一覧を参考までに掲載しておきます。

  1. OS選定の目安
  2. いくらでも練習できる環境もある-仮想化ソフトウェア
  3. Linux/BSD/PC-UNIX系OSを常用する場合の注意点
  4. オープンソースOSの背景
  5. Linux/BSD/PC-UNIXの選定方法と前提
  6. RAM容量ごとに利用可能なOS

 実際のパソコン上と同様、仮想化ソフトウェアで作成した仮想マシン上でOS、ソフトウェアのインストール、マルチブート等々の練習やOSの選定もできるので十二分に堪能して気に入ったOSがあったら手持ちのパソコンのスペックと相談しながら実際にインストールしてみるとよいでしょう。

 例えば、Windowsのサポート期限が切れたPCだってOSさえ入れ替えれば、たいていの場合、まだまだ現役で使えるわけで活用してみるのも楽しいですよ。

 SOTEC e-one 500A CPU Celeron 500MHz/RAM128MB/HDD13GBといったスペックのWindows 98 SEプリインストールマシンのOS入れ替えを検討してみたり。

 FUJITSU FMV C6320 CPU Celeron 1.60GHz/RAM512MB/HDD40GBといったスペックのWindows XPプリインストールマシンのOS入れ替えを検討してみたり。

 TOSHIBA dynabook Satellite T30 160C/5W CPU Celeron 1.60GHz/RAM512MB/HDD80GBといったスペックのWindows XPプリインストールマシンのOS入れ替えを検討してみたり。

 Pavilion Slimline s3140jp CPU Intel Core 2 1.80GHz/RAM1GB/HDD160GBといったスペックのWindows VistaプリインストールマシンのOS入れ替えを検討する以前にHDD交換やRAMを増強してみたり、CD/DVDドライブを追加購入してみたり、結果OSを検討してみたり。

 メインとしていたTOSHIBA dynabook Satellite T30 160C/5WもサブとしていたHP Pavilion Slimline s3140jpもACPIにやられてしまい、BIOSが追従できず、前者はPC自体機能不全、後者はサスペンド・ハイバネートを有効にすると正常に機能せず、電量の無駄マシンとなってしまったため、急遽、低消費電力のノートパソコンを1台調達。

【UNIX/LinuxコマンドとShell】

 元々UNIX、Linuxユーザーだったり、Mac OS Xユーザーであれば、UNIX/LinuxコマンドとShellはなじみ深く、DOS、コマンドプロンプト、Windows Script Host、Power Shellなどへの抵抗も薄いかもしれませんが、Windowsユーザーでもこれらを使わないGUI/Graphical User Interface専門のユーザーやWindowsに付属するこうしたCUI/Character User Interface環境を使うユーザーでもUNIX/Linux/Mac OS Xへの抵抗は大きいかもしれません。

 でも、ある程度覚えてしまえば、更に英語へのアレルギーがなければ尚更、DOS、MS-DOSプロンプト、コマンドプロンプト、Windows Script Host、Power Shellよりも、むしろUNIX/LinuxコマンドやShellの方が、スッと入ってきやすい気がしますし、できることも比にならないほど多く、機能性も高く、拡張性も高いので使い勝手も良いように思います。

UNIXとShell

 UNIXは、1969年にアセンブリ言語ベースで開発開始、1973~1973年にC言語で書き直され、移植性が高まったことで、それまでメインフレーム(大型汎用機)メーカーが専用に用意したオペレーティングシステムも次第にUNIXの様々な系統のが派生が登場し、採用されました。

 1970年代から1980年代、大企業や大学や研究機関などでもUNIXの利用が広がり、カリフォルニア大学バークレー校に由来するBSDが登場、後にUNIX特許問題が勃発し、1990年代まで尾を引きましたが、PC用のUNIXとしてUNIX System VやBSDベースのいわゆるPC-UNIXも登場するに至りました。

Linux

 UNIXの特許問題に嫌気がさし、MINIXが教育用に専念し、汎用として公開されないことにやきもきしたとされるフィンランドの大学院生だったリーナス・トーバルズ氏が、1991年、特許にかかるUNIXコードを使わないLinuxカーネルを開発、徐々に有志が集まり始め、急速に開発が進み、複数のLinuxディストリビューションが登場、更に様々な派生が登場しました。

 折しも1991年は、一般にWindows 3.0がリリースされた年であり、1993年にはWindows 3.1がリリースされ、MS-DOSとのインタフェースの様変わりは、ユーザーフレンドリーなものとして受け入れられ始め、Windows 95に続くわけですが、Linuxカーネルも、UNIXを意識していたこともあり、興味関心の高い人が開発に携わり、利用するMS-DOSのようなコマンドライン(CUI)ベースのオープンソースであり、デスクトップ環境といったユーザーフレンドリーなインタフェースについては、重視どころか、着目すらされていなかったと言えるでしょう。

 よって一般のPCユーザーへのLinux認知度は、低く、仮に知っていても玄人向けという印象が強かったと言えますが、その後、一般向けよりも企業向けの特にサーバ用途としての需要が伸びていき、仕事でUNIX/Linuxに関わる人々の一部は、Windowsとのハードディスク上でのマルチブート、LiveCD/DVD/USBといったメディア上にインストールされたLinux/BSDとのマルチブートやレスキュー用途などで利用されたり、PCカスタムビルド製品では、Linux/BSD搭載マシンも登場するまでになりました。

 更に近年、一般ユーザーにも使いやすいデスクトップ環境を備えるLinux/BSD/PC-UNIXも一般的となり、ルック&フィール(見た目や使い勝手)がWindowsに慣れ親しんだユーザーにも違和感がないほど使いやすくなっていて遜色ありませんし、セキュリティ面もWindowsより高く、更に強化しようと思えばでき、低コストでありつつ、選択肢も多いというメリットの方が、今あるWindows専用アプリケーションが使えないという点を遥かに凌いで余りある程だとも思えますが、それが気になる場合にも仮想マシンを使えば、解消される可能性もあり、ましてBSD系UNIXをベースに開発され、バージョン10.5 Leopard含む以降UNIXと認定されたMac OS X/OS X、IntelのCPUを採用したIntel Macにおいては、仮想マシン上でWindowsとLinuxをインストールすれば、今やMac/UNIX/Linux/Windows全て1台のPC上で使うことができたりします。

 また、AndroidのベースはLinuxですからスマートフォン・タブレット市場でも利用されることで、実は、一般ユーザーにも普及しており、Androidではなくタブレット対応Linuxも登場しています。

 ちなみに良いことずくめに見えるMacintoshは、WindowsやLinuxとは、キーボードやマウス操作が若干異なる為、慣れる必要があり、Boot CampでWindowsとマルチブートしたり、仮想マシンを使って他のOSを利用するなら別途Windows(やLinux/BSD)用にキーボードやマウスを用意することもできますが、そもそもWindowsやLinuxが動くPC/AT互換機よりも割高感がある上に64ビット版Windows 7/8も同様ですが、Mac OS X/OS Xだけでもマルチコア、メモリ2GB以上を要するので仮想マシンを使うにしてもそのOSが同等以上となるとメモリ4GBでは、ぎりぎりなので32ビットでは補いきれず、64ビットに1本化され、4GB、6GB、8GB、16GBと往々にして高いマシンスペック、つまり、最新スペック且つ、より高額なPCを要求されることになったりします。

 超薄型のノートPCを選択する場合は、Windowsにしろ、MacにしろHDDよりもSSD(まだまだ高価で小容量)が採用されることも多くなっていると思いますが、仮想マシンを使って多くのOSを取っ換え引っ換えしたい場合には、それだけでハードディスク容量100GBはあっという間に消費するので外付けHDDは必須と言えるでしょう。

 その点、Linux/BSD/PC-UNIXは、デスクトップ環境でもメモリ1GB以上を必要とするケースは、少なくとも今のところ稀であり、中には、700MB以上要するものもありますが、セキュリティ上、あまりおすすめできないものの、最新のカーネルにこだわらなければ、Linuxでも、OpenBSDやNetBSDなら最新のオリジナルカーネルと標準システムでも今尚、128MBならギリギリ、256MB、512MBなら十分動作する環境を選択できますから、最新のPCでなくとも一昔、二昔前のPCでもマルチブートや仮想マシンで当時主流の32bit/64bitのWindows XPやVistaといったWindowsやそれ以前のWindowsとたいていのLinux/PC-UNIXの組み合わせることができ、デュアルコアCPU、メモリ2GBもあれば、多くのOSを利用することができます。

 セキュリティアップデートサポートがあるなら別ですが、XPのセキュリティアップデートサポート終了も迫り、後のバージョンも何れはそうなる中、サポート終了後は、無防備で無法地帯であるネットに接続することすら危ぶまれることを考えれば、サポート切れのWindowsを前段のVMwareやVirtualBoxといった仮想マシン関連のリンク先にある方法等で仮想マシンにインストールして、かたやWindowsの新たなバージョンを購入するにしてもやはり、仮想マシンでLinuxに慣れ親しむなどして併用、もし、慣れて遜色なくなればLinux/*BSD/PC-UNIXのデスクトップ環境に載せ換えるというのも経済的、現実的かつ有力な選択肢の1つと言えます。

UNIX/Linuxコマンド

 Linux/UNIX/BSDを知る上でbash、UNIX/Linuxコマンド、vi/vimは、基本と言ってよいでしょう。

 Linux/BSD/PC-UNIXは、ディストリビューションやバージョンによってカーネルバージョン、パッケージマネージャ、用途、ベースとして収録されるソフトウェア構成、安定版重視か、最新版重視か、採用するShellの種類などによって特色があります。

 ただ、UNIX/Linuxコマンドは、ほぼ共通ですし、Shellは、B Shell系とC Shell系に大別され、tcshが登場するまでのcshの不安定さなどの背景もあり、特にB Shell系のBourne Shell、その流れを汲むbashは広く利用されてきたこともあり、他のShellを日常的に使っているユーザーでもBourne Shell/bashコマンドを知るユーザーは多いと思われます。

 また、UNIX/Linuxでは、ほぼ全てをファイルとして表現することからも必要不可欠とも言えるテキストエディタも種類は豊富ですが、vi/vimやEmacsユーザーが多く、viは、どのディストリビューションにも標準で含まれるので日ごろ他を使うにしても操作方法を知っているユーザーも多いと思われます。

 bashにしろ、viにしろ、より多くの人が知っているということは、情報量が多いということでもあり、困った時の助けにもなり、ジェネレーションギャップも小さく、他の人と共通語で話せる感覚があるという意味でも、仮に他を使うにしても基本として覚えておくに越したことはないでしょう。

開発環境・コンパイル環境

 Windows上の開発では、Microsoft系のプログラミング言語を中心に各種IDE/Integrated Development Environment(統合開発環境)を利用することも多いでしょうが、coLinuxのような.exeファイルとして実行可能なLinux環境やCygwin、MinGWといったUNIX/Linux代替環境、UNIXやLinuxはもちろんWindowsも実行可能な仮想マシン作成・実行ソフトウェアで仮想マシンを作成してLinux/*BSD/PC-UNIXをインストールするといった選択肢もあります。

 UNIX/Linux Shell環境を体験してみたい、手軽に使ってみたいという場合には、CygwinやMinGWという選択肢もありますが、CPUやメモリ、HDD容量等の条件にマッチしない場合を除き、ダウンロードやインストール、日本語対応のチューニング等を考えても、手間のない仮想マシンの方が簡単な上に重宝すると思われる為、ベター(より良い選択)、その場合、追加でcoLinux、CygwinやMinGWの何れかもインストールしておき、使い分けるというのがベスト(最も良い選択)と言えるかもしれません。

 Cygwinを先に知って仮想マシンを後から入れて併用している経験からすると現状に満足していますが、もし、仮にCygwinより先に仮想マシンを知っていたら、ましてCygwinインストールとその後の手間に遭遇したら、今頃使っていなかったかもしれず、むしろ、先にCygwinを知ったことは、(手間への免疫ができ、他のケースにおいても手間への抵抗が軽減されたかもしれないことも含め、)結果的に良かったと思います。

UNIXとshellの変遷

 Shellとは、UNIX/LinuxにおけるCUIとしての入出力機構であり、スクリプト言語でもあり、(実際は逆でDOSとバッチファイルがシェルに似ているわけですが、)DOSとバッチファイルの関係に似ています。

shellとshellの種類

 Shellには、Bシェル系とCシェル系の2系統をはじめ、その派生など複数あります。

Bourne Shell/shとBourne Again Shell/bash

 Bシェル系として代表的なShellとしてBourne Shellを改良したBashがあります(が、バスケットシューズではありません)。

Bash

【XML関連技術の利用】

 HTMLと同じ系統のSGMLから派生したものとして策定されているXMLは、HTMLと融合したXHTMLも派生としてありますが、これら予め固定のタグが決められたマークアップ言語とは異なり、SGMLの厳格さを継承した拡張可能なマークアップ作成言語であり、データ交換したい任意の業界・企業・団体・グループ、場合によっては個人同士でも規則に沿って自由にタグを作成・利用することができますし、ソフトウェアアプリケーションのチューニング用構成データファイルやインストール時の構成ファイル、ネットワーク経由のデータ交換、時にデータベースとして等々、様々な用途に合わせて一から設計できる柔軟な言語です。

 ajaxは、XMLを使った非同期通信とJavaScript(ECMAScript)を融合した仕様です。

 XSLは、XML文書のモニタ表示時や紙面などへの印刷時の出力状態における装飾用マークアップ言語であり、簡単に言うとHTML/XHTMLで言うところのCSSに当たります。

 XSLTは、あるXML文書から他のXML文書、HTML/XHTML、PDF等々への書式変換や装飾変換などに利用可能なXML用の変換用言語です。

 XSLやXSLTの実行結果などXMLをモニタなどに表示、確認する際などには、文法を解析、表示可能なXMLパーサー、または、単にパーサーが必要であり、パーサー単独、または、ブラウザに組み込まれたパーサーには、DOM/Document Object ModelやSAX/Simple API for Xml、(Simple Object Access Protocolの略として開発されたものの、後に意味を持たない文字列であるものとされた)SOAPといったプロトコルの実装が必要となります。

【情報セキュリティ】

 PCシステムの普及に伴い、物理的なメディアなどの持ち出しによる故意または、過失によるデータ紛失などに起因する情報漏洩、インターネットの普及に伴い、ウイルスやスパイウェア、スパイボットなどによる盗聴や情報・データ搾取、稼働を阻害する攻撃など様々な脅威が顕著になったことから情報セキュリティの重要性が高まっており、オンラインシステムにおいては、サーバに情報が集約されることからサーバのセキュリティが最も重要度が高いといえます。

 外部ネットワーク、主にインターネットと内部ネットワークの出入り口でセキュリティを強化するのは、今や当たり前であり、入り込む前に、出て行く前に対処できればそれに越したことはなく、その為には、ハードウェアやソフトウェアから成るファイアウォールを利用することはもはや大前提となっており、インターネットとWebサーバ間、Webサーバと内部ネットワーク間にそれぞれファイアウォールを設置して二重にガードすれば、より強固にすることが可能です。

 ファイアウォールの機能を実装する為に使われることもあるルータとは、ネットワーク内のプライベートIPアドレスを管理し、データの出入りの流れを制御しつつ、ネットワーク内の必要な端末にデータを送り届けたり、受け取ったデータをネットワークの外に送信したりするハードウェアです。

 インターネットとの接点におかれ、世界で唯一のグローバルIPアドレスが割り振られたルータをグローバルルータと呼びます。、のデータとして外部に送信する、主にインターネットとの接点にあり、世界で唯一のIPアドレスが割り当てられたルータをグローバルルータと呼びます。

 尚、ISDN、ADSL、FTTH、CATV回線などと接続しているブロードバンドルータは、プロバイダのグローバルルータから内部ネットワーク用として自動的にIPアドレスを割り振られるか、または、プロバイダから通知された固定の静的なプライベートIPアドレスを設定することにより、実際には、プロバイダのグローバルルータを通してインターネットと接続しているに過ぎませんからブロードバンドルータは、グローバルルータではありません。

 ルータは、静的または動的な経路情報に基づいて作動しますが、その経路情報は、IPテーブルやルーティングテーブルと呼ばれるデータベースに書き込まれます。

 例えば、Perlというスクリプト言語単体のセキュリティ対策の1つには、cryptというものがあります。

 ウェブサイトやホームページへのアクセス時に安全に通信を行う技術にSSLがあり、Webサーバ上で設定できるのが一般的でWebサーバがApacheならその設定でSSLを有効、無効にできます。

 但し、その場合、Webサーバ上で設定したかしないかとうだけであり、Webサーバの運営者側の話であって、URL欄に[http://...]ではなく、[https://...]とあることで第三者でも一応の確認ができますが、そのSSLを実装しているというサイトの主張が本当であり、安全であるかの保証をVeriSignなど外部の認証機関が行っているものの安全性が高いとされており、その証として複製できない認証機関のバナーが表示されているのが一般的です。

 その認証バナーを設置できるのは、認証機関と有償契約を結び、そこで付与されるサーバIDを持っている企業・団体や場合によっては個人です。

 SSLは、公開鍵暗号方式を採用しており、サーバ側が持つ秘密鍵で暗号化され送信されたデータは、公開鍵で開けられますが、その公開鍵で暗号化され、送信されたデータはサーバが持つ1対の秘密鍵でしか開けられないという仕組みによってサーバに送信されるデータが保護されるようになっています。

 公開鍵暗号方式は、構成文字列の複雑さと鍵の長さによる為、同じ公開鍵暗号方式でもその精度には複数ありますが、その鍵長は、その時代のコンピュータ性能などから決められ、第三者が何らかの方法で解読しようとしてもとてつもなく年単位で長い時間がかかると想定されることで解読できたとしてもその時には、既に意味を成さないということで成り立つものとされます。

【ネットショップ・オンラインショップの構築とセキュリティ】

 こうしたことから、個人情報やカード情報などの入力の可能性があるショッピングカートなどでは、SSLの採用を前提にすべきとされるほど、強く推奨されます。

ホーム前へ次へ