Haskell製BOTフレームワークmarvinの紹介と今後、作りたいもの。
こちらはHaskell Advent Calendar 2017 (その3)の23日目の記事
になります。大変遅くなりました。
BOTフレームワークと言うと自分がまず思い浮かべるのがGithub
のHubotで、HaskellにもHubotに触発されて開発中というmarvin
こちらは開発中のため、まだ動かせる機能は制限されますが
モジュラー形式なので使い勝手が良さそうに感じました。
Botを制御するスクリプトもHubotで運用しているものを参考
に作れるというところも過去の資産を利用できるのでいいかも
しれないです。
実際にSlackでサンプルコードを利用したBotを動かしてみる
ところは現在、検証中のため今回は省略します。
詳しい部分はドキュメントを参照して下さい。
Linux Mint 17.3 Xfceで開発環境を導入した手順は下記です。
[手順]
1. プロジェクト作成前に下記パッケージをインストール。
$ sudo apt install libicu-dev
$ sudo apt install libtinfo-dev
2. お試しプロジェクトを作成。
$ stack new test-bot
3. 2で作成したディレクトリへ移動。
$ cd test-bot
4. package.yamlにmarvinを追加。
dependencies:
- base >= 4.7 && < 5
- marvin <--- ココに追加
5. プロジェクトをビルド。
$ stack build
※stack buildでGHCのダウンロードからビルドまで行われる。
※ちなみに、stack install marvin で実行ファイル形式でインス
トールすることも可能。
6. プロジェクトディレクトリ以下にインストールされた
marvinをPATHに追加。
$ vim .profile
一番下に下記を追加。
PATH="$PATH:~/local/bin"
7. 6の変更を反映。
$ source ~/.profile
8. Botの名前を指定してmarvin-initコマンドを実行。
$ marvin-init walter
※使えるコマンドは今のところ2つ。
marvin-init --- プロジェクトを生成するコマンド
marvin-pp --- Main.hsを
※Adapter ID指定なしだとデフォルトはSlack RTMのスクリプト
(MyScript.hs)が生成。
※Adapterは現在、Slack、Telegram、Facebook Messenger、
IRC、Shellなどがある。
9. 8を実行すると、お試しプロジェクト内にbot
ディレクトリが作成され、Main.hsとMyScript.hsが
自動生成されるので、こちらを目的のBot用に編集します。
※MyScript.hs は指定したAdapterごとのBOTを制御するスクリプト。
※Main.hsは10のスクリプトを動かして実行アプリを生成するファイル。
10. 9のファイルを編集したら、ビルド。
$ stack build
[今後、marvinを利用して作ってみたいもの]
常日頃、困っていることとして過集中で作業をして電池が切れると
次にやるべきことを紙やノートにまとめていても、一切見ないし
目の前にあっても見えないことが結構あるので、スマホでTelegram
やLINE、Slackなど各種チャットサービスとスマホを連携した
「期日内でやるべきことを通知する」簡易todo管理アプリを作りたい。
結構、深刻なのでこれはすぐに着手して公開できれば・・・
[参考サイト]
Welcome to marvin’s documentation! — marvin 0.3 documentation
Welcome to marvin’s documentation! — marvin 0.2.3 documentation