Programming

TwitterBotをNode.jsとntwitter使って運用中、参考記事紹介

どうもなんか今日ちょっと肌寒いですりっくんですこんにちは。パズドラをやってるわけですが、ゲリラダンジョンとか行き始めたらランクが上がりませんぐぬぬ。

Nodejs_logo_light

パズドラ用Bot

俺用Bot作りました。まぁ横流しするだけなんですけど。
ゲリラダンジョンを確認するには@pazubotを見るのが楽なんですが、夜確認するだけだとすぐ忘れて、結局朝も確認して、ついでに直前に確認する・・・にも500もフォロー居ると流速が結構早くて辛い、みたいな事になっててですね・・・。まぁめんどくさくて、Botに監視させて俺にリプライ送ってもらおうと思ったのが今回のBot作成の発端です。

ってことでタイトルにもありますがNode.js使って運用してます。初めはPythonあたりでやるかと思ったんですが、書き慣れたjavascriptを使えるってのが個人的には良いなぁと。あれこれプラグイン探してたら「ntwitter」ってのが有ったのでそれ使ってやってみました。

Node周り

一応Node.jsの環境とか描こうと思うんですが、なんの策略かほとんど僕と同じ構成にしてるBlog記事を発見したので流用しまふ。

node.js node.jsスクリプトをforeverでデーモン化する -でじうぃき – 

forever突っ込んでみたらびっくりするほど簡単にデーモン化できて、起動しっぱなしにできました。今回はBot作成だったので動かしっぱなしどうするかなぁと思ってたんです・・・。
インストールなんかもググってください。一応nvm経由で入れました。

3分でCentOS6にnvmとnode.jsをインストールする方法 – DQNEO起業日記 – 

一応鯖がCentOSな環境だったのでそれに合わせて。とは言えローカルでも動かさないといけないのでMacでも確認したのですが、なんかv0.8.2?とかが入ってたんですよね、それで結局Macでもnvm経由でv0.11.2を入れなおしてます。

Twitter周り

AvianFlu/ntwitter · GitHub – 

コレ使ってます。しかしREADMEにあまり情報がないのでソース読まないといろいろよくわからない。で、なんかぐぐってたら解説してくれてるサイトさんが。ソースリーディング力は付けないといけないっすね・・・。

node.js ntwitter – 

思ったよりも簡単で、しかもStreamingAPIにも対応しているという。

特にこったことはやってないけど、要は@pazubotのツイートを見て、自分の組に該当しているツイートだったら
”@Ricckn ”+その内容
って形でリプライを飛ばすみたいな感じ。一応合計で140字を超えるとエラー吐いてスクリプト自体がストップするのでチェックして、超えたら形成しなおしてはいますが。一応Tweetするようの関数は作っておくと便利だと思います。

var Twitter = require('ntwitter');

var twit = new Twitter({
  consumer_key        : 'consumer_key',
  consumer_secret     : 'consumer_secret',
  access_token_key:   : 'access_token_key',
  access_token_secret : 'access_token_secret'
  });

//Tweetする関数
function tweet(tweetMsg){
  twit.post(
      //"http://api.twitter.com/1/statuses/update.json", APIは1.1になったよ!
      "http://api.twitter.com/1.1/statuses/update.json",
      {status : tweetMsg},function(er, data){console.log(data.text);}
  );
}

※追記
API1.1になったじゃねーかーーーーあああ!!!
ってことで少し書きなおしております。具体的にはURI・・・(‘A`)

サンプルとか参考にしまくってるのでだいたいその辺と一緒です。StreamingAPI周りもかなり簡単にできると思います。適当にSampleStream垂れ流したときはコンソールが大変なことになった。読めねぇ。

しかしこんな簡単に作れるんだなぁと。まぁとか言いつつ、昼まで動いてなかったBotが夕方になっていきなり動き始める怪奇現象が起きてて、んでよくわからんけどそれから先程まで正常に動いているという・・・怖すぎるんですが。

ってことで、簡単なモノ作るくらいならNode.js使うのもありだね!って思いましたし。

Uploader

GoogleがGoogleTalkをハングアウトとして新しくアプリを公開したようで、とりあえずインスコして使ってみておりますりっくんですこんにちは。Android版の雑感としては、割りと通知バーに更新が来るのめんどくさいって感じです。LINEのあの通知方法、はじめはうぜぇとか思ってましたけど慣れると便利なんですね・・・。まぁそもそもの問題はG+でつながってる人が少なすぎる事なので、移行してくれればやるけどそうでないならつかわないかもなぁというところ。

Uploader

さて本題。
個人的な目的の為に画像アップローダーを作りました。一応完成図したのはこんな感じ。スクリーンショット_2013-05-21_13.38.44その辺にあるのを鯖に入れようと思いもしたんですが、結構自分が欲しいと思ってるものがなかったのと、いい加減一度DBと心を触れ合わせないとなぁと思ってたから作った感じですかね。作りたい欲もあった。

自分が欲しかった機能は

  • 少数ユーザーのみがログインでき、閲覧アップロードができる、誰がアップしたかわかる
  • ドラッグアンドドロップでアップロードすいすい
  • 開いた瞬間とりあえず今相手に見せたい画像が表示されている

なんかうまく言い表せないけどこんな感じ。
状況としては、Twitterにアップするにはちょっと人目につきすぎるとか、Google+はそもそもやってないとかの現状があって、そういう微妙な部分に対応できるアップローダーを作りたかった。俺用のな!現在は一緒にVCやってる人たち用に公開している感じ。

完成してみて

まだバグが残ってたり、UI上の問題(だと思われる部分)が残ってるんだけど、使ってみてかなりしっくりしたものができたと思ってる。そりゃ、自分用に作ったんだから希望通りにならないといけないとは思うんだけどw使ってくれる人(2,3人)からの評価も悪く無いと勝手に思ってる。悪くないよね・・・?w
あ、上のスクリーンショット、僕の画像ばかりなのはダミーを表示してるからですよ????w 他の人の画像は一応許可とらんと非公開にしてる意味がないので・・・! 一応他にもアップする人いるんだよ!

んでまぁ、もうちょっとデザインやることあるかなぁと思ったんだけど、いざ画像を並べてみると結構綺麗に見えてしまって。ヘッダー部分も仮ってレベルでとりあえず作ったものをそのまま流用しちゃってて・・・。でも最低限見られるというかシンプルというか。ちょっと殺風景かもしれないけど。

作ってる時

まず今回はPHPさんにボコボコにされた感じですね。
なんとなく覚えてる範囲で、どんな感じに作ったか(つまづきまくって時間がかかったか)書いていきます。

  1. Twitterでログインできるサービスを作る。
    ドットインストールさんを利用して作ったのですが、ログインに使うPHPのCordbirdがすでに別物になってて躓く。動画見ながらだとできなくてGithub見たらすぐ動くという、あっち見てやるべきだね・・・。
  2. アップしたファイルをログインユーザーのみが公開できるようにする
    ApacheのModを使ってやってる。Apacheの罠に引っかかり(Pathの指定方法)1日丸々使った気がする、アホ
  3. ドラッグアンドドロップでアップロードできるようにする
    いろいろ試してどこかからコードをリスペクト。
  4. 画像をリサイズできるようにする
    なんだっけPHPのWideImageっていうものを使ってリサイズ、クリッピングをかけてる。結構便利。でもコレも使ってみる1日目とちゃんと配置する2日目があった。
  5. 画像管理用のDBを作る
    MySQLってWordpressを入れる時くらいしかつかってなかったからますSQL文を書くのに四苦八苦。あとPDO。
  6. 削除とかそのへんもろもろ
    削除機能をつける、まぁ上のDB周りの応用だったので楽ちん。
  7. デザイン
    並べたらかっこよくなった!!!!!

だいたいこんな感じでしょうか。でも今回はいろいろ助言も頂きましたが、かなりの部分を一人で作れた事にはもう満足感がすごい。

ただし、すげー時間かかっちゃったのでこのへんはなんとかしたいなぁ。いや、次はいける・・・!気がする。

そしてPHPちゃんと結構仲良く慣れた気がします。でもまだJavaScript書いてる時のほうが楽しいのですけど・・・。あんなにPHPで書くとき苦労してたのに、Ajax的な部分を書くのはすんなりなのがぐぬぬと言わざるを得ない。PHP力が足りない。

サーバーサイドは別の言語も使ってみたいなぁ、Pythonとか。そういえばうちのVPSにはPython動かせるようにしてない気がする。なんか次作りたいものができたらPythonも視野に入れようそうしよう。

ってことで8割くらいかんせいして よかった 。

りっくんの10日でおぼえるAndroidアプリ開発入門教室 4日目

 

※この日記はRicckが以下の書籍を見ながらAndroidアプリを10日で作れるようになるかを実験し、記録するためにあります。詳しくはりっくんの10日でおぼえるAndroidアプリ開発入門教室 0日目をどうぞ。
10日でおぼえる Androidアプリ開発入門教室 出版社:株式会社翔泳社 著:寺園 聖文

 


実は更新が4日遅れてます。4日目を終わらせたのは3月2日、3日はスノボに行ったので全日何もせず、昨日5日は・・・
スノボの影響で腕が痛くてキータイプするとうのが辛かった!!!!

まじで今も上半身の筋肉痛がヤバいです・・・。今までいかに省エネな生活を送っていたかがバレてしまいそう・・・。まぁスノボについては別エントリーに書き出します。初めてだったので色々書きたいことがありますよw

さて、4日目ですがだいぶプログラミングらしいところに入ってきました・・・。今のところ見ればできるけどだいぶ先行きががが。しかし、今頭の中にぼやーっとある作ってみたいアプリに応用できそうで、とりあえずココを見ればそこをクリアできそうです笑

多分そういう使い方をすれば、自分の思ったアプリができるんじゃないか・・・とか・・・!

何はともあれ、なんとか同じ動きがするようにはなりました。しかしこれ、プログラミング書く人って何も見ずに作れるんですかね…。なんか見ながら作るんですかね。HTML位だと見ずに作れるんですけど、プログラミングっておぼえる(とするなら)量が多すぎるような気がする。

そのための本・・・とかインターネットかな?・3・

とにかく5日目はいるぞー!

4日目
Lesson 13
16
作業時間:120
ヒトコト:とりあえず写す、それから考える

りっくんの10日でおぼえるAndroidアプリ開発入門教室 3日目

 

※この日記はRicckが以下の書籍を見ながらAndroidアプリを10日で作れるようになるかを実験し、記録するためにあります。詳しくはりっくんの10日でおぼえるAndroidアプリ開発入門教室 0日目をどうぞ。
10日でおぼえる Androidアプリ開発入門教室 出版社:株式会社翔泳社 著:寺園 聖文

 

早くも3日目。3日目ってダイエットとかでも節目ですよね、とりあえず続ける3日間的な。そして今日になって感じたことが一つ。1日に1日分しか進めちゃいけないルールが割と私のモチベーションを保つ材料になっているような気がする。1日分をやるくらいならそんなに時間はかかりません、今日から少しいじる場面が増えましたが、それでも1時間ほどで終了しました。・・・まだまだぬるい所だからでしょうw

今日もxmlレイアウトの続きです。が、なぜか知らないけど同じにならないんですよね・・・。(P,95)サンプル通りに書いても、Graphical Layoutが一緒にならない、ぐぬぬな状態で30分くらいにらめっこしました。

 

<ScrollView
	android:layout_weight="1"
	android:fillViewport="true"
	android:id="@+id/ScrollView01"
	android:layout_width="fill_parent"
	android:layout_height="wrap_content">
	<EditText
		android:gravity="top"
		android:text=""
		android:id="@+id/EditText01"
		android:layout_height="fill_parent"
		android:layout_width="fill_parent">
	</EditText>
</ScrollView>

ちなみにこうなります。

12行目からですが、ココでの3行目、android:fillViewportの値をfalseにするとGlaphical Layoutは一緒になるんですけど・・・。ちなみにサンプルだと、TextEditが1行に収まります、下まで伸びません。

ググッたところ、とりあえずfillViewportがどういう動きをするかはわかりましたが・・・、これ<EditText>の方だよね問題・・・。

 

 

と、とりあえず終了したはいいけどわからないままだったり!明日、先に進んで問題が起きたら再挑戦してみる!

xmlをいじってるとcssっぽいなーという印象を持ちますね、割と親しみが有りますw
何かを作っていて、ソレがすぐ形になるというか、目で見えるのは個人的に良いです、見えないものと戦うのは辛いですので。

 

今日はこんなところ、今のところ順調?
けど、本の中身についての理解はどうだろう・・・、でも置いて行かれてる感はあまりない気がする。

ちなみに、チラッと先のページを見るのも、個人的に我慢しています。あんまり意味はないですが・・・

 

さぁ!明日も頑張ろう!3日はスノボーだからもしかしたら休みかもしれない、やりたくて仕方が無かったらやる!

あ、書き忘れましたが、まだプログラミングには全然入ってない段階ですが、面白いです面白い。

 

3日目
Lesson 09
12
作業時間:60
ヒトコト:Try and Error30分間

りっくんの10日でおぼえるAndroidアプリ開発入門教室 2日目

※この日記はRicckが以下の書籍を見ながらAndroidアプリを10日で作れるようになるかを実験し、記録するためにあります。詳しくはりっくんの10日でおぼえるAndroidアプリ開発入門教室 0日目をどうぞ。
10日でおぼえる Androidアプリ開発入門教室 出版社:株式会社翔泳社 著:寺園 聖文

さて2日目です。ルールに書き忘れましたが、”実際の日にちで10日間で終わらす”というよりも、”都合の良い10日間を使って開発”というイメージです、明日、必ず3日目をやる必要は無いということを先に書いておきます。

早速勘違い発動

えー、ルールに書きました”2日間分をやらない”ですが、初日から破ってしまっていました・・・。というのも、ChapterDaysが分かれていることに気が付かなくて、うっかり1Chapter分(ここでは1.5日分でした)進めてしまったということです…。

ちゃんと読んでなかった私が悪いです、ということで2日目の分量は恐ろしく少なかった感じになってしまいました・・・。

余談ですが、私はChapterの進行度で日割りになってない点についての不満は有りません。中には、Chapter毎に日割りしたほうが理解しやすいのではないか、と主張する方もいらっしゃると思いますが、作業はキリの良い場所で終わらせるよりも、途中で終わらせたほうが再開するときスムーズに始められます。これはChikirinという某ブロガーが日記に書いていたの(リンクどこか行っちゃった><)を、実践してみたら割と良かったという実体験にも基づいています。Chapter毎のほうが性に合うという人はそっちでやるのもいいんじゃないですかね。

 

 

ということで2日目ですが、Androidプロジェクトを作成、エミュレータで起動してみる、というところまでです。
初心者的に嬉しかったのが、自動的に作成されるプロジェクトの中身、ディレクトリとファイルの説明(P,52~)です。 Web等で調べると基本的にわかってる物として進められてしまうので、このへんがわかってなかった感じでした。

それと、P,61~63のデバッグ周りのお話も良かったかなぁと。こう言うの初めてだとどれも新鮮で必要だなぁって思うんですけどねw

 

というわけで、うっかり1日目の分量が多かったせいでLesson数は2だけという残念な感じに。
とりあえず今のところ取り残されてる感は有りません。作業時間も20分ほどでしょうか、今回は結構文字を読んでたので…。

しかし、どのくらい進んだらBlog書くのが億劫になるんでしょうw 短いBlogになってたら、作業でこってり絞られたんだなぁって思っててください笑

 

ということで2日目は終了、明日も恐らく3日目を進めます。がんばるぞー!

2日目
Lesson 07,08
作業時間:20
ヒトコト:うっかりみじかっ!

りっくんの10日でおぼえるAndroidアプリ開発入門教室 1日目

※この日記はRicckが以下の書籍を見ながらAndroidアプリを10日で作れるようになるかを実験し、記録するためにあります。詳しくはりっくんの10日でおぼえるAndroidアプリ開発入門教室 1日目をどうぞ。
10日でおぼえる Androidアプリ開発入門教室 出版社:株式会社翔泳社 著:寺園 聖文

1日目の内容は、アプリ開発環境の構築がメイン。ということでHelloWorld位は作ったぼくちんには何事も無く、それこそ10分で終わってしまった・・・。しかし0日目にも書いたけど、2日分は進めないように決めたので今日はここで終えようと思う。

しいて言えば、本書はAndroid2.3を基準に書いているようなので、初めて2.3のエミュレータを起動してちょっとだけ面白かった・・・位だろうか。

よーし、明日から本気出す!

 

この時りっくは明日からの地獄の日々を、想像すらしていなかったのであった・・・

つづく。

1日目
作業時間:10
ヒトコト:読んだら終わってた。

りっくんの10日でおぼえるAndroidアプリ開発入門教室 0日目

Blogが消えたのでサルベージ分だけ。

 

ちょっと前から気になっていた本が発売された。

10日でおぼえる Androidアプリ開発入門教室

春休みの暇な時間を、何かに還元しないといけないなぁと思い、ちょいと奮発した感じ。

そもそも、私はこの日で覚えるとか、日トーレニングのようなものをやったことがない。大学受験とかでよく30日で覚える日本史とか、目にはしていたがまぁ無理だろうとか思っていた。(だからこそやらなかったのだが。)

そこでこの時間のある春休みである。本当に10日でできるのか、そしてそこそこ身につくのかというのは疑問だが、それを実験する時間が私にはあるではないか。

ということで、ルールを定めて、この本通りにAndroidアプリ開発を勉強してみようと思う。

実験条件

被験者

名前:Ricck
立場:大学生 経済学部 1年生
PC歴:6年間くらい
経験:Javaちょっとだけ、HTML、CSS、jQueryを少々くらい

ルール

  • 今日から本気出す。
  • Xperia(SO-01B)で動作確認をする。
  • IS01でも動いたらラッキー。
  • 本に書かれている順番通り進める。
  • 1日に2日以上の分量を進めない。
  • 1日分やるのにかかった時間を記録していく。
  • 困ったらGoogle大先生にささやく。
  • 一応毎日Blogをつけて復習する。

こんなトコロ。さて、1日目にとりかかろう、りっくんはどうなるんでしょう。