シンタックスハイライト

出典しゅってん: フリー百科ひゃっか事典じてん『ウィキペディア(Wikipedia)』
シンタックスハイライトされたHTMLコード

シンタックスハイライト構文こうぶん強調きょうちょう[1][2][3][4] (えい: syntax highlighting) とは、テキストエディタ機能きのうであり、テキストちゅう一部分いちぶぶんをその分類ぶんるいごとにことなるいろフォント表示ひょうじするものである。シンタックスカラーリング構文こうぶん着色ちゃくしょく[5] (syntax coloring) とも。

この機能きのうにより、プログラミング言語げんごマークアップ言語げんごといった構造こうぞうされた言語げんごにおいて、その構造こうぞう構文こうぶんじょうのエラーが視覚しかくてき区別くべつしやすくなるため、ソースコード記述きじゅつ容易よういとなる。エディタによってはシンタックスハイライトと、スペルチェックやコードたたみといった、その機能きのう統合とうごうして提供ていきょうするものもある。

実用じつようじょう利点りてん[ソースを編集へんしゅう]

JavaScriptにて、watch='falseつづ区切くぎ文字もじ「'」が1つりないと、強調きょうちょう表示ひょうじおよぼす影響えいきょうしめ様子ようす

シンタックスハイライトは、とく複数ふくすうページにわたるようなコードについて、テキストの可読かどくせい向上こうじょうさせ、文脈ぶんみゃくをより明瞭めいりょうにする手法しゅほうの1つである。関心かんしんのないコードやコメントを、それがながいものであっても、らく無視むししてむことができる。

また、プログラマがプログラムちゅうあやまりをさがすたすけともなる。たとえば、ほとんどのエディタは文字もじれつリテラルのコードとはことなったいろでハイライトする。文字もじしょく対比たいひから、文字もじれつリテラルの区切くぎ記号きごうけをより簡単かんたんつけることができる。また、おおくのテキストエディタには括弧かっこ対応たいおうをチェックする機能きのうもある。カーソル位置いち括弧かっこのペアを特別とくべついろ表示ひょうじすることで、まさしく対応たいおうしているかの確認かくにん容易よういとなる。

エディタによっては、配色はいしょく情報じょうほう印刷いんさつのテキスト処理しょりソフトウェアとの交換こうかんてきした形式けいしきでエクスポートできるものもある。エクスポートようファイル形式けいしきとしてはHTMLやいろきのLaTeXPostScriptRTFなどが使つかわれる。

シンタックスハイライトがみじかいプログラムの理解りかいおよぼす影響えいきょう評価ひょうかしたプログラム心理しんりがくPPIG会議かいぎでは、その存在そんざいによりプログラマがプログラムの構造こうぞう内在ないざいするのにかかる時間じかん有意ゆうい減少げんしょうしたという研究けんきゅう報告ほうこくされた[6]。さらに調査ちょうさちゅう視線しせん追跡ついせき装置そうち使つかってあつめたデータをると、プログラマはシンタックスの強調きょうちょう表示ひょうじにより、キーワードなど標準ひょうじゅんてき構文こうぶん要素ようそられなくなったと示唆しさしている。

しかし、シンタックスハイライトには

  • ながみがしやすくなるので、プログラマはコード全体ぜんたい理解りかいしようとはしなくなる
  • タイポグラフィうえ理由りゆうから、コードをハイライトすると、していないコードよりも実際じっさいには判読はんどくせいおとってしまう

という指摘してきもある[7]

実例じつれい[ソースを編集へんしゅう]

以下いかC++のコードをシンタックスハイライトしたものである。

// Allocate all the windows
for (int i = 0; i < max; i++)
{
    wins[i] = new Window();
}

このれいでは、ソフトウェアはキーワード(予約よやく)としてforintnew を、変数へんすうとしてiwinsmax判別はんべつし、ことなるいろでハイライトしている。1ぎょうのコメントもコード部分ぶぶんとは区別くべつできるようにハイライトされている。

複数ふくすう言語げんごへの対応たいおう限界げんかい[ソースを編集へんしゅう]

2つ以上いじょう言語げんご対応たいおうするエディタでは、シンタックスハイライトをまさしくおこなうために、ユーザーがテキストの言語げんご指定していするか、エディタがファイルの拡張子かくちょうし内容ないようから言語げんご自動的じどうてき判別はんべつする必要ひつようがある。

複数ふくすう言語げんごのシンタックスハイライトをサポートする方法ほうほうとして、言語げんごごとにシンタックスハイライトの規則きそく独立どくりつして保持ほじする方式ほうしきがある。この方式ほうしきには複数ふくすう言語げんご対応たいおうしたエディタの作成さくせいがある程度ていど簡単かんたんになるという利点りてんがあるが、潜在せんざいてき限界げんかいもある。

たとえば、ユーザーによっては以下いかのような要求ようきゅうもありうる。

  • 複数ふくすう言語げんごふくむテキストをあつかいたい。たとえば JavaScript コードをんだHTMLファイルなど。
  • エディタが対応たいおうしていない言語げんごのテキストをあつかいたい。たとえば、マイナーな言語げんご擬似ぎじコードなど。

1985ねんに Live Parsing Editor(LEXXやLPEXとばれる)がオックスフォード英語えいご辞典じてん電子でんしのために開発かいはつされた。これがいろきのシンタックスハイライトを利用りようしたおそらく最初さいしょのエディタであろう。その Live parsing 機能きのうはユーザーが文章ぶんしょうやプログラム、データファイルようパーサ追加ついかすることができた[8]

ほとんどのエディタは、言語げんごごとにパーサを実装じっそうするといった複雑ふくざつ面倒めんどう方法ほうほうはとらず、パターンマッチングによるヒューリスティクスもとづいてシンタックスハイライトをおこなうので、その結果けっか完全かんぜん正確せいかくというわけにはいかない。さらに、パターンマッチングアルゴリズムによっては、あるしゅ構文こうぶんのハイライト処理しょり非常ひじょうおそいものとなってしまう。つねにファイル全体ぜんたい解析かいせきするのではなく、表示ひょうじする部分ぶぶんのみを解析かいせきすることでこの問題もんだい解決かいけつするエディタもある。

関連かんれん項目こうもく[ソースを編集へんしゅう]

出典しゅってん[ソースを編集へんしゅう]

  1. ^ 入力にゅうりょく構文こうぶんチェック - MATLAB & Simulink - MathWorks 日本にっぽん”. MathWorks, Inc.. 2018ねん8がつ24にち閲覧えつらん
  2. ^ EmEditor 使つかかた: あたらしい構文こうぶんファイルを作成さくせいするには”. Emurasoft, Inc.. 2018ねん8がつ24にち閲覧えつらん
  3. ^ IBM Knowledge Center - COBOL、JCL、PL/I、アセンブラー、および C++ ファイルの編集へんしゅう”. IBM Corporation. 2018ねん8がつ24にち閲覧えつらん
  4. ^ Nobuhide Tsuda. “世界せかい最速さいそく「さくさくエディタ」”. 2018ねん8がつ24にち閲覧えつらん
  5. ^ Sun[tm ONE Studio 4 update 1, Mobile Edition リリースノート]”. 2019ねん8がつ29にち閲覧えつらん
  6. ^ Sarkar, Advait (2015). “シンタックスに色付いろづけするとプログラム理解りかいにどう影響えいきょうするか [The impact of syntax colouring on program comprehension”] (英語えいご). 課題かだいグループ議事ぎじろくだい26かいプログラム心理しんりがく会議かいぎ) [Proceedings of the 26th Annual Conference of the Psychology of Programming Interest Group]: 49-58. http://www.ppig.org/library/paper/impact-syntax-colouring-program-comprehension 2015ねん9がつ5にち閲覧えつらん. 
  7. ^ Linus Åkesson (2007ねん8がつ26にち). “シンタックス強調きょうちょう表示ひょうじ不利ふり事例じれい [A case against syntax highlighting]” (英語えいご). 2007ねん8がつ28にち閲覧えつらん
  8. ^ LEXX – A programmable structured editor, Cowlishaw, M. F., IBM Journal of Research and Development, Vol 31, No. 1, 1987, IBM Reprint order number G322-0151