Warning: Undefined variable $type in /home/users/1/sub.jp-asate/web/wiki/extensions/HeadScript/HeadScript.php on line 3

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/users/1/sub.jp-asate/web/wiki/includes/json/FormatJson.php on line 297

Warning: Trying to access array offset on value of type bool in /home/users/1/sub.jp-asate/web/wiki/includes/Setup.php on line 660

Warning: session_name(): Session name cannot be changed after headers have already been sent in /home/users/1/sub.jp-asate/web/wiki/includes/Setup.php on line 834

Warning: ini_set(): Session ini settings cannot be changed after headers have already been sent in /home/users/1/sub.jp-asate/web/wiki/includes/session/PHPSessionHandler.php on line 126

Warning: ini_set(): Session ini settings cannot be changed after headers have already been sent in /home/users/1/sub.jp-asate/web/wiki/includes/session/PHPSessionHandler.php on line 127

Warning: session_cache_limiter(): Session cache limiter cannot be changed after headers have already been sent in /home/users/1/sub.jp-asate/web/wiki/includes/session/PHPSessionHandler.php on line 133

Warning: session_set_save_handler(): Session save handler cannot be changed after headers have already been sent in /home/users/1/sub.jp-asate/web/wiki/includes/session/PHPSessionHandler.php on line 140

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/users/1/sub.jp-asate/web/wiki/languages/LanguageConverter.php on line 773

Warning: Cannot modify header information - headers already sent by (output started at /home/users/1/sub.jp-asate/web/wiki/extensions/HeadScript/HeadScript.php:3) in /home/users/1/sub.jp-asate/web/wiki/includes/Feed.php on line 294

Warning: Cannot modify header information - headers already sent by (output started at /home/users/1/sub.jp-asate/web/wiki/extensions/HeadScript/HeadScript.php:3) in /home/users/1/sub.jp-asate/web/wiki/includes/Feed.php on line 300

Warning: Cannot modify header information - headers already sent by (output started at /home/users/1/sub.jp-asate/web/wiki/extensions/HeadScript/HeadScript.php:3) in /home/users/1/sub.jp-asate/web/wiki/includes/WebResponse.php on line 46

Warning: Cannot modify header information - headers already sent by (output started at /home/users/1/sub.jp-asate/web/wiki/extensions/HeadScript/HeadScript.php:3) in /home/users/1/sub.jp-asate/web/wiki/includes/WebResponse.php on line 46

Warning: Cannot modify header information - headers already sent by (output started at /home/users/1/sub.jp-asate/web/wiki/extensions/HeadScript/HeadScript.php:3) in /home/users/1/sub.jp-asate/web/wiki/includes/WebResponse.php on line 46
http:///mymemo.xyz/wiki/api.php?action=feedcontributions&feedformat=atom&user=126.125.111.67 miniwiki - 利用者の投稿記録 [ja] 2024-05-27T05:03:04Z 利用者の投稿記録 MediaWiki 1.31.0 スクリプト言語 2018-07-08T17:07:07Z <p>126.125.111.67: Vim scriptの表記揺れの修正</p> <hr /> <div>&#039;&#039;&#039;スクリプト言語&#039;&#039;&#039;(スクリプトげんご、{{lang-en|scripting language}})とは、[[アプリケーションソフトウェア]]を作成するための簡易的な[[プログラミング言語]]の一種を指す。<br /> <br /> &#039;&#039;&#039;スクリプト&#039;&#039;&#039;(英語で「[[台本]]・[[脚本]]」の意味)とは、その簡易的な言語記述方法を指してそう呼ばれるようになった。<br /> &lt;!--[[アプリケーションソフトウェア]]の動作内容を、[[台本]]({{lang-en-short|[[wikt:script|script]]}})のように記述し制御するための、簡易的な[[プログラミング言語]]である。--&gt;<br /> <br /> == 概要 ==<br /> 上記の意味より、さらに転じて、比較的単純な[[プログラム (コンピュータ)|プログラム]]を記述するための、簡易的なプログラミング言語全般をいう。変数に型をつけないなど、[[動的型付け]]言語をスクリプト言語と呼ぶ定義もある。ただし、厳密な定義ないし区別は存在しない。[[インタプリタ]]方式を採用しているものが多いが、性能向上のため[[実行時コンパイラ|実行時コンパイル]]などの利用も盛んである。また一方で[[Go (プログラミング言語)|Go言語]]の様に[[コンパイラ]]方式だが go run サブコマンドなどソースコードから1コマンドでスクリプトとしても実行できるという言語も増えている。このため必ずしもスクリプト言語がインタプリタ方式であるわけではない。<br /> <br /> 前者(アプリケーションソフトウェアの動作内容を、台本のように記述し制御するためのプログラミング言語)の例としては、[[UNIX]]の[[シェル]]に対する[[シェルスクリプト]]、[[Emacs]]に対する[[LISP]]、[[ウェブブラウザ|Webブラウザ]]などに対する[[JavaScript]]が挙げられる。また、機能を付け加える形で制御する場合もあり、HTTPサーバに機能を付け加えるために考えられたのが[[Server Side Includes|SSI]]やPHPである。特にスクリプトを名前に冠している言語は下記の表のように制御対象となるプログラムをもつ傾向にある。<br /> <br /> 後者(転じて意味付けされた、比較的単純なプログラムを記述するためのプログラミング言語全般)の例としては、[[Perl]]や[[PHP (プログラミング言語)|PHP]]が挙げられる。Perlは、その初期においては、テキスト処理ツールの動作を記述するという前者の意味が強かったが、近年{{いつ|date=2014年5月}}&lt;!-- See [[WP:DATED]] --&gt;では主に[[Common Gateway Interface|CGI]]を利用して動的な[[ウェブサイト]]([[電子掲示板|掲示板]]など)を構築するためのプログラミング言語として、後者の意味の点で発展したといえる。<br /> <br /> なお、大変まれながら、特定のソフトウェアを実装するために使用したプログラミング言語のことを、&#039;&#039;&#039;スクリプト言語&#039;&#039;&#039;と呼ぶことがあるので注意したい。この意味では、「記述言語」と呼ぶ方が望ましい。たとえば、UNIXの記述言語は[[C言語]]であるといえる。<br /> {| class=&quot;wikitable&quot;<br /> |+<br /> !言語<br /> !制御対象<br /> |-<br /> |シェルスクリプト<br /> |シェル(bash等)<br /> |-<br /> |AppleScript<br /> |OSAX <br /> |-<br /> |ActionScript<br /> |Flash<br /> |-<br /> |JavaScript<br /> |ウェブブラウザー<br /> |-<br /> |JScript<br /> |WSH<br /> |-<br /> |VBScript<br /> |WSH<br /> |-<br /> |PostScript<br /> |印刷機 <br /> |-<br /> |Vim script<br /> |Vim<br /> |-<br /> |Drawscript<br /> |Illustrator <br /> |-<br /> |AutoCAD Script<br /> |AutoCAD <br /> |-<br /> |MaxScript <br /> |FinalRender<br /> |}<br /> <br /> == 歴史 ==<br /> 世界初の対話型[[シェル]]は、[[タイムシェアリングシステム]]の遠隔操作のため、1960年代に開発された。そして、オペレータが同じコマンド列を[[端末]]のキーボードから何度も打ち込む手間を省くためスクリプティングの需要が生まれ、単純なマクロコマンドやコマンド列を格納したファイルを使う方式が開発された。これが最終的に[[シェルスクリプト]]の開発へと繋がった。また、大規模で複雑なアプリケーションの開発において、人間が介在しない[[バッチ処理|バッチモード]]の操作を容易にするため、非常に基本的な埋め込み型スクリプト機能が開発された。すなわち、プログラムの一部としてユーザーが書いた命令列を解釈実行する機能を備えるようにした。この場合の命令列は非常に特殊な言語で書かれ、プログラムの中にプログラムを埋め込むようなものであった。<br /> <br /> 歴史的には、[[C言語]]などの高速なプログラミング言語と[[Bourne Shell]]や[[AWK]]で書かれた低速なスクリプトは、明らかに性能に差があった。しかし技術の進歩に伴って性能差は縮まり、[[Java]]や[[LISP]]、[[Perl]]、[[Python]]といったインタプリタ型言語が汎用プログラミング言語として広く使われるようになっていった。<br /> <br /> [[Tcl]]や[[Lua]]といった言語は、汎用スクリプト言語として設計されており、アプリケーションに埋め込む形で使うこともできるし、単独で使うこともできる。[[Visual Basic for Applications]] (VBA) などのシステムは、基盤となるシステムの自動化機構と強く結びついている。アプリケーション毎に新たな言語を開発せずに汎用スクリプト言語を埋め込むことには、明らかな長所がある。開発者が言語を解釈する機能を一から開発する手間を省き、ユーザーは既知の言語を使えるので学習の手間が省ける。<br /> <br /> [[Common Gateway Interface]] (CGI) は、[[Webサーバ]]をスクリプト言語で制御することを可能とする。早くからCGI用として使われたスクリプト言語としては、Perl、[[Active Server Pages|ASP]]、[[PHP (プログラミング言語)|PHP]]などがある。<br /> <br /> ソフトウェアによっては、複数の異なるスクリプト言語に対応している。最近の[[ウェブブラウザ]]にはブラウザ自身を拡張できる言語があり、ブラウザ制御用の標準埋め込み言語として、[[ECMAScript]]([[JavaScript]])や[[Cascading Style Sheets|CSS]]や[[HyperText Markup Language|HTML]]がある。<br /> <br /> == スクリプト言語の種類 ==<br /> === ジョブ制御言語とシェル ===<br /> {{Main|シェルスクリプト}}<br /> スクリプト言語の一種は、ジョブ制御の自動化から生み出されたもので、システムプログラムの起動と制御を行う。そういう意味ではシェルの祖先としてIBMの {{lang|en|[[Job Control Language]]}}(JCL、ジョブ制御言語)があるとも言える。この種の言語の処理系([[インタプリタ]])の多くは、[[UNIX]]の[[シェル]]やMS-DOSの&lt;code&gt;[[COMMAND.COM]]&lt;/code&gt;といった[[コマンドラインインタプリタ]]と呼ばれるものである。他にも英語のようなコマンドでスクリプトを書ける [[AppleScript]] などもある。[[macOS]] では、[[Cocoa]]と[[AppleScript]]或いは[[JavaScript]]&lt;ref&gt;{{Cite web |url= https://developer.apple.com/library/prerelease/mac/releasenotes/interapplicationcommunication/rn-javascriptforautomation/index.html |title=JavaScript for Automation Release Note|format=HTML|publisher=Apple Inc. |accessdate=2014-09-04}}&lt;/ref&gt;を使ってアプリケーション全体を構築することもできる。<br /> <br /> === GUIスクリプト ===<br /> [[グラフィカルユーザインタフェース|GUI]]の出現により、コンピュータの制御のための特殊なスクリプト言語も生み出された。それは、ウィンドウ、メニュー、ボタンなどのシステムが生成したものとやり取りする言語であり、人間の手が行うことをシミュレーションする。これらの言語はユーザーが行うことを自動化し標準化するもので、一般に[[マクロ言語]]などと呼ばれる。<br /> <br /> 原理的にはGUIベースのコンピュータ上で動作する任意のアプリケーションを制御できるが、一般に特定のアプリケーションや[[オペレーティングシステム]]に対応してマクロ言語が存在する。しかし、中には画面上の[[ピクセル]]配置からグラフィカルなオブジェクトを認識して操作する言語もあり、その場合はOSやアプリケーションに依存することなく操作可能である。<br /> <br /> === アプリケーション専用言語 ===<br /> 大規模なアプリケーションプログラムの多くは、固有のスクリプト言語を備えており、そのアプリケーションのユーザーが必要に応じてそれを使う。同様に、[[コンピュータゲーム]]システムの多くに固有のスクリプト言語があり、[[ノンプレイヤーキャラクター|NPC]]の振る舞いや環境のプログラミングに使われている。このような言語は1つのアプリケーションのためだけに設計されている。表面上は特定の汎用言語に似ているものもあるが(例えば[[Quake]]にはC言語に良く似たQuakeCがある)、汎用言語にはない特有の機能を有していることが多い。[[Emacs Lisp]] は機能を完備した[[LISP]]言語の方言だが、[[Emacs]]の機能の拡張や変更に便利な特殊機能を数多く備えている。アプリケーション専用のスクリプト言語は、特定アプリケーションに特化した[[ドメイン固有言語]]と見ることもできる。<br /> <br /> === Webブラウザ ===<br /> Webブラウザは、ウェブページを表示するためのアプリケーションである。その操作を制御するための専用言語が開発されてきた。例えば、[[JavaScript]]、[[マイクロソフト]]の[[VBScript]]([[Internet Explorer]] でのみ動作)、[[Mozilla]]プロジェクトの[[XUL]]([[Firefox]]でのみ動作)、XMLコンテンツを新たな形式に変換して表示するための[[XSL Transformations|XSLT]]などがある。ユーザーの印象を良くして反応を引き出すためにXMLとJavaScriptの組合せを利用した技法が広く採用されるようになり、[[Ajax]]という名前まで付けられるようになっている。<br /> <br /> === Webサーバ ===<br /> HTTPリンクにおけるサーバ側では、[[アプリケーションサーバ]]や[[コンテンツ管理システム|CMS]]などの動的コンテンツサーバでも、様々なスクリプティング技法を活用している。この領域でよく使われるのは、[[PHP (プログラミング言語)|PHP]]、[[Java Server Pages|JSP]]、[[Active Server Pages|ASP]] などだが、他にも [[Ruby on Rails]] などが一部で人気を得ている。<br /> <br /> === テキスト処理言語 ===<br /> テキスト処理は古くからあるスクリプト言語の用途の1つである。[[UNIX]]のツールである[[AWK]]、[[sed (コンピュータ)|sed]]、[[grep]] 向けに書かれたスクリプトは、テキスト形式の設定ファイルやログファイルに関する処理を自動化するのに使われてきた。この分野では[[正規表現]]が重要である。テキスト処理用スクリプト言語では、正規表現を使って処理対象の構造を形式的に表現する。<br /> <br /> [[Perl]]はもともと、テキスト処理ツールの限界を超えることを目的として開発されたが、現在ではより汎用的な言語に成長している。<br /> <br /> === 汎用動的言語 ===<br /> {{See also|動的プログラミング言語}}<br /> Perlなどの言語はスクリプト言語として生まれたが、より広い用途に使えるプログラミング言語に成長していった。Perlとよく似た言語で、実行中に解釈され、メモリ管理機能があり、[[動的プログラミング言語|動的]]な言語は、それぞれ相互に似ていることから「スクリプト言語」と呼ばれることもある。しかし、実際にはアプリケーション本体の記述に使われることが多い言語もある。一般に、それらの言語の作者が自ら「スクリプト言語」と呼ぶことはない。<br /> <br /> === 拡張/埋め込み型言語 ===<br /> アプリケーション専用のスクリプト言語の代替として、アプリケーションプログラムに埋め込める言語は、これまでいくつも設計されてきた。(C言語などを主に使う)アプリケーションプログラマが、そのアプリケーションを制御させるためにスクリプト言語用「フック」をプログラムに作りこむ。そのような言語はアプリケーション専用の拡張言語と同じ用途に使用されるが、別のアプリケーションとスクリプトについてのスキルを共有できるという利点がある。JavaScriptは[[ウェブブラウザ]]内のスクリプト言語として生まれ、今もその用途が大半だが、[[ECMAScript]]として標準化されたことで、汎用の埋め込み用言語としても広まった。特に[[Mozilla]]が実装した[[SpiderMonkey]]は [[Yahoo! Widget Engine]] などいくつかの環境に埋め込まれている。ECMAScriptの実装(処理系)を埋め込んでいる他の例としては、[[アドビシステムズ]]の製品である[[Adobe Flash]]([[ActionScript]])や[[Adobe Acrobat]]([[Portable Document Format|PDF]]ファイルのスクリプティング用)がある。<br /> <br /> [[Tcl]]は拡張言語として生まれたが、[[Python]]、[[Perl]]、[[Ruby]] などと同じように汎用言語として使われることが多い。<br /> <br /> 複雑で用途が限定されたアプリケーションでは、通常のユーザインタフェースで提供可能な機能とは別に埋め込み型プログラミング言語を備え、ユーザーにさらなる制御手段を提供している。例えば、3Dオーサリングツール[[Maya]]はMELというスクリプト言語を内蔵している。また、[[Blender]]はその用途に[[Python]]を採用している。<br /> <br /> 機能を頻繁に追加する場合や、色々試しては実行してみるような場合(例えば、[[ゲームエンジン]])も、埋め込み型言語を利用している。開発中の[[プロトタイピング]]に威力を発揮し、プログラムの中核部を知らなくてもアプリケーションの機能をいじることができる。この用途のスクリプト言語としては、[[Lua]]や[[Python]]が有名だが、他にも[[AngelScript]]や[[Squirrel]]などがある。<br /> <br /> === その他のスクリプト言語 ===<br /> * [[ColdFusion Markup Language|CFML]]<br /> * [[Enterprise Generation Language]]<br /> * [[Euphoria (プログラミング言語)|Euphoria]]<br /> * [[ファルコン_(プログラミング言語)|Falcon]]<br /> * [[Ferite (プログラミング言語)|Ferite]]<br /> * [[Fiona]]<br /> * [[Groovy]]<br /> * [[Hot Soup Processor|HSP]]<br /> * [[HyperTalk]]<br /> * [[LotusScript]]<br /> * [[REXX]]<br /> * [[Lingo (プログラミング言語)|Lingo]]<br /> * [[Scheme]]<br /> * [[SuperTalk]]<br /> <br /> == 脚注・出典 ==<br /> {{脚注ヘルプ}}<br /> {{reflist}}<br /> <br /> == 関連項目 ==<br /> * [[軽量プログラミング言語]]<br /> * [[動的プログラミング言語]]<br /> * [[アーキテクチャ記述言語]]<br /> * [[ビルド (ソフトウェア)]]<br /> * [[ドメイン固有言語]]<br /> * [[グルー言語]] と [[グルーコード]]<br /> * [[プログラミング言語一覧]]<br /> * [[マクロ (コンピュータ用語)|マクロ]]/[[マクロ言語]] と [[プリプロセッサ]]<br /> * [[シバン (Unix)]]<br /> * [[シェルスクリプト]]<br /> <br /> == 外部リンク ==<br /> * [https://web.archive.org/web/20041010125419/http://www.doc.ic.ac.uk/~np2/patterns/scripting/ Patterns for Scripted Applications]<br /> * [http://merd.sourceforge.net/pixel/language-study/scripting-language/ A study of the Script-Oriented Programming (SOP) suitability of selected languages] — from The Scriptometer<br /> * [http://www.softpanorama.org/Articles/a_slightly_skeptical_view_on_scripting_languages.shtml A Slightly Skeptical View on Scripting Languages] by Dr. Nikolai Bezroukov<br /> * [http://www.robvanderwoude.com/ Rob van der Woude&#039;s Scripting Pages] — 管理用スクリプトに関する情報<br /> * [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<br /> * [http://home.pacbell.net/ouster/scripting.html Scripting: Higher Level Programming for the 21st Century] by John K. Ousterhout<br /> * [http://knol.google.com/k/rajamanickam-antonimuthu/quick-test-professional-software-test/14dmp09oqdm08/2#Basics_of_vbscript Use of VBScript in QTP automation]<br /> * [http://www.javaworld.com/javaworld/jw-11-2007/jw-11-jsr223.html Scripting on the Java platform] — JavaWorld<br /> * [http://www.perl.com/pub/a/2007/12/06/soto-11.html &quot;Programming is Hard - Let&#039;s Go Scripting&quot; by Larry Wall] - Perl.com transcript of his State of the Onion speech.<br /> * [http://msdn.microsoft.com/ja-jp/library/ms971094.aspx スクリプティングのすべて] MSDN<br /> <br /> {{プログラミング言語の関連項目}}<br /> <br /> {{DEFAULTSORT:すくりふとけんこ}}<br /> [[Category:スクリプト言語|*]]<br /> [[Category:プログラミング言語]]</div> 126.125.111.67
Warning: Cannot modify header information - headers already sent by (output started at /home/users/1/sub.jp-asate/web/wiki/extensions/HeadScript/HeadScript.php:3) in /home/users/1/sub.jp-asate/web/wiki/includes/WebResponse.php on line 46