34. おわりに

34.1. はしがき

結局「おわりに」を読むことにしたのですね。 よかったですね。 これからあなたが調査していくであろう、いくつもの面白い話題をご紹介する前に、Erlangをもっと深く知りたいと感じた開発用言語として選んだあなたに、Learn You Some Erlangを書くということは1つの地獄であったという言葉をささげたいと思います。 これは勉強やフルタイムの仕事と日々の生活の両立の合間を縫っての3年間努力の末に完成しました。(もし子供がいたら、ネグレクトしてしまっていたかもしれません)

このサイトのおかげで、そしてちょっとの運とちょっとの努力で、Erlangの講師、資料作成、そして開発者としての仕事を得ることができました。 またこのサイトのおかげで、世界中を旅し、面白い人々にたくさん会うことができました。 このサイトを作るために多くのエネルギーを費やし、運用に多くのお金と時間も費やしましたが、想像の10倍になって返ってきました。

いまErlangコミュニティの皆様に大きな感謝を送りたいとおもいます。 彼らにいろいろなことを教わり、無償で資料を何ページもレビューしてもらい、タイポを修正してもらい、英語の添削までしてもらいました。 様々な形で多くの方々に助けてもらいました。 時間、アドバイス、資料の点で最も大きな貢献はこのサイトのFAQに反映されています。 私にビールを奢ってくれる旨メールを書いているのであれば、代わりにFAQにいる人々に買ってあげて下さい。彼らの貢献は私よりも報われていないので、彼らこそビールをもらうにふさわしいと思います。

Erlangコミュニティはみな、私がLearn You Some Erlangを通じて行なってきたことをとても歓迎してくれ、読者の普及を手伝ってくれました。(Erlangの公式ドキュメントや公式サイトにまで載せてくれました!) Erlangに関わる皆さんの気遣いがなければ、このサイトは4章か5章で終わっていて、インターネットの網目をつまらす役立たずなウェブサイトの1つになっていたでしょう。 なんて言えばいいのかわからないけど、どうもありがとう。

34.2. 他のトピック

この本では、やり過ぎたわけではないですが、非常に多くの話題を扱ってきました。 このサイトは、紙版すると、約600ページの分量があるみたいです。 ここまで来るのに3年かかりましたが、もう私も疲れましたし、完成したことに感謝しようと思います。(さて自由時間にこれから何をしたらいいんでしょうか) しかし、そうはいっても触れておきたい話題がまだ沢山あります。 ここにざっと挙げてみました:

34.2.1. BIFとDBGのトレース

Erlang VMは徹底的にトレースが可能です。 バグを見つけたり、理解できないスタックトレースがあったって? トレースのフラグをいくつか有効にすれば、VMはあなたに心を開いてくれます。 DBGはBIFを取り、その上にアプリケーションを作成します。 メッセージ、関数呼び出し、関数の返り値、ガベージコレクション、プロセス生成、プロセスの死、など。 これらすべてトレース可能で監視可能です。 Erlangのような並列言語のどのようなデバッガよりもずっと優れています。 最も優れた点はなにかって? それはErlangの中でトレースが可能だということです。つまり、Erlang自身をトレースするErlangプログラムが書けるということです! この機能を見てみて少し理解が難しそうだと思ったら、 sys モジュールのトレース関数を使うだけでもいいでしょう。 これらはOTPのビヘイビア化されたプロセスだけを扱えますが、それでも十分便利です。

34.2.2. プロファイル

Erlangには、プログラムの解析とボトルネックの検知に使える良いプロファイリングツールがいくつかついてきます。 fprofeprof というツールは時間プロファイルに使われ、 cprof は関数呼び出し、 lcnt はロック、 percept は並列化、 cover はカバレッジに使えます。 面白いことに、これらのほとんどはErlangのトレース用BIFを使って作られています。

34.2.3. さらにイントロスペクション

Erlangには、 pmanetop というtopにたツールが存在します。 また、 Erlangデバッガ を使うこともできますが、代わりにDBGを使うことをおすすめします。 ノードの状態を見るために監視ツリー全体を調べるなら、appmonがいいでしょう。

34.2.4. ドキュメンテーション

EDoc はErlangモジュールをHTMLドキュメントに変換してくれるツールです。 アノテーションをサポートしていて、特定のページを宣言する機能もあり、これによってコードをドキュメント化した小さなウェブサイトを作ることができます。 もしJavadocを知っていたら、それに似たものです。

34.2.5. GUI

WxアプリケーションがErlangでマルチプラットフォームのGUIを書く上での新しい標準です。 私はGUIにめっぽう弱いので、これについて私が説明するのはみんなにとってやめたほうがいいでしょう。

34.2.6. 他の便利なライブラリ

ここで触れていない素晴らしいライブラリが、Erlangにはデフォルトでたくさんついてきます。 暗号化ツール、ウェブサーバ、ウェブクライアント、あらゆるプロトコル実装などです。 まとめは次のURLで確認できます。 http://www.erlang.org/doc/applications.html.

34.2.7. コミュニティライブラリ

たくさんの3rdパーティライブラリがあります。 3rdパーティライブラリは変化しやすいですし、次から次へと好きな物を取り上げていくのはあまり趣味ではないので、このサイトでは触れてきませんでした。 しかし、簡単に並べてみましょう。ビルドシステムが必要であれば Rebar_Sinan 、より親切なトレースでは redbug 、非常に強力で柔軟なプロセスレジストリの gproc 、ウェブサーバが必要なら mochiwebcowboyyaws のどれか、非常に強力なErlang分散ライブラリの riak_core 、ウェブクライアントであれば lhttpc 、クールなプロパティベースのテストツール(どれか使う必要があれば)であれば PropErQuickcheckTriq のどれか、topに似たツールであれば entop 、多くのJSONライブラリ( mochijson2jsxejson など)、Unicodeの処理とR16Bに入る予定の共通アルゴリズムには UX 、AIツールとデータベースクライアントには Seresyeexat を、Erlangのerror_loggerにバインドできる非常に堅牢なロギングシステムの lager 、汎用メッセージベースプールの poolboy 、そしてまだたくさんのライブラリがあります。 コミュニティライブラリは各自のドキュメントを見るのがいいでしょう。

34.3. LYSEが書籍になると聴きましたが...

あなたが聞いた噂はほんとうです。 No Starch Pressのおかげで、Learn You Some Erlangは紙版書籍になります。出版は2012年9月の予定です! 600ページの白黒印刷の予定で、挿絵もあります。(電子書籍ではカラーです) これで、現存する中で、(私が知るかぎり)最も大きなErlangがテーマの文鎮兼本棚の装飾になります。 これで何百ページもコンピュータスクリーン上で読む苦痛から開放されますね。

34.4. 「あなたの本はとても好奇心をかき立てるので、あなたのニュースレターを購読したくなりました!」

ferd.ca というブログで、様々なこと(少なくとも私が取り上げたいこと)を取り上げていますが、いつもErlangを使っているので、どうしてもその話題になることは避けられません。

34.5. これでおしまい?

はい、おしまいです。おげんきで!