haiju's 開発メモ

開発に必要な情報を自分用にメモ

Haskell製BOTフレームワークmarvinの紹介と今後、作りたいもの。

こちらはHaskell Advent Calendar 2017 (その3)の23日目の記事

になります。大変遅くなりました。

BOTフレームワークと言うと自分がまず思い浮かべるのがGithub

のHubotで、HaskellにもHubotに触発されて開発中というmarvin

というBOTフレームワークがあります。

こちらは開発中のため、まだ動かせる機能は制限されますが

モジュラー形式なので使い勝手が良さそうに感じました。

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管理アプリを作りたい。

結構、深刻なのでこれはすぐに着手して公開できれば・・・

[参考サイト]

github.com

Welcome to marvin’s documentation! — marvin 0.3 documentation

Welcome to marvin’s documentation! — marvin 0.2.3 documentation

marvin/Script1.hs at master · JustusAdam/marvin · GitHub

github.com