コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
特別ページ
Wikippe
検索
検索
表示
ログイン
個人用ツール
ログイン
スクリプト言語のソースを表示
ページ
議論
日本語
閲覧
ソースを閲覧
履歴を表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
ソースを閲覧
履歴を表示
全般
リンク元
関連ページの更新状況
ページ情報
表示
サイドバーに移動
非表示
←
スクリプト言語
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
要求した操作を行うことは許可されていません。
このページのソースの閲覧やコピーができます。
'''スクリプト言語'''(スクリプトげんご、{{lang-en|scripting language}})とは、[[アプリケーションソフトウェア]]の動作内容を、[[台本]]({{lang-en-short|[[wikt:script|script]]}})のように記述し制御するための、簡易的な[[プログラミング言語]]である。 == 概要 == 上記の意味より、さらに転じて、比較的単純な[[プログラム (コンピュータ)|プログラム]]を記述するための、簡易的なプログラミング言語全般をいう。変数に型をつけないなど、[[動的型付け]]言語をスクリプト言語と呼ぶ定義もある。ただし、厳密な定義ないし区別は存在しない。[[インタプリタ]]方式を採用しているものが多いが、[[JavaScript]]や[[Lua]]など[[JITコンパイラ]]を処理系に搭載しているものが増えている。 前者(アプリケーションソフトウェアの動作内容を、台本のように記述し制御するためのプログラミング言語)の例としては、[[UNIX]]の[[シェル]]に対する[[シェルスクリプト]]、[[Emacs]]に対する[[LISP]]、[[ウェブブラウザ|Webブラウザ]]などに対する[[JavaScript]]が挙げられるだろう。 後者(転じて意味付けされた、比較的単純なプログラムを記述するためのプログラミング言語全般)の例としては、[[Perl]]や[[PHP Hypertext Preprocessor|PHP]]が挙げられる。Perlは、その初期においては、テキスト処理ツールの動作を記述するという前者の意味が強かったが、近年{{いつ|date=2014年5月}}<!-- See [[WP:DATED]] -->では主に[[Common Gateway Interface|CGI]]を利用して動的な[[ウェブサイト]]([[電子掲示板|掲示板]]など)を構築するためのプログラミング言語として、後者の意味の点で発展したといえるだろう。 なお、大変まれながら、特定のソフトウェアを実装するために使用したプログラミング言語のことを、'''スクリプト言語'''と呼ぶことがあるので注意したい。この意味では、「記述言語」と呼ぶ方が望ましい。たとえば、UNIXの記述言語は[[C言語]]である、といえる。 次のような定義もありえる。あるプログラム全体のビルドをやり直すことなく、ある機能を付け加えることを可能とするために用いる言語のこと。たとえばEmacsに新しい機能を付け加えるために用意されたのが[[Emacs Lisp]]であり、HTTPサーバに機能を付け加えるために考えられたのが[[Server Side Includes|SSI]]やPHPである。これらは多くの場合インタプリタ方式で動作するが、Emacsの場合のようにコンパイルして高速に動作させる機構を有しているものもある。 スクリプト言語という名前は、いくつかの基本機能を順にならべて新しい機能を定義することだけでも十分に有用であることから、「台本記述」といった意味合いでつけられたものであろう。<!-- (ActionScript 2 までは ECMAScript だったので、スクリプト言語でした。ActionScript 3 からはスクリプト言語ではありません。) [[Adobe Flash|Flash]]で使用される[[ActionScript]]がスクリプト言語と呼ばれるのは、まさに「台本」を記述するからであろう。 -->しかし、簡易に動作を記述するだけではない。多くのスクリプト言語が十分に複雑な動作が記述できるよう、プログラミング言語としてのデータ構造記述、制御構造記述能力を備えている。 == 歴史 == 世界初の対話型[[シェル]]は、[[タイムシェアリングシステム]]の遠隔操作のため、1960年代に開発された。そして、オペレータが同じコマンド列を[[端末]]のキーボードから何度も打ち込む手間を省くためスクリプティングの需要が生まれ、単純なマクロコマンドやコマンド列を格納したファイルを使う方式が開発された。これが最終的に[[シェルスクリプト]]の開発へと繋がった。また、大規模で複雑なアプリケーションの開発において、人間が介在しない[[バッチ処理|バッチモード]]の操作を容易にするため、非常に基本的な埋め込み型スクリプト機能が開発された。すなわち、プログラムの一部としてユーザーが書いた命令列を解釈実行する機能を備えるようにした。この場合の命令列は非常に特殊な言語で書かれ、プログラムの中にプログラムを埋め込むようなものであった。 歴史的には、[[C言語]]などの高速なプログラミング言語と[[Bourne Shell]]や[[AWK]]で書かれた低速なスクリプトは、明らかに性能に差があった。しかし技術の進歩に伴って性能差は縮まり、[[Java]]や[[LISP]]、[[Perl]]、[[Python]]といったインタプリタ型言語が汎用プログラミング言語として広く使われるようになっていった。 [[Tcl]]や[[Lua]]といった言語は、汎用スクリプト言語として設計されており、アプリケーションに埋め込む形で使うこともできるし、単独で使うこともできる。[[Visual Basic for Applications]] (VBA) などのシステムは、基盤となるシステムの自動化機構と強く結びついている。アプリケーション毎に新たな言語を開発せずに汎用スクリプト言語を埋め込むことには、明らかな長所がある。開発者が言語を解釈する機能を一から開発する手間を省き、ユーザーは既知の言語を使えるので学習の手間が省ける。 [[Common Gateway Interface]] (CGI) は、[[Webサーバ]]をスクリプト言語で制御することを可能とする。早くからCGI用として使われたスクリプト言語としては、Perl、[[Active Server Pages|ASP]]、[[PHP: Hypertext Preprocessor|PHP]]などがある。 ソフトウェアによっては、複数の異なるスクリプト言語に対応している。最近の[[ウェブブラウザ]]にはブラウザ自身を拡張できる言語があり、ブラウザ制御用の標準埋め込み言語として、[[ECMAScript]]([[JavaScript]])や[[Cascading Style Sheets|CSS]]や[[HyperText Markup Language|HTML]]がある。 == スクリプト言語の種類 == === ジョブ制御言語とシェル === {{Main|シェルスクリプト}} スクリプト言語の一種は、ジョブ制御の自動化から生み出されたもので、システムプログラムの起動と制御を行う。そういう意味ではシェルの祖先としてIBMの {{lang|en|[[Job Control Language]]}}(JCL、ジョブ制御言語)があるとも言える。この種の言語の処理系([[インタプリタ]])の多くは、[[UNIX]]の[[シェル]]やMS-DOSの<code>[[COMMAND.COM]]</code>といった[[コマンドラインインタプリタ]]と呼ばれるものである。他にも英語のようなコマンドでスクリプトを書ける [[AppleScript]] などもある。[[OS X|Mac OS X]] では、[[Cocoa]]と[[AppleScript]]を使ってアプリケーション全体を構築することもできる。 === GUIスクリプト === [[グラフィカルユーザインタフェース|GUI]]の出現により、コンピュータの制御のための特殊なスクリプト言語も生み出された。それは、ウィンドウ、メニュー、ボタンなどのシステムが生成したものとやり取りする言語であり、人間の手が行うことをシミュレーションする。これらの言語はユーザーが行うことを自動化し標準化するもので、一般に[[マクロ言語]]などと呼ばれる。 原理的にはGUIベースのコンピュータ上で動作する任意のアプリケーションを制御できるが、一般に特定のアプリケーションや[[オペレーティングシステム]]に対応してマクロ言語が存在する。しかし、中には画面上の[[ピクセル]]配置からグラフィカルなオブジェクトを認識して操作する言語もあり、その場合はOSやアプリケーションに依存することなく操作可能である。 === アプリケーション専用言語 === 大規模なアプリケーションプログラムの多くは、固有のスクリプト言語を備えており、そのアプリケーションのユーザーが必要に応じてそれを使う。同様に、[[コンピュータゲーム]]システムの多くに固有のスクリプト言語があり、[[ノンプレイヤーキャラクター|NPC]]の振る舞いや環境のプログラミングに使われている。このような言語は1つのアプリケーションのためだけに設計されている。表面上は特定の汎用言語に似ているものもあるが(例えば[[Quake]]にはC言語に良く似たQuakeCがある)、汎用言語にはない特有の機能を有していることが多い。[[Emacs Lisp]] は機能を完備した[[LISP]]言語の方言だが、[[Emacs]]の機能の拡張や変更に便利な特殊機能を数多く備えている。アプリケーション専用のスクリプト言語は、特定アプリケーションに特化した[[ドメイン固有言語]]と見ることもできる。 === Webブラウザ === Webブラウザは、ウェブページを表示するためのアプリケーションである。その操作を制御するための専用言語が開発されてきた。例えば、[[JavaScript]]、[[マイクロソフト]]の[[VBScript]]([[Internet Explorer]] でのみ動作)、[[Mozilla]]プロジェクトの[[XUL]]([[Firefox]]でのみ動作)、XMLコンテンツを新たな形式に変換して表示するための[[XSL Transformations|XSLT]]などがある。ユーザーの印象を良くして反応を引き出すためにXMLとJavaScriptの組合せを利用した技法が広く採用されるようになり、[[Ajax]]という名前まで付けられるようになっている。 === Webサーバ === HTTPリンクにおけるサーバ側では、[[アプリケーションサーバ]]や[[コンテンツマネージメントシステム|CMS]]などの動的コンテンツサーバでも、様々なスクリプティング技法を活用している。この領域でよく使われるのは、[[PHP: Hypertext Preprocessor|PHP]]、[[Java Server Pages|JSP]]、[[Active Server Pages|ASP]] などだが、他にも [[Ruby on Rails]] などが一部で人気を得ている。 === テキスト処理言語 === テキスト処理は古くからあるスクリプト言語の用途の1つである。[[UNIX]]のツールである[[AWK]]、[[sed (コンピュータ)|sed]]、[[grep]] 向けに書かれたスクリプトは、テキスト形式の設定ファイルやログファイルに関する処理を自動化するのに使われてきた。この分野では[[正規表現]]が重要である。テキスト処理用スクリプト言語では、正規表現を使って処理対象の構造を形式的に表現する。 [[Perl]]はもともと、テキスト処理ツールの限界を超えることを目的として開発されたが、現在ではより汎用的な言語に成長している。 === 汎用動的言語 === {{See also|動的プログラミング言語}} Perlなどの言語はスクリプト言語として生まれたが、より広い用途に使えるプログラミング言語に成長していった。Perlとよく似た言語で、実行中に解釈され、メモリ管理機能があり、[[動的プログラミング言語|動的]]な言語は、それぞれ相互に似ていることから「スクリプト言語」と呼ばれることもある。しかし、実際にはアプリケーション本体の記述に使われることが多い言語もある。一般に、それらの言語の作者が自ら「スクリプト言語」と呼ぶことはない。 === 拡張/埋め込み型言語 === アプリケーション専用のスクリプト言語の代替として、アプリケーションプログラムに埋め込める言語は、これまでいくつも設計されてきた。(C言語などを主に使う)アプリケーションプログラマが、そのアプリケーションを制御させるためにスクリプト言語用「フック」をプログラムに作りこむ。そのような言語はアプリケーション専用の拡張言語と同じ用途に使用されるが、別のアプリケーションとスクリプトについてのスキルを共有できるという利点がある。JavaScriptは[[ウェブブラウザ]]内のスクリプト言語として生まれ、今もその用途が大半だが、[[ECMAScript]]として標準化されたことで、汎用の埋め込み用言語としても広まった。特に[[Mozilla]]が実装した[[SpiderMonkey]]は [[Yahoo! Widget Engine]] などいくつかの環境に埋め込まれている。ECMAScriptの実装(処理系)を埋め込んでいる他の例としては、[[アドビシステムズ]]の製品である[[Adobe Flash]]([[ActionScript]])や[[Adobe Acrobat]]([[Portable Document Format|PDF]]ファイルのスクリプティング用)がある。 [[Tcl]]は拡張言語として生まれたが、[[Python]]、[[Perl]]、[[Ruby]] などと同じように汎用言語として使われることが多い。 複雑で用途が限定されたアプリケーションでは、通常のユーザインタフェースで提供可能な機能とは別に埋め込み型プログラミング言語を備え、ユーザーにさらなる制御手段を提供している。例えば、3Dオーサリングツール[[Maya]]はMELというスクリプト言語を内蔵している。また、[[Blender]]はその用途に[[Python]]を採用している。 機能を頻繁に追加する場合や、色々試しては実行してみるような場合(例えば、[[ゲームエンジン]])も、埋め込み型言語を利用している。開発中の[[プロトタイピング]]に威力を発揮し、プログラムの中核部を知らなくてもアプリケーションの機能をいじることができる。この用途のスクリプト言語としては、[[Lua]]や[[Python]]が有名だが、他にも[[AngelScript]]や[[Squirrel]]などがある。 === その他のスクリプト言語 === * [[ColdFusion Markup Language|CFML]] * [[Enterprise Generation Language]] * [[Euphoria (プログラミング言語)|Euphoria]] * [[ファルコン_(プログラミング言語)|Falcon]] * [[Ferite (プログラミング言語)|Ferite]] * [[Fiona]] * [[Groovy]] * [[Hot Soup Processor|HSP]] * [[HyperTalk]] * [[LotusScript]] * [[REXX]] * [[Lingo (プログラミング言語)|Lingo]] * [[Scheme]] * [[SuperTalk]] == 脚注・出典 == {{脚注ヘルプ}} {{reflist}} == 関連項目 == * [[軽量プログラミング言語]] * [[動的プログラミング言語]] * [[アーキテクチャ記述言語]] * [[ビルド (ソフトウェア)]] * [[ドメイン固有言語]] * [[グルー言語]] と [[グルーコード]] * [[プログラミング言語一覧]] * [[マクロ (コンピュータ用語)|マクロ]]/[[マクロ言語]] と [[プリプロセッサ]] * [[シバン (Unix)]] * [[シェルスクリプト]] == 外部リンク == * [http://web.archive.org/web/20041010125419/www.doc.ic.ac.uk/~np2/patterns/scripting/ Patterns for Scripted Applications] * [http://merd.sourceforge.net/pixel/language-study/scripting-language/ A study of the Script-Oriented Programming (SOP) suitability of selected languages] — from The Scriptometer * [http://www.softpanorama.org/Articles/a_slightly_skeptical_view_on_scripting_languages.shtml A Slightly Skeptical View on Scripting Languages] by Dr. Nikolai Bezroukov * [http://www.robvanderwoude.com/ Rob van der Woude's Scripting Pages] — 管理用スクリプトに関する情報 * [http://page.mi.fu-berlin.de/~prechelt/Biblio/jccpprt2_advances2003.pdf Are Scripting Languages Any Good? A Validation of Perl, Python, Rexx, and Tcl against C, C++, and Java (PDF)] — 2003 study * [http://home.pacbell.net/ouster/scripting.html Scripting: Higher Level Programming for the 21st Century] by John K. Ousterhout * [http://knol.google.com/k/rajamanickam-antonimuthu/quick-test-professional-software-test/14dmp09oqdm08/2#Basics_of_vbscript Use of VBScript in QTP automation] * [http://www.javaworld.com/javaworld/jw-11-2007/jw-11-jsr223.html Scripting on the Java platform] — JavaWorld * [http://www.perl.com/pub/a/2007/12/06/soto-11.html "Programming is Hard - Let's Go Scripting" by Larry Wall] - Perl.com transcript of his State of the Onion speech. * [http://msdn.microsoft.com/ja-jp/library/ms971094.aspx スクリプティングのすべて] MSDN {{DEFAULTSORT:すくりふとけんこ}} [[Category:スクリプト言語|*]] [[Category:プログラミング言語]]
このページで使用されているテンプレート:
テンプレート:Lang
(
ソースを閲覧
)
テンプレート:Lang-en
(
ソースを閲覧
)
テンプレート:Lang-en-short
(
ソースを閲覧
)
テンプレート:Main
(
ソースを閲覧
)
テンプレート:Reflist
(
ソースを閲覧
)
テンプレート:See also
(
ソースを閲覧
)
テンプレート:いつ
(
ソースを閲覧
)
テンプレート:脚注ヘルプ
(
ソースを閲覧
)
スクリプト言語
に戻る。
検索
検索
スクリプト言語のソースを表示
話題を追加