Ajax
読み方 : エイジャックス
フルスペル : Asynchronous JavaScript + XML
Webブラウザに実装されているJavaScriptのHTTP通信機能を使って、Webページのリロードを伴わずにサーバとXML形式のデータのやり取りを行なって処理を進めていく対話型Webアプリケーションの実装形態。
従来、Webブラウザを使ったWebアプリケーションでは、データをサーバに通知して処理結果を得るにはページ全体をロードしなおさなければならず、ネイティブアプリケーションのような操作性を得ることは難しかった。Ajaxでは、指定したURLからXMLドキュメントを読み込む機能を使い、ユーザの操作や画面描画などと並行してサーバと非同期に通信を行なうことで、サーバの存在を感じさせないシームレスなWebアプリケーションを実現することができる。
ちなみに、JavaScriptのHTTP通信機能自体は同期通信にも非同期通信にも対応しており、受信するデータ形式もXMLとプレーンテキストの両方を選べるため、プレーンテキストを同期通信する従来型のWebアプリケーションをページ遷移を伴わずに実現するといった使い方もできる。
Apache 【アパッチ】
読み方 : アパッチ
NCSA httpd 1.3をベースに、1995年に開発が始まったWebサーバ。ApacheはUNIX系OSやWindowsで動作する。Apacheはフリーソフトウェアとして無償で公開され、世界中のボランティアのプログラマたちの手によって開発された。誰でも修正・再配布することができる。Apacheはもともと、NCSA httpdの細かいバグを修正したり新しい機能を追加するためのパッチ(patch)の寄せ集めとして開発されていたため、この名称がついた。現在のApacheは単独で動作するWebサーバとなっており、世界で最も使われているWebサーバとなっている。
ASPサービス
読み方 : エーエスピーサービス
フルスペル : Application Service Provider Service
インターネットを通じて顧客にビジネス用アプリケーションをレンタルするサービス。提供者はアプリケーションサービスプロバイダー(ASP:Application Service Provider)と呼ばれる。顧客は、主にWebブラウザーからASP事業者のサーバにインストールされたアプリケーションを利用する。主に企業を対象としたサービスをASPサービスと呼ぶことが多い。
ASPサービスにおいて利用できるアプリケーションには、予定表やプロジェクト管理、掲示板、電子会議室、Webメールの配信などにより社内の情報共有を行うグループウェアと呼ばれるものや、財務・会計を行うものや、オンラインストレージによってデータ共有を行うものなどがある。最近では、営業管理や財務管理などの有名なパッケージソフトウェアのASP化が進んでいる。
ASPサービスを利用することにより、インターネットにアクセスできる環境さえあればどこからでもすぐに各種のアプリケーションを利用することができる。社内のコンピュータに一台ずつアプリケーションをインストールする必要がなく、アプリケーションのバージョンアップなどの運用管理作業を行う必要がないのも大きな利点である。
ただし、インターネットを介してアプリケーションを利用するために、回線速度によってはアプリケーションの動作が遅くなったり、ASP事業者のサーバに障害が発生した場合などにアプリケーションが一切利用できなくなる。また、データを社外にもつことになるため、利用の際はこれらを考慮にいれる必要がある。
HTTPS
読み方 : エイチティーティーピーエス
フルスペル : Hypertext Transfer Protocol Security
Webサーバとクライアント(Webブラウザなど)がデータを送受信するのに使われるプロトコルであるHTTPに、SSLによるデータの暗号化機能を付加したプロトコル。サーバとブラウザの間の通信を暗号化し、プライバシーに関わる情報やクレジットカード番号などを安全にやり取りすることができる。Netscape
NavigatorやInternet
Explorerなど主要なWebブラウザが対応していることから、WWWにおける暗号化の事実上の標準となっている。SSLはNetscape Communications社が提唱した暗号化プロトコルで、HTTP以外にFTPやTelnetなどのプロトコルの暗号化にも使われる。
Javaサーブレット 【Java servlet】
読み方 :ジャバサーブレット 別名 :
servlet, サーブレット
Webサーバ上で実行されるモジュール(部品)化されたJavaプログラム。サーブレットを追加することにより、Webサーバの機能を拡張することができる。
サーブレットはJava言語で記述されているため、特定のOSやハードウェアに依存することがなく、サーブレットAPIを実装したあらゆるWebサーバで稼動させることができる。
CGIなどの他のサーバサイドプログラムと異なり、一度呼び出されるとそのままメモリに常駐するため、高速な処理が可能である。また、データを永続的に扱うことができるため、複数のユーザ間で情報を共有することもできる。
当初はSun
Microsystems社のJava
Web Serverの機能の一つとして提供されていたが、仕様がJava Servlet APIとして独立し、現在では様々なWebサーバ向けにサーブレットの実行環境が用意されている。
JSP
読み方 : ジェーエスピー
フルスペル : JavaServer Pages
Java言語を利用してWebサーバで動的にWebページを生成し、クライアントに送信する技術。HTMLファイルの中にJavaプログラムを埋め込んでおき、クライアントの要求に応じてプログラムを実行、処理結果のみをクライアントに送信する。結果は通常のHTML形式になるため、Webブラウザに特殊な機能を組みこむことなくWebアプリケーションを構築できる。Microsoft社のIISの拡張機能ASPに似た技術だが、ASPが(ほぼ)IIS専用なのに対して、JSPは様々なWebサーバ用の実行環境が用意されており、また、特殊なスクリプト言語を覚えることなく、Java言語をそのまま使えるという利点がある。
RSS
読み方 : アールエスエス
フルスペル : Rich Site Summary
別名 : Really Simple Syndication, RDF Site Summary
Webサイトの見出しや要約などのメタデータを構造化して記述するXMLベースのフォーマット。主にサイトの更新情報を公開するのに使われている。
RSSで記述された文書には、Webサイトの各ページのタイトル、アドレス、見出し、要約、更新時刻などを記述することができる。RSS文書を用いることで、多数のWebサイトの更新情報を統一的な方法で効率的に把握することができる。
指定したサイトのRSS情報を取り込んで更新状況をまとめたWebページを生成するアンテナ(巡回)ソフトや、デスクトップに指定したサイトの更新情報を表示するティッカーソフトなどが開発されている。また、ニュースサイトや著名なウェブログなどでは、更新情報をRSSで公開するところが増えている。
RSSにはいくつかのバージョンがあるが、数字の大きいものが上位互換性を持った後継規格というわけではなく、いくつかはそれぞれ別物になっているため注意が必要である。最初のバージョンはNetscape
Communications社が「My
Netscape」サービスのために1999年に開発したバージョン0.9である。これはコンテンツのメタデータを記述する包括的な仕様「RDF」をベースにしたものだったため、RSSバージョン0.91では、サイトの更新情報の配信に特化した仕様に改められた。
その後、RSS関連の技術から手を引いたNetscape社に代わり、RSS-DEVワーキンググループという開発者集団が再びRDFベースの仕様「RSS 1.0」( 1.0)を提案した。高度な機能をモジュール化して追加できるなど本格的な仕様だったが、0.9x系列の方を好むユーザも依然として多く、こうした人々の手によって0.9xの後継となる「RSS
2.0」(
2.0)が提案された。こうした経緯のため、RSSの仕様は大きく「0.9-2.0系列」(Really Simple Syndication)と「1.0系列」(Rich
Site Summary)の2系統に分裂している。
SOAP
読み方 : ソープ
フルスペル : Simple Object Access Protocol
XMLとHTTPなどをベースとした、他のコンピュータにあるデータやサービスを呼び出すためのプロトコル(通信規約)。Microsoft社やUserLand Software社、Developmentor社が中心となって開発された。
SOAPによる通信では、XML文書にエンベロープ(封筒)と呼ばれる付帯情報が付いたメッセージを、HTTPなどのプロトコルで交換する。サービスを利用するクライアントと、サービスを提供するサーバの双方がSOAPの生成・解釈エンジンを持つことで、異なる環境間でのオブジェクト呼び出しを可能にしている。
SOAP 1.1では、実際にデータの送受信に使う下位プロトコルは、すでに広く普及しているHTTPやSMTP、FTPなどから選択できるようになっており、企業間で利用する場合でもファイアウォールなどを安全に通過することができる(SOAP
1.0ではHTTPのみ)。
現在、WWW関連技術の標準化を行なうW3Cによって標準の策定が行なわれており、IBM社やLotus社など、大手ソフトウェアメーカーも自社製品での対応を表明している。
なお、SOAPメッセージの生成エンジンは「SOAPプロキシ」、解釈エンジンは「SOAPリスナ」と呼ばれることもある。
SOAPによって外部から利用可能な、部品化されたWebベースのアプリケーションソフトは「Webサービス」と呼ばれる。インターネット上で各社が提供しているWebサービスを集め、誰でも検索・照会できるようにするWebサービスを「UDDI」という。
Web 2.0 【ウェブ2.0】
読み方 : ウェブにーてんぜろ
2004年頃から登場し始めた新しい発想に基づくWeb関連の技術や、Webサイト・サービスなどの総称。「2.0」という表現はソフトウェアの大幅なバージョンアップをなぞらえたもので、1990年代半ば頃から普及・発展してきた従来型WWWの延長ではない、質的な変化が起きているという認識を込めたもの。
特定の技術やコンセプトがWeb 2.0な訳ではなく「次世代のWeb」を漠然と総称する言葉であるため、明確な定義は無く使う人によって認識も異なるが、多くの人が合意するいくつかの有力な概念が含まれている。その最も大きな特徴の一つは、Web 2.0ではコンピュータにおけるOSのようにWebが一種のプラットフォーム(基盤)として振舞うようになり、その上で情報や機能が製作者の手を離れて組み合わされたり加工されたりするという点である。
従来のWebは製作者が作った状態で完結しており、利用者は単にそれを利用するだけの関係であったが、Web 2.0ではWebサイトの持つ情報や機能を外部のサイトやソフトウェアなどから参照したり呼び出したりすることができ、利用者や他の事業者がソフトウェアやWebサービスを組み合わせて新たなコンテンツやツールを作成できるようになる。
また、多くのユーザが参加して情報を出し合うことで、その蓄積が全体として巨大な「集合知」を形成するという点も重要である。例えば、ブログは多くの執筆者が議論を重ねていく過程が全体として広がりと深みのある情報の集積となっていくし、ソーシャルブックマークは参加者がURLに特徴や分野を表す短いフレーズであるタグを自由に付けていき、それを合成することによって万人にとって有用な分類を行なうことを試みる。
他にも、開発途上のベータ版の状態でサービスを公開し、ユーザの意見を聞きながら洗練させてゆく開発手法や、SNS(ソーシャルネットワークサイト)などに見られるようなユーザ数が増えると急速に価値が高まっていく「ネットワーク効果」の概念、ブログの更新情報の配布などに使われるRSSのような「データについてのデータ」であるメタデータの整備や普及、Ajaxのようなページ遷移を伴わないWebアプリケーションのインターフェースなど、多くの「Web
2.0的」なアイデアが提出されている。
Wiki 【ウィキ】
読み方 : ウィキ
Webブラウザから簡単にWebページの発行・編集などが行なえる、Webコンテンツ管理システム。WebサーバにインストールしてWebブラウザから利用する。
複数人が共同でWebサイトを構築していく利用法を想定しており、閲覧者が簡単にページを修正したり、新しいページを追加したりできるようになっている。編集者をパスワードなどで制限したり、編集できないよう凍結したりすることもできる。HTMLの知識がなくてもリストやリンクを簡単に作成できるように、独自の「整形ルール」が定められている。
電子掲示板(BBS)に近いシステムだが、BBSが時系列に「発言」を積み重ねるコミュニケーションツールであるのに対し、Wikiは、内容の編集・削除が自由なこと、基本的に時系列の整理を行なわないことから、誰もが自由に「記事」を書き加えていくコラボレーションツール、もしくはグループウェアと言える。柔軟性が高く、手軽に始められて操作が簡単なことから、メモ帳代わりに使ったり、簡易なコンテンツ管理システムに利用したりする人も多い。
Wikiは、Ward
Cunningham氏が「WikiWikiWeb」というWebサイトで使っていたプログラムが原型となっている。同氏がこれを公開したことから、多くのWikiクローンプログラムが作成され、様々な環境に移植された。そのほとんどはフリーソフトウェアとして配布されており、簡単に入手して導入することができる。ちなみ、「Wiki」はハワイ語の「Wikiwiki」が語源で、「速い」「急ぐ」「形式張らない」といった意味がある。
ZOPE
読み方 : ゾープ
フルスペル : Z Object Publishing Environment
Pythonで書かれている、オープンソースの高機能アプリケーションサーバソフト。ZOPEは単独でWebサーバとして動作し、Pythonプログラムを使用して動的にWebページを生成することができるほか、データベースソフトと連携した動作にも対応している。また、ZOPEはサーバ上のコンテンツをWebブラウザ経由で管理する機能を備えており、コンピュータの操作に慣れていない人が容易にWebサイトを管理できるよう配慮されている。ZOPEはソースコードが公開されているため、自力でZOPEを改造して機能を追加することもできるが、プラグインを導入して機能を追加する方法も用意されている。
アクセシビリティ 【accessibility】
読み方 : アクセシビリティ
分野 : ITと社会
情報やサービス、ソフトウェアなどが、どの程度広汎な人に利用可能であるかをあらわす語。特に、高齢者や障害者などハンディを持つ人にとって、どの程度利用しやすいかという意味で使われることが多い。"accessibility"
とは「近づきやすさ」「接近容易性」といった意味の英単語である。
例えば、手や腕の障害のためにマウスを使えない場合、ソフトウェアはキーボードだけで利用可能である必要がある。弱視や老眼の人にとってはフォントサイズや配色は容易にカスタマイズ可能でなくては見にくい。視覚障害の人は読み上げソフトを使うので、それに適したレイアウトや記述方法が求められる。
特に、Webページについての「利用のしやすさ」を「Webアクセシビリティ」という。これについては「WCAG」(Web Content Accessibility Guidelines)という指針がW3Cによって提唱されている。画像や音声などには代替テキストによる注釈をつける、すべての要素をキーボードで指定できるようにする、情報内容と構造、および表現を分離できるようにするなどの方針が定められている。
アンカーテキスト 【anchor text】
読み方 : アンカーテキスト
別名 : リンクテキスト, link text
HTML文書の中で、リンクが設定された文字列のこと。HTMLでは他の文書や画像などへのリンクを設定するのに<a>タグを利用するが、<a
href="...">と</a>で囲まれた部分をアンカーテキストあるいはリンクテキストという。通常、アンカーテキストは青い色で表示され、下線(アンダーライン)が引いてある。マウスカーソルを重ねるとリンクされているURLがブラウザウィンドウ下部のステータスバーに表示される。一度クリックしたリンクは紫色で表示される。これらの色や効果はスタイルシートで設定することが可能。
クロスサイトスクリプティング 【XSS】
読み方 : クロスサイトスクリプティング
別名 : Cross Site Scripting
ソフトウェアのセキュリティホールの一つで、Webサイトの訪問者の入力をそのまま画面に表示する掲示板などのプログラムが、悪意のあるコードを訪問者のブラウザに送ってしまう脆弱性のこと。
悪意を持ったユーザがフォームなどを通してJavaScriptなどのスクリプトコードを入力した時に、プログラム側に適切なチェック機構がないと、そのスクリプト内容がそのままHTMLに埋め込まれ、ページを閲覧したコンピュータでスクリプトが実行されてしまうことがある。
このような形でページに埋め込まれてしまったスクリプトは、Webブラウザではページ作成者以外が埋め込んだものであると認識できないため、ブラウザ側でこの問題を防止するには、スクリプトを使用しない設定にするほかなく、スクリプトを使用する場合は常にこの問題が発生しうる。
悪意のあるコードを直接埋め込んで実行させるほかに、ユーザに認識のないまま他所のスクリプトを呼び出して実行するよう仕向けることが可能なため、「クロスサイト」の名がついている。
スクリプトの内容によってはCookieデータの盗聴や改竄などが可能なため、商取引に使ったCookieを横取りして、本人になりすまして物品の購入を行なったり、Cookieを認証やセッション管理に使っているサイトに侵入したり、より広範かつ深刻な損害を与える可能性がある。
対策としては、訪問者からの入力内容をそのまま表示せずに、スクリプトなどのコードを識別して無効化する処理を施すことが必要である。
スタイルシート 【style sheet】
読み方 : スタイルシート
ワープロソフトなどで、フォントの種類や文字の大きさ、色、行間の幅、修飾など、文書の見栄えに関する情報をひとまとめにした、文書の雛形のこと。
あらかじめ複数のスタイルシートを作成しておくことにより、文書作成の度にいちいちレイアウトを編集しなくても、本文にスタイルシートを適用するだけで文書を作成することができる。
また、伝票などの定型文書を作成する際に、同じスタイルシートを使うことで見栄えを統一することができる。
最近はWebページでもスタイルシートの機能を使用することが可能で、インターネット上での「スタイルシート」の意味はむしろこちらが主流となっている。
インターネット上でのスタイルシートの利用は主にHTML文書に対して行われている。HTML文書にスタイルシートを適用する際にはCSSという言語を使用し、複数のページから同じCSSファイルを参照することで、複数のページの見栄えを統一することができる。
HTML文書にスタイルシートを適用すると、HTML文書からレイアウト情報などを分離し、文書の構造だけをHTML文書本体に記述することが可能になる。
これによって、HTML文書の論理的な構造が把握しやすくなるほか、主に手書きでHTML文書を記述する際に、見栄えに関するデータを全部のページにいちいち記述する必要がなくなるというメリットがある。
なお、インターネット上では「スタイルシート」をCSSとまったく同じものとして取り扱っている例が多いが、厳密には「CSSはスタイルシート機能を実現するための言語のひとつ」という関係になっている。
例えば、HTML文書で使えるスタイルシートの言語はCSSのみだが、XMLではCSSのほかに、スタイルシート機能を実現する言語としてXSLが用意されている。
ストリーミングサーバ 【streaming server】
読み方 : ストリーミングサーバ
映像や音声のストリーミング配信を行なうサーバ。多数のクライアントに対して、同時にストリーミング方式のマルチメディアデータを配信する。
ストリーミング方式のデータは通常のWebサーバから配信することも可能だが、サーバや回線への負担が大きいため、ストリーミングサーバを利用するのが一般的である。また、録画した映像をリアルタイムにストリーミング配信(ライブストリーミング)するような作業は、専用のストリーミングサーバでなければ行えない。
以前は専用のソフトウェアと高性能なハードウェアが必要とされていたが、パソコンの高性能化やADSLやCATVインターネットなどの高速回線の普及によって、小規模なストリーミングサーバは個人でも構築できるようになった。
RealNetworks社のReal System ServerやApple社のQuickTime Streaming Serverなどが、手軽に入手できるストリーミングサーバ用ソフトウェアとして知られている。
スレッド 【thread】
読み方 : スレッド
電子掲示板やニュースグループ、メーリングリストなどで、1つの話題に属する複数の記事をまとめたもの。隠語的に「スレ」と略して呼んだりすることもある。同一スレッドに属する記事はひとまとめにして扱われるため、利用者は興味のある話題だけを簡単に抽出して利用できる。
スレッド内での発言はスレッドの主旨に従ったものに限られる。スレッドに沿った話題から派生して話が主旨からずれた場合は、適宜派生した部分を新しいスレッドとして立ち上げ、元スレッドでの話題の一貫性を保つようにする慣習がある。
マルチスレッドに対応したOS上での、ソフトウェアの実行単位。1つのプログラムは最低1つのスレッドを持つ。同じプログラムに属するスレッドはメモリなどのリソースを共有する。複数のスレッドはCPUを交互に占有することによって見かけ上同時実行が可能。
高度な処理を行なうアプリケーションソフトなどでは、スレッドを複数走らせることにより、同時に複数の処理を実行できる。時間のかかる演算処理中にユーザからの入力を受け付けるといった工夫が可能になる。
複数プログラム(マルチプロセス)の同時実行も基本的な構造は同じだが、メモリアドレスの変換などの作業が必要になるため、スレッドの切り替えと比べて負荷は大きくなる。このため、マルチスレッドには対応するがマルチタスクに対応していないOSも、リアルタイムOSなどで実在する。マルチプロセスに対応したOSはすべてマルチスレッド対応している。
セッション 【session】
読み方 : セッション
WWWにおけるアクセス数の単位の一つ。「ビジット」とも呼ばれる。Webサイトを訪れたユーザがサイト内で行なう一連の行動をまとめて1セッションという。同一のユーザが短時間の間に何ページ読み込もうと、セッションは1である。同一のユーザでも、ある程度間隔が開いた場合は、新しいセッションとしてカウントする。どのくらい開いたら新しい訪問とみなすかについてはいろいろな基準があるが、Web測定の代表的な企業であるInternet Profiles社が採用している30分が、事実上の業界標準となっている。
トラックバック 【track back】
読み方 : トラックバック
ウェブログ(ブログ)の機能の一つで、別のウェブログへリンクを張った際に、リンク先の相手に対してリンクを張ったことを通知する仕組みのこと。
ウェブログ作者が別のウェブログの記事を参照して自身のサイトにコメントを掲載するような場合、元の記事へのリンクを張るのが一般的だが、単にリンクしただけでは元の記事の作者はどこからどうリンクされているのか容易に知ることはできない。トラックバックはリンク元サイトに「このような記事からリンクを張った」という情報を通知する仕組みで、リンク元記事のURLやタイトル、内容の要約などが送信される。トラックバックされたサイトはこの情報を元に「この記事を参照している記事一覧」を自動的に生成することができる。
相手に送信されるトラックバック通知のことを「トラックバック・ピング」(trackback ping)と呼び、通知の送信先を「トラックバックURL」(trackback URL)という。多くのウェブログの記事には隅に「この記事へのトラックバックURL」が記載されている。
ブログ 【Blog】
読み方 : ブログ 別名 : Weblog, ウェブログ
個人や数人のグループで運営され、日々更新される日記的なWebサイトの総称。内容としては時事ニュースや専門的トピックスに関して自らの専門や立場に根ざした分析や意見を表明したり、他のサイトの著者と議論したりする形式が多く、従来からある単なる日記サイト(著者の行動記録や身辺雑記)とは区別されることが多い。
また、CMS(コンテンツマネジメントシステム)としての側面を重視し、時系列にページの自動生成する機能や他のサイトの記事との連携機能(トラックバック)、コメント機能などを備えたブログシステムで運営されているものはすべてブログだとする立場もある。
インターネットの普及につれて、多くの人が個人のWebサイトで日記をつけ始めたが、Web日記は紙の日記と異なり、その内容が広く一般に公開されており、ほかのサイトからリンクされたり論評されたりする。また、電子メールなどを通じて著者と読者がコミュニケーションをはかったり、特定のトピックスについて電子掲示板で多人数で論議することも容易である。
そうした環境の中で、Web日記は独自の進化を遂げ、それまでの個人サイトでもない、紙の日記でもない新しいメディアとして台頭した。そうした新しい形式の日記風サイトを指す言葉として「Web」と「Log」(日誌)を一語に綴った「weblog」(ウェブログ)という言葉が誕生した。現在では略して「blog」(ブログ)と呼ばれることが多い。
ブログでは個人の行動の記録は重視されず(一切載せないわけではない)、世相や時事問題、専門的話題に関しての独自の情報や見解を掲載するという形式が主流となっている。また、ネット上で独自に見つけた面白いもの、変なもの、スクープなどを紹介し、そこにリンクを張って論評したり、街で見つけた話題(ネタ)を紹介するという記事も多い。大きな事件や事故が起こった際に、地元の人や関係者、目撃者などが自分のブログに知っている情報を掲載することで、メディアを介さずに「生の」情報が流通するという事例(イラク戦争時にイラク人の男性が公開していた「バグダッド日記」など)も見られる。
多くのブログには読者が記事にコメントを投稿して掲載できる掲示板的な機能が用意されている。また、別のブログの関連記事へリンクして相手の記事に自分の記事への逆リンクを掲載する「トラックバック」という機能もあり、興味や話題ごとに著者同士や著者と読者によるコミュニティが形成されている。最近では、ブログによる「口コミ」で情報が広がり、マスメディアが後追いでそのトピックを取り上げるという現象も起こっており、そういった面からもブログは新しいメディアとして注目されている。
アメリカでは「Blogger」や「Movable Type」といったブログ運営支援サービス・ツールが普及しており、ブログを簡単に開設し、記事を追加・更新できる環境が整っている。日本にも似たような形式のサイトが数多くあり、「個人ニュースサイト」または単に「日記サイト」などと呼ばれているが、これはアメリカで産まれたブログを導入したものではなく、独自に発生・進化してきたものである。日本の一部のネットコミュニティでは、アメリカでブログが注目される以前から個人ニュースサイト文化が定着していたこともあり、「ブログ」と呼ばれることを嫌うサイトオーナーもいる。
ActiveX 【アクティブX】
読み方 : アクティブエックス
Microsoft社が開発したインターネット関連技術群の総称。ActiveXは特定の技術や製品を指す名称ではない。
ActiveXは同社のWebブラウザのInternet
Explorer(IE)と、WebサーバのInternet Information Server(IIS)で利用可能な各種の技術で構成される。
ActiveXのWebブラウザ側の技術としては、OLEをインターネット対応に拡張したソフトウェアの部品化技術であるActiveXコントロールをはじめ、ExcelやWordなど、同社のOfficeアプリケーションソフトで作成された文書をインターネット通じて送受信し、Webブラウザに埋め込んで表示するActiveXドキュメント、VBScriptやJavaScriptなどのスクリプト言語を使ってWebページに動きを与えるActiveXスクリプトなどの技術がある。
ActiveXのWebサーバ側の技術としては、VBScriptやJavaScriptなどのスクリプト言語をサーバ上で実行して、処理結果だけをブラウザに送信するActive Server Pages(ASP)や、Webサーバから他のアプリケーションソフトを呼び出して処理を行なうInternet Server API(ISAPI)などの技術がある。
COM
読み方 : コム
フルスペル : Component Object Model
Microsoft社が提唱する、部品化されたプログラムを作成・利用するための基盤となる技術仕様。特定の機能のみを持つプログラム部品を組み合わせることでアプリケーションソフトの開発が容易になる。この仕様に基づいてデータのやりとりができるプログラム部品のことをCOMコンポーネントと呼ぶ。COMコンポーネントは開発に使った言語やコンポーネントのある場所などに拠らず、どの言語からでも、どこからでも利用することができる。ネットワークを通じて別のコンピュータ上にあるCOMコンポーネントを利用する技術をDCOMと言う。これらの技術はWindowsだけでなく、UNIXやMac
OSにも移植されている。コンポーネント開発が楽にできるよう改良された次世代のCOM+の開発が進んでおり、Windows
DNAの中核技術として期待されている。
COM+
読み方 : コムプラス
フルスペル : Component Object Model plus
Microsoft社が提唱する、部品化されたプログラムを作成・利用するための基盤となる技術仕様。COMをより発展させたもの。これまで個々のCOMコンポーネントが実装していた機能のうち、メモリ管理など共通化が可能なものをCOMランタイムとしてOSに統合し、コンポーネント開発をより容易にする。同社の提唱するWindows DNAの中核技術として、Windows 2000で提供される予定である。
CVS
読み方 : シーブイエス
フルスペル : Concurrent Versions System
ファイルのバージョンを管理するアプリケーションソフト。主にプログラムの開発作業などで使用されるが、CVS自体はどんなファイルでも管理できる。
複数人が同時に同じファイルを編集することができ、編集した内容が競合していなければ両方の変更を自動的に統合できる。また、1つのバージョンに対して別々の変更を加えるためにバージョンを分岐させることも可能など、多様な開発ニーズに対応できる機能を備える。
CVSはそれ自体がオープンソースで開発され、CVSで管理されているほか、多くのオープンソースソフトウェアでも採用されている。
C++言語
読み方 : シープラスプラスげんご
広く普及しているプログラミング言語であるC言語に、オブジェクト指向的な拡張を施したプログラミング言語。1992年にAT&T社によって仕様が策定された。C++の言語仕様はCの上位互換になっており、C++の処理系を用いて従来のCで記述されたソフトウェアの開発を行なうことも可能である。オブジェクト指向プログラミングにより、プログラムの再利用が可能となり、大規模・複雑なソフトウェアの開発が容易になった。
DCOM 【分散COM】
読み方 : ディーコム
フルスペル : Distributed Component Object Model
Microsoft社が定めた分散オブジェクト技術の仕様。同社のCOM仕様にしたがって作成されたソフトウェア部品(「COMオブジェクト」と呼ばれる)同士がネットワークを通じて通信を行い、データの交換や処理依頼のやり取りなどを行なうことができる。COMと共にWindows以外のプラットフォームにも移植されており、同社はこれをインターネット標準として普及させるため、IETFに仕様案を提出している。
Delphi 【デルファイ】
読み方 : デルファイ
Borland Software社から発売されているソフトウェア開発環境。プログラミング言語には、教育用として使われることの多いPascalに、オブジェクト指向的な拡張を施したObject
Pascalという言語が用いられる。データベースアプリケーションソフトの構築に使われることが多いと言われている。
Eclipse 【エクリプス】
読み方 : エクリプス
オープンソースの統合ソフトウェア開発環境(IDE)の一つ。Java開発者を中心に急速に普及しており、ソフトウェア開発の共通プラットフォームの標準になると予想されている。
IBM社が1999年から進めていた開発ツール研究プロジェクトの研究成果をソフトウェアの形にしたもので、2001年11月にオープンソース化され、誰でも無償で入手・改変・再配布できるようになった。
Eclipseは単なる開発ツールではなく、開発ツールの「共通プラットフォーム」と呼ばれる。これは、機能をプラグインの形であとから自由に追加できるためで、UML関連ツールやテストツール、各種のプログラミング言語などが用意されている。その数は数百種類に及ぶ。
大手ソフトウェアベンダーの中には、自社の開発ツール製品にEclipseを組み込み、Eclipseに追加する形で自社独自部分を提供するという形の製品をリリースするところも現れている。
IronPython 【アイアンパイソン】
読み方 : アイアンパイソン
Microsoft .NET環境に移植された、スクリプト言語Pythonの実行環境。通常のPythonの機能のほかに、.NET Frameworkの提供する機能を利用することができる。2006年9月にMicrosoft社が最初の正式版(バージョン1.0)をリリースした。
J2EE
読み方 : ジェーツーイーイー
フルスペル : Java 2 Enterprise Edition
Sun Microsystems社のプログラミング言語「Java 2」の機能セットの一つで、企業の業務システムや電子商取引などで使われるサーバに必要な機能をまとめたもの。
標準機能セットのJava 2 Standard Edition(J2SE)に、サーバ用のAPIや諸機能を付加したものと言える。
APIセットをまとめた「Platform
Specification」、Sunによる参照実装、互換性テストスイート、ガイドライン「Blue Prints」といった要素から成り、Javaプログラムを部品化して組み合わせることができるようにする「Enterprise
JavaBeans」や、WebページにJavaプログラムを埋め込んで内容を動的に生成する「Java
Server Pages」(JSP)などの技術を含む。
また、XMLを操作するためのAPIも用意され、サーバ上で様々なソフトウェアを組み立てられるようになっている。
J2EEの動作環境はSunを含む各社のアプリケーションサーバ製品に実装されており、データベースシステムやWebサーバと組み合わせて使う。
Java 2
読み方 : ジャバツー
Sun Microsystems社のプログラミング言語「Java」の第2版。Java 2はJDK 1.2と呼ばれていたものの正式名称で、SunによるJava 2プラットフォーム対応のプログラミング環境や実行環境も含む。
従来のJava環境に比べ、HotSpotと呼ばれる高速化技術を搭載した新しいJava仮想マシンや、柔軟性の高い新しいセキュリティモデル、高い安定性、JFCの正式なサポート、CORBAを利用した分散オブジェクト環境への対応などの改良が加えられている。
2次元グラフィックスAPIのJava 2Dや3次元グラフィックスAPIのJava 3D、従来のAWTに代わるGUI環境のSwingなど、グラフィックス関係の新機能も豊富に搭載されている。
また、Java 2では国際化がさらにすすみ、Java
2Dを利用した各国語の高品質な表示や、IMFによる日本語入力方式の標準化など、プラットフォームに依存しない日本語環境の構築に必要な基本機能を備えた。
SunはCSLというライセンスに基づいてJava 2のソースコードの一部を無償で公開しており、利益を得なければ誰でもJava
2の改変や機能の追加が行なえるようになっている。
ちなみに、JDKのバージョンは現在1.4まで上がっているが、ブランド名は「Java 2」のままである。
Javaアプレット 【Java applet】
読み方 : ジャバアプレット 別名 :
applet, アプレット
ネットワークを通じてWebブラウザにダウンロードされ、ブラウザのウィンドウに埋め込まれて実行されるJavaプログラムのこと。
Javaアプレットを悪用してユーザのコンピュータに被害を与えることのないように、ユーザのハードディスクの内容を読み書きしたり、自分が呼び出されたWebサーバ以外のコンピュータに接続したり、他のアプリケーションソフトを起動したりすることはできないようになっている。
Javaアプレットを使うことにより、HTMLで記述された静的なWebページでは実現できない動的な表現が可能となる。また、Webブラウザのみで利用することができるネットワークゲームやチャットを開発することもできる。
企業内のクライアントサーバシステムでJavaアプレットを利用すれば、社員のコンピュータにはWebブラウザを入れるだけでシステムを利用できるようになり、アプリケーションソフトの配備や管理にかかるコストを節減することができる。
Javaサーブレット 【Java servlet】
読み方 : ジャバサーブレット 別名 : servlet, サーブレット
Webサーバ上で実行されるモジュール(部品)化されたJavaプログラム。サーブレットを追加することにより、Webサーバの機能を拡張することができる。
サーブレットはJava言語で記述されているため、特定のOSやハードウェアに依存することがなく、サーブレットAPIを実装したあらゆるWebサーバで稼動させることができる。
CGIなどの他のサーバサイドプログラムと異なり、一度呼び出されるとそのままメモリに常駐するため、高速な処理が可能である。また、データを永続的に扱うことができるため、複数のユーザ間で情報を共有することもできる。
当初はSun
Microsystems社のJava
Web Serverの機能の一つとして提供されていたが、仕様がJava Servlet APIとして独立し、現在では様々なWebサーバ向けにサーブレットの実行環境が用意されている。
Java仮想マシン 【JVM】
読み方 : ジャバかそうマシン
別名 : Java Virtual Machine, Java VM
Javaバイトコードをそのプラットフォームのネイティブコードに変換して実行するソフトウェア。Java言語で開発されたソフトウェアは、配布時にはプラットフォームから独立した独自の形式(Javaバイトコード)になっており、そのままでは実行することができない。このため、そのプラットフォーム固有の形式(ネイティブコード)に変換するソフトウェアを用意して、変換しながら実行する。この変換と実行を行なうのがJVMである。実行前にまとめて変換することで実行時のオーバーヘッドをなくし、実行速度を向上させたものをJITコンパイラという。
JDBC
読み方 : ジェーディービーシー
フルスペル : Java DataBase Connectivity
JavaプログラムからリレーショナルデータベースにアクセスするためのAPI。SQL言語による命令を発行してデータベースの操作を行なうことができる。データベースの種類によらない汎用性の高いプログラムを開発することが可能だが、実際に稼動させるためには個々のデータベースに対応したドライバ(JDBCドライバ)を導入する必要がある。
JScript
読み方 : ジェースクリプト
Microsoft社が開発したスクリプト言語(簡易プログラミング言語)の一つ。Netscape Communications社とSun Microsystems社が共同開発したスクリプト言語であるJavaScriptに、Microsoft社が自社技術を追加して拡張したもの。JavaScriptが持つ機能の他に、COMオブジェクトを呼び出して利用するための仕様や、ファイルを操作する機能などが追加されている。JScriptで記述されたスクリプトは、HTMLファイルに埋め込んで同社のWebブラウザ「Internet
Explorer」で実行できるほか、「WSH」(Windows Scripting Host)と呼ばれる実行環境を用いてWindows上で直接実行したり、同社のWebサーバであるInternet Information Server上で動的にWebページを生成するために利用することができる。
JSP
読み方 : ジェーエスピー
フルスペル : JavaServer Pages
Java言語を利用してWebサーバで動的にWebページを生成し、クライアントに送信する技術。HTMLファイルの中にJavaプログラムを埋め込んでおき、クライアントの要求に応じてプログラムを実行、処理結果のみをクライアントに送信する。結果は通常のHTML形式になるため、Webブラウザに特殊な機能を組みこむことなくWebアプリケーションを構築できる。Microsoft社のIISの拡張機能ASPに似た技術だが、ASPが(ほぼ)IIS専用なのに対して、JSPは様々なWebサーバ用の実行環境が用意されており、また、特殊なスクリプト言語を覚えることなく、Java言語をそのまま使えるという利点がある。
OLE
読み方 : オーエルイー、オーレ
フルスペル : Object Linking and Embedding
分野 : Windows > 実行環境
プログラミング > オブジェクト指向
Windowsにおいて、アプリケーションソフト間でデータを転送・共有するための仕組み。
OLEを使うことによって、あるアプリケーションソフトで作成している文書の中に、別のアプリケーションソフトで作成した情報を埋め込んだり、別のアプリケーションソフトの機能をあたかも自分の機能であるかのように提供することができるようになる。
1991年に登場したOLE
1.0はWindows
3.1に搭載された。大幅に機能を拡張したOLE2が1993年に登場し、Windows 95に搭載された。1996年にはインターネットに対応するための機能を追加したものが登場し、名称も「ActiveX」に改められた。
OLEを利用することにより、単独では実行できないが、特定の機能のみを持つ部品化された小さなソフトウェアを作成することができ、これをOLEコントロールと呼ぶ。
OLEコントロールはアプリケーションソフトに機能を追加するのに利用される。企業が自社特有の処理をOLEコントロールとして作成し、市販のアプリケーションソフトに組みこんで使うことにより、0から専用のアプリケーションソフトを開発するよりも低コストにカスタムアプリケーションソフトを作成することができる。
Python
読み方 : パイソン
プログラミング言語のひとつで、Perlなどと同じくコンパイルを必要としないスクリプト言語に属する。文法が簡易で可読性に優れる一方、拡張モジュールが豊富に用意されており(C/C++で自作することも可能)、テキスト処理に限らず多様なアプリケーションの開発に利用できる。Pythonを利用してPerlと同じようにCGIスクリプトを作成することもできる。欧米ではPerlに次いで人気のあるスクリプト言語。
Ruby 【ルビー】
読み方 : ルビー
まつもとゆきひろ氏が開発したスクリプト言語とその処理系。オブジェクト指向的な言語構造になっているが、通常の手続き型のプログラミングも可能。C++言語などの本格的なオブジェクト指向言語では大げさと思われるプログラミングを支援することを目的としている。作者が個人で開発しているフリーソフトウェアである。Rubyは、Perlと同じくらい強力なテキスト処理能力、シンプルな文法などの特長をもっている。インタプリタ型言語であるため、プログラムを作成したら、コンパイルなどの処理を行なうことなく、すぐに実行することができる。UNIX上だけでなく、MS-DOS、Windows、Mac OS、BeOSの各プラットフォームにも移植されている。
Ruby on Rails
読み方 : ルビーオンレイルズ
スクリプト言語のRubyにより構築された、Webアプリケーション開発のためのフレームワーク。単に「Rails」と呼ばれることもある。デンマークのDavid Heinemeier Hansson氏によって開発され、オープンソースとして公開されている。特にデータベースを利用したWebアプリケーション開発において、新たに書く必要のあるコードを大幅に減らし開発期間を短縮できる。
Ruby on Railsは、MVC(Model-View-Controller)アーキテクチャをサポートしており、データベースに関する処理を担うモデル、データの表示を行うビュー、それらを制御するコントローラの雛形を自動生成する機能を持っている。データの作成・読み込み・更新・削除(CRUD)
のみを行うような単純なWebアプリケーションであれば、データテーブルの作成と雛形の自動生成を行うのみでほとんどの部分が開発できてしまう。Webアプリケーションの多くはCRUD処理を中核としているので、Ruby on Railsを使うことによって多くのコードの作成を自動化することができ、開発期間を短縮できる。
Ruby on Railsには、他にもWebアプリケーションの動作テストを行うためのWebサーバや、テストのためのコードを自動生成する機能、Webアプリケーションの配置を自動化するツールなどのツールキットも同時に提供している。
Smalltalk
読み方 : スモールトーク
1970年代後半にXerox社のパロアルト研究所(PARC)でAlan Kay氏らによって開発されたプログラミング言語。Xerox社から独立したParcPlace
System社によって、1980年にSmalltalk-80として商品化され、その後も機能の拡張と改良が加えられている。対話型のインタプリタ言語で、世界で初めてオブジェクト指向を採用した言語として知られている。Smalltalkの処理系は他の言語のものとは異なり、単なるプログラミング言語の処理系ではなく、プログラミングを支援する開発環境全体を表している。プログラミング言語の枠に留まらず、ユーザインターフェースなどOSの機能に近いものまでクラスとして提供していたため、「Smalltalkプログラミング環境」という呼ばれ方をすることもある。
Swing
読み方 : スイング
Sun Microsystems社のプログラミング言語Javaに標準で付属するグラフィック関連のクラスライブラリ(再利用可能なプログラム部品群)。Java 2(旧JDK 1.2)から標準搭載されたJFCの一部である。Javaで開発されたアプリケーションソフトに、実行環境によらない統一されたグラフィカルユーザインターフェースを提供する。従来から提供されているAWTに比べ、環境による振る舞いの差をなくし、実行速度を高め、多くのバグを取り除き、HTMLに対応するなどの改良が施されている。
アスペクト指向プログラミング 【AOP】
読み方 : アスペクトしこうプログラミング
別名 : Aspect Oriented Programming
ソフトウェアの特定の振る舞いを「アスペクト」として分離し、モジュール化するプログラミング技法。オブジェクト指向プログラミングの問題点を補うために考え出された手法。
オブジェクト指向プログラミングでは、属性(データ)と操作(メソッド)の集合であるオブジェクトをソフトウェアの分解単位として扱うが、オブジェクトとしてうまく分解ができないソフトウェアの「様相」や「側面」といったものが存在し、このような様相や側面は、複数のオブジェクト間にまたがる操作となる。これを「横断要素」と呼ぶ。横断要素の代表例としては、プログラムの実行の様子を記録するロギング操作が挙げられる。横断要素はプログラムコード中に散在するためにすべてを把握し管理することが難しく、また横断要素に対して変更を加える場合にはコード中のあらゆる場所から該当部分を探し出して書き換える必要が生じる。こうした要素を「アスペクト」としてモジュール化し分離することで、把握・管理・変更を容易にするのがアスペクト指向プログラミングである。アスペクト指向プログラミング言語としては、Javaを拡張したAspectJなどがある。
値渡し 【call by value】
読み方 : あたいわたし
別名 : 値呼び出し, CBV
プログラム中で関数やサブルーチンなどに引数を渡す時に、その値のみを渡す方式。渡された関数などの中で値を変更しても、呼び出し元の変数の内容は変わらない。これに対し、変数への参照(メモリ中のアドレスなど)を渡し、関数などの中で値を変更すると元の変数も同じように変更される方式を「参照渡し」(call by reference)という。
参照渡し 【call by reference】
読み方 : さんしょうわたし
別名 : 参照呼び出し, CBR
プログラム中で関数やサブルーチンなどに引数を渡す時に、変数への参照(メモリ中のアドレスなど)を渡す方式。関数などの中で値を変更すると元の変数も同じように変更される。これに対し、変数の値のみを渡し、渡された関数などの中で値を変更しても呼び出し元の変数の内容が変わらない方式を「値渡し」(call by value)という。
インスタンス 【instance】
読み方 : インスタンス
オブジェクト指向プログラミングで、クラスを基にした実際の値としてのデータのこと。クラスと対比して用いられることが多く、クラスを「型」、インスタンスを「実体」として説明されることもある。
「オブジェクト」とほぼ同義語のように用いられることが多いが、実際にメモリ上に配置されたデータの集合という意味合いが強く、データの実体をより具体的・直接的に捕らえた用語である。
例えば「名前、身長、体重」というクラスがあるとすれば、そのインスタンスは「田中、175、65」というように作られる。一つのクラスから複数のインスタンスを作ることができ、それぞれのインスタンスは違った値を持ちうる。プログラムの中で実際に扱われるのはクラスではなく、こうして作られたインスタンスの方である。
なお、ひな形となったクラスを表す際には「○○クラスに属するインスタンス」「○○クラスのインスタンス」という表現が用いられる。
インタプリタ 【interpreter】
読み方 : インタプリタ
人間がプログラミング言語で記述したソフトウェアの設計図(ソースコード)を、コンピュータが実行できる形式(オブジェクトコード)に変換しながら、そのプログラムを実行するソフトウェア。インタプリタ型の言語はプログラムの実行時に変換を行なうため、その分だけコンパイラ型言語よりも遅い。
インプリメント 【implement】
読み方 : インプリメント
別名 : インプリメンテーション, implementation, 実装
ハードウエアやソフトウェアに新しい機能や仕様、部品などを組み込むこと。また、実際にその機能を組み込む際の手法も意味する。日本語でいうと「実装」。
例えば、ソフトウェア開発においてプログラム中に新しい関数を作成することを「新しい関数をインプリメントする」と言い、基板に新しいチップを載せることを「新しいチップをインプリメントする」と言う。
「インプリメント」は実装する作業を、「インプリメンテーション」は実装された機能や部品を指す場合が多いが、この逆の用例も頻繁に見かけるので、ほぼ同義と言える。
インプリメンテーションはシステム構築を設計と開発の2つに分けた場合の後半の段階に相当し、基本的には設計段階で決定された仕様を元に機能を組み込んでいく作業となる。しかし、仕様書があいまいだったりする場合には現場の解釈で実際の動作が決められてしまう場合もあり、この結果、同じ仕様書から作成されたプログラム同士の間に相互運用性がない、といった事態が発生することがある。
このように、同じ仕様に基づいていながら実際の動作が製品ごとに微妙に異なっている状態がインプリメンテーションの違いであり、特定の製品が採用した独自のインプリメンテーションと組み合わせないと動作しない製品やサービスを「インプリメンテーションに依存した製品」などと呼ぶ。
エンティティ 【entity】
読み方 : エンティティ
別名 : 実体
一単位として扱われるデータのまとまり。なんらかの標識に対し、その実体であるデータの集合を指す。XMLやJava、データベース等で用いられる用語である。
プログラミングの分野では、オブジェクト指向の「オブジェクト」や「インスタンス」とほぼ同義の意味で使われることが多い。具体的にどういったデータがエンティティとして扱われるかは分野によって異なるため、注意が必要である。「実体」と訳されることもある。
オーバーフロー 【overflow】
読み方 : オーバーフロー
別名 : 桁あふれ
コンピュータが数値演算を行なった結果が、扱える数値の最大値を超えること。桁あふれともいう。一つの数値を表現するために割り当てられた記憶容量は決まっているため、扱える数値には上限がある。演算結果がこの上限を超えるのがオーバーフローである。例えば、8ビットの符号なし整数は、0から255までの整数を扱うことができるが、ある演算を行なった結果が500になったら、8ビット符号なし整数の枠内では扱うことができないため、オーバーフローとなる。
オーバーロード 【overload】
読み方 : オーバーロード
プログラミングにおいて、戻り値や引数の数やデータ型(シグネチャ)が異なる同名の関数やメソッドを多重定義すること。
オーバーロードにより、引数の型が異なる関数を複数定義することができ、多重定義された関数が呼び出される際には呼び出し側の引数の型に応じて適切な関数が呼び出すことができる。
これは、関数を呼び出す立場から見ると関数に与えるデータ型を変えることで関数の挙動が変化するように見える。例えば、関数の引数が10個定義してあるものの、最低限必要なものは4個であり、それ以外の変数は必要に応じて用いる、といった状況に対応できる。
オブジェクト 【object】
読み方 : オブジェクト
物、目標物、対象という意味の英単語。
ソフトウェアのユーザインターフェースなどでは、ユーザの操作対象として列挙されたアイテム(指定されたフォルダに含まれるファイルなど)のことを指すことが多い。
オブジェクト指向プログラミングにおいては、ソフトウェアが扱おうとしている現実世界に存在する物理的あるいは抽象的な実体を、属性(データ)と操作(メソッド)の集合としてモデル化し、コンピュータ上に再現したもの。オブジェクトを定義するモデルはクラスと呼ばれる。クラスに基づいて実際にコンピュータのメモリ上に展開されたオブジェクトのことをインスタンス(実体)と言うが、このインスタンスの意味でオブジェクトと呼ぶ場合も多い。
オブジェクト指向 【object oriented】
読み方 : オブジェクトしこう
ソフトウェアの設計や開発において、操作手順よりも操作対象に重点を置く考え方。
関連するデータの集合と、それに対する手続き(メソッド)を「オブジェクト」と呼ばれる一つのまとまりとして管理し、その組み合わせによってソフトウェアを構築する。
すでに存在するオブジェクトについては、利用に際してその内部構造や動作原理の詳細を知る必要はなく、外部からメッセージを送れば機能するため、特に大規模なソフトウェア開発において有効な考え方であるとされている。
データやその集合を現実世界の「モノ」になぞらえた考え方であることから、「オブジェクト」指向と呼ばれる。
例えば、我々がテレビを操作する際には、テレビ内部でどのような回路が働いているかを理解する必要はない。ただテレビの操作方法だけを知っていれば、それでテレビを使うことができる。
すなわち、「テレビ」というオブジェクトは、自身(の内部を構成する電子回路)を動作させる手続きを知っており、それを利用するためには、(例えばリモコンで)適切なメッセージを与えるだけでよい。
このように、何らかの「データ」と、それを操作するための「メソッド」の組み合わせが「オブジェクト」である。
個々の操作対象に対して固有の操作方法を設定することで、その内部動作の詳細を覆い隠し、利用しやすくしようとする考え方と言える。この考え方を応用したプログラミング技法が、オブジェクト指向プログラミング(OOP)である。
オプティマイズ 【optimize】
読み方 : オプティマイズ
別名 : コード最適化, オプティマイゼーション,
optimization
ハードウェア・ソフトウェアがより効率よく動作するよう、製品の設計などを調整すること。日本語でいうと「最適化」。「オプティマイゼーション」(optimization)とも呼ばれる。
プログラムの場合、同じ機能を持つプログラムであれば「より高速に」「より小さいメモリ使用量で」動作する方が望ましい。
このような効率のよいプログラムを作成するために、一通りの機能が実装された後に、仕様を変えずに細かな見直しを行なうのがオプティマイズである。
人間の書いたソースコードを解釈し、コンピュータの理解できる機械語に翻訳するコンパイラやインタプリタなどのソフトウェアは、より効率的なコードを生成するために、自動的にオプティマイズを行なう機能を内蔵していることが多い。
ただし、過剰なオプティマイズはプログラマの意図しない動作を引き起こしてバグの原因となることもあるため、どういった処理を行なうか指定できるようになっている。
ハードディスクなどのデフラグも「最適化」と呼ばれるが、デフラグはディスクの中を整理し、より高速に(つまり効率よく)ファイルにアクセスできるようにするために行われているため、これもオプティマイズの一種ということができる。
また、画像処理やデータベースなどの分野でも、何らかの状態を、実質的な内容を保持したまま最適な状態にすることを、広くオプティマイズと呼んでいる。何をどのように最適化するかは対象や目的によって異なる。
オプティマイズを行なうソフトウェア(やソフトウェアの持つ機能)をオプティマイザと呼ぶ。
カプセル化 【encapsulation】
読み方 : カプセルか
オブジェクト指向プログラミングが持つ特徴の一つ。データとそれを操作する手続きを一体化して「オブジェクト」として定義し、オブジェクト内の細かい仕様や構造を外部から隠蔽すること。外部からは公開された手続きを利用することでしかデータを操作できないようにすることで、個々のオブジェクトの独立性が高まる。カプセル化を進めることによりオブジェクト内部の仕様変更が外部に影響しなくなり、ソフトウェアの保守性や開発効率が高まり、プログラムの部分的な再利用が容易になる。
キュー 【queue】
読み方 : キュー
別名 : 待ち行列
先に入力したデータが先に出力されるという特徴をもつ、データ構造の一種。
ちょうど遊園地の乗り物待ちのような構造になっており、データを入れるときは新しいデータが最後尾につき、データを出すときは一番古いデータが優先して出てくる。
このように、「最初に入った物が最初に出てくる」というデータの入出力方式は「First In First Out」を略して「FIFO」と呼ばれる。
キューは何かの処理を待たせる際によく使われる構造で、たとえば共有プリンタの印刷待ち、CPUの計算待ちなどがキュー構造で処理されている。
なお、キューとは逆に、最後に入力したデータが先に出力されるというデータ構造は、スタックと呼ばれている。
スタック 【stack】
読み方 : スタック
最後に入力したデータが先に出力されるという特徴をもつ、データ構造の一種。
本を机の上に積み上げるような構造になっており、データを入れるときは新しいデータが一番上に追加され、データを出すときは一番上にある新しいデータが優先して出てくる。
このように、「最後に入った物が最初に出てくる」というデータの入出力方式は「Last In, First Out」あるいは「First In, Last Out」、略して「LIFO」「FILO」と呼ばれる。アセンブリ言語のプログラミングではもっとも頻繁に利用されるデータ構造の一つで、多くのCPUはスタックにデータを出し入れするための専用の命令を用意しており、簡単に利用することができる。サブルーチンや関数を呼び出す際に、処理中のデータや戻りアドレスなどを一時的に退避する場合に使うことが多い。
なお、スタックとは逆に、先に入力したデータが先に出力されるデータ構造は、キュー(待ち行列)と呼ばれている。
クラス 【class】
読み方 : クラス
オブジェクト指向プログラミングにおいて、データとその操作手順であるメソッドをまとめたオブジェクトの雛型を定義したもの。これを定義することで、同種のオブジェクトをまとめて扱うことができるようになる。クラスに対して、具体的なデータを持つ個々のオブジェクトは「インスタンス」と呼ばれる。なお、クラスの定義を他のクラスに受け継がせることを「継承」と言う。その際、元になるクラスを「スーパークラス」(super
class)、あるいは「基底クラス」「基本クラス」(base
class)などと呼び、新たに定義されたクラスを「サブクラス」(subclass)、あるいは「派生クラス」(derived class)と呼ぶ。
コメントアウト 【comment out】
読み方 : コメントアウト
プログラムのソースコードやソフトウェアの設定ファイルなどを部分的に修正する時に、消したい内容を実際に消してしまうのではなく、コメント化することで一時的に機能しないようにすること。
ソースコードや設定ファイルを処理するコンパイラなどのプログラムは、特殊な記法で指定した部分を解釈しないようにできており、利用方法や注釈をファイルに含めることができる。この機能を利用して、試しに消して動作させたい部分をコメント化することにより、消してしまうことなく無効化することをコメントアウトという。消してみた結果元に戻したい場合は、コメント記法の部分を解除すればすぐに元の状態に戻せる。
コンストラクタ 【constructor】
読み方 : コンストラクタ 別名 : 構築子
C++言語やJava言語などのオブジェクト指向言語で作成したプログラムにおいて、データとそれを操作するための手続きを一体化した「オブジェクト」の生成時に呼び出される特殊な関数。オブジェクトが扱うデータの初期化などをここで行なう。
コンパイラ 【compiler】
読み方 : コンパイラ
人間がプログラミング言語で記述したソフトウェアの設計図(ソースコード)を、コンピュータが実行できる形式(オブジェクトコード)に変換するソフトウェア。コンパイラ型言語ではソースコードは開発時にまとめて変換され、実行時にはオブジェクトコードを直接実行するため、インタプリタ型言語に比べて実行速度が速い。
コンポーネント 【component】
読み方 : コンポーネント
何らかの機能を持った、プログラムの部品。プログラムだけでなく、ハードウェアや組織の一部を指して用いられることもある。プログラム以外の分野で使われる例としては、機械のオプションパーツなどがある。
ソフトウェアコンポーネントは、それぞれ特定の機能を持っているが、基本的に単体では使用できず、他のプログラムと組み合わせて機能を実現、ないし追加するために用いられる。また、オブジェクトの一種として、特定の機能を持つが単独では意味を持たないようなオブジェクト、と言うこともできる。
Javaなどのオブジェクト指向言語の普及が進んだことにより、コンポーネントを組み合わせることでかなりの程度ソフトウェア開発が進む状況ができつつある。コンポーネントの開発者とソフトウェアの開発者の分業も進んでいる。こういったコンポーネントを集めてソフトウェアを開発することを「コンポーネントベースプログラミング」などと呼ぶ。
サブクラス化 【sub-class】
読み方 : サブクラスか
オブジェクト指向プログラミングにおいて、あるクラスの仕様を継承して新しいクラスを作ること。
完全に同じ定義を継承して別の名前をつけるだけでは意味がないので、普通は何らかの追加や改変が行われる。
サブクラス化でクラスを定義すれば、元になったクラスと違う部分だけを定義すればよく、それ以外のデータやメソッドは流用できるので、うまく利用すれば開発効率を向上させることができる。
なお、元になったクラスを「スーパークラス」(super-class)あるいは「基底クラス」(base
class)、新しいクラスを「サブクラス」(sub-class)あるいは「派生クラス」(derived class)と呼ぶ。その定義の通り、一般的にはスーパークラスほどシンプルで機能が少なく、派生すればするほど機能が豊富で「重たい」仕様となる。
条件付きコンパイル 【conditional compilation】
読み方 : じょうけんつきコンパイル
ソースコードをコンパイルするときに条件をつけて、コンパイルする部分を指定する機能。また、そのようなコンパイルの方法。
代表的な例としては、デバッグコードの挿入と削除がある。プログラムを開発するときに、「あるループを通過しているか?」「ある分岐をどちらに進んでいるか?」といったことを確認するために特別なコード(デバッグ用コード)を挿入することがある。これらは完成したプログラムには必要ないので、条件付きコンパイルの機能を使って、あるコンパイルオプションが指定されたときのみそれらのデバッグ用コードが有効になるように記述しておく。動作確認が終わり完成したときにはオプションを指定せずにコンパイルすれば、デバッグ用コードはコンパイルされない。
シリアライズ 【serialize】
読み方 : シリアライズ
別名 : シリアライゼーション, serialization
ソフトウェア内部で扱っているデータを丸ごと、ファイルで保存したりネットワークで送受信することができるように変換すること。
これとは逆に、ファイルに保存されているシリアライズされたデータや、ネットワークを通じて送られてきたシリアライズされたデータを、ソフトウェアで扱うことのできる元のデータ形式に復元することを「デシリアライズ」(deserialize)「デシリアライゼーション」(deserialization)という。
デシリアライズ 【deserialize】
読み方 : デシリアライズ
別名 : デシリアライゼーション, deserialization
「シリアライズ」操作により独自の形式に変換され、ファイルに保存されたりネットワークを通じて送信したデータを、ソフトウェアの扱うことのできる元のデータ形式に復元すること。
ソフトウェア内部で扱っているデータを丸ごと、ファイルで保存したりネットワークで送受信することができるように変換するのを「シリアライズ」(serialize)「シリアライゼーション」(serialization)と呼ぶが、これを再びソフトウェアで扱うためにはデシリアライズ操作で元の形式に復元する必要がある。
スクリプト言語 【script language】
読み方 : スクリプトげんご
機械語への変換作業を省略して簡単に実行できるようにした簡易プログラムを記述するためのプログラミング言語。スクリプト言語で作られたプログラムはスクリプトと呼ばれる。「簡易プログラミング言語」と呼ばれることもある。
通常のプログラミング言語と同様、英単語や記号・数字の組み合わせによってプログラムの設計図にあたるソースコードを記述するが、コンピュータが実行できる形式への変換は自動的に行われるため、手間をかけずに実行することができる。
小規模なプログラムをすばやく作成することが主な目的であるため、一般のプログラミング言語に比べて機能は少ないが、習得が容易で記法も簡便であることが多い。
代表的なものにはPerlやVBScript、JavaScriptなどがある。これらの言語はWebページに動きを加えたり、Webサーバ上で動的にページを生成するのに用いられる。
ワープロソフトや表計算ソフトなどのマクロ言語もスクリプト言語の一種である。
スパゲッティプログラム 【spaghetti program】
読み方 : スパゲッティプログラム
別名 : スパゲッティコード, spaghetti code
処理の流れや構造を把握しにくく、修正や機能の追加が困難なプログラム。
むやみに制御を(GOTO文などで)他の部分に飛ばしたり、変数の有効範囲を必要以上に広げたりすると、後からプログラムのごく一部を修正したい場合でも、プログラム全体を読み直さないと構造が理解できないという事態に陥る。この様子を、麺が複雑に絡み合い、たった数本の麺を引っ張り出そうとしても全体がついてくる、スパゲッティに例えたのがこの言葉である。
スパゲッティプログラムができる原因はいろいろあるが、設計段階で一貫した制御の流れを用意しなかったり、一度プログラムが完成した後にいろいろな機能を後付けしたり、といった理由によるものが多い。いずれにせよ、プログラムの本線となる流れをはっきりさせておき、メリハリのある処理を行うことが、スパゲッティプログラムの防止につながる。
スパゲッティプログラムはメンテナンス性に欠けるため、バグの温床になりやすく、低品質なプログラムができやすい。スパゲッティプログラムを改造する必要に迫られた場合は、一からプログラムを書き直した方が品質が高く、しかも短時間で仕上がる場合も多い。
正規表現 【regular expression】
読み方 : せいきひょうげん
文字列のパターンを表現する表記法。文字列の検索・置換を行なうときに利用される。
通常の文字と、メタキャラクタと呼ばれる特別な意味を持った記号を組み合わせて表記される。例えば「^」という文字は「行頭」、「.」は「任意の1文字」、「+」という文字は「直前の要素の1回以上の繰り返し」を意味する。
正規表現を使えば、文字列を直接指定せず、「特徴」(パターン)を指定することができるため、表記の揺れを吸収して検索を行なったり、複数の異なる文字列を一括して置換したりすることができる。
もともと、UNIX系OSのスクリプト言語処理系などに使われていた表記法だが、現在では広く様々なソフトウェアに実装されており、テキストエディタの検索・置換機能などで利用することもできるようになっている。ただし、ソフトウェアによって「方言」や利用できない機能があるため、注意が必要である。
タイムアウト 【time out】
読み方 : タイムアウト
処理やデータ転送に時間がかかりすぎる時に、途中で打ち切って終了すること。時間切れ。
プログラムに処理させるデータ量が多すぎたり、通信速度の遅い回線で大量のデータを送ったりすると、作業が終了するまでにとてつもない長い時間がかかってしまい、その間CPU時間や回線などの資源が占有されて他の処理に支障をきたしてしまうことがある。また、通信の場合は相手が何らかの不具合で応答できないとき、延々と相手からの返事を待ち続けてしまいそこで処理が止まってしまうことがある。このため、データ転送などを行なうプログラムには一定の時間が経過して処理が終わらなかったり相手から返事が無ければ処理を打ち切って終了し、次の手順に進むような仕組みが組み込まれていることが多い。こうした仕組みをタイムアウト処理という。
ヌルポインタ 【null pointer】
読み方 : ヌルポインタ
変数や関数のアドレスを格納するポインタ変数のうち、どのアドレスも指していない状態の変数のこと。実際の値は言語や処理系によって異なるが、0やランダムな値などが取られることが多い。宣言だけして領域の確保などを行なっていない場合などがこれにあたり、ヌルポインタの指し示す領域に値を代入したり読み取ったりするとエラーや例外、あるいは予期しない動作を起こす。
配列 【array】
読み方 : はいれつ
同じ型のデータを連続的に並べたデータ形式。各データをその配列の要素といい、それらは添字(インデックス)で識別される。
配列はほとんどのプログラミング言語に存在するもっとも基本的なデータ形式の一つである。同じ型の変数を、添字によって指定された数の分だけメモリに取り、データの読み書きをする。添字に変数を指定することにより、ループを使って一括処理することもできる。
言語によっては、配列の要素の中に配列を格納する「多次元配列」を使うことができるものもある。
ハッシュ法 【hashing】
読み方 : ハッシュほう
データ検索アルゴリズムの一種で、もっともポピュラーなものの一つ。検索対象のデータを一定の規則にしたがってハッシュ値と呼ばれる整数に変換し、ハッシュ値を比較して検索を行なう方式。
文字列検索のように個々のデータが大きい場合、データ全体を比較しながら検索するよりも比較にかかるコストが節約でき、高速に検索できる。ただし、検索するデータの大きさが小さければ、ハッシュ値に変換する手間が増えるためにかえって効率が悪くなることもある。
元のデータをハッシュ値に変換する関数をハッシュ関数と呼ぶが、すべてのデータが異なるハッシュ値を持つように変換できれば、探したいデータのハッシュ値と同じハッシュ値を持つデータを探すことで、探したいデータと同じデータを見つけることが可能になる。しかし現実にはそのようなハッシュ関数を用意することは難しいため、ハッシュ値が重複した場合(1つのハッシュ値に複数のデータがエントリーされる場合)を処理する方法を用意しておく必要がある。
ハッシュ値の重複を処理する代表的な方法としては、重複した場合に空いているハッシュ値にデータを振り分ける「オープンアドレス法」や、同じハッシュ値を持つデータを線形リストとして保存する「直接連鎖法」などがある。
パラメータ 【parameter】
読み方 : パラメータ
ソフトウェアを実行したりプログラム内で関数を呼び出したりするときに、その動作を指定するために外部から与える設定値。
ビルド 【build】
読み方 : ビルド
分野 : プログラミング > 開発環境
ソースコードのコンパイルやライブラリのリンクなどを行ない、最終的な実行可能ファイルを作成すること。また、そのような作業によって生成されたソフトウェアの版。
ソフトウェア開発では節目となるタイミングでビルドを作成し、全体的な動作確認を行なって不具合を探し、修正作業や機能の拡張を行なっていく。最終的な公開・発売バージョンができるまでに何度も繰り返しビルドすることが多いため、ビルドを行なう際は前回の版から更新・修正されたソースファイルやライブラリファイルのみをコンパイル、リンクしなおすことが多い。これを特に部分ビルドと呼ぶ場合もある。更新の有無に関係なくすべてのファイルをコンパイル、リンクして最新の版を作成することを完全ビルドあるいはリビルドという。
ブーリアン 【boolean】
読み方 : ブーリアン 別名 : ブール型,
論理型
プログラミング言語で扱う変数や定数の型の一つで、真(true)と偽(false)の2種類の値だけを扱う最も単純な構造の型。
結果が真か偽で表される式を「AND」や「OR」などの演算子(論理演算子)で組み合わせて、複雑な式が真になるか偽になるか判断することをブーリアン演算(論理演算)と呼ぶ。コンピュータの扱う処理や計算の多くは、最終的に論理演算に変換されて実行される。
プロシージャ 【procedure】
読み方 : プロシージャ
プログラム内で繰り返し出現する処理を行なうために、一連の命令を一つの手順としてまとめたもの。「手続き」とも呼ばれ、プログラム内部での処理単位の一つとして扱われる。プロシージャを実行することを「プロシージャを呼び出す」と言う。プログラムの中で何度も同じような処理を行なう場合、それをプロシージャとしてまとめておけば何度も同じ処理を記述する必要がなくなるので、手間が軽減され、後の修正も容易になる。
プロパティ 【property】
読み方 : プロパティ
オブジェクト指向プログラミングで使用されるオブジェクトが保持している、そのオブジェクトの性質を表すデータ。例えば、画像データのオブジェクトならば、高さや幅などのデータをプロパティとして持っている。
具体的にどういったプロパティを持っているかはオブジェクトによって異なり、オブジェクトの開発者がオブジェクトの性質に応じて設定する。プロパティの値には変更できないものと変更できるものがあり、変更可能なプロパティは同じオブジェクトに含まれるメソッドを使用して変更できる。
マシン語 【machine language】
読み方 : マシンご 別名 : 機械語
マイクロプロセッサが直接解釈・実行できる言語。数字の列で表現され、人間が簡単に理解できるような形式にはなっていない。
マシン語を直接入力してプログラミングを行なうこともできるが、通常、マシン語のプログラムを作成する場合はマシン語の命令と一対一に対応したアセンブリ言語(ニーモニック)を使う。ニーモニックは、例えば、値のコピーに「mov」という単語を用いるなど、意味を類推しやすいアルファベットの並びになっている。
プログラミング言語は、より機械が解釈しやすい言語を低水準(低レベル)、人間が解釈しやすい言語を高水準(高レベル)というが、マシン語はもっとも低水準の言語である。
マシン語は直接プロセッサが実行するコードであるため、コンピュータのあらゆる機能を利用することができ、また、実行速度を向上させやすい。このため、ハードウェアを制御するデバイスドライバや、OSの基盤となる部分などではアセンブリ言語による開発が行なわれることが多い。
その反面、マシン語は複雑な、あるいは大規模なプログラムの開発には向かないため、アプリケーションソフトの多くは高水準言語によって開発され、コンパイラやインタプリタなどを使ってコンピュータが自動的にマシン語に変換して実行するようになっている。
予約語 【reserved words】
読み方 : よやくご
プログラミング言語の仕様で定められた、変数名や関数名として定義できない単語のこと。
言語の一部として定義されている命令語などは、同名のユーザ定義変数が存在するとソースコードを正しく解釈できなくなるため、あらかじめ「予約」されていてプログラマが自由に使えないようになっている。
どの単語が予約語になるかは言語ごとに違うが、最近はC言語風の表記をするプログラミング言語が多いため、「if」「for」「while」「return」「true」などは多くの言語で予約語となっている
メソッド 【method】
読み方 : メソッド
オブジェクト指向プログラミングにおいて、各オブジェクトが持っている自身に対する操作。オブジェクトは「データ」と「手続き」から成っているが、その「手続き」の部分に当たる。プログラミング言語によっては「メンバ関数」と呼ばれることもある。
オブジェクト指向では、オブジェクトの持つデータを操作する方法はオブジェクト自身がメソッドとして内蔵しており、これを外部から呼び出すことによって操作を行なう。こうすることにより、操作の詳細をオブジェクト内部に隠蔽することができ、プログラムの再利用性や生産性を高めやすくなると言われている。
例えば、「テレビ」をオブジェクトとすれば、「画面を映す」「チャンネルを変える」といった操作がメソッドとなる。テレビのユーザはその内部の挙動の詳細を知らなくても、リモコンからメッセージを送って希望するメソッドを呼び出すだけで、テレビを操作することができる。
戻り値 【return value】
読み方 : もどりち
別名 : リターン値
プログラム中の関数やサブルーチンが処理を終了し、呼び出し元に処理の結果として返す値。戻り値には単なる計算結果の他、処理が正しく終了したかどうかを示す場合もある。言語や処理系によっては、戻り値を返さない関数を作成することもできる。
ActionScript 【アクションスクリプト】
読み方 : アクションスクリプト
Macromedia社のWeb向けアニメーションツール「Macromedia
Flash」に内蔵されている、コンテンツの再生制御などを行なうためのスクリプト言語。JavaScriptの標準規格であるECMAScriptをベースに独自の拡張を施した仕様になっている。
Flashでは、音声やベクターグラフィックスのアニメーションを組み合わせてコンテンツを作成するが、各々のオブジェクトをいつどのように再生するかを細かく制御することができる。また、ユーザのマウス操作などの入力を受けてそれに応じた動きをするなど、コンテンツに双方向性を持たせることができる。こうした仕掛けを記述するのに使われるのがActionScriptである。
ActionScriptは2000年8月に登場した「Flash
5」に初めて組み込まれ、後継の「Flash MX 2004」ではAction Script 2.0にバージョンアップしている。
ECMAScript
読み方 : エクマスクリプト
JavaScriptの標準規格。Netscape Communications社とMicrosoft社でJavaScriptの仕様が微妙に異なっていたため、両社が参加の上、ECMAが標準化したものがECMAScriptである。