RHEL系に藍ちゃん(自動アシスタント)をインストール¶
藍ちゃん はmisskeyのマスコット兼アシスタントシステムです。
https://藍.moe
藍ちゃんアカウントを介して次のような事が出来るようになります。
- 実用的なもの
リマインダー
タイマー
チャート
サーバ監視
PING
カスタム絵文字の追加監視・報告
- ささやかなもの
挨拶
占い
誕生日おしらせ
新しいアカウントへのようこそ
サイコロを振る
数当てゲーム
会話に反応する
単語を覚える
リバーシの対戦相手になれる
ほかにも色々な事が出来ます(github参照)
導入前準備¶
- コンパイル環境の導入
- 解析エンジンの導入
- フォントの導入
- 藍ちゃん用アカウントの作成
コンパイル環境の導入¶
必要に応じてパッケージを導入します。
「gcc-c++」「libiconv」が必要と明記されていますが、必要に応じて追加します。
解析エンジンの導入¶
解析エンジンは「MeCab」が指定されています。
単語を覚える機能を使用しない場合は不要とのことですが、ここではフル機能を使うため導入します。
- 下記からMeCab本体を取得します
https://taku910.github.io/mecab/#install-unixwget --content-disposition 'https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7cENtOXlicTFaRUE' ※URLは執筆時点のものなので、実際に確認すること
- 展開する
tar xzf mecab-0.996.tar.gz
- コンパイルおよびインストール
cd mecab-0.996/ ./configure --with-charset=utf8 make make check ================== All 3 tests passed ================== make install cd ../
- configureにutf-8を指定しないとShiftJISでの入力が必要になるらしい
誤ってその状態にした場合、make cleanしてやり直さないとmake出来なくなる
- configureにutf-8を指定しないとShiftJISでの入力が必要になるらしい
- MeCab 用の辞書をインストール
下記から推奨のIPA辞書を導入します
https://taku910.github.io/mecab/#install-unixwget --content-disposition 'https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7MWVlSDBCSXZMTXM' ※URLは執筆時点のものなので、実際に確認すること
- 展開する
tar xzf mecab-ipadic-2.7.0-20070801.tar.gz
- コンパイルおよびインストール
cd mecab-ipadic-2.7.0-20070801/ ./configure --with-charset=utf8 make make install cd ../
- configureにutf-8を指定しないとShiftJISでの入力が必要になるらしい
誤ってその状態にした場合、make cleanしてやり直さないとmake出来なくなる
- configureにutf-8を指定しないとShiftJISでの入力が必要になるらしい
フォントの導入¶
- 辞書ファイルの取得
ここでは下記より「IPAexフォント」のうち「IPAexゴシック」を入手しておきます
https://moji.or.jp/ipafont/ipafontdownload/wget https://moji.or.jp/wp-content/ipafont/IPAexfont/ipaexg00401.zip
- 展開する
unzip -q ipaexg00401.zip
- 必要な名前にリネームコピーします
cp -p ipaexg00401/ipaexg.ttf font.ttf
藍ちゃん用アカウントの作成¶
- misskeyにアカウントを作成します。
「ai」(@ai)が望ましいとの事。あらかじめアイコンを設定しておくと良いでしょう
インストール¶
設定とビルド¶
misskey構築時にmisskeyユーザに作ったものとして作業します。
- ユーザの変更と場所の確認
su -s /bin/bash - misskey pwd /home/misskey
- リポジトリからソースを取得
git clone https://github.com/syuilo/ai
- APIキーの取得
先ほど作成した藍ちゃんアカウントの以下から取得
設定→その他の設定→API→アクセストークンの発行
名前「ai」
権限「適宜必要そうなもの」
表示されたIDをコピーする事 - Mecabのパス確認
which mecab /usr/local/bin/mecab パスをコピーしておく事
- 設定ファイルの作成
cd ai/ vi config.json ------------------------------ { "host": "https://misskeyのURL", "i": "アクセストークンID", "master": "管理者アカウント名", "notingEnabled": false, "keywordEnabled": true, "chartEnabled": false, "reversiEnabled": true, "serverMonitoring": true, "checkEmojisEnabled": true, "checkEmojisAtOnce": true, "mecab": "/usr/local/bin/mecab", "mecabDic": "/usr/local/lib/mecab/dic/ipadic", "memoryDir": "/home/misskey/ai" }
- リファレンス
{ "host": "https:// + あなたのインスタンスのURL (末尾の / は除く)", "i": "藍として動かしたいアカウントのアクセストークン", "master": "管理者のユーザー名(オプション)", "notingEnabled": "ランダムにノートを投稿する機能を無効にする場合は false を入れる", "keywordEnabled": "キーワードを覚える機能 (MeCab が必要) を有効にする場合は true を入れる (無効にする場合は false)", "chartEnabled": "チャート機能を無効化する場合は false を入れてください", "reversiEnabled": "藍とリバーシで対局できる機能を有効にする場合は true を入れる (無効にする場合は false)", "serverMonitoring": "サーバー監視の機能を有効にする場合は true を入れる (無効にする場合は false)", "checkEmojisEnabled": "カスタム絵文字チェック機能を有効にする場合は true を入れる (無効にする場合は false)", "checkEmojisAtOnce": "カスタム絵文字チェック機能で投稿をまとめる場合は true を入れる (まとめない場合は false)", "mecab": "MeCab のインストールパス (ソースからインストールした場合、大体は /usr/local/bin/mecab)", "mecabDic": "MeCab の辞書ファイルパス (オプション)", "memoryDir": "memory.jsonの保存先(オプション、デフォルトは'.'(レポジトリのルートです))" }
- リファレンス
- 先ほど取得したフォントのコピー
exit cp font.ttf /home/misskey/ai chown misskey.misskey /home/misskey/ai/font.ttf chmod 664 /home/misskey/ai/font.ttf su -s /bin/bash - misskey cd ai/
- 必要なパッケージをインストールする
npm install ------------------------------ 長期サポートがないパッケージは警告が出るがとりあえず無視する。 inflightは明確にサポートしてないというかメモリリークがあるから使うなと言われるがどうしたものか……
- ビルドする
後述の宣言エラーが沢山出るのは仕様 とのことで、実際にはビルド出来ているnpm run build ------------------------------ Found 36 errors in 15 files. Errors Files 8 src/ai.ts:46 2 src/config.ts:22 2 src/index.ts:68 1 src/message.ts:67 1 src/module.ts:7 8 src/modules/chart/index.ts:60 1 src/modules/check-custom-emojis/index.ts:11 1 src/modules/emoji-react/index.ts:13 1 src/modules/guessing-game/index.ts:10 1 src/modules/kazutori/index.ts:28 2 src/modules/keyword/index.ts:18 1 src/modules/poll/index.ts:107 2 src/modules/reminder/index.ts:14 4 src/modules/reversi/back.ts:27 1 src/modules/server/index.ts:12
動作確認¶
- テスト実行する
npm start ------------------------------ 14:40:10 [AiOS]: Ai am now running!
- misskey上で次のメッセージを送る
フォローして送るとやりやすいかも@ai ping ------------------------------ PONGと帰ってきて♥がつけばOK
- テスト実行を終了する
ctrl+c exit
自動起動設定¶
- 次のユニット設定を作成する
参考vi /etc/systemd/system/ai-chan.service ------------------------------ [Unit] Description=Misskey ai-chan daemon [Service] Type=simple User=misskey Environment="NODE_ENV=production" ExecStart=/usr/bin/npm start WorkingDirectory=/home/misskey/ai TimeoutSec=60 StandardOutput=syslog StandardError=syslog SyslogIdentifier=misskey Restart=always [Install] WantedBy=multi-user.target
- systemdをリロードする
systemctl daemon-reload
- 自動起動を設定し起動する
systemctl enable --now ai-chan
- 起動状態を確認する
systemctl status ai-chan
以上でmisskey上で藍ちゃんが誕生しました!