Twitter ボット作成

日経Linux を参考に Twitter ボットをつくってみます
自分のアカウントでつくるより、サブアカウントを取得し
それをフォローしたほうがよさそうです
すでにアカウントを取得しているなら、別のメールアドレスを作成する
必要があります
twitter のアカウントは、メールアドレスと対になっているので
同じメールアドレスでは作成できません
この場合、Gmail などでもうひとつメールアドレスを取得する必要があります
このあたりについては
twitter サブアカウント取得
というように検索するとでてきます
サブアカウント取得ですが
まず
https://twitter.com/
へアクセスし
新しいアカウントを作成します
twitterアカウントの作成については
登録から基本的の使い方まで
を参考にするとわかりやすいと思います
アカウント作成したら
開発者向けサイトへアクセスします
http://dev.twitter.com/apps/
ログイン画面になるので、
IDとパスワードを入力し、ログインします
次に、create a new application をクリックし
登録作業を開始
Name にはアプリ名(ただし人とかぶらないもの)
Description には説明文
WebSite には ウェブサイト(ただし、適当でもOKらしい?)
を入力し、アプリを作成します
続いて、権限を変更したいので
setting タブをクリックして
Application Type を
Read only から read and Write にします
なぜか、2度行わないと設定が反映されていませんでした
ここまで終わったら、Detail タブをクリックして
下のほうにある
Create my access token をクリックし
Access token

Access token secret
を取得します

Yahoo! Pipes 実践編

まずは必要なパーツを作成
とりあえず、書籍どおりに
Fetch Site Feed を選んで
URlに
http://www.jiji.com/rss/ranking.rdf
を記述
これは時事ドットコムのRSSになる
--------------------------------------------------
次はRSS非対応のものを取り扱う
今回使用するのは 47NEWS
まず
Fecth Page を選び
http://www.47news.jp/AccessAnal/index.html
をURLに記述
ページ内の取得開始位置を
Cut content from のところへ記述
ランキング1位を示す 1: が始まりなので
今回は 1:
to のところへ
終了タグである

を記述
Split using delimiter には区切り文字を意味するので
<BR>タグを書きます
--------------------------------------------------
次に表示するアイテムを切り詰めたいので
Operators > Tuncale を選択して
10を入力することで、10ずつの表示になります
Screenshot-Ubuntu 64-bit - VMware Player-10
---------------------------------------------
このままだとアイテムの中身が
HTMLタグ と テキストが乱雑になっているので
記事タイトルとリンクを特定します
まず、
Operators > Regex

Options > Rename
で部品を追加します
Screenshot-Ubuntu 64-bit - VMware Player
Rename には
アイテムを別名でコピーできます
Mappings
のところをクリックすると、項目が増えます
項目には item.content として
Rename を Copy As へ変更 右側には title と入力します
もひとつ追加して
項目には item.content として
Rename を Copy As へ変更 右側には link と入力します
これで、title と link 以外の要素が排除できます
------------------------------------------------------------–
Rename モジュールの結果を受け取る Regex モジュールの設定
をします
regex モジュールは、正規表現による文字列の置換、検索ができます
今回は、タイトルの文字列の前後を取り除いた文字列に変換
これで RSS の最低限の要素であるタイトルとリンクをもつ
アイテムができあがりです
Screenshot-Ubuntu 64-bit - VMware Player-1
------------------------------—-
これをUnion モジュールで追加します
書籍には載っていないのですが
Source > Fetch Feed で fetch Feed を作成し
http://www.jiji.com/rss/ranking.rdf
をURLに入力します
Screenshot-Ubuntu 64-bit - VMware Player-2
Union モジュールは
Operators > Union で追加できます
Union.png
これを Fetch Feed とRegex をくっつけると、下のほうに表示されるようになります
Screenshot-Ubuntu 64-bit - VMware Player-3
----------------------------------------–
ここからさらに、情報をフィルタリングします
Operation > Filter でパーツを追加します
初期設定だと、条件式ですべてブロックしていますので
all のところを any に変更して
item.title Contain PR とすると
PRという文字列を含むものが排除されます
Screenshot-Ubuntu 64-bit - VMware Player-4
--------------------------------------------------
最後に Pipe Output にくっつけて完了です
全体図は、以下のようになります
Screenshot-Ubuntu 64-bit - VMware Player-5
いちおう、できたのですが、47news 関連の記事にアクセスできませんでした
もう少しいろいろと勉強する必要がありそうです

Pipes で RSS その2

Pipes で RSS
でアカウントの取得ができたので、
さっそく Pipes を使って行きます
http://pipes.yahoo.com/pipes/
へアクセスし
ログイン状態で
Create Pipe をクリックします
Screenshot-Ubuntu 64-bit - VMware Player-6
以下が、最初の画面の状態です
Screenshot-Ubuntu 64-bit - VMware Player-7
ドラッグ&ドロップ。もしくは +ボタンを押してパーツを組み立てて行きます

Yahoo!地図 SDK for Android を調べてます

Yahoo!地図 SDK for Android について情報収集しています
まだ、実験するために必要な情報を得ていないので
まずは必要な情報、そして参考になるサイトをみています
書籍をみると、ほとんどが Google Maps API になっているため
ネットで探すことにしました
Android Map SDK
Yahoo!地図 SDK for Android を使ってみました
などなど、検索すればいろいろとでてきそうです

PHP で カナ変換

PHPメモです
カンを全角カタカナや半角カタカナなどに変換するには
mb_convert_kana() を使います
mb_convert_kana() は
任意の文字列を特定の表記(全角カタカナ、半角カタカナなど)に変換する
変換オプションには
変換する文字の種類や変換方法を文字列で指定する
文字エンコードを指定することで
変換する文字列の文字エンコードも指定できる
文字エンコードを省略すると
mbstring.internal_encoding の設定値で処理される
-------------------------------------------------------–
mb_convert_kana() の使い方
変換後文字列 = mb_convert_kana(文字列、変換オプション、文字列エンコード);
-------------------------------------------------------—-
mb_convert_kana() のオプション
r
全角英字 > 半角英字
R
半角英字 > 全角英字
n
全角数字 > 半角数字
N
半角数字 > 全角数字
a
全角英数字 >半角英数字
A
半角英数字 > 全角英数字
s
全角スペース > 半角スペース
S
半角スペース > 全角スペース
k
全角カタカナ > 半角カタカナ
K
半角カタカナ ≫全角カタカナ
h
全角ひらがな > 半角カタカナ
H
半角カタカナ > 全角ひらがな
c
全角カタカナ ≫全角ひらがな
C
全角ひらがな > 全角カタカナ
V
濁点付きの文字を1文字に変換
これは K H のオプションと併用する
--------------------------------------------------—
使用例として
$string =”てすと”;
echo “{$string} => mb_convert_kana($string,”C”);
とすると
C は全角ひらがな を 全角カタカナにするため
$string が
てすと から テスト に変換される

Google Android WebAPIプログラミング入門
を参考に、twitter4j アプリ作成の勉強です
Android Twitter アプリ作成

Consumer key
Consumer secret
Access token URL
Callback URL
を取得し
Android Twitter アプリ作成 その2

twitter4j のダウンロードと解凍を行いました
今回はその続きになります
まず、最初に
AndroidManifest.xml へ
androdi.permission.INTERNET
を忘れないうちに追加しておきます
また、JUnitでテストするので
File > new > project で
Android Test Project を選択して
今回はプロジェクト名を Twitter4jTest
test target もじゃ
An existing Android project で Browse を選択して
作成したプロジェクトの tiwtter4j を選択します
あとは、Finish を押せば作成されます
こちらも libs ディレクトリを作成して
witter4j-core-android-2.2.6-SNAPSHOT.jar
を追加してビルドパスを追加します
今回は twitter4j の解析をしたいので
今回作成した JUnit test の方にも
AndroidManifest.xml へ
androdi.permission.INTERNET
を追加しておきます
ここまでで行えば、後は書籍どおりにできそうです

Pipes で RSS

RSS といえば、Google リーダーを使っていますが
残念ながら、すべてのサイトでRSS提供はしていません
そこで、今回興味をもったのが
日経 Linux (リナックス) 2011年 12月号 [雑誌]
に掲載されていた Yahoo! Pipes を使って
WebページからRSSを生成するプログラムの作成
それではまずは、米国の Yahoo! のアカウントを取得します
なぜなら、このYahoo! Pipesは 米Yahoo! が提供するサービス
であるためです
http://pipes.yahoo.com/pipes
へアクセスし、画面右上の Join Now をクリックします
Screenshot-Ubuntu 64-bit - VMware Player-3
次の画面で登録に必要な個人情報を入力します
Screenshot-Ubuntu 64-bit - VMware Player-4
英語で表示されているのでわかりにくいかもしれませんが
入力すべき項目は
氏名 Name
性別 Gender
(男性なら Male 女性なら Female )
誕生日 Birthday
Select MOnth で上から1月~12月になっています
Day に日 Year に年数
1975年12月20日なら December 20 1975 となります
居住国 Country
日本なら Japan を選択
郵便番号 Postal Code
になります
Language の選択がありますが、日本語には対応していません
------------------------------
次に
Selcet an ID and password の項目で
希望の Yahoo ID を入力します
ただし、他の人とかぶるのはダメです
Password を入力し
Re-type Passwoerd で確認のため、もう一度パスワードを入力します
このときに、よこに strong という文字とバーがでますが
これはパスワードの強度です
英数字の組み合わせ、大文字小文字の組み合わせ、長さなどが影響しています
----------------------------------------—
この次に、In case you forget your ID or password
つまり、IDやパスワードを忘れたときの対処です
Alternate Email (optional)
にいざというときに届けてもらうメルアドを入力します
次に、秘密の質問を決めます
Secret Question 1 の中から選択します
例えば、この中の1つ
What is your oldest child’s nickname?
なら子供のときのニックネームは?
となり、自分にのみわかりそうな答えを
Your Answer のところへ入力します
そして、もうひとつ秘密の質問を設定します
Secret Question 2 の中から選択します
今回は、What is the name of your favorite books ?
あなたの好きな本の名前は?
で答えを Your Answer のところへ入力します
-------------------------------------------------------------
ここまで入力したら、次に
Type the code shown のところに
認証用の文字を入力します
すこし歪んでいるような書体で書いてあるのでわかりにくいですが
頑張って入力してください
入力しにくいときには
Try a new code をクリックすると別の文字に切り替わりますで
入力しやすい文字になるまで変えることもできます
最後に
Create My Account をクリックすれば
アカウント作成の確認画面になりますので
contine をクリックします
アカウント作成が成功すると
ログイン状態になります
次回はいよいよ Pipes の作成を行って行きます

Android Twitter アプリ作成 その2

Android Twitter アプリ作成
アプリの登録をして、
Consumer key
Consumer secret
Access token URL
Callback URL
を取得したら
次に twitter4j をダウンロードします
http://twitter4j.org/ja/index.html#download
へアクセスし
最新安定版ビルドをダウンロードします
2011/11/29 の時点では
twitter4j-android-2.2.6-SNAPSHOT.zip(Android向けのスリムバージョン)
が新しいようです
書籍に載っていたのは
twitter4j-android-2.1.12-SNAPSHOT.zip
でしたので、もしかしたら
再現できずに途中でつまづくかもしれませんが
まずは実験です
ダウンロードしたら、解凍します
使っている環境が ubuntu なので、
ホームディレクトリのダウンロードディレクトリにありますので
mkdir twitter4j
cd twitter4j
unzip $HOME/ダウンロード/twitter4j-android-2.2.6-SNAPSHOT.zip
これで解凍します
これで下準備完了なので、
さっそくEclipse でプロジェクトを作成します
ついでに、テスト環境も作成するので
JUnit でテストできるようにします
今回はプロジェクト名を twitter4j にしてみました
ここへ twitter4j のライブラリをコピーしたいので
プロジェクトを右クリックして
new > Folder

フォルダを新規作成します
すると、assets ディレクトリの下に
libs ができます
ここへ
先ほど解凍した $HOME/twitter4j/lib/twitter4j-core-android-2.2.6-SNAPSHOT.jar
をコピーします
コピーはドラッグ&ドロップでOKです
最後にプロジェクトを右クリック > Properties

Java Build Path をクリックし
Add JARs … をクリック
ディレクトリの中から
witter4j-core-android-2.2.6-SNAPSHOT.jar
を選んでOKを押せば完了です
ちなみに、私の場合は
Twitter4j プロジェクトの中の libs ディレクトリにあります
twitter4j.png

Android Twitter アプリ作成

まず、最初に
過去記事のtwitter のアプリ登録
を参考に、Twitter アプリの登録をします
これは自分の過去記事なので、
もっとわかりやすい説明としては
Twitterアプリケーション登録の仕方
が参考になります
こちらは画像なども入っていますのでとても参考になります
それでは、作成開始です
まず
https://dev.twitter.com/
へアクセスし
Create an app をクリックします
次に、ログインする画面になりますので、
twitter アカウントとパスワードを入力
*がついているところは必須項目の入力事項です
まず
Name にはtwitter アプリの名前
これは、公開されるので、他の人とかぶるのはダメです
http: で始まるドメインとおなじですね
ただし、twitter の文字をふくむことはできませんので注意
Description
これには、アプリの概要をかきます
Android テストアプリとかそんなかんじで
Website
これは、自分のWebサイトのURLを書き込みます
ない場合には、この機会に適当にブログをつくってみましょう
Callback URL
これはほとんどつかうことはないようです
(本来は使うかもしれませんが、今回はテストなので)
あと、使うときの規約に同意しましたという意味の
Yes I agree
というチェックボックスへチェックをいれます
最後に、ちょっとわかりにくいのですが
認証の文字が崩したようなかんじで載っているので
これをスペースでわけて入力します
例えば、
ABC EDF
みたいなかんじで
最後に create twitter application
をクリックします
これで、作成が完了すると
Consumer key
Consumer secret
Access token URL
Callback URL
がわかるので、メモしておきます

Capistrano を使って複数サーバーのコントロール

Capistrano を使うことで、複数のサーバーで任意のコマンドを同時に
実行できるらしいので、さっそく実験
さすがに複数マシンを用意するのは現実的ではないので、
VMware Player でクライアントとサーバーのマシンを作成
使っているマシンは ubuntu にしてみました
ただし、注意点として
クライアント、サーバーともに
共通のユーザをつくってパスワードも同じじゃないとダメらしいです
ちなみに、操作性をあげるため、VMware Tools をインストール
しています
Virtual Machine > Install VMware Tools
の後に
cd /tmp
tar zxvf /media/VMware\ Tools/VMwareTools-8.8.1-528969.tar.gz
cd vmware-tools-distrib/
sudo ./vmware-install.pl
の後に再起動すれば反映されます
まずはクライアント側で
sudo apt-get install ruby1.8
sudo apt-get install rubygems1.8
で ruby と gems をインストール
sudo gem install capistrano
で capistrano をインストールします
次に
echo “export PATH=/var/lib/gems/1.8/bin:\$PATH” >> ~/.bashrc
でライブラリ参照パスを設定
source .bashrc
で設定を反映
ssh-keygen -t rsa
で公開鍵ファイルを作成
パスフレーズを聞かれるけど、ひたすらEnter でパスフレーズなしのものを作成
ここまでがクライアントの設定
今度はサーバー設定
sudo apt-get install ssh
でssh サーバーをインストール
ついでに ifconfig でIPアドレスを確認しておきます
192.168.10.114
次に、クライアントで scp を使って鍵のコピー
scp .ssh/id_rsa.pub snowpool@192.168.10.114:~
でコピー
文法としては、
scp ファイルの置き場のパス ユーザ名@IPアドレス:コピー先のパス
となります
またサーバに戻って設定をします
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
で認証済みの鍵として登録
chmod 600 ~/.ssh/authorized_keys
でパーミッション変更
ここまで完了したら、次に
またクライアント ubuntu に戻ります
vimcapfile でファイルを新規作成
日経 Linux 2011-12 についているDVDにスクリプト内容が記述されているので
これを使いました
ただし、注意点として ubuntu 11.10 の場合エラーになります
そのまま
cap addJava_home
を実行しても
Invalid gemspec in [/var/lib/gems/1.8/specifications/capistrano-2.9.0.gemspec]: invalid date format in specification: “2011-09-24 00:00:00.000000000Z”
/usr/lib/ruby/vendor_ruby/1.8/rubygems.rb:926:in `report_activate_error’: Could not find RubyGem capistrano (>= 0) (Gem::LoadError)
from /usr/lib/ruby/vendor_ruby/1.8/rubygems.rb:244:in `activate_dep’
from /usr/lib/ruby/vendor_ruby/1.8/rubygems.rb:236:in `activate’
from /usr/lib/ruby/vendor_ruby/1.8/rubygems.rb:1307:in `gem’
from /usr/local/bin/cap:18
というようにエラーになります
原因は
[tips]gemのインストール時に invalid date format in specification でエラー
に載っているように
日付のフォーマットの記述がおかしくなっているためでした
sudo vim /var/lib/gems/1.8/specifications/capistrano-2.9.0.gemspec
でファイルを開き
s.date = %q{2011-09-24 00:00:00.000000000Z}

s.date = %q{2011-09-24}
へ修正
これで、無事に実行することができます
まだ、構文などの詳しいところは勉強中です