ヽ(´・肉・`)ノログ

How do we fighting without fighting?

ErlangVMで動くBotフレームワークHobotを作った

ErlangVMに関することやそうでないことを話すサッポロビームの時間にコツコツと作っていた

が期待通り動いたようなので区切りとして 30 分くらいで書く.

モチベーション

きちんとドキュメントがあり自分でも利用するようなフレームワークを作ってみたい

今までは自分には便利だが,沢山の人に利用してもらえるような何かを世の中に提供してみたことがなかった. 自分にも便利で,さらに沢山の人に利用してもらえるような何かを世の中に提供してみたかった.

そのために,まず自分の使いたいように動くこと, さらに他の人が使いやすいようにテストやドキュメントがきちんと準備されているとよいだろうと考えた. 自分の使いたいようには何となく動きそうな気がするので,今後テストやドキュメントを書いていく予定.

ErlangVM からならどの言語でも簡単に使えるようなライブラリを作ってみたい

本体は Elixir で書いたものの, ErlangVM 標準添付ライブラリである OTP の GenServer や Supervisor の仕組みを生かしているので どの ErlangVM 言語でもいい感じにプラグインやアプリケーションを作れる.

実際にはまだ ErlangLisp Flavoured Erlangalpaca-lang などで プラグインやアプリケーションを作ってみてはいないので,今後試してみる予定.

思ったこと

ErlangVM の仕組みはプラガブルな仕組みを作るのに向いていると思った.具体的に言うと以下のようなエラーハンドリングと非同期通信,そしてPubSubに便利だった.

悩んだら hubotruboty そして チャットボットフレームワーク Ruboty を振り返る をとても参考にした. hubot は以前 CoffeeScript で書かれていたが,最近は TypeScript になっているので,以前より読みやすくなっていると思う. また Ruboty 作者 r7kamura さんによるボットフレームワークの振り返りは,結果コードには表れない,選択肢の中から判断したところが文章になっておりすごくおもしろく参考になった.

まとめ

まだ書きたいことがあったのだが 30 分がきてしまった. Bot フレームワークを作りたい人がいれば雑談したり,機会があればこの知見をどこかで共有したい. サッポロビームには idobata のチャンネルもあるのでオンラインでも雑談しましょう.

来年 ErlangConf Japan 2018 があるそうなので,セッションの一つとしてどうですか.

このエントリーをはてなブックマークに追加