「FacebookがプロダクションでD言語の利用を始めた」ことに関する記事が少し話題になってます.で,これだけだとD言語が他の言語のようにプロダクションreadyと勘違いする方もいるかもしれないので,今の現状について書いておきます.
この記事の一言まとめ
手軽にプロダクションで使えるわけではありません!
詳細が知りたい方は以降をお読みください.
今回の話
FacebookのAndreiはTDPLという本を出した,D言語界隈でも主要なコミッタです.その一方,C++界隈でも有名な人物で,そういう人物がついにC++をやめてプロダクションでD言語を使った,というのが一つの大きなニュースです.
また,Facebookにはこの記事を書いたBenなど,D言語を使えるエンジニアが他にもいます.
プロダクションでつかえるのか?
簡単に言うと,「品質的には問題が無い,が今広まってる言語ほど楽ではない」です.JavaやRuby/Python/PHPなどWebで広く使われているような言語のように,たくさんのライブラリがある訳ではありません.
Dubというパッケージマネージャが最近出てきましたが,登録されているライブラリはまだ多くなく,なければ自分で書く必要があります.また,ライブラリにバグがあっても他の誰かが報告してくれるほどコミュニティも大きくないので,その辺も気をつける必要があります.まぁ大抵github/bitbucketなので,今時のエンジニアには楽だとは思いますが…
今プロダクションでD言語を使っている会社はFacebook以外にももちろんありますが(広告配信,ゲーム,社内システム,Webサーバなど),そういう会社は大抵D言語でライブラリを書いてるような精通した人物が開発陣の中にいるのが現状です.まぁ,メジャーではない言語ではよくある光景だと思います.
プロダクション以外だと,研究とかでつかっている人は増えている感じがします.数値計算系,言語処理系,自然言語処理系,などなど書きやすさとパフォーマンスのバランスで選ばれているようです.
互換性
D言語を使ってない方からよく「D言語は互換性を維持しないからクソだ」という意見を聞くのですが,これにはいくつか理由があります.
シェアがない
当たり前ですが,シェアがない言語が律儀に互換性を維持してリリースすることのメリットはほぼありません.ライブラリも多くない言語では,互換性がなくなって困るライブラリはほとんどなく,ライブラリ開発者もほとんどが言語仕様の議論に参加しているので,基本問題は起きません.
コミュニティの方向性
上と関わりがありますが,今コミュニティとして,互換性よりも言語を良くしよう,という流れの方が強いです.
- この機能あった方がライブラリとかアプリが書きやすい
- 新しい機能でよりよいAPIが出来たのでこっちに移行
- この機能は誰も使ってないから削除
- この機能使うとこういう危険なコードになるので削除
みたいな.これは今後プロダクションでの利用が増え,「互換性は保った方がいいんじゃないか?」という開発者が増えれば,流れは変わると思います.この辺はPythonやScalaなど,今時の言語と同じような感じかなと.
今後に備えて,「bug fixリリースも考慮した開発フロー・バージョニングにした方がいいんじゃないか?」という提案はあがったりしてます.
開発の流れ
現状はD2しかメジャーバージョンがないんですが(D1のメンテナンスは終了),これが開発版/安定版みたいになってます.昔と違って
- リグレッションがあったらリリースしない
- リリース前にβ版を公開してフィードバックを得る
- 削除/変更するAPIは数ヶ月以上前から警告が出る
などなど利用者がいきなり非互換にぶち当たるようなことが起きないように配慮はされてます.D言語はコンパイル時にシンボルやシグネチャをチェック出来る機構があり,ライブラリ開発者としても,多少の変更があってもそれで対応出来てます.
なので,互換性に関しては少し寛容なのかもしれません.
「D2に入れるには大きすぎるかもしれない変更はD3で議論しよう」という流れになってるので,D2で今後パラダイムに関わるような大きな変更は起きないとは思います.
まとめ
記事で言及されている通り,言語,ライブラリ,開発環境,などなど昔に比べて成熟してきているのは確かですが,ご利用は計画的に,というが本当の所です.
ポジション的にはHaskellやGoに近い所にいて,メジャーとは言い切れないがパワーユーザが使っていて,コミュニティが大きくなりつつあるという感じです.Facebookはこれからも利用箇所を増やすでしょうし,海外では他の事例もちょくちょく出てきそうです.日本は…よく分からんですw
とはいえ,日本はアクティブなコミッタが3人いたりと,実はD言語をする環境としては恵まれていたりしてます.困ったら #dlang をつけてTwitterでつぶやくと,誰かが助けてくれるかもしれません.日本語情報については,このtweetを参考にしてください.
追記
@yasei_no_otoko さんがエディタ・IDEの現状について書いてくれました.