さくらのレンタルサーバをつかってRubyで書いたtwitterのbotを動かす

自分のマシンはwindows7

1.ローカルにRubyの環境を作る

RailsInstallerにおまかせ。

2.ローカルにライブラリをインストールする

Rubyではgemというかたちでライブラリが用意されているらしい。

RubyでTwitterBotを作ってみた(5 STEP) - himajin315の記録
http://d.hatena.ne.jp/himajin315/20120616/1339849875

こちらのSTEP4に従った。

gem install twitter
gem install userstream

を実行して待ってただけ。

3.レンタルサーバにもライブラリをインストールする

さくらのレンタルサーバにはRubyがもともとインストールされているが、必要なgemは自分で入れないといけない。

さくらのレンタルサーバーに RubyGems をインストールする手順 - Google App Engine+Pythonで脱プログラミング初心者を目指す日記
http://d.hatena.ne.jp/ishimarum/20080929/1222689905

こちらに従った。

SSHログインにはTeraTermを使った。
自分がログインしたときの設定は

ホスト: [ユーザ名].sakura.ne.jp
サービス: SSH
TCPポート: 22
SSHバージョン:SSH2
プロトコル:UNSPEC

ログイン押したあとユーザ名とパスワードを聞かれるので入力。

インストール時に権限がないとかで怒られたときはこちらを参考にした。

さくらインターネットのcronでRubyで書いたTwitterBotを動かす - やぶろぐ
http://d.hatena.ne.jp/hellon999/20100807

要は

setenv RB_USER_INSTALL true

を実行してからgem installやるとうまくいく。

4.bot用のtwitterアカウントを作って、そのアカウントで外部アプリの登録をする。

Twitter Developersからbot用のアカウントでログインして登録する。
こうすることで認証部分をプログラムでつくらなくてもtokenを得ることができる!

5.コードを書く

こちらのSTEP4の1にある定期post用のコードを引用して編集した。

RubyでTwitterBotを作ってみた(5 STEP) - himajin315の記録
http://d.hatena.ne.jp/himajin315/20120616/1339849875

実行されたら発言をまとめたdatファイルを読み込み、そのなかの1行をランダムに選び1回postする。
ほげほげの部分は4.の登録で得たものを入力しておく。

#coding:utf-8

require 'rubygems'
require 'user_stream'
require 'twitter'

consumer_key = 'ほげほげ'
consumer_secret = 'ほげほげ'
oauth_token = 'ほげほげ'
oauth_token_secret = 'ほげほげ'

UserStream.configure do |config|
 config.consumer_key = consumer_key
 config.consumer_secret = consumer_secret
 config.oauth_token = oauth_token
 config.oauth_token_secret = oauth_token_secret
end

Twitter.configure do |config|
 config.consumer_key = consumer_key
 config.consumer_secret = consumer_secret
 config.oauth_token = oauth_token
 config.oauth_token_secret = oauth_token_secret
end

client = UserStream.client
max = 0

# 発言集post.datを読み込み、行数を調べる
open("/home/[ユーザ名]/www/post.dat",'r:utf-8') {|file|
 while file.gets
  max += 1
 end
}

#発言集からランダムに1行選んでツイートする
rand = rand(max)
open("/home/[ユーザ名]/www/post.dat",'r:utf-8'){ |file|
 Twitter.update(file.readlines[rand])
}

注意点:
・require 'rubygems' が無いと、

in 'require': no such file to load -- user_stream (LoadError)

とか言われて止まる(ローカルではうごいたのに・・・)。
こちらを参考にした。

Rubyでgem install したのにrequireできない - Coding Edge会議室
http://ap.atmarkit.co.jp/bbs/core/fcoding/24814

・openは、ファイルを読み込んだあとうしろの{}で囲った部分が終わると自動でファイルを閉じてくれる。

・読み込むdatファイルはフルパスで書かないとあとでcronで実行するときファイルがないって言われる。
(cronで実行するときは実行場所がスクリプトのある場所ではないからだと思う)
ここの、「ロードパスにカレントディレクトリを追加する」が参考になりそうだけど今の自分にはわからない。

blogaomu2.1:さくらインターネットレンタルサーバーでcronからRubyプログラムを実行するときに躓いたのでメモ
http://blogaomu21.blog91.fc2.com/blog-entry-175.html

・openに渡している'r:utf-8'は、

invalid byte sequence in Windows-31J (ArgumentError)

とかいう、utf8のファイルをWindows-31Jで開こうとしちゃったエラー(?)を吐かれたのでその対応。
こちらを参考にした。

Rubyエンコーディング - @tmtms のメモ
http://tmtms.hatenablog.com/entry/20120812/ruby_encoding

6.サーバにアップロードし、cronで定期的に実行されるようにする

書いたコードをサーバにアップロードしたらスクリプトの権限を755に変更(実行権限を与える)。
サーバの管理画面にログインし、「CRONの設定」に進む。
「新規項目の追加」から以下を追加

実行コマンド:/usr/local/bin/ruby /home/[ユーザ名]/www/[うごかしたいスクリプト].rb
実行間隔はお好みで(自分は動作確認がしたかったので5分おきに設定した)

追加した後、下にある環境変数の設定もする。

さくらインターネットのcronでRubyで書いたTwitterBotを動かす - やぶろぐ
http://d.hatena.ne.jp/hellon999/20100807

こちらを参考にした。
つまり

環境変数:
GEM_HOME /home/[ユーザ名]/local/lib/ruby/gem
RUBYLIB /home/[ユーザ名]/local/lib


以上で設定終了。
cronで実行した時のエラーなどは、サーバの管理画面の「メールアドレス毎の設定」からpostmasterのメールボックスを見るとそこに届いている。
現状のコードだとgemのせいで(?)毎回warningを吐かれる。
こちら(http://d.hatena.ne.jp/yoshidaa/20130218/1361152275)と同じ状態なので、もうすこし勉強して、この記事が言っている意味がわかったら対応したい。

あと、環境変数の設定がなぜこうなのか理解できていないので勉強したい。
(なかなか動かなくていろんな記事の設定を試して動いたのがこれだった)
他にもコードをおもいっきり引用しているから理解してない部分があるので勉強する。

ご指摘などありましたらよろしくおねがいします。


おまけ: viでbackspace使っても文字が消せないときはescで入力抜けてからx押すといいそうです

高専カンファレンスin沼津2やった話

どうもあらなぎです。
去る1月19日、われらが沼津高専にて高専カンファレンスin沼津2が開催されました。
わたしはスタッフとして運営側で参加しておりました!

沼津でのカンファ開催は、タイトルからわかるとおり2回目です。
1回目は2010年12月18日開催でしたので、今回の開催から2年と1ヶ月くらい前になりますね。
そのときは自分はまだ3年生で、実行委員長なんてやらせてもらったものの右も左もよくわかってなかったです。
それから2年、もう一度母校開催に関われてよかったです。

今回の開催は、言うなら1回目の開催で蒔かれたものが実ったみたいな?そんな感じだと思いました。

たとえば実行委員長のきゃな([twitter:@Kya7y])さんは、1回目の開催のときには当日スタッフで司会者になっていただいてました。
それが今回は言い出しっぺとして、当日の司会などで喋りまくってた感じそのままに準備でもものすごく動いてくださってました。
前回司会やっていただいた体験が、「つまらなかった」じゃなかったんだろうなって思えてうれしかったです(上から目線)。

他にも前回の開催はスタッフの中にOBがいて(そもそも開催の言い出しっぺがOB)、学生は結構OBの指示に頼っているところがありました。自分なんかは特に。
それが今回はスタッフ全員学生ですってよ奥さん。
しかも1年生がかなりたくさん。
前回かなり頼りっきりだった自分も、運営経験者としてがんばらなきゃといろいろ思い出したりしてました。

あとは配信組。
配信は前回よりパワーアップしてたんじゃないですかね!もうすごすぎてなにがなんだかよくわからないですけど。
きっと前回の経験が実ったんだろうなっておもってます。

そして、前回カンファ初参加だった方々が、もう一度沼津に来てくれていたことがめっちゃくちゃうれしかったです。
自分らがやった開催で、もう一度来たいって思わせられたんだって考えるとマジうれしいです。
もちろんそういった参加者の方以外でも、会場が埋まっちゃうくらいほんとにたくさんのひとに集まっていただけてしあわせでした。


こんなかんじで、前回蒔いたもの/蒔かれた自分らが今回実ったみたいに、
今回自分らが蒔いたものもいつか沼津3とかあるいは別の形でも、なにかに実ってくれたらいいなって思いました。
1回目の開催時のスタッフは今年度でもうほとんど卒業してしまうけれども、
代わりに1年生達に「たのしかった!」っていう気持ちを残せたようなのでほっとしています。


さて、内側のはなししかしておりませんがこのへんで。
参加してくれた方観てくれた方、なにかしら協力していただいた方、ほんとうにありがとうございました!

 2012総括

どうもあらなぎです。
年の瀬ということで今年のことを振り返ってまとめておこうとおもいます。

ゲーム

今年初めにはPS3を購入したので、PS3のゲームをプレイしました。
具体的には、 Devil May Cry 4FINAL FANTASY XIIIHEAVY RAIN の3本です!
全部ずっと以前からプレイしたかったゲームなので消化できて何よりでした。
HEAVY RAINは数日前に買ってクリアしたんですけど、ストーリーもよくて、
画面上に現れるボタンの配置や種類も凝っていて、操作キャラとの一体感みたいなのあってたのしかったです。

他にはPSP乙女ゲームをかなりプレイしましたね・・・
クリアしたもので Starry☆Sky 春、AMNESIAAMNESIA LATER、うたの☆プリンスさまっ♪Repeat、CLOCK ZERO、ワンドオブフォーチュン2
あとはいまプレイ中なのが 十鬼の絆 です。
譲ってもらったスタスカ以外は人から借りたものなんですけどね!
最初はらぶらぶしてんの拒絶反応あったんですけど今では乗り越えて綺麗なスチルとか楽しんでます。
スタスカから入ったせいもあってその後のゲームの絵ぜんぶきれいで目が幸せでした。

あとあと、誕生日プレゼントでいただいたポケモンホワイト2も遊びました〜
DS本体持ってないので友人に借りてやってたんですけど!
とりあえず殿堂入りして、街全部まわって、レシラム捕まえて、
樹塔のチュートリアルだけやって、ストップしてます(本体返却したため)。
殿堂入り後に旧ポケがやたら出てくるもんだからめっちゃ幸せ感じてました。
ガチ勢の友人から譲ってもらった、たぶんかなり個体値のいいピチューのたまごを
ピカチュウにしてPTにいれてたんですけどもう懐かしさ補正で愛くるしさ半端無かったです。懐古!

絵の方はまったり描いてた感じがします!
pixivには16個アップロードしたようです。あ、でも1つ削除したから17か。
企画にも参加しなかったので、ほんとにだいたいオリジナルですね。
同人誌を表紙絵と挿絵でお手伝いして、実際出来上がったものをもらったのはちょっとかなりいい体験をしたなと思いました。
売り子のお手伝い的なこともしたので、うお〜手にとってもろてる〜!買ってもろてる〜!って感じがやばかったです。
あとはほんとにいまさらここまできてまじでやっと描き方がまとまった感があってこれからちょっと効率あがるかなと期待しています。
ベジエより!手で!ペン入れするぞ!

そのほか

他に大きな出来事としては、ようやく成人しました。
だからなにが変わったってわけじゃないんですけどね。
ビールめちゃめちゃマズいし。相変わらず学生だし。
あとiPhone買いましたね。なめこかわいいです。


いちおうそんな感じで2012年でした。
来年は新生活くるのでわりと怒涛な感じです。
どうもお世話になりました、良いお年を!

スタートアップRubyをいただいた話

ポケモンホワイト2はやっとこさチャンピオンロードですあらなぎです。

もう2ヶ月以上前の話になってしまうんですが、
「たのしい開発 スタートアップRuby」という書籍を著者の一人である五十嵐さん([twitter:@igaiga555])から頂いておりました!

たのしい開発 スタートアップRuby

たのしい開発 スタートアップRuby

Rubyには前から興味を持っていたんですが、なかなかはじめるきっかけを掴めずにいました。
そんなときに「たのしい」とか「スタートアップ」とかついた本を見かけたら、これなら始められるかもしれない!と思うじゃないですか。
というわけで読みたい、と声を出したら頂けることになりました。うれしい!


技術書っていうとすごく硬そうな感じするんですけど、この本は表紙に違わずやさしい雰囲気の内容でした。
また、既にいろいろな方がレビューで述べられていると思うんですが、
Rubyの思想や歴史から語られているところが素敵でした。
普段、何かプログラミング言語について学ぼうとするとき、
調べても出てくるドキュメントって基本的に使い方とか解説とかそういうものばっかりだと思うんですよね。
だから、歴史などの深いところについても知ることができるのって貴重だと感じました。

あとは、Rubyの使い方についても基本的な部分が書かれていて、サンプルもたくさんあるのでわかりやすいです。
他にもRailsの使い方とか、テストの書き方使い方、「たのしい開発」についてなど書かれています。
Rubyについて学べるだけじゃなくて、たのしい開発の手法とか手順とかそういうものについても述べられているから、
きっとRubyを使わないことになっても応用できるのだろうなと思いました。


読み終わりはしたものの、まだサンプルを全部試せていないので、
試してみて噛み砕いて、それで実際になにか作って動かしてみたいなと思っています!

贈って下さった五十嵐さん、また、機会を下さったじゅーんさん([twitter:@june29])、ほんとうにありがとうございました!

iCloudをつかってWindowsPCからiPhoneに画像を転送する

PCでつくった壁紙画像をiCloudをつかって転送するために方法を調べたのでメモ。

1.iCloudコントロールパネルをインストールする
ここからDL(Windows向け)→ iCloudコントロールパネル

2.(デフォルトなら)マイピクチャにPhoto Streamフォルダができているので開く

3.Uploadsフォルダに転送したい画像を追加

4.ほうっておけばiPhoneに転送されてくる

iPhone5を買った話

昨日発売されたiPhone5を購入しました!黒16GBです。
いままでdocomoガラケーだったんですけど、ずっとスマートフォンいじりたいって思っていて、
ガラケーの契約月が8月だったのでそこで2年縛りの割引を切って、iPhone5の発売を待っていました。

あいぽんあいぽんの写真は撮れないので写真はないんですけど、
本体自体は思ったより長くなってませんでした。画面はばっちり大きいです。
あと塗装ハゲについてちょっと話題になっていますが、私のものはハゲも傷もないようです。

でも、数字記号キーボードをつかって文字入力をしているときに、
2回ほど画面に幅数ドットの横向きのノイズが乗りました。
もっとひどくなったりしないかだけ心配です。

そんな感じでスマホデビューしました!
おすすめアプリ情報まってます!w

風ノ旅ビトをプレイした話

あらなぎです。
風ノ旅ビトっていう、PS3でDL販売されてるゲームをプレイしました。
砂漠を旅していくっていう内容なんですけど、これだけ言うとすごくつまらなそうなんですけど、
めっちゃ良いゲームでした。

やっぱりグラフィックは、PS3なだけあってすごいです。景色がとても美しいです。
夕方のステージとかマジやばいですよ。
砂漠の砂粒に光が反射してキラキラしてる感じとか逆光でシルエットみたいになる感じとかとかとか!

あと、ゲーム内に言葉がでてこない(創作文字のようななにかは少し出てくるけど読めない)ので、
物語を推察しながらすすんでいくのが楽しかったです。

それと、あまり意識できないんですけど実はオンラインプレイ対応のゲームで、
2人1組で協力しながら旅をしていくこともできます。
知らない人と勝手にマッチングするし、
言語によるコミュニケーションが取れないので、うまくいかないこともあるんですけど
通じ合ったときはなんだかうれしい気持ちになります。

さくっと2時間くらいで1週できます。
体験版があるのでそれをやってみて、続きが気になったらぜひ購入してみて欲しいです。
ICOとかそういう雰囲気ゲーが好きな人であればきっとハマります。
そうでない人もハマるかもしれないです。
ぜひぜひ!