2014/08/14

[Mikutter, 作業記録] mikutter を Windows8 にインストールした

Windows8 に mikutter をインストールしたい

まずは ggr.

MikutterInstallBattleForWindows - mikutter Wiki(http://yuzuki.hachune.net/wiki/MikutterInstallBattleForWindows)

ふむ。やるか。

ruby のインストール

wiki の指示通りに rubyinstaller-2.0/0-p481.exe をダウンロードしてインストールした。

mikutter のダウンロード

都合のよいことに、すでに git 導入済みだったので、リポジトリからクローンして とってきた。

vimshell% mkdir develop
vimshell% cd develop
vimshell% git clone git://toshia.dip.jp/mikutter.git
!!!Cloning into 'mikutter'...!!!
!!!Checking out files: 100% (672/672), done.!!!

windows 用パッチブラグインの展開

こちらも git で。

vimshell% cd ~/develop/mikutter/plugin
vimshell% git clone https://github.com/moguno/mikutter-windows.git mikutter-windows

セットアップスクリプトの実行

vimshell% cd ~/develop/mikutter/plugin/mikutter-windows/
vimshell% c:/Ruby200/bin/ruby.exe ./setup.rb

...何も起きなかった。さすがにだめか。普通にダブルクリックする。おぉ、bundler のフェッチとインストールがはじまった。

コマンドプロンプトが閉じないと思っていたら、ショートカットできてた。コマンドプロンプトは開きっぱなしなのかな? 反応なし。コマンドプロンプトで「ruby mikutter」やってみたら gem が足りないって怒られた。やはりあれは途中だったのか...。しまった。 setup.rb をやり直す。

今度はちゃんと complete って表示されるまで待ったよ。

そのあと、「ruby mikutter.rb」でできました。

デスクトップにできたショートカットでも問題なし。

2014/08/12

[Mikutter] データソースを作ってみたい!

データソースの作成がしてみたいので、ホームタイムラインと同じ物を表示するだけのデータソースを定義してみる。

そもそもデータソースって何?

「抽出タブ」で選択できるデータの取得元。抽出タブの設定でチェックを入れると、そのデータソースのメッセージがタブに表示されるようになる。

「抽出タブ」を全く使っていなかったので、自分にとって「得体のしれない何か」であったが、今回の勉強でこんなもんかと解った気がしますわ。

「抽出タブで対応できないような特定のツイートを抽出する」、「外から情報撮ってきて表示する」ような機能はデータソース使うのがスマートっぽいですね。

じゃあ作ってみる

はい、やっていきましょう。

前準備

勉強用プラグイン作成。

cd ~/.mikutter/plugin/
mikutter.rb generate study_datasource
mikutter.rb spec study_datasource

コーディング

データソースを作成するにあたり、最低限必要な作業は下記の通り。

  1. 提供するデータソースの宣言(登録)
  2. 1 で宣言したデータソースにメッセージを追加する

これだけ。以下、今回作った具体的なコード。

.mikutter.yml

---
slug: :study_datasource
depends:
  mikutter: 3.0.4
  plugin: []
version: '1.0'
author: 
name: study_datasource
description: データソースの勉強するよー

study_datasource.rb

# -*- coding: utf-8 -*-
# mikutter datasource の勉強。
# ホームタイムラインのクローンデータソースを作成する。
#
# データソース作成手順としては、
#     1. filter_extract_datasources で、「こんなデータソースを作るよー」と宣言
#     2. データソースにメッセージを追加したいタイミングで
#        「:extract_receive_message」を呼ぶ。
#         その際、引数に「データソースに紐付くシンボル」を渡す。
# という感じ良いみたい。
#
# 既存タイムラインからの抽出でない場合は、
#     1. 自前でデータ取得ループ作成
#     2. 自前でメッセージ作成
#     3. 「:extract_receive_message」を呼ぶ
# となる感じですね。

Plugin.create(:study_datasource) do
    DATASOURCE_NAME = 'clone_home_timeline'

    # このプラグインが提供するデータソースの定義を組み立てて返却
    def datasources
        ds = {clone_home_timeline: "ホームタイムラインのクローン".freeze}
        ds[DATASOURCE_NAME.to_sym] = DATASOURCE_NAME
        ds
    end

    # 提供するデータソースの登録
    # 登録は、このプラグインで定義したデータソースを
    # 引数で渡ってきたデータソースにマージすることで行う。
    filter_extract_datasources { |ds|
        p "Add My Datasources"
        [ds.merge(datasources)]
    }

    # データソースにメッセージを追加
    # on_update で受け取ったメッセージ全てをデータソースに突っ込んでいる。
    on_update do |service, messages|
        messages.each do |message|
            p "Add message to #{DATASOURCE_NAME}"
            Plugin.call(:extract_receive_message, DATASOURCE_NAME.to_sym, [message])
        end
    end
end

参考文献