Factorでツイートする
連鎖性プログラム言語FactorでTwitterにポストできたのでメモ.
Factor?
どうやらFactorはすごくマイナーなようなのでまずは紹介です.
Factorという連鎖性言語があります.
http://factorcode.org
連鎖性言語というのは要するにForthやPostScriptのようなスタック型言語のようなプログラム言語のことを指します*1.
FactorはREPLや高階関数,同図像性*2といったLispめいた性質に加え,HTTPサーバやWebフレームワーク,OpenGL,GUIなどの組込みライブラリが非常に充実しているという特徴があります.
ちなみに,REPLで
(scratchpad) "demos" run
とするとFactorのデモ一覧が出ます.
本題
Factorの組込みライブラリはTwitterもサポートしているので,これを使います.
REPLで
(scratchpad) "twitter" about
とすると,twitterボキャブラリの詳細が表示されます.
twitterボキャブラリはTwitter APIへのアクセスにconsumer-keyとconsumer-secretを要求するので,http://dev.twitter.comであらかじめ入手しておきます.また,ツイートするためにwrite権限も設定しておきます.
以下はTwitterにOAuth認証してhelloとツイートするコードです.URLをブラウザで開くのにMac OS Xのopenコマンドを使っているので,OS Xでしか動きません.
REPL上でこのソースをロードして,authorizeを評価します.
(scratchpad) authorize
すると認証ページが表示されるので,認証してPINコードを取得します.その後,
(scratchpad) "取得したPINコード" set-access-token-with-verifier (scratchpad) hello
とすると,helloとツイートされます.
gnupack + Cygwin/Emacs24 が快適
いろいろ試した結果,WindowsでEmacs24使うならcygwin-gccでビルドしたEmacsが一番快適に使えるという結論に至りました.
gnupackで配布されているemacs24はmingwでビルドされているのですが,これが実はCygwinでビルドされたアプリとの相性が悪く,以下のような問題が発生したりします.
というわけで,CygwinでビルドしたEmacsをインストールします.
Emacsのビルドに必要なライブラリを入れる
なんかごちゃごちゃやってたので,ビルドに何必要だったかは覚えてないですけど(ぇ
Emacsの実行に必要なパッケージは
$ cyg-pm search -require emacs
とかやるとでてくるので,これを参考に-develのサフィックスが付いたパッケージを入れとけばいいと思います.
ホームディレクトリのマウントポイントを変える
デフォルトでは /home が %INST_DIR%/home にマウントされてますがこれが実は厄介で,Emacs上のシェルから 非Cygwinアプリを実行しようとするとCygwinで認識してるパス(/home) と,非Cygwinアプリが認識してるパス(%INST_DIR%/home) が異なります.したがって,非CygwinアプリとEmacsが連動するような処理 (例えばflymakeでantを動かす場合) が正しく実行できなかったりします.ということで,gnupackのディレクトリにあるconfig.iniのHOMEを C:\home に変更してこれを回避します.
HOME = C:\home
ソースを取ってきてビルド
ソースを取って~/src/emacsに展開.
インストール先は好きなところに入れればいいと思います.
私は~/installに入れました.
CCに/usr/bin/gccを設定しないとmingwのほうを使ってしまうので注意が必要です.
$ cd ~/src/emacs $ CC=/usr/bin/gcc ./configure --prefix=$HOME/install $ make && make install
出来上がりはこんな感じ.
別途インストールしたtwittering-modeとanythingが動いてます.
X入れないので軽くて良いです.