twitter bot開発で詰まったところメモ

最近@bell_repeat というtwitter botをつくったときに
やったことや躓いたところを簡単にメモ。

Rubyのインストールし直し

さくらのレンタルサーバに入れてるRubyが2.0.0だかそこらの古めのバージョンだったので
2.1.6までアップデート。
最新の安定版は2.2.2だったのだけれど すこし開発に急いでいたので
「最新版だと動かないよ〜」とかあると嫌だなあとおもって1つ前の安定版にしてみた。
参考:

さくらインターネットのスタンダードプランにRuby 2.1.5を自前でインストールしてみた | 極上の人生
http://kawairi.jp/weblog/vita/2014123118992

デフォルトのシェルをbashにした

上の記事で書いてるとおりにbashに変えた。
特にこだわりは無いのだけれど手元もたぶんbashだし
学校とかで触ったことあるのもbashだったはずだし。

SSHログインするたびに一回 $ source $HOME/.bashrc ってやらないと
環境変数とかの設定を読んでくれないっぽい?ので忘れないようにしたい・・・

botを動かそうとしたら「SSLがなんとか」みたいなエラーでコケた

書いたコードをサーバーに移して動かそうとしたら、SSLの認証ができなかったぜみたいな
エラーが出てしまった。
参考にしたのは以下の記事

RubyHTTPS 接続するときの証明書で悩んだ話 - てっく煮ブログ
http://tech.nitoyon.com/ja/blog/2014/05/30/ruby-https-cert/

SSL証明書はここにあるはずだ〜っていう位置に何もないせいで、証明書がみつからなくてコケたらしい。
記事を参考に証明書をサーバーに置いて、それからその証明書の位置を知らせるために

export SSL_CERT_FILE=(証明書のファイルまでのパス)

を .bashrc に追記した。

csvが読めなかった

UTF-8で保存したのにASCIIなんとかで読もうとして、読めないよ〜っていうエラーが出て困った。
参考:

Japanese user list of the Ruby programming language ()
http://comments.gmane.org/gmane.comp.lang.ruby.japanese/7079

encodingを明示的に書かないといけないとのこと。

cronの環境変数

cronとかcrontabというやつ、定期的にコマンドを実行してくれるあれは、
.bashrcとかに書いた環境変数を読み込んでくれないみたい。
なのでcrontabの冒頭に、必要な環境変数は書いておいてあげる必要がある。

cron力をつけよう!全てのcrontab入門者に贈る9個のテクニック · DQNEO起業日記
http://dqn.sakusakutto.jp/2012/06/cron_crontab9.html

ここに書かれているように、
"※ LOG_DIR="$HOME/logs" のように右辺で変数を使うことは残念ながらできません"ので、.bashrcから書き写すときに $HOME になってるところはもとの値で書き起こす必要がある。
たぶん本当は必要な環境変数だけ書くべきなのだろうけど、ぶっちゃけどれが必要か判ってないため .bashrcに書いてるものは全部書き写してある。
今回はそんなに数がないからまるごと移せたけど、すごくたくさん設定してあるような環境でそれをやるわけにもいかないだろうなー

cronの実行結果

もともとさくらサーバでは別のbotを動かしている状態だったのだけど、そのコードがあんまり良くなかったせいか、実行すると警告が出る状態だった。
cronの実行結果、エラーなどの出力はメールで飛んでくるようになっていたのだけど、放置していたせいでメールボックスが87万件とかになっていてメールボックスが開けない状態になってしまっていた。
このままでは新たに今回作成したbotのログが見られないので、上の記事をまた参考にして、テキストファイルにログが吐かれるようにしてある。

cron実行時のカレントディレクト

cronで実行されるとき、カレントディレクトリがどこになってるかってよくわからない。
昔書いた記事ではフルパスを取得して作って・・・みたいなことをやっているのだけど、そんなことしなくても
crontabのほうに

cd (カレントディレクトリにしたいところの絶対パス) ; (実行するコマンド)

って書いてしまえば済む話だった。早い。

macSSHログイン

昔書いた記事windowsで開発してたときだったし、バージョンが古くてあまり参考にならない。
macではSSHログインしたいときは、ターミナルで

$ ssh [さくらサーバのユーザー名]@[さくらサーバのユーザー名].sakura.ne.jp

って打って、パスワード入れれば、それだけでオッケー。便利。

gemのnokogiriをインストールするときに困った

botで、webページを読んで投稿日時や記事タイトル等を取得する必要があり、
nokogiriというgemを利用した。
インストールのために

$ gem install nokogiri

をサーバー上で実行したら、

Fetching: mini_portile-0.6.2.gem (100%)
Fetching: nokogiri-1.6.6.2.gem (100%)
Building native extensions. This could take a while...
ERROR: Error installing nokogiri:
ERROR: Failed to build gem native extension.

/(パス)/ruby extconf.rb
checking if the C compiler accepts ... yes
Building nokogiri using packaged libraries.
checking for gzdopen() in -lz... yes
checking for iconv using --with-opt-* flags... no
checking for iconv... no

        • -

libiconv is missing. Please locate mkmf.log to investigate how it is failing.

(以下省略)

のようなエラーがでてインストールできなかった。

代わりにこんなコマンドを使って入れました。

$ NOKOGIRI_USE_SYSTEM_LIBRARIES=1 gem install nokogiri --no-rdoc --no-ri

参考にしたのは以下の記事。

さくらインターネットのスタンダードプランにRails をインストールしようとしたらnokogiri が使うライブラリのチェックで怒られた件 | 極上の人生
http://kawairi.jp/weblog/vita/2015010319009

twitterのメモ

・client.retweetはツイートのidをわたすだけでよいんだって、便利
・user_timelineであるアカウントの投稿を全部取得するというのをやったのだけど、
そのアカウントのツイート数より、取得できたツイートが10個少ないということが起こった。
RTも含めて取得したのだけど・・・いまのところ原因不明。


おわり。たくさん躓いた。

3D小説『bell』再放送botの説明書

概要

3D小説『bell』再放送bot(@bell_repeat) は、
bellの物語を再体験することを目的としてつくられた、非公式のtwitter botです。
2014年の第1部・第2部連載時と、同じ日付・同じ時刻に動作します。

作成: aranagi (@arng_sol)
問題や要望等は@arng_sol宛にお問い合わせください。

くわしい機能

1. 3D小説『bell』本編URLをツイートします

ブロマガ(http://ch.nicovideo.jp/3d_bell/blomaga)の各記事の投稿日時を参照し、同じ日時になると記事URLを投稿します。

2. 少年(@3d_bell)のツイートをRTします

少年ことベルくんのアカウントのツイートを、投稿されたときと同じ日時になるとRTします。
RT対象には、「このアカウントがRTした他の方のツイート」も含みます。
ただし、ベルくんによる本編URLのツイート、正確には
「投稿のsourceがIFTTTになっているツイート」はRTしません。

3.「愛媛の愛情100%」の記事URLをツイートします

第1部の途中で登場するブログ「愛媛の愛情100%」の各記事の投稿日時を参照し、同じ日時になると記事URLを投稿します。

4.たすけて!(@4koma_memories)のツイートをRTします

第1部の途中で登場するtwitterアカウント @4koma_memories のツイートを、投稿されたときと同じ日時になるとRTします。
RT対象には、「このアカウントがRTした他の方のツイート」も含みます。

その他

"ゲブラーの力"こと Rubyで作ってます。
動作中に第3部が始まった場合は、ハッシュタグ検索の邪魔にならないよう、
動作を停止させるつもりです。
まだ勉強中な部分もあるため、意図しない動作をする可能性がありますがご了承ください。

2014年の話

あけましておめでとうございますaranagiです。
2014年の振り返りをする間もなく年が変わってしまったので今更振り返りたいと思います。

仕事

正直ぜんぜん向いてないと思う作業をしている期間が9割くらいでした。
特に年末数ヶ月はストレスを自覚するほどだったのでこのままでいるわけにはいかないなあと強く感じてます。

生活

昨年に比べて自炊をしなくなり、毎朝お弁当を作っていたのも10月頃からだんだん辞めてしまいました。
仕事が忙しい時期だったのを言い訳にしてサボってた感じは否めないので改善を目指します・・・

ゲーム

2014年に触ったゲームは

他にもフリープレイになってて少しだけ触ったというゲームがいくつかありますが概ねこんな感じ。NiGHTSで懐古したりDIVAでわちゃわちゃしたり無双で徐庶さん大好きになったりLast of Us怖すぎてギャーギャー言ったりしましたのがハイライト・・・
ハードではVitaと3DSをどちらも今年購入したみたいです。通勤時間が徒歩3分とかなのでやる時間があんまりないのですがこれからも活用します。

他にも去年から引き続き艦これを日課的にプレーしていたり、あとはIngressを7月末から始めました。本格的にやるようになったのは9月からだったものの今もたのしくやってます。

創作

pixivに投げた絵は7枚だったみたいです。去年と枚数的にはあまり変わらないものの、去年は投稿してない絵(同人誌用)もたくさん描いてたはずで、今年はあまりそういうもの無かったのでやっぱり枚数減ったと思います。
体感的にも、らくがき状態で満足しちゃったものが多いと感じていて反省です。
あとは絵とは別の創作活動、立体造形なんかやったことないのに着ぐるみ制作をし始めたものの、全然完成にたどり着けませんでした。とりあえず手探りでも出来が悪くてもとにかく一度完成させなければいけないとはわかっているのでじわじわ続けるつもりです。


ぱっと思い出せるところを挙げたらこんな感じの2014年でした。
バッテリー切れも近いので、このへんでおわります!

近況

2014年もあと少しみたいですね、aranagiです。
ここ数ヶ月の状況、仕事のストレスがすごいので家帰ってからや土日に消費活動でストレス発散してなんとか保っているみたいな状態で、なるべくクリエイティブに過ごそうとしてきた習慣が完全に死んでしまいました。

あと昼間の眠気がすごくてどうにもならないのを入社したその日から苦労しているのですが、やっぱりどうにもならないので診てもらうことにしました。
せめてカフェインが効く体質だったら楽だったのに無水カフェイン剤すら効果無いので打つ手なしという感じです。
初診ではいろいろ質問されたあと、「これからいろいろ検査して原因探すけどとりあえずお前くらいの年齢の人に必要な睡眠時間は8時間だからそのくらい寝ろ」という感じの話をききました。
ちなみにいまの睡眠時間は6時間くらいです。8時間って結構長いなーと思いました、がんばります。

おわり。

マジカルミライ2014に行ってきた話

前回の記事もライブの話でしたが今回もライブの話。

というわけで初音ミクはじめクリプトンファミリーのライブ、マジカルミライ2014 東京の昼公演に行ってきました!

席はアリーナの後方寄り。ぶっちゃけステージ上のミクの姿はちょっと見づらかったです(前の席の人の身長が高かった)。
でも緑のペンライトの海、ネギ畑とも言われるらしいそれの向こうで、現実に現れて歌って踊る様子がちょっとでもこの目で観られて良かったです。

自分が勝手に思っているだけですけど、ここ最近ミクやボーカロイドが、ただのフィールドになってしまっているような気がしていました。
もともとミクが、ミク自身の、ミクにしか歌えない歌を歌っていた頃から考えると、今は「バンドやってるし自分でも歌えるけどNNIよりはボカロ曲として投稿したほうが伸びるからボカロに歌わせとこう」みたいな感じが正直あるんじゃないかと思っていて。
そりゃもともとが音声合成ソフトウェア、作曲者が仮音声に使う用途とかで作られたものだった思うので、フィールドっていうのが当然の在り方というのもわかります。でもやっぱり自分はボカロ大好きなので、主人公として在ってほしいなあとなんとなく思っていました。

そんな中今日のライブに参加したら、フィールドに成り果ててしまったとおもっていたミクや、リンレンにルカにMEIKOKAITOが、ステージの真ん中に立って、あの会場全体をめちゃくちゃ盛り上げてるわけじゃないですか。
嬉しくて泣くかと思いました。
なんでもない自分が変に心配するまでもなく、今も、十分に主人公だって思えました。
そんなライブでした。

って偉そうにいろいろ書きました・・・
恥ずかしいのであとはふつうに内容の感想を書きます。

・開幕時の、誰か人間2人ほどによるパフォーマンスが、詳細わからないけれどおもしろかった。たぶんスクリーンの前に立って踊っていて、その人の手の位置を拾ってスクリーンに演出を投影するようなパフォーマンスっぽかった。
・曲目は、マジカルミライの公式アルバムやprojectDIVAに収録されているものからの選曲。予習としてDIVAFとF2ndを購入しておいたのが効果あった。
アカツキアライヴァルのミクとルカのダンスが、完全にピッタリではなくちゃんと人間2人のようなズレがあって良かった。
・FREELY TOMORROWの対応モジュールであるところのスターヴォイス、ステージ衣装系のモジュールではいちばん好きなので出てくれてうれしかった!!
・ありふれたせかいせいふくのダンスも衣装もめちゃんこ可愛かったのでDIVA収録されてほしい。
・ペンライトの色はなにがなんでもボーカルの色なのかと思っていたら意外とそうではなくて「みんなわかってんじゃん!」という嬉しさがあった。
FREELY TOMORROWはDIVAのPVみたいにピンク、深海少女は海の青。コレならカゲロウデイズも青か赤を振ればよかったなあと今更思うけれど、最初の曲だったからミクの緑になるのは仕方なかったかも。
・SweetDevilでたぶん「にゃん」のポーズをしてくれた!DIVAのPVではしてくれないので正直諦めてた・・・想定外のうれしさ。
・テーマソングのネクストネストも演るもんだと思っていたらやらなかった。夜公演限定かな〜と思ったものの、ちょっと調べた感じ夜も演らなかったらしい?ので残念。
・コス参加者や、コスまではいかないものの、衣装を意識した服装をしている人がおもったより多かった。隣の女性2人と小さい女の子が全員おそろいでピエレッタ着ていて可愛かった・・!

以上、要するに超たのしかったのでまた行きたいということでした。
おわり!

人生初めてのライブに行った話

親知らずを4本一気に抜いたら意外となんともなくてホッとしているaranagiです。

6/7(土)に、 MAMORU MIYANO LIVE TOUR 2014 〜WAKENING!〜 行ってきました!!
人生初めてのライブめちゃくちゃたのしかったです。

以下感想
・朝9時よりすこし前くらいから物販列に並びだしたら既に1000人近く居たらしく、
 買えたのは14時頃。その間ずっと雨風に晒され続けたためだいぶ消耗。
 買いたいものは少なかったので全部買えたけどとてもハードだった。
 夏コミの炎天下の列はなんともなかったのだけど、
 雨風の下はそれよりキツいということがわかった
・会場は東京国際フォーラム ホールA、席は2階の端。
 初めて入ったけれど意外と傾斜がキツくて驚いた・・・
 前の人に遮られることもなくステージはちゃんと見えた。
・2階席、ステージと1階のお客さんが全体的に見える感じでよかった。
 でもさすがにステージに居る人の表情や衣装の詳細までは見えないのでした。
・音めっちゃデカくてびっくりした!
 口から出た声がかき消されて自分の耳に届かないので、声出てないような錯覚がおもしろかった。
 最後にマイク使わないで叫んでた声が意外と小さくて、やっぱ遠さを感じた。
・始まるまでは、初めてのライブだしどうやって楽しんでいいのかぜんぜんわからなくて
 ドキドキしてたけど、NEW ORDER流れてきて始まったらもうテンションブチ上がって
 そっからはもう自然に楽しめてた。
・チケット取ってくれた友達からライブDVDもすこし見せてもらってたんだけど
 フリとかはとくに予習しなかった。
 前の席の人がガチ勢だったらしく、その真似をしていればうまくできたのでよかった。
・そう、周りに合わせて一員に徹する感じが意外と楽しかった。
 全員でその場を楽しむ感じ、音楽にあわせて身体をうごかすのがこんなに楽しいことだとは、
 20数年生きてきて知らなかった!
・コントでゲラゲラ笑った。客層大半女性なのにTENGAネタ。
・ビックリすると黙るタイプの人間だし「キャー!!」なんて声出ないんだけど
 「Foooo!!」で戦ってきた。戦えてたとおもう。
・行くことが決まってから、聴いてなかったアルバム借りたけど
 シングルのカップリング曲はカバーできてなくて数曲会場で初めて聴いた。
 IT'S THE TIMEがだいぶツボだったので、終わったあとあいぽんiTunesでポチって、
 「ありがとう時代の進歩!!!」ってなった。
・実際2階席で結構遠かったのもあって、「会ってきた」という感想はあまり無い。
 みんなで爆音で音楽聴いて身体動かして、呼びかけに応えて声出して楽しんできたという感じ。
・クラッカーのリボン、2階席にはほとんど届かなくて、
 端だったのでなおさら拾えなかったのだけど、
 終了後に出口でいっぱい拾った人が配ってくれていたので頂いた。めちゃうれしかった・・!!
・終わったノリでそのままゲーセン行ってプリクラを撮るとかいう
 すごい典型的リア充スタイルやったけど、
 慣れてないのでらくがきコーナーが見つからず店員に聞いた。ひどい。

そんな感じで楽しみました。腕の筋肉痛は1日遅れて今日来てます。おわり!

社会人1年間の話

aranagiです。
消費税アップと住民税のコンボで瀕死になる予定です。

さて、14年間の学生生活を終えてから早1年。
地方の下請けプログラマンとしてちまちまと社会人生活を送ってきました。
この1年間を振り返ると

2ヶ月 研修期間(C#)

3ヶ月 javascript

3ヶ月 C

3ヶ月 〜Excelの闇〜

でした。
最初の方はごりごりコード書ける仕事でよかったものの、
後半がExcelしか触らない闇期間継続中。
普通にたのしくな なんでもない


そんなわけで1年間仕事して、感想としては
やっぱりこのままあと39年間もずっと働き続けるということに
なんとなく希望が持てないというか
1年働いたしもういいか〜と思ってしまうというか
正直言うとそんな感じでした。

でも今の生活でとりあえず、
好きなところに出かけたり好きなもの買ったり
好きなもの食べたりして過ごせてるのでいいです。

2年目がんばりましょう。おわり。