[GitHub] Markdownの「シンタックスハイライト」に対応している言語一覧

Markdownでプログラムのソースコードを記述する場合に使うバッククォート3つで囲う「コードブロック」ですが、気の利いた環境だと自動的にシンタックスハイライトによって予約語やコメント分などを色分けして見やすく表示してくれます。

GitHubも例外ではなく、各リポジトリに常設されているWikiやREADMEなどをMarkdownで記述した場合は自動的にシンタックスハイライトされます。

メジャーな言語であればそのまま記述すればよいのですが、例えばYAMLやJSONなどのデータ形式や、Apacheの設定ファイルなどそもそもカラーシンタックスに対応しているのか、対応している場合キーワードはなんだろうと迷いますよね。

今回はGitHubが対応しているカラーシンタックスの設定一覧をまとめておきます。

ハイライトのやり方

Markdownでコードを記述する際にはバッククォート3つで囲ってやりますが、開始するバッククォートの横に言語名を記述するだけです。

GitHubで利用できる言語一覧

定義

定義は以下のYAMLにされています。
https://github.com/github/linguist/blob/master/lib/linguist/languages.yml (GitHubのヘルプより)

一覧

先ほどのYAMLをパースし一覧にしてみました。執筆時点で512種類もの膨大な数になりますので、お目当てのものがあるかはページ内検索(Ctrl+F)などで探してみてください。

  1. 1C Enterprise
  2. ABAP
  3. ABNF
  4. AGS Script
  5. AMPL
  6. ANTLR
  7. API Blueprint
  8. APL
  9. ASN.1
  10. ASP
  11. ATS
  12. ActionScript
  13. Ada
  14. Adobe Font Metrics
  15. Agda
  16. Alloy
  17. Alpine Abuild
  18. AngelScript
  19. Ant Build System
  20. ApacheConf
  21. Apex
  22. Apollo Guidance Computer
  23. AppleScript
  24. Arc
  25. AsciiDoc
  26. AspectJ
  27. Assembly
  28. Asymptote
  29. Augeas
  30. AutoHotkey
  31. AutoIt
  32. Awk
  33. Ballerina
  34. Batchfile
  35. Befunge
  36. Bison
  37. BitBake
  38. Blade
  39. BlitzBasic
  40. BlitzMax
  41. Bluespec
  42. Boo
  43. Brainfuck
  44. Brightscript
  45. C
  46. C#
  47. C++
  48. C-ObjDump
  49. C2hs Haskell
  50. CLIPS
  51. CMake
  52. COBOL
  53. COLLADA
  54. CSON
  55. CSS
  56. CSV
  57. CWeb
  58. Cabal Config
  59. Cap'n Proto
  60. CartoCSS
  61. Ceylon
  62. Chapel
  63. Charity
  64. ChucK
  65. Cirru
  66. Clarion
  67. Clean
  68. Click
  69. Clojure
  70. Closure Templates
  71. Cloud Firestore Security Rules
  72. CoNLL-U
  73. CoffeeScript
  74. ColdFusion
  75. ColdFusion CFC
  76. Common Lisp
  77. Common Workflow Language
  78. Component Pascal
  79. Cool
  80. Coq
  81. Cpp-ObjDump
  82. Creole
  83. Crystal
  84. Csound
  85. Csound Document
  86. Csound Score
  87. Cuda
  88. Cycript
  89. Cython
  90. D
  91. D-ObjDump
  92. DIGITAL Command Language
  93. DM
  94. DNS Zone
  95. DTrace
  96. Darcs Patch
  97. Dart
  98. DataWeave
  99. Diff
  100. Dockerfile
  101. Dogescript
  102. Dylan
  103. E
  104. EBNF
  105. ECL
  106. ECLiPSe
  107. EJS
  108. EML
  109. EQ
  110. Eagle
  111. Easybuild
  112. Ecere Projects
  113. EditorConfig
  114. Edje Data Collection
  115. Eiffel
  116. Elixir
  117. Elm
  118. Emacs Lisp
  119. EmberScript
  120. Erlang
  121. F#
  122. F1.
  123. FIGlet Font
  124. FLUX
  125. Factor
  126. Fancy
  127. Fantom
  128. Filebench WML
  129. Filterscript
  130. Formatted
  131. Forth
  132. Fortran
  133. FreeMarker
  134. Frege
  135. G-code
  136. GAMS
  137. GAP
  138. GCC Machine Description
  139. GDB
  140. GDScript
  141. GLSL
  142. GN
  143. Game Maker Language
  144. Genie
  145. Genshi
  146. Gentoo Ebuild
  147. Gentoo Eclass
  148. Gerber Image
  149. Gettext Catalog
  150. Gherkin
  151. Git Attributes
  152. Git Config
  153. Glyph
  154. Glyph Bitmap Distribution Format
  155. Gnuplot
  156. Go
  157. Golo
  158. Gosu
  159. Grace
  160. Gradle
  161. Grammatical Framework
  162. Graph Modeling Language
  163. GraphQL
  164. Graphviz (DOT)
  165. Groovy
  166. Groovy Server Pages
  167. HAProxy
  168. HCL
  169. HLSL
  170. HTML
  171. HTML+Django
  172. HTML+ECR
  173. HTML+EEX
  174. HTML+ERB
  175. HTML+PHP
  176. HTML+Razor
  177. HTTP
  178. HXML
  179. Hack
  180. Haml
  181. Handlebars
  182. Harbour
  183. Haskell
  184. Haxe
  185. HiveQL
  186. HolyC
  187. Hy
  188. HyPhy
  189. IDL
  190. IGOR Pro
  191. INI
  192. IRC log
  193. Idris
  194. Ignore List
  195. Inform 7
  196. Inno Setup
  197. Io
  198. Ioke
  199. Isabelle
  200. Isabelle ROOT
  201. J
  202. JFlex
  203. JSON
  204. JSON with Comments
  205. JSON5
  206. JSONLD
  207. JSONiq
  208. JSX
  209. Jasmin
  210. Java
  211. Java Properties
  212. Java Server Pages
  213. JavaScript
  214. Jison
  215. Jison Lex
  216. Jolie
  217. Jsonnet
  218. Julia
  219. Jupyter Notebook
  220. KRL
  221. KiCad Layout
  222. KiCad Legacy Layout
  223. KiCad Schematic
  224. Kit
  225. Kotlin
  226. LFE
  227. LLVM
  228. LOLCODE
  229. LSL
  230. LTspice Symbol
  231. LabVIEW
  232. Lasso
  233. Latte
  234. Lean
  235. Less
  236. Lex
  237. LilyPond
  238. Limbo
  239. Linker Script
  240. Linux Kernel Module
  241. Liquid
  242. Literate Agda
  243. Literate CoffeeScript
  244. Literate Haskell
  245. LiveScript
  246. Logos
  247. Logtalk
  248. LookML
  249. LoomScript
  250. Lua
  251. M
  252. M4
  253. M4Sugar
  254. MATLAB
  255. MAXScript
  256. MQL4
  257. MQL5
  258. MTML
  259. MUF
  260. Makefile
  261. Mako
  262. Markdown
  263. Marko
  264. Mask
  265. Mathematica
  266. Maven POM
  267. Max
  268. MediaWiki
  269. Mercury
  270. Meson
  271. Metal
  272. MiniD
  273. Mirah
  274. Modelica
  275. Modula-2
  276. Modula-3
  277. Module Management System
  278. Monkey
  279. Moocode
  280. MoonScript
  281. Myghty
  282. NCL
  283. NL
  284. NSIS
  285. Nearley
  286. Nemerle
  287. NetLinx
  288. NetLinx+ERB
  289. NetLogo
  290. NewLisp
  291. Nextflow
  292. Nginx
  293. Nim
  294. Ninja
  295. Nit
  296. Nix
  297. Nu
  298. NumPy
  299. OCaml
  300. ObjDump
  301. Objective-C
  302. Objective-C++
  303. Objective-J
  304. Omgrofl
  305. Opa
  306. Opal
  307. OpenCL
  308. OpenEdge ABL
  309. OpenRC runscript
  310. OpenSCAD
  311. OpenType Feature File
  312. Org
  313. Ox
  314. Oxygene
  315. Oz
  316. P4
  317. PHP
  318. PLSQL
  319. PLpgSQL
  320. POV-Ray SDL
  321. Pan
  322. Papyrus
  323. Parrot
  324. Parrot Assembly
  325. Parrot Internal Representation
  326. Pascal
  327. Pawn
  328. Pep8
  329. Perl
  330. Perl 6
  331. Pic
  332. Pickle
  333. PicoLisp
  334. PigLatin
  335. Pike
  336. Pod
  337. Pod 6
  338. PogoScript
  339. Pony
  340. PostCSS
  341. PostScript
  342. PowerBuilder
  343. PowerShell
  344. Processing
  345. Prolog
  346. Propeller Spin
  347. Protocol Buffer
  348. Public Key
  349. Pug
  350. Puppet
  351. Pure Data
  352. PureBasic
  353. PureScript
  354. Python
  355. Python console
  356. Python traceback
  357. QML
  358. QMake
  359. Quake
  360. R
  361. RAML
  362. RDoc
  363. REALbasic
  364. REXX
  365. RHTML
  366. RMarkdown
  367. RPC
  368. RPM Spec
  369. RUNOFF
  370. Racket
  371. Ragel
  372. Rascal
  373. Raw token data
  374. Reason
  375. Rebol
  376. Red
  377. Redcode
  378. Regular Expression
  379. Ren'Py
  380. RenderScript
  381. Rich Text Format
  382. Ring
  383. RobotFramework
  384. Roff
  385. Roff Manpage
  386. Rouge
  387. Ruby
  388. Rust
  389. SAS
  390. SCSS
  391. SMT
  392. SPARQL
  393. SQF
  394. SQL
  395. SQLPL
  396. SRecode Template
  397. SSH Config
  398. STON
  399. SVG
  400. Sage
  401. SaltStack
  402. Sass
  403. Scala
  404. Scaml
  405. Scheme
  406. Scilab
  407. Self
  408. ShaderLab
  409. Shell
  410. ShellSession
  411. Shen
  412. Slash
  413. Slice
  414. Slim
  415. Smali
  416. Smalltalk
  417. Smarty
  418. Solidity
  419. SourcePawn
  420. Spline Font Database
  421. Squirrel
  422. Stan
  423. Standard ML
  424. Stata
  425. Stylus
  426. SubRip Text
  427. SugarSS
  428. SuperCollider
  429. Swift
  430. SystemVerilog
  431. TI Program
  432. TLA
  433. TOML
  434. TSQL
  435. TSX
  436. TXL
  437. Tcl
  438. Tcsh
  439. TeX
  440. Tea
  441. Terra
  442. Text
  443. Textile
  444. Thrift
  445. Turing
  446. Turtle
  447. Twig
  448. Type Language
  449. TypeScript
  450. Unified Parallel C
  451. Unity3D Asset
  452. Unix Assembly
  453. Uno
  454. UnrealScript
  455. UrWeb
  456. VCL
  457. VHDL
  458. Vala
  459. Verilog
  460. Vim script
  461. Visual Basic
  462. Volt
  463. Vue
  464. Wavefront Material
  465. Wavefront Object
  466. Web Ontology Language
  467. WebAssembly
  468. WebIDL
  469. Windows Registry Entries
  470. Wollok
  471. World of Warcraft Addon Data
  472. X BitMap
  473. X Font Directory Index
  474. X PixMap
  475. X10
  476. XC
  477. XCompose
  478. XML
  479. XPages
  480. XProc
  481. XQuery
  482. XS
  483. XSLT
  484. Xojo
  485. Xtend
  486. YAML
  487. YANG
  488. YARA
  489. YASnippet
  490. Yacc
  491. ZAP
  492. ZIL
  493. Zeek
  494. ZenScript
  495. Zephir
  496. Zig
  497. Zimpl
  498. desktop
  499. eC
  500. edn
  501. fish
  502. mcfunction
  503. mupad
  504. nanorc
  505. nesC
  506. ooc
  507. q
  508. reStructuredText
  509. sed
  510. wdl
  511. wisp
  512. xBase

おまけ

抽出方法

今回はコマンドラインからYAMLを操作できるyqコマンドを利用しました。yqはJSONを操作するjqコマンドのラッパーですのでjqのフィルターがそのまま利用できます。

$ brew install python-yq
$ curl -s 'https://raw.githubusercontent.com/github/linguist/master/lib/linguist/languages.yml' | yq '. | keys'
  • brewは主にmacOSで利用されているパッケージマネージャです。pythonがインストールされている環境であればpip install yqで入ります。
  • brew install yqで入るyqコマンドは別の物です。

特定の言語が利用できるか知りたい場合は、そのままパイプを通してgrepなどしてやります。yqで絞り込んでも良いですどね。

$ curl -s 'https://raw.githubusercontent.com/github/linguist/master/lib/linguist/languages.yml' | yq '. | keys' | grep PHP
  "HTML+PHP",
  "PHP",

参考ページ