GitHubを使うようになってデベロッパーのワークフローは抜本的に変わった。コードをアクセスしやすいプラットホーム上に集積することによって、プログラミングのやり方が急速に変わった。そんな状況を受けてイスラエルのCodotaは、これまで無視されることの多かったデベロッパーコミュニティのワークフローをさらに最適化したい、と考えている…マシンインテリジェンスを利用して。同社の自動補完(オートコンプリート)機能を使えば、良質なコードを短時間で書けるようになる。同社はこのほど、Khosla Venturesから200万ドルのシード資金を獲得したことを発表した。
CodotaはEclipsのようなIDEと併用して、そのインテリジェントなコード補完機能を利用する。それは、「あなたが意図するものはこれではないですか?」と短い例示をくれるのではなく、もっと大きなコード集合をリコメンドできる。
協同ファウンダーのDror WeissとEran Yahavは、GitHubやStackOverflowにあるオープンソースのコードを利用してCodotaを作った。その公開コードのすべてを機械学習のモデルに食べさせて、コードブロック全体の高いレベルの意味を認識できるようにした。
プログラミング言語は一般言語と同じ構造を共有している部分が大きい。たとえば、語の限りなく多様な並べ方によって、考えや感情を表現する。また、同じコマンドでもコード中でいろんなやり方で表現できる。だからCodotaにとっては、コードがやってることに関する大局的な理解がとても重要だ。コードのミクロな像ではなく、マクロな像を理解することが重要なのだ。
もちろん、自然言語とコードが似ているのは、あるところまでだ。Codotaのチームが説明してくれたところによると、自然言語処理では、意味は語の近辺の複数の語を見て判断する。それに比べるとプログラムはもっと構造性があり、語がどこにあるかによって語の意味が違うことは少ない。だからCodotaはテキストで訓練するだけでなく、プログラムの動作/振る舞いにもフォーカスした。
Codotaを使うとスピードと正確さが向上するだけでなく、Codota自身の発見や教育にも助けられる。Codotaは何百万ものAPIの実装で訓練されているから、ベストプラクティスをデベロッパーに提示できる。IDEの横にCodotaを開いておくと、コード中のおかしい箇所を高輝度表示し、モアベターな代案を示す。その教えは、ライブラリの原作者のコードから直接引用したものが多い。
同社の収益源は、Codotaの利用を、そしてもちろん自分のコードを、社外秘プライベートにしておきたい企業からの使用料だ。今、対応言語はJavaだけだが、言語は今後すこしずつ増やしていく。