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)などで探してみてください。
- 1C Enterprise
- ABAP
- ABNF
- AGS Script
- AMPL
- ANTLR
- API Blueprint
- APL
- ASN.1
- ASP
- ATS
- ActionScript
- Ada
- Adobe Font Metrics
- Agda
- Alloy
- Alpine Abuild
- AngelScript
- Ant Build System
- ApacheConf
- Apex
- Apollo Guidance Computer
- AppleScript
- Arc
- AsciiDoc
- AspectJ
- Assembly
- Asymptote
- Augeas
- AutoHotkey
- AutoIt
- Awk
- Ballerina
- Batchfile
- Befunge
- Bison
- BitBake
- Blade
- BlitzBasic
- BlitzMax
- Bluespec
- Boo
- Brainfuck
- Brightscript
- C
- C#
- C++
- C-ObjDump
- C2hs Haskell
- CLIPS
- CMake
- COBOL
- COLLADA
- CSON
- CSS
- CSV
- CWeb
- Cabal Config
- Cap'n Proto
- CartoCSS
- Ceylon
- Chapel
- Charity
- ChucK
- Cirru
- Clarion
- Clean
- Click
- Clojure
- Closure Templates
- Cloud Firestore Security Rules
- CoNLL-U
- CoffeeScript
- ColdFusion
- ColdFusion CFC
- Common Lisp
- Common Workflow Language
- Component Pascal
- Cool
- Coq
- Cpp-ObjDump
- Creole
- Crystal
- Csound
- Csound Document
- Csound Score
- Cuda
- Cycript
- Cython
- D
- D-ObjDump
- DIGITAL Command Language
- DM
- DNS Zone
- DTrace
- Darcs Patch
- Dart
- DataWeave
- Diff
- Dockerfile
- Dogescript
- Dylan
- E
- EBNF
- ECL
- ECLiPSe
- EJS
- EML
- EQ
- Eagle
- Easybuild
- Ecere Projects
- EditorConfig
- Edje Data Collection
- Eiffel
- Elixir
- Elm
- Emacs Lisp
- EmberScript
- Erlang
- F#
- F1.
- FIGlet Font
- FLUX
- Factor
- Fancy
- Fantom
- Filebench WML
- Filterscript
- Formatted
- Forth
- Fortran
- FreeMarker
- Frege
- G-code
- GAMS
- GAP
- GCC Machine Description
- GDB
- GDScript
- GLSL
- GN
- Game Maker Language
- Genie
- Genshi
- Gentoo Ebuild
- Gentoo Eclass
- Gerber Image
- Gettext Catalog
- Gherkin
- Git Attributes
- Git Config
- Glyph
- Glyph Bitmap Distribution Format
- Gnuplot
- Go
- Golo
- Gosu
- Grace
- Gradle
- Grammatical Framework
- Graph Modeling Language
- GraphQL
- Graphviz (DOT)
- Groovy
- Groovy Server Pages
- HAProxy
- HCL
- HLSL
- HTML
- HTML+Django
- HTML+ECR
- HTML+EEX
- HTML+ERB
- HTML+PHP
- HTML+Razor
- HTTP
- HXML
- Hack
- Haml
- Handlebars
- Harbour
- Haskell
- Haxe
- HiveQL
- HolyC
- Hy
- HyPhy
- IDL
- IGOR Pro
- INI
- IRC log
- Idris
- Ignore List
- Inform 7
- Inno Setup
- Io
- Ioke
- Isabelle
- Isabelle ROOT
- J
- JFlex
- JSON
- JSON with Comments
- JSON5
- JSONLD
- JSONiq
- JSX
- Jasmin
- Java
- Java Properties
- Java Server Pages
- JavaScript
- Jison
- Jison Lex
- Jolie
- Jsonnet
- Julia
- Jupyter Notebook
- KRL
- KiCad Layout
- KiCad Legacy Layout
- KiCad Schematic
- Kit
- Kotlin
- LFE
- LLVM
- LOLCODE
- LSL
- LTspice Symbol
- LabVIEW
- Lasso
- Latte
- Lean
- Less
- Lex
- LilyPond
- Limbo
- Linker Script
- Linux Kernel Module
- Liquid
- Literate Agda
- Literate CoffeeScript
- Literate Haskell
- LiveScript
- Logos
- Logtalk
- LookML
- LoomScript
- Lua
- M
- M4
- M4Sugar
- MATLAB
- MAXScript
- MQL4
- MQL5
- MTML
- MUF
- Makefile
- Mako
- Markdown
- Marko
- Mask
- Mathematica
- Maven POM
- Max
- MediaWiki
- Mercury
- Meson
- Metal
- MiniD
- Mirah
- Modelica
- Modula-2
- Modula-3
- Module Management System
- Monkey
- Moocode
- MoonScript
- Myghty
- NCL
- NL
- NSIS
- Nearley
- Nemerle
- NetLinx
- NetLinx+ERB
- NetLogo
- NewLisp
- Nextflow
- Nginx
- Nim
- Ninja
- Nit
- Nix
- Nu
- NumPy
- OCaml
- ObjDump
- Objective-C
- Objective-C++
- Objective-J
- Omgrofl
- Opa
- Opal
- OpenCL
- OpenEdge ABL
- OpenRC runscript
- OpenSCAD
- OpenType Feature File
- Org
- Ox
- Oxygene
- Oz
- P4
- PHP
- PLSQL
- PLpgSQL
- POV-Ray SDL
- Pan
- Papyrus
- Parrot
- Parrot Assembly
- Parrot Internal Representation
- Pascal
- Pawn
- Pep8
- Perl
- Perl 6
- Pic
- Pickle
- PicoLisp
- PigLatin
- Pike
- Pod
- Pod 6
- PogoScript
- Pony
- PostCSS
- PostScript
- PowerBuilder
- PowerShell
- Processing
- Prolog
- Propeller Spin
- Protocol Buffer
- Public Key
- Pug
- Puppet
- Pure Data
- PureBasic
- PureScript
- Python
- Python console
- Python traceback
- QML
- QMake
- Quake
- R
- RAML
- RDoc
- REALbasic
- REXX
- RHTML
- RMarkdown
- RPC
- RPM Spec
- RUNOFF
- Racket
- Ragel
- Rascal
- Raw token data
- Reason
- Rebol
- Red
- Redcode
- Regular Expression
- Ren'Py
- RenderScript
- Rich Text Format
- Ring
- RobotFramework
- Roff
- Roff Manpage
- Rouge
- Ruby
- Rust
- SAS
- SCSS
- SMT
- SPARQL
- SQF
- SQL
- SQLPL
- SRecode Template
- SSH Config
- STON
- SVG
- Sage
- SaltStack
- Sass
- Scala
- Scaml
- Scheme
- Scilab
- Self
- ShaderLab
- Shell
- ShellSession
- Shen
- Slash
- Slice
- Slim
- Smali
- Smalltalk
- Smarty
- Solidity
- SourcePawn
- Spline Font Database
- Squirrel
- Stan
- Standard ML
- Stata
- Stylus
- SubRip Text
- SugarSS
- SuperCollider
- Swift
- SystemVerilog
- TI Program
- TLA
- TOML
- TSQL
- TSX
- TXL
- Tcl
- Tcsh
- TeX
- Tea
- Terra
- Text
- Textile
- Thrift
- Turing
- Turtle
- Twig
- Type Language
- TypeScript
- Unified Parallel C
- Unity3D Asset
- Unix Assembly
- Uno
- UnrealScript
- UrWeb
- VCL
- VHDL
- Vala
- Verilog
- Vim script
- Visual Basic
- Volt
- Vue
- Wavefront Material
- Wavefront Object
- Web Ontology Language
- WebAssembly
- WebIDL
- Windows Registry Entries
- Wollok
- World of Warcraft Addon Data
- X BitMap
- X Font Directory Index
- X PixMap
- X10
- XC
- XCompose
- XML
- XPages
- XProc
- XQuery
- XS
- XSLT
- Xojo
- Xtend
- YAML
- YANG
- YARA
- YASnippet
- Yacc
- ZAP
- ZIL
- Zeek
- ZenScript
- Zephir
- Zig
- Zimpl
- desktop
- eC
- edn
- fish
- mcfunction
- mupad
- nanorc
- nesC
- ooc
- q
- reStructuredText
- sed
- wdl
- wisp
- 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",