プログラミング言語の拡張子とGitHubにおける言語認識

今回は拡張子からのプログラミング言語の判定とGitHubで拡張子がどのように認識されるかについてご紹介いたします。



プログラミング言語の拡張子とGitHubにおける言語認識

詳しいアルゴリズムはわかりませんが、GitHubでは拡張子でプログラミング言語を判定しているようです。

プログラミング言語とその拡張子、GitHubでその拡張子が認識されるかについて表形式として以下にまとめました。

調査時点は2019年7月です。
抜けや漏れ、または新しいプログラミング言語の台頭により古くなってしまうかもしれません。

やり方としてはプログラミング言語の拡張子をネットで調べ、実際にファイルを用意してGitHubに片っ端からコミットして行きました。
実際にコミットしたファイルは「ここはコメントです。」という文字列が100行で構成されたファイルです。

 
プログラミング言語 拡張子 GitHubにおける認識
ABAP .abp ×
ActionScript .as ×
AngelScript .as ◯
Assembly .s ◯
Ballerina .bal ◯
C .c ◯
C .h ◯
C++ .cc ◯
C++ .cp ◯
C++ .cpp ◯
C++ .cxx ◯
C# .cs ×
COBOL .cobol ◯
CoffeeScript .coffee ◯
CSS .css ◯
Clojure .clj ◯
D .d ×
Makefile .d ◯
Dart .dart ◯
Erlang .erl ◯
Forth .forth ◯
Forth .f ◯
Forth .for ◯
Fortran .f95 ◯
Fortran .f90 ◯
Fortran .f03 ◯
Fortran .f03 ◯
Go .go ◯
Groovy .groovy ◯
Haskell .hs ◯
Haskell .lhs ◯
Haxe .hx ◯
HTML .html ◯
HTML .htm ◯
XHTML .xhtml ◯
Java .java ◯
JavaScript .js ◯
JavaScript .jsx ◯
JSX .jsx ×
Kotlin .kt ◯
Lisp .lisp ×
CommonLisp .lisp ◯
LSL .lsl ◯
Lua .lua ◯
MATLAB .mat ◯
SQL .sql ×
Objective-C .m ◯
OCaml .ml ◯
Pascal .pas ◯
Perl .pl ◯
PHP .php ◯
HACK .php ◯
Prolog .pro ◯
Prolog .swi ×
Python .py ◯
R .r ◯
Ruby .rb ◯
Rust .rs ◯
Scala .scala ◯
Scheme .scm ◯
Shell .sh ◯
Smalltalk .cs ◯
Swift .swift ◯
TypeScript .ts ◯
Visual Basic .vbs ◯
Verilog .v ×
Coq .v ◯
XML .xml ×
XQuery .xquery ◯

終わりに

今回はプログラミング言語とその拡張子、GitHubでその拡張子が認識されるかについて表形式としてまとめてみました。

やってみて分かりましたが、GitHubによる言語認識は謎が多いです。
同じ拡張子でも、二パターン判定が別れていたりします。(.phpではPHPとHACKのにパターン認識が分かれている)
判定方法として拡張子のみを見るのではなく、実際にファイルの中身も見て判定しているのかもしれません。

もしかしたら拡張子がつくファイルを片っ端からコミットしてブラックボックス的にやるのではなく、GitHubの言語認識のアルゴリズム自体を解析した方がよかったのかもしれません。

何かありましたらコメント等で教えていただけると幸いです。

最後までお読みいただきありがとうございます。
よろしければブログやTwitterでのシェアをお願いしております。
コメントもお待ちしております。
誤植や勘違いなどございましたらコメント欄にて教えていただけると幸いです。

ITパスポート、基本情報技術者、応用情報技術者などIPAが提供する国家資格の過去問を学べるモバイルアプリをリリースしました。
詳しくは下記のプレスリリースをご覧ください。
https://prtimes.jp/main/html/rd/p/000000008.000073303.html

Youtubeチャンネル開設いたしました。
チャンネル登録者10,000人を目指しているので、良いと思った方はチャンネル登録をお願いしたいです。
https://www.youtube.com/channel/UC219XhmSRxmXltTy6COxSMw






GitHub

Posted by ちこ