質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Q&A

解決済

7回答

3262閲覧

シンタックスハイライトをどんなときに便利だと思いますか?

otn

総合スコア84491

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

0グッド

5クリップ

投稿2015/11/11 12:54

ちょっとアンケートみたいになってしまうのですが、シンタックスハイライトはどんなときに便だと思いますか?

私が思いつくのは、エディタ使用時では「長いキーワードのスペルミスに気づける」ということくらいですが、これはむしろエディタの補完機能でカバーすべき気がします。あと、文字列リテラルの範囲や、行をまたがるコメントの範囲がわかりやすいこともありますね。
また、ウェブサイトでのコード公開でも使われているケースが多いですよね。
世の中で多く使われているので、きっと他にも便利なケースがあると思うのですが、分かりません。

逆に、欠点は、色分けの場合、色の選択をちゃんとしないと、コントラストが下がって字が読めなくなることです。
よくそういうサイトがあり、しょうがないので、ctrl-Aで全選択して反転させたり、エディタにコピペしたり等、ばかげた作業を強いられます。
このteratailも、PCで見ているとそうでも無いのですが、スマホで見ると非常に見にくかったです。機種による面もあると思いますが、字が読みにくい機種があることも確かです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答7

0

ベストアンサー

シンタックスカラーはインデントをするのと同じぐらいの役割しかないと思っています。

人は何かしらのカラーリングされ、そして、整列された記号(文字)の羅列を見たとき。

  1. 全体の形(四角いとか、丸いとか)
  2. 文字
  3. 文字列

の順で把握しやすいと思っています。とくに、4番目はコストが高く、注意してみないと把握できません。最終的には4番目まで行かないとソースコードは理解できませんが、1と2だけで得られる情報があれば、把握する速度が向上するのではないのでしょうか?

まず、プログラマーはソースコードを構造としてみています。単語や記号はそのものの意味だけではなく、このifはif文の始まりだ、とか、このintは型だとか、そんな風にみています。単純な式であっても、グローバルなのか、関数の中なのか、はたまたラムダ式の中だったりするのかを常に把握(意識)しながら読み取っています。でも、こういったことの情報は前後の文脈を理解しないとわかりません。いや、intぐらいすぐわかるだろうと思いますが、ただのintだけなのかlong long intの一部なのかでは意味が全く異なります。

さて、例えば、変数宣言がグローバルにあるのかローカルなのかは重要ですが、正しくインデントされていれば「形」の情報からすぐにわかります。そのことが先ほどのlong long intでもわかったらどうでしょうか?

C

1static long long int x = 1;

teratailだとなりませんが、エディタによってはstaticlong long intが別の色になると思います。そうするとstaticはストレージ修飾子で、long long intが型だなってすぐに把握できます。型であることを意識してから中身を見るのと、中身をみて、前後の文脈を判断して、型だと判断するのでは速度が違います。

なので、シッタクスカラーはインデントと同じぐらいの役割だということです。人が構造を、その文字列と組み合わせの前後読み解く前に、理解することを補助しているにすぎないと言うことです。katoyさんが引用したように読み飛ばしを助長してしまう可能性はあるかと思いますが、人間の脳は文字列の羅列だけで文の構造をすぐに把握できるほどよくできていません。適度なインデント、適度な改行、適度なシッタクスカラーは、私たちが本来苦手とする言語理解という部分を、視覚的な把握という得意とする感性的な処理で補うためのものではないのでしょうか。

投稿2015/11/11 23:01

raccy

総合スコア21735

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2015/12/05 18:21

インデントに次ぐレベルで、構造の把握を助けるというのは、興味深いです。 もっと文脈を読んで色分けすべきなのかもしれませんね。
guest

0

答えは単純で速く読む為です。
(あくまで自分中の答えで、他の理由も正で当然だと思ってます)

プログラマーの仕事の大部分が既存や他人のドキュメントやソースコードを読んで理解する事にあるので、
頻出単語である予約語は読み飛ばしたいものです。

しかし、つまらないタイプミスでコンパイルにすぐ失敗するので
「わざわざ予約語なんて時間や労力かけて読みたくも見たくもない、でも見なければならない」
そこを絶妙に回避してくれるシンタックスハイライトは今やなくてはならない物と思ってます。

これはプログラマーに限らず、
文章を読んで意志決定する全ての職業でも同じことだと思ってます。
箇条書きや表に纏めたり、図やグラフにして分かりやすくしたり、
文章の中で蛍光ペン引いたり太字にしたり…

投稿2015/11/11 13:26

miyabi-sun

総合スコア21158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

miyabi-sun

2015/11/11 13:35

しかし、現段階で劇的に効果があるのはノイズだらけだが読まねばならぬプログラミング言語くらいのものだと思います。 他の職業で機械的なシンタックスを利用して劇的に読む効率が変わる事はなさそうです。 どのような職業の人間であっても読む量を減らして意思決定をしやすく、精度を上げたい。 何らかの手段でその手助けが出来ると物凄い需要に繋がるかと考えてます。
otn

2015/11/11 13:46 編集

なるほど。予約語を読み飛ばすためですか。 それは気づきませんでした。 ということは、本質的で無いことを長々と書かないといけない言語ではより有効と言うことでかすね。
miyabi-sun

2015/11/11 14:15

>本質的で無いことを長々と書かないといけない言語ではより有効と言うことでかすね。 スバリ本質はそこです。 「本当にやりたい論理や操作だけをコードに起こす」事が可能ならと思ってますが、 現実はノイズだらけになってしまってます…精進します。
Chironian

2015/11/11 14:42 編集

>本質的で無いことを長々と書かないといけない言語ではより有効と言うことでかすね。 C++言語のことですね、きっと。 下記は、boostのmulti_index_container.hppにある関数の定義部分です。 これで関数の戻り値と関数名と引数を定義しているだけなのですよ。 template<  typename Tag,typename IteratorType,  typename Value,typename IndexSpecifierList,typename Allocator> typename index_iterator<  multi_index_container<Value,IndexSpecifierList,Allocator>,Tag>::type project(  multi_index_container<Value,IndexSpecifierList,Allocator>& m,  IteratorType it) { (後略) C++のテンプレートはむちゃくちゃ強力なのですが、とにかく読めないです。 これを見やすくシンタックスハイライトしてくれるエディタがあったら涙が出る程嬉しいですね!!
guest

0

私の感じるメリットを書いてみます。

・長時間ディスプレイを眺めても目が疲れないような色合いにする。(コーディング、リーディング)
・ぱっと見てそれが何か理解できる(フィールド、メソッド、クラス、文字、数値、etc...)

大きくは、上記2つかなと思います。

昔、シンタックスハイライト機能がないエディタを利用していた時に苦労していたのが上記の2点です。
数値、文字、関数、変数などがぱっと見てすぐに分かるのは、コードリーディングにはかかせない機能です。
実際に、黒背景に白単色文字にしてエディタを使ってみると身染みて便利さを体感できると思いますよ。

補完機能やGrep機能の結果を見やすくする効果もあるとは思いますが、疲れない色合いで、見た時に何が書いてあるのかすぐわかるというのが、私が感じる一番のメリットですね。

Vzエディタを使ってた頃に、MIFESの画面を横目で見ながら、、、「Vzの方が軽くて軽快だもんね!!」と言いながらシンタックスハイライト機能を羨ましく思っていた頃を思い出しました。

投稿2015/11/11 13:36

kamuycikap

総合スコア135

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2015/11/11 13:53

> ・長時間ディスプレイを眺めても目が疲れないような色合いにする。(コーディング、リーディング) これはシンタックスハイライトとは直接には関係ないですよね? 私もウェブサイトの背景が純白というのはやめて欲しいです。 > ・ぱっと見てそれが何か理解できる(フィールド、メソッド、クラス、文字、数値、etc...) これは逆に言うと、色分けがないと何か理解しにくいと言うことですよね?なるほど、そういうこともあるんですね。 そういうことでいうと、例えば、このサイトでのC言語で、int や double はハイライトされるのに、typedefした型はハイライトされませんが、これは本来はハイライトすべきということでしょうかね。
kamuycikap

2015/11/12 00:24

おはようございます。 typedefもハイライトするべきだと私は思います。 ハイライトする、ハイライトしないは、そのツール(エディタやブラウザ)を利用する人が、自分の理解(可読性等)を向上させるために自分で設定するものだと私は理解しています。 Webサービスのハイライト支援など、自分が色設定できないツールもありますが、多くのツールは自分がハイライト指定できる機能を有しています。 otn様がコードをどのように見たいのか理解したいのかによってハイライトを変えてみるのも答えを見つける一つの方法ではないでしょうか。 私の知り合いには、クラス宣言やループのバックグラウンドカラーだけをハイライトすることで、クラス構造やロジックの構造を視覚的にババっと理解する工夫をしている人がいます。 その人は、typedefやintやcharなどをハイライトしていません。 そのような使い方も参考になるのではないでしょうか。
otn

2015/12/05 18:18 編集

typedefした型をハイライトするためには、includeしているファイルの中まで見に行かないといけないので、現実的には難しいのでは無いかと思います。そのファイルがまだ無いかもしれないし。 と、思ったけど、部分的な構文解析で出来るのかな。
guest

0

質問者です。
回答していただいた方々、ありがとうございました。遅くなって済みませんが、まとめを書いておきます。

グループ1「部分的な事について」

  • (予約語の?)スペルミスの発見
  • コメントとコードの区別
  • 文字列の閉じ忘れ発見
  • 直感的な構文要素種類の把握

グループ2「プログラム全体を見るときについて」

  • 別の言語との頭の切り替え
  • フォーマットが整っているか把握
  • 直感的な構造の把握
  • 予約語を読み飛ばして速く読むため

グループ3「その他」

  • ソースコードの見やすさ(具体的には不明)
  • 見やすい色を使う

グループ1のメリットはあるだろうなと思っていましたが、グループ2の意見の人が多かったですね。

私の「色を使ったシンタックスハイライト」についての印象は「コントラストが低くて字が読めない」で、オフに出来る環境ではオフにしていました(ボールド文字くらいは使ってます)。
シンタックスハイライトなど影もない時代から、それに慣れているので、特に直感的な把握がしにくいとか、速く読めないとか思ったことはないのですが、
グループ2の意見が多いと言うことは、もったいないことをしていたのかもしれません。コントラストの高い色がカスタマイズできる環境では、使ってみようかと思います。

投稿2015/12/05 18:24

otn

総合スコア84491

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

一番 ありがたいのは
コメントとコードの区別、
文字列 の ", ' のとじ忘れ
が一目瞭然になることです。

()、{}のレベルも背景色の濃さを変化させることで判別できる様な
シンタックスハイライト法もあると良いとおもいます。

参考情報:

...
シンタックスハイライトは、特に複数ページにわたるようなコードについて、テキストの可読性を向上させ、文脈をより明瞭にするための手法の1つである。
読み手は関心のないコードやコメントを、それが長いものであっても、楽に無視して読むことができる。
また、プログラマがプログラム中の誤りをさがす助けともなる。
例えば、ほとんどのエディタは文字列のリテラルを地のコードとは異なった色でハイライトする。
文字色の対比から、文字列リテラルの区切り記号の忘れを見つけることがより簡単になる。
また、多くのテキストエディタには括弧の対応をチェックする機能もある。カーソル位置の括弧のペアを特別な色で表示することで、正しく対応しているかの確認が容易となる。
...
しかし、シンタックスハイライトには
流し読みがしやすくなるので、プログラマはコード全体を理解しようとはしなくなる
タイポグラフィ上の理由から、ハイライトされたコードはされていないコードよりも実際には判読性が劣ってしまう
という指摘もある
...

投稿2015/11/11 15:12

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

複数の言語を使っていると、シンタックスハイライトを見たときに、頭がその言語用に切り替わる感じがします。

コメントの色は言語によらず緑にしているケースが多い(最近のエディターはそうでもないですが)ので、緑=コメントだと勝手に頭が判断してくれます。

シンタックスハイライトがあるときのほうが、無いときよりも、フォーマットが整っているかどうかを判断しやすく感じます。

あと、カラフルなほうが楽しい。というのは半分冗談です。

感覚的なことばかりになってしまいましたが、私にとってシンタックスハイライトは直感に訴えるもの、という位置づけです。

欠点については、同意です。
モニターを暗めに設定しているので、エディターの黒背景+濃いグレー文字とかは読めません...

別回答コメントの、

本質的で無いことを長々と書かないといけない言語ではより有効

も、なるほどそうかもしれません。

投稿2015/11/11 14:04

argius

総合スコア9388

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

個人的には、ソースコードの見やすさとコーディング時にスペルミスの発見ができる点かと
思います。

あとは自己満足ですが、自分のこだわりや他の人に画面を見られた時のカッコよさでしょうか笑

白や明るい色は目が疲れるので、背景色が黒で、全体的に暗めな色を選択すると
目にやさしくいい感じです。

投稿2015/11/12 02:48

tomo.ina

総合スコア357

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問