
みなさんこんにちは、ガノー(Twitter:Ganohr)です。
以前より、私が開発し公開している「ソースコードを入力すると、そのソースコードがどのプログラミング言語で記述されているのかを解析して通知してくれるサービス」があります。

このツールには、様々な利点があります。
- JavaScriptで開発したためクライアントサイドで実行でき、第三者へ秘匿すべきコードが漏洩することがない
- メジャーな言語からマイナーな言語まで、197言語もの特定が可能である(2023/02/24現在)
- 解析速度が高速である
しかし、その反面、欠点もあります。
- あくまでコード内のキーワードの一部をマッチして判定するだけであり、構文解析をしていないため精度が低い
- メジャーな言語含めマイナー言語まで網羅している弊害で、メジャーな言語を間違えてマイナーな言語を報告することがある
- 作成されているコードの周辺情報を考慮した推定ができない
そこで欠点を可能な限り排除すべく、現在完全無料で利用できる『ChatGPT』や『Bard』を活用し、プログラミング言語の推定を行う方法を解説し、楽にプロンプトを生成できるウェブツールを本ページにて公開します。
更新履歴
2023/04/28 ChatGPTが問い合わせ内容を履歴に残さず学習に利用しないオプションを実装
2023/04/22 最新版のjQueryに変更3.6.4(それに伴う不具合の改修)
2023/03/04 画像を追加 / 注意喚起を強調して掲載
2023/03/02 公開
目次
- 1.ChatGPTでプログラミング言語を推定するためのプロンプト生成ツール
- 1.1.注意喚起
- 1.2.ChatGPTのリンク
- 1.3.Bardのリンク
- 1.4.オプション
- 1.5.解析したいソースコードを指定
- 2.ChatGPTとは?
- 3.Bardとは?
- 4.このツールの使い方
- 5.このツールでの検出例
- 5.1.N88Basicの指定例
- 5.2.生成された『ChatGPT』や『Bard』用のプロンプト
- 5.3.『ChatGPT』の応答例
- 5.4.『Bard』の応答例
- 6.このツールの利点&ChatGPTを用いたプログラミング言語推定の利点
- 7.ChatGPTを用いたプログラミング言語推定の欠点
- 8.補足:ChatGPTの履歴&学習を無効化する方法
- 9.最後に
- 10.関連記事
ChatGPTでプログラミング言語を推定するためのプロンプト生成ツール

注意喚起
特に、2023/04/25より、ChatGPTへ投げた内容を履歴に保存せず、また学習にも利用しないようにするオプションが実装されましたので、必要な場合はそのオプションをご利用ください。
ChatGPTのリンク
Bardのリンク

オプション
解析したいソースコードを指定
※ この文言の上に「プロンプトを生成しコピー」というボタンが出ていないときは、広告ブロッカーをオフにしてください。
※ このツールで得られたプロンプトをChatGPTやBardに流し込めば簡単にプログラミング言語を特定できます!
ChatGPTとは?

ChatGPT:対話のための言語モデルの最適化
会話形式でやり取りする ChatGPT というモデルをトレーニングしました。対話形式により、ChatGPT はフォローアップの質問に答えたり、間違いを認めたり、間違った前提に異議を唱えたり、不適切な要求を拒否したりできます。ChatGPT はInstructGPTの兄弟モデルであり、プロンプトの指示に従い、詳細な応答を提供するようにトレーニングされています。
Bardとは?
Bard は、Google AI の大規模言語モデルです。テキストとコードの大規模なデータセットでトレーニングされており、幅広いタスクを実行できます。テキストの生成、言語の翻訳、さまざまな種類のクリエイティブコンテンツの作成、質問への回答を行うことができます。また、オープンエンド、やりがいのある、または奇妙な質問であっても、その知識を使用して包括的かつ有益な方法で質問に答えることもできます。
このツールの使い方
その後上部にあるツールを用いてプロンプトを生成しコピーしてください。このとき、与える情報が多ければ多いほど回答の精度が高くなります。
作成年月日が指定されていればそれ以降に開発された言語を検出対象外にできますし、拡張子が分かれば類似する別の言語を排除できます。OSや機種などが分かれば、特定環境でのみ利用されていた言語の抽出も、より高精度に行えます。
このツールでの検出例

N88Basicの指定例
生成された『ChatGPT』や『Bard』用のプロンプト
以下に示すソースコードのプログラミング言語を推定し、日本語で教えてください。このソースコードの作成日は「1983/9/1」になっています。このソースコードには拡張子として「.bas」が付与されています。このソースコードはOS「MS-DOS」の中で動作しています。このソースコードは動作に「PC9801」マシンが使われています。
10 PRINT "Hello World!"
20 GOTO 10
『ChatGPT』の応答例
このソースコードは、BASICと呼ばれるプログラミング言語で書かれています。BASICは初心者向けのプログラミング言語として広く使われていました。1983年には、PC-9801シリーズなどのパソコンでBASICを使ったプログラミングが盛んに行われていました。また、MS-DOSというオペレーティングシステムは、IBM PC互換機で広く使用されていたオペレーティングシステムであり、このソースコードもIBM PC互換機で動作することが想定されています。拡張子".bas"は、BASICプログラムであることを示すために使用されています。

『Bard』の応答例

ソースコードの作成日、拡張子、動作環境から、このソースコードはMicrosoft BASICで記述されている可能性が高いです。Microsoft BASICは、1975年にMicrosoftによって開発されたBASICの最初のバージョンです。MS-DOSやWindowsを含むさまざまなオペレーティングシステムで使用されています。Microsoft BASICは、初心者でも簡単に習得できるシンプルな言語です。また、グラフィックやサウンドなどの機能をサポートする強力な言語でもあります。ソースコードの行1は、テキスト「Hello World!」を出力します。行2は、プログラムを無限に繰り返します。これにより、プログラムは「Hello World!」というテキストを繰り返し出力します。
このソースコードは、1980年代初頭に人気があったBASICの古いバージョンで記述されている可能性もあります。ただし、Microsoft BASICは1970年代後半に開発されたため、このソースコードがMicrosoft BASICで記述されている可能性が高いです。
このツールの利点&ChatGPTを用いたプログラミング言語推定の利点

検出精度は非常に高いです。
特に私が開発した「highlight.js」を用いたプログラミング言語検出サービスと比べると「ソースコードに、そのコードの周辺情報を与えられる」という点において、圧倒的な優位性を持ちます。

例えばJavaScriptには様々な派生言語が生まれていますが、周辺情報をうまく与えられれば、かなり高精度に行えることが経験上分かっています。
このツールは、プログラミング言語を高精度に特定するために必要な周辺情報を整理し「作成日・拡張子・OS・マシン」に絞り簡単に指定できるようにしています。
プログラミング言語の特定はそこまで頻度が高くないわけですので、いちいち難しいことを考えず、こうしたツールにプロンプト生成を任せられるのはとても楽です。
ChatGPTを用いたプログラミング言語推定の欠点

まず、ChatGPTをなにも設定しない状態で使用すると、
入力したプロンプトとその応答結果がChatGPTの運営チームに漏洩します。
しかし、2023/04/25より、ChatGPTは問い合わせ内容を履歴に保存せず、またその問い合わせ内容を学習に利用しないオプションが実装されました。
古いコードの場合、「それが本当に秘匿性が高いのか判断できない」場合もあるでしょう。
そこで会社での使用の際は、必ずChatGPTの学習を無効化して利用することをおすすめします。
※ ChatGPTの履歴&学習を無効化する手順は次章の「補足」を参照
また、今日現在(2023/05/15)、Bardはオプトアウト機能は実装されていません。
対して、ChatGPTやBardと違い、ブラウザのJavaScriptのみで完結する私が開発した以下のツールなら、情報漏洩の心配は一切ありません。
したがって、
まずは以下のツールで検証し、それでもわからない場合にこのツールを用いChatGPTにプロンプトを投げるというのが最も理にかなった手順となります。

それでも不明だった場合のみ、Bardを使うことになるでしょう。
はやくBardにもオプトアウト機能が搭載されることを願うばかりです。
補足:ChatGPTの履歴&学習を無効化する方法
秘匿性の高いコードを推定したい場合は、ChatGPTの履歴と学習を無効化せねばなりません。
手順は簡単です。



これで会社でも自由にChatGPTを活用できるようになりました。
最後に

『ChatGPT』のようなAIサービスはより一層発展していくでしょう。
プログラミング言語の検出のような「知識さえあれば簡単だが、うまく見つからない場合は手間がかかるような問題」の解決には、チャット応答型のAIは非常に役立つのではないでしょうか。
この投稿を元に、あなたがAIを賢く利用するためのファーストステップにでもなれば幸いです。
以上、ガノー(Twitter:Ganohr)でした!
関連記事

コメントを書く