タグ別アーカイブ: Twitter

橋本商会 » Twのレシピ

tw (http://shokai.github.com/tw)の活用方法を紹介します。
うまく使うとプログラムを書かなくてもtwitter botを作ったりできる。

前:ターミナルで使うtwitterクライアント作った

基本的なレシピから順に解説していきます。

最新版にアップデート

ここに書いてあるレシピは、今日リリースした最新版(v0.3.1)でしか動かない物が含まれるので
最新版をインストールしなおしておいてください。

gem install tw

リクエストを並列化して速くなったりもしたし。

zshのコマンド補完を使う

@glidenoteさんがすごい勢いで作ってくれました。
ターミナルで使うtwitterクライアントtwが便利なのでzsh補完関数を作った – Glide Note – グライドノート

UNIX pipeをつかう

コマンドを実行して、アカウントを@shokai_logに切り替えつつ結果をtweetする

% echo "現在の時刻 `date`" | tw --pipe --user=shokai_log

出力フォーマットをカスタマイズ

% tw --format=json

JSON出力される。他のプログラムに渡す時に使える。

自分でフォーマットを決められる

% tw --format="@#{user} #{text}"

user, text, time, id, urlの5つが使える。

Twだけでtwitter botを作る

プログラムを書かずに簡単なbotを起動可能。
–stream, –silent, –format, –pipeを組み合わせる

crontabでbot

0 15 * * * echo "3時です。おやつです。" | tw --pipe --user=shokai_log

3時のおやつを教えてくれる。

shokaiで検索して、即「はい」とリプライするbot

% tw --silent --stream:filter=shokai --format="@#{user} はい" | tw --pipe

grepや–format=json、ワンライナーも活用しよう。

重い処理が終わったら、自分にDMを送る

% make build && echo "buildできたぞー" | tw --pipe --dm:to=shokai --user=shokai_log

ハッシュタグを読み上げる

% tw --silent --stream:filter=tag1,tag2,tag3 --format="#{text}" | xargs -n1 say

動画は3つ同時に見れないけど、読み上げなら3つぐらい同時に実況を把握できて便利
Macのsayコマンドに日本語を喋らせる方法はMac/Linuxに喋らせるに書いた。

現在位置をtweetする

% echo "イマココ `whereami -map`" | tw --pipe

gem wifi_locationでインストールできるwhereamiコマンドを使った。

iTermを使う

command+クリックでURLをブラウザで開けるのが便利

もっと色々やりたい人へ

Twを部品として使うと良いです。
twitter botのプログラム書いてみると、大部分が認証だったり、oauth tokenをgitにcommitしてしまったりして大変あほくさい。
そういう面倒な部分をTwにまかせてしまえば捗ります。

アカウント設定ファイルを直接使う

$HOME/.tw.yml に保存されている
これを直接読んで、別のtwitterアプリで使っても良い。
削除してもtwコマンド毎に自動再生成される安心設計

Twitter gemの認証管理フロントエンドとして使う

twはtwitter gemのラッパーで、アカウント管理機能もあるので、twで認証してからTwitter gemを使えば楽になる
例: アイコンアップロード
認証だけTwを使っている。

Tw::ClientのAPIを使う

Twコマンドが使っている内部API(Tw::Client)が使える。
例1: mentionを読んだりtweetしたりする例

例2: dfをツイートする

Twitterにおけるオープンソース利用の現状

TwitterのChris Aniszcykが今朝(米国時間8/30)、CloudOpenで講演し、Twitterにおけるオープンソースの利用について語った。

彼の話を聞くと、Twitterのようなビッグな企業がインフラのスケールアップのためにオープンソースの技術を有効利用している内幕がよく分かる。それは企業世界が今後関心を持つべき、新しい話題でもある。

Aniszcykは、Twitterがそのサービスを管理するために依存しているオープンソース技術の概要を述べた:

  • ツイートのメインのストレージとして利用しているのはMySQLである。MySQLの同社独自のフォークをオープンソースで開発することにより、源流コミュニティの協力を求めている。MySQLは、オープンソースの関係データベースである。
  • さまざまなApacheプロジェクト…CassandraHadoopLucenePigなどなど…をアクセス分析や検索などサービスの重要成分で活用している。もちろんオープンソースだから、それらのプロジェクトへの貢献もしている。TwitterはApache Software Foundationのスポンサーでもある。CassandraはNoSQLのデータベース、Hadoopは分散ファイルシステム+ビッグデータコンピューティング、Hadoop上のビッグデータ分析のために使っている高級言語がPigだ。Luceneは、オープンソースの検索テクノロジ(多国語対応)である。
  • 絶えず増大している同社のトラフィックに対応する、スケーラビリティに富むキャッシングインフラとして、Memcachedを多用している。TwitterによるMemcachedの独自実装Twemcacheを、同社は最近オープンソース化した。Memecachedが提供する巨大な分散オンメモリキャッシング技術によって、データベースの過負荷を回避できる。

Twitter自身が開発してオープンソース化しているソフトウェアには、次のようなものがある:

  • Iagoはテスト用の負荷生成プログラムで、サービスを本番の負荷にさらす前のテストに用いる。
  • Zipkinは分散トレースシステムで、サービスのタイミングデータを集める。Twitter APIへのリクエストを管理するために、そのデータを利用する。タイミングの調整により、Twitterをより速くできる。
  • ScaldingはHadoopのMapReduceジョブを楽に書けるためのScalaライブラリだ。ScaldingはScalaからCascadingを利用するために作られた。後者はJavaデベロッパがHadoop上でビッグデータアプリケーションを構築するためのフレームワークだ。このフレームワークが複雑なMapReduceを抽象化することによって、Hadoopのクラスタの管理が容易になる。MapReduceは元々、Googleが検索データを処理するために開発した分散並列ビッグデータ処理コンピューティングモデルの、はしりのようなソフトウェアだ。Scalaは、Javaをラップした…(言語の原作者によるオリジナルの実装は)これまたオープンソースの…汎用プログラミング言語で、よく使われるプログラミングのパターン…ときにはその改良版…を、言語本体と標準ライブラリの両方で実装している*。

〔*: Scalaで書かれている有力Webサービスは、Twitter、LinkedIn、Foursquareなど。〕

FacebookやGoogleも、自社開発技術の多くをオープンソース化している(またはそれらの忠実なクローン製品がオープンソース化されている)。その結果は、企業においてとりわけ顕著だ。たとえばMapReduceの(Apacheによる)オープンソース実装Hadoopは、最初はYahoo!が開発し、今ではビッグデータプロジェクトの最重要な基盤技術として企業向け市場で頻用されている。

メモ:twitterのbotを作るために必要なAPI key・token取得法 | Pocketstudio.jp log3

完全自分用の備忘録です。

twitterのbotを書きました。コードを書いた後、特定のtwitterアカウントで、自動tweetをするためには API の key や token の取得が必須です。久々にAPI登録したのですが、今後戸惑わないように簡単に手順をまとめておきます。

1. まずはアプリケーション(bot)を登録する。登録用 URL に移動。

https://dev.twitter.com/apps/new

このページにアクセスします(ヘルプページのフッタ部分に “API” というリンクがあり、そこから辿ることが出来ました)。

2. 必要な項目を入力。

  • “Name:” アプリケーション名
  • “Description:” アプリケーションの説明
  • “WebSite:” サイトのURL

この3つが必須です。

ページを下っていくと、【 Yes, I agree 】にチェックを入れます。CAPTCHA の部分には、画面に表示される文字を入力。最後に【 Create your Twitter application 】(ツイッターアプリケーションをお作成)ボタンをクリック。

作成が成功すると、画面が切り替わります。

今回はbotを作成したので、「tweetを許可する」必要、つまり「APIによるwrite」を許可する設定を行います。My applications の画面で、【 Settings 】のタブをクリックします。

次に切り替わった画面では、”Application Type”(アプリケーションの種類)→”Access:”にある権限設定を【 Read and Write 】に変更します。この変更を行わないと、bot は書き込みが出来ないので要注意です。

変更後、【 Update this Twitter application’s setting 】(ツイッターアプリの設定を更新)ボタンを押します。無事更新が終わったら、ページ左上、【 Details 】タブをクリックして、元の画面に戻ります。

元の画面に戻ったら、”OAuth settings”の”Access level”が”Read and write“に変わっている事を確認します。

そして、アクセストークンを作成します。ページ一番下”Your access token”に【 Create my access token 】があるので、ボタンをクリックします。

正常に処理されれば、”Access token” “Access token secret”が表示されます。既に作成されている OAuth の “Consumer key” と “Consumer secret”をbot側プログラムにセットして完了です。

なお、”Read-only” で token を作成してしまっていた場合、【 Recreate my access token 】(アクセストークンを再作成)ボタンを押すことで、Read-write に対応したトークンを取得できます。

 

Twitter 社採用面接受験記 – elm200 のノマドで行こう!

1ヶ月ほどまえに、私はシリコンバレーを訪れたのだが、そのときサンフランシスコの本社で Twitter の採用面接を受けてきた。結果は残念、ということだったのだが、その経緯について書いてみようと思う。

なぜ Twitter 社の面接を受けたのか。7月の終わりころ、私はシリコンバレーで働くにはどうすべきなのか、ということについて頭を悩ませていた。考えながらぼうっと Twitter のタイムラインを眺めていたのだが、Twitter が日本人エンジニアを求人しているという情報が飛び込んできた。おお~、と思って軽い気持ちで職務経歴書を Twitter に送ってみたのだ。

相当数の人たちが職務経歴書を送ったはずだし、私は書類選考で落とされると高をくくっていた。ところが、数日してTwitter の人事担当者からメールがあり、電話面接をやるからいつがいいか?という。まさかの展開に私はやや慌てた。電話面接をギリギリ先延ばしにして、それまで対策を練ることにした。

私は、日系米国人の@hkmurakamiさんに相談をした。聞くと、シリコンバレー式のエンジニア面接は、日本とは違って、一線で働く技術者たちが入れ替わり立ち代わり現れ、鋭い技術的な質問を矢のように浴びせかけてくるので、準備が必要とのことだった。彼は親切にも Quora で働く @chibicode さんを紹介してくれた。彼は、経験豊富な面接官で、私に的確なアドバイスをくれた。その整理された話し振りに本当に頭がいい人なんだなと感動した。

彼はシリコンバレー式技術面接対策として2冊の本を紹介してくれた。どちらも非常に良い本だった。

前半と後半に分かれていて、前半には、そもそもシリコンバレー式の技術面接とはなにか書いてある。どういう内容の面接が行われるか、どういう準備をすべきか。GoogleApple など米国西海岸の実際の面接風景も描写されていて興味深い。後半は、技術面接で出題される典型的な問題と解説が記述されている。データ構造やアルゴリズムに関する出題が多い。実際よく売れた本らしいけれども、シリコンバレーの技術系企業に応募しようというソフトウェアエンジニアには必携ではないだろうか。

プログラミングコンテストチャレンジブック

プログラミングコンテストチャレンジブック

プログラミングコンテスト」と題は打たれているが、むしろアルゴリズムに関して深く学習する本と考えた方がいい。コンピューターサイエンスを専攻する人たちには、ひょっとしたら常識的な内容なのかもしれないが、私のように大学で専門的にアルゴリズムを勉強したことのない人間には大いに参考になった。とりあえず C++ の基礎知識があれば、読み進めることはできるが、しょっぱなから内容はかなり高度。数人の著者は執筆当時、現役の東大の学生たちで、プログラミングコンテストの上位常連だったようだ。そのうちの一人はいまは Google で働いているとかいう噂。

上記2冊を光速で注文し、勉強を開始した。しばらくバリバリのプログラミングから遠ざかっていたので、かなりしんどかったが何とか読み進めて行った。上の “Cracking the Coding Interview” のほうは、前半の概論部分が、米国人の面接に対する考え方が色濃く現れていて興味深かった。いかに日本とは違うかを痛切した。シリコンバレーで実際に働いてみるつもりがなくても、一読してみると面白いかもしれない…。

そうこうしているうちに1回目の電話面接。めちゃくちゃ緊張したけれども、意外なことに電話口の向こうから聞こえて来たのは日本語。計2回の電話面接を受けたのだがどちらも日本人の面接官だった。Twitter では現在数人の日本人が技術者として働いているのだ。2人とも本当に優秀そうな方々だった。相手は日本人とはいえ、面接のスタイルは完全にシリコンバレー式。「どうして Twitter に応募したのですか?」などというありがちな質問はそこそこで終わり、あとは数十分、ひたすら技術的な問題を浴びせかけられた(一人の面接に 30-40分をかけるのだ)。

私の感触では1回目の面接はまあまあだったものの、2回目の面接がうまく答えられず落ち込んだ。もうダメだろうなと思った。だが、@hkmurakamiさんに「米国では何事も前向きにガンガン進んでいくのだ」とハッパをかけられ、私は「サンフランシスコ本社で面接を受けさせてほしい。そうしたらもっとうまくやれるから」と人事担当者にメールを送った。その気持ちが通じたのか、私は本社で面接を受けることになった!ラッキー!

実をいうと今回、私がシリコンバレーに行ったのは、Twitter とは直接関係がない。私は、シリコンバレーでの就職をもくろんで、とりあえずどういう仕事がありうるのか市場調査で行くつもりにすぎなかった。だから航空券も Twitter の件とはまったく独立して購入していた。たまたま、私がシリコンバレーに滞在するのと同じタイミングで Twitter の本社で面接を受けられたのは運がよかった。

私は9月1日午前と9月6日午後の2回にわけて、サンフランシスコにある Twitter 本社で面接を受けた。シリコンバレーの中心地 Mountain View のホテルから30マイルほど車を走らせて、Twitter 本社まで出かけて行ったのだが…。あのオフィスの美しさといったら!こんなオフィスがこの世にあるものなのか、と感動した。入り口を行ってすぐのところに大きなカフェテリアがあるのだが、その空間の使い方がじつに上手だと思った。日本風に言えば社員食堂なのだが、オシャレでオフィスの一部として見事に溶け込んでいるのだ。全体がシックな感じで、カフェのようなオフィスか、オフィスのようなカフェみたいだった。

20110901095233

Twitter のロビーの有名なインテリア。緊張しながら撮った数少ない写真の一枚)

最初の面接官は、エンジニアなのにたいへんな美人で最初は人事の人かと勘違いした。米国ではエンジニアはむさ苦しい男がやるもの、という日本的な常識は通用しないんだと内心苦笑いした。彼女は開口一番「コーヒー欲しい?」と私に尋ねた。飲みたいと答えると、彼女はコーヒーポットのところまで連れて行ってくれて、私は自分でコーヒーをマグに注いだ。そういう些細な点までなんとまあ日本の面接とは違うものだと感心した。

私は合計8人(!)の面接官と本社で会った。シリコンバレー式の面接では、面接官は一度に一人しか出てこない。そして、30-40分の間、難しい技術的問題で候補者をギリギリに締め上げるのである。ある問題が提示され、それを解決する疑似コードをホワイトボードに書かせることが多かった。問題は、データ構造とアルゴリズムに関するものが大半だが、一見して理論的でも、かれら第一線のエンジニアたちが日頃格闘している現実の問題と関連していて、良問が多かったように感じる。さすが Twitter のエンジニアはスマートだと感心した。こういう問題をすらすら解けるような候補者なら、たしかに彼らエンジニアたちも安心して一緒に働けるだろう。

ほとんどの面接官は非日本人(英語を話していても国籍はどこだかわからないのでこういう言い方にしておく)たちだった。英語話者はこういうとき意外と儀礼的でやさしい話し方をするので、面接官たちの物腰は柔らかく楽しかった(内心何を考えているかはわからないが)。むしろ日本人面接官のほうが非常に厳しくて、私は思わず泣きそうになった。私は人生で無数の採用面接を受けて来たが、ここまで追いつめられたのは生まれてはじめてだった。いまはいい思い出だが…(遠い目)。

本社での第2回目の面接があまりうまく行かなかったので、たぶん採用されるのは難しいだろうと考えていたが、案の定、面接を受けて10日くらいして「採用見送り」の連絡があった。とはいえ、内心ほっとしたのも正直なところ。Twitter の素晴らしいエンジニアたちと話をして、とても私には彼らの仕事はできないと感じていたからだ。能力的な面は努力次第ではなんとかなるかもしれないが、徹底的に技術を指向していく部分が私とは合わない気がした。私はいままで、小さい会社のプロトタイプ的な作品を手がけることが多かった。そこでは素早く形を作って動かすことが重要で、スケーラビリティやセキュリティは二の次でもよかった。だが、いまや1億人のユーザーを抱える Twitter にとって、一番重要なのはまさにスケーラビリティとセキュリティに対する配慮だろう。この部分にきちんと考えが至らない技術者は、Twitter で働くのはふさわしくない。けれども、私にとってそれはあまり関心のない分野と言えた。だから Twitter は正しい判断を下したと思う。(「酸っぱいブドウ(sour grapes)」の寓話のような、負け惜しみ部分がまったくないかといえば嘘になるのかもしれないが…)

今回、ベイエリアの有名企業に応募して感銘を受けたのは、技術者採用の丁寧さだ。私は合計10人のエンジニアと計5時間以上話をした。彼らは、あらゆる角度から技術的な質問を投げかけて来た。これだけきちんと候補者を見れば、変な人間を採用してしまうことは少ないのではないか(それでもゼロではないのかもしれないが)。それを考えると日本の技術者採用はなんとまあいい加減だろうと思った。応募してきた人の履歴書を斜め読みして、その後、人事担当が2-3回会って決まり。技術的な問題を解かせることもなければ、そもそも現場で働いている技術者が面接に出てくることもない。人事の人間に現場の何がわかるのか?候補者にしろ、それを受けいれる職場の人たちにしろ、お互いに顔を合わせず、相性的部分も見ることなく、採用が決まってしまうのは不幸なことじゃないだろうか。なぜ日本の IT 企業はシリコンバレー企業の真似をしないのだろうか?

当たり前の話だが、年齢についての話題が一切なかったのは笑えた。私はいま41歳で、日本だとほとんど正社員採用の口はない。年齢で切られてしまうのだ。ところが米国ではそもそも履歴書に年齢を書くことはないし、面接でも年齢を尋ねるのが禁止されている。そもそも法律で禁じられていなくても、文化的に彼らは年齢を気にすることが日本よりずっと少ない。仕事に関連する能力によってのみ、採用の可否が決まるべきという思想が徹底されている。そんな米国流のやり方を非常にすがすがしく感じた。

シリコンバレー式面接は手間がかかる。一線で働いている超忙しい技術者を現場から引っこ抜いて来て、どこの馬の骨ともしらない候補者のために貴重な時間を裂かせるのだ。私の面接のために、彼らの時間が少なくとも5時間以上使われているわけで、その人件費たるや数百ドルに相当するだろう。このように本社面接にはコストが掛かるので、彼らとしてもそれほど多くの候補者たちを招くことはないだろう。今回私が Twitter 本社まで行けたのは名誉なことだ。私は今回の面接を通じていろんなことを学んだ。Twitter 社に深く感謝したい。

私はたまたま技術指向な人間ではなかったので、Twitter との相性はよくなかったが、逆に、技術が好きで好きでたまらないという人たちにとって、シリコンバレーは天国かもしれない。日本では一部ソーシャルゲーム関係をのぞけば、大規模なユーザーベースを持っている会社は多くないので、技術指向の人たちこそ、シリコンバレーを目指すべきじゃないだろうか。技術者にそれほど高度な英語力は要らない。必要最低限の英語力、確かな技術力、そしてほんの少しの勇気があなたに必要なすべてだ。特に若い日本の人たちにはどんどんシリコンバレーに挑戦して欲しいと思う。私にできたのだから、あなたにもきっとできます!一緒にがんばりましょう!

twitterのデマ発信源はつきとめられる: エビログ

twitterで震災関連のデマが問題になっている。
デマは不安を煽り、混乱をもたらす。
人命もかかってる非常時に。大迷惑だよね。 デマのまとめはコチラ

ってわけで、

twitterでデマをはじめてつぶやいた人を
Googleを使って、つきとめてみたよ。

例えば…

「ワンピース作者の尾田栄一郎さんが15億円寄付」

このデマの発生源をつきとめてみよう。

まず、普通にGoogle検索してみよっかな。

「尾田栄一郎 15億円寄付」キーワードはこんな感じ。

////////////////////////////////////////////////////////////////////////////////////////////

検索結果

983iiawwp3_5_400.png
 ▲デマと分かった今はこんな感じ。

デマだという事は分かってもデマの発信源は分からない。

ってわけで「Google リアルタイム」

twitterやfacebookのつぶやきを、リアルタイムで表示するツール。

983iiawwp3_6_400.png
 ▲左のサイドバー内

クリックすると、こういう画面↓

983iiawwp3_7_400.png
 ▲今もたくさんの人がつぶやいてるね。

983iiawwp3_7_400.png
 ▲んで、ここに注目。

Google リアルタイムは「現在」だけでなく
「過去」のリアルタイムも確認する事ができる。

では、時系列をさかのぼってみよう。(アイビームの位置を変えるだけ)

983iiawwp3_8_400.png
 ▲14日の15時あたり

この盛り上がりは「デマだからRT拡散中止!」の拡散によるもの(´~`;)

983iiawwp3_9_400.png
 ▲13日の18時あたり

アイビームの前を見ると、チョビチョビと短いバーがある事に気付く。
つまり、その間はフォロワー少ない人のコミュニティでくすぶってて、
アイビームのあたりで、フォロワーが多い人がデマとは知らずに、
RTした結果、急激に拡散してしまったって事だね。

では、もっとさかのぼってみよう。

983iiawwp3_2_400.png
 ▲見つけた、コイツ。一応モザイク。

983iiawwp3_4_400.png
 ▲3人くらいいるが、コイツが一番最初。

2011年03月13日 0時35分18秒
「ワンピース作者の尾田栄一郎さんが15億円寄付」という
デマがtwitter上で発生した瞬間である。

983iiawwp3_10_400.png
 ▲これ以前は地震発生まで、このデマのつぶやきは一切ない。

んで、どんな奴かと、ちょちょっと調べてみると、
尾田デマの拡散で、味をしめたのか…

983iiawwp3_11_400.png
 ▲11日にこんな事つぶやいてる。8人もリツイートしてる(´~`;)

もちろん、12日13日に関西で地震があったという話は聞かない。

「ソースは生放送」って書いてあるから、もしかしたら、
コイツも、誰かのデマを鵜呑みにしちゃっただけなのかもしれない。
にしても、イタズラに人々の不安を煽る情報の流布はダメよね。

さて、

この記事の趣旨はモザイクの“コイツ”をあぶりだし叩け!
という事ではナイ。むしろ、そんなことはしないでね。

そうじゃなくて、

このように特別な技術がない人でも、
Googleリアルタイムでデマの発生源をつきとめる事ができる

という事が、知れ渡れば、

デマ乱発の抑止力になるんじゃないかな

と、思ってさ。ためしに。

TWEETSTREAM

Tweetstream

Twitterアカウントのバックアップを録ってくれるサービス(アカウント3つまで)

バックアップ対象
自分のTweet、DM、Mention、お気に入り、フォローしているメンバ、フォローされているメンバ

無料版
3 Accounts
500 MB of storage
Weekly synching
Send to FTP, Amazon S3
Report card

有料版
Unlimited accounts
5 GB of storage (tweets and photos)
Daily synching
Search
Send to FTP, S3 (Dropbox, Mozy, etc. Coming Soon!)
Scheduled Sending
Versions & Snapshots (Coming Soon!)
Report card

年間24ドルのところ、1月3日までの登録で年間5ドル

Twitterの検索結果をだらだらと流すだけのサービス – 電脳戦士ハラキリ -SE道とは死ぬ事と見つけたり-

時々イベントで使っていたのを手直ししてアップしました。

Twitter live search
http://junk.hagino3000.com/twitterlive/search

スクリーンショット

f:id:hagino_3000:20101122215742p:image

f:id:hagino_3000:20101121201932p:image

用途とか

主にイベント会場でプロジェクタを使って大きく映す用途として作ってあります。なので余計な機能はついてません。新しいポストがあれば上から流れてくるだけ。

勉強会で使わせていただきました。今後も使わせていただくのでメモ+拡散

StatusNet – ビジネスツールの可能性もあるコミュニケーションツール | KGRAND KUMAMOTO JAPAN

ということで、先日からKGRAND BUZZとしてケーグランドでもStatusNetと呼ばれるTwitterクローンを自社サーバーで運用、テストを開始しました。

StatusNetはオープンソースです。クリエイティブコモンズライセンスの元配布され、配布元の表示さえ行えば、誰でも自由にインストールして利用することができます。

Twitterクローンの中でも老兵で、以前はLaconicaと呼ばれていました。Laconicaと呼ばれていたころ一度インストールしてみたのですが、非常に大変でした。現在は、ディレクトリやファイルのパーミッションの設定は必要ですが、ワンクリックでインストールが完了します。

このStatusNetのすばらしい所は、自前のサーバーにインストールしたStatusNetから他のサーバーで稼働するStatusNetをフォロー(StatusNetではsubscribeと読んでいます)できるところです。一般に自前サーバーで稼働させたコミュニティー系サービスは、あくまでもそのサーバー内ユーザーのみとコミュニケーションできますが、StatusNetは、どんどん他のサーバーと繋がって行きます。伝播力が他のTwitterクローンとは比較になりません。

すごい!の一言です。広まれば一気にTwitterを超えるかもしれない能力を持っています。繋がりも自分のサーバーですからコントロールできますし、これならビジネスや組織で使うこともできるでしょう。

Twitterと似ているようで、iPhone用のアプリをそのまま使って更新することも可能です。さらに専用のデスクトップクライアントも配布されています。デスクトップクライアントと言えば、Ubuntuに搭載されているGwibberからもセルフホストしたStatusNetへアクセスすることが可能です。

利用するのに利用し安い環境が既にあるというのも広まる要素の一つです。TwitterもiPhoneアプリが無かったらここまで広まったかどうか判りません。ツイートしたいときできる。これがマイクロブロギングには非常に重要です。

ここでセルフホストしたStatusNetを利用する時のいくつかの注意点を上げておきます。

iPhoneアプリ

Twitter用iPhoneアプリは、APIを設定できる物が利用できるようです。または、ShoutEmでしたら、API設定無しで利用できます。ただし、ホスト名はhttp://は無しで設定します。

2010.9.26:StatusNet公式iPhoneアプリがリリースされました。

デスクトップアプリ

StatusNetが配布しているデスクトップアプリ、StatusNet Desktop バージョン0.9はテストした私の環境ではUbuntuで日本語入力ができませんでした。
また、Gwibberの設定は、ホスト名にhttp://から入力する必要があります。

StatusNetでのフォロー

フォローしたいユーザーのsubscribeボタンをクリックするとProfile Accountを入力する画面が現れます。ここにセルフホストしたドメン名/ユーザー名(例えば、http://example.com/useraaa)のように入れます。

subscribeボタンを押すと、セルフホストしているサーバーにユーザーとしてログインする画面に移りますから、ここでログインし、パスワード確認ボタンをクリックしてください。

PHP snippets to interact with Twitter – CatsWhoCode.com

Twitter is an awesome tool for website owners, and you should definitely integrate it into your website if you want to attract more traffic and new visitors. Today, let’s take a look at some PHP snippets to interact with Twitter.

Written by Jean-Baptiste Jung • Published on November 8th, 2010

Get number of Twitter followers

Have you seen my blog sidebar? I display the number of followers I have in full text. This is actually pretty easy to do. The first thing you need is this function:

1.function get_followers($twitter_id){
2.    $xml=file_get_contents('http://twitter.com/users/show.xml?screen_name='.$twitter_id);
3.    if (preg_match('/followers_count>(.*)</',$xml,$match)!=0) {
4.        $tw['count'] = $match[1];
5.    }
6. 
7.    return $tw['count'];
8.}

Once you have the function, you can call it as shown below:

1.$nb =  get_followers('phpsnippets');
2.echo "PHP Snippets already have ".$nb." followers!";

» Credit: http://www.phpsnippets.info/get-twitters-followers-in-php

Get latest Twitter status

Using PHP and cURL, it is pretty easy to get the status of a specific user. Once you have it, what about displaying it on your blog, like I do in WPRecipes footer?

01.function get_status($twitter_id, $hyperlinks = true) {
02.    $c = curl_init();
03.    curl_setopt($c, CURLOPT_URL, "http://twitter.com/statuses/user_timeline/$twitter_id.xml?count=1");
04.    curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
05.    $src = curl_exec($c);
06.    curl_close($c);
07.    preg_match('/<text>(.*)</text>/', $src, $m);
08.    $status = htmlentities($m[1]);
09.    if( $hyperlinks ) $status = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]", '', $status);
10.    return($status);
11.}

The function is extremely easy to use:

1.echo get_status('catswhocode');

» http://www.phpsnippets.info/get-twitter-status-using-php

Link to update status, without encoding problems

Many websites and blogs show you how to create a link to Twitter that will update your status. But unfortunely, most websites don’t explain what you need to do in order to avoid encoding problems of spaces and special characters.

1.<a href="http://twitter.com?status=@catswhocode Hi Jean, how are you?">Tweet!</a>

So, where’s the change? Pretty simple: Just note that I havent linked to http://www.twitter.com, but to http://twitter.com, without the www.

A working example can be seen on my company website: http://www.webdevcat.com/contact.

Get number of retweets for a specific page

Most bloggers are using the Tweetmeme widget to display the number of retweets of their posts. Did you know that Tweetmeme also has an API you can use to get how many times a specific url has been retweeted?

The following function will get the number of RT’s of the url passed as a parameter:

01.function tweetCount($url) {
02.    $content = file_get_contents("http://api.tweetmeme.com/url_info?url=".$url);
03.    $element = new SimpleXmlElement($content);
04.    $retweets = $element->story->url_count;
05.    if($retweets){
06.        return $retweets;
07.    } else {
08.        return 0;
09.    }
10.}

Using the function is easy, as you can expect:

Note that the Twitter API also provide a way to get the number of retweets. See http://urls.api.twitter.com/1/urls/count.json?url=www.google.com for example.

» http://www.phpsnippets.info/get-how-many-times-a-page-have-been-retweeted-using-php

Testing friendship between two users

If you want to know if a specific user is following you (or someone else) you have to use the Twitter API. This snippet will echo true if the two users specified on lines 18 and 19 are friends. It will return false otherwise.

01./* makes the request */
02.function make_request($url) {
03.    $ch = curl_init();
04.    curl_setopt($ch,CURLOPT_URL,$url);
05.    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
06.    $result = curl_exec($ch);
07.    curl_close($ch);
08.    return $result;
09.}
10. 
11./* gets the match */
12.function get_match($regex,$content) {
13.    preg_match($regex,$content,$matches);
14.    return $matches[1];
15.}
16. 
17./* persons to test */
18.$person1 = 'phpsnippets';
19.$person2 = 'catswhocode';
20. 
21./* send request to twitter */
23.$format = 'xml';
24. 
25./* check */
26.$persons12 = make_request($url.'.'.$format.'?user_a='.$person1.'&user_b='.$person2);
27.$result = get_match('/<friends>(.*)</friends>/isU',$persons12);
28.echo $result; // returns "true" or "false"

» http://www.phpsnippets.info/get-twitter-status-using-php

Shorten urls for Twitter

As you know if you’re a Twitter user, you can’t post messages which are longer than 140 characters. To avoid this problem, you have to use an url shortener. There’s lots of different url shorteners on the internet. TinyUrl.com is one of them, it doesn’t produce the shortest urls but what I really love it is that you don’t need to have an account to use it with PHP.

The following function takes a long url as a parameter and return a shorter url, using the TinyUrl url shortener.

1.function getTinyUrl($url) {
2.    return file_get_contents("http://tinyurl.com/api-create.php?url=".$url);
3.}

» http://www.phpsnippets.info/convert-url-to-tinyurl

Shorten urls using Bit.ly

In the previous snippet of that article, I’ve shown you how you can shorten your urls using TinyUrl.com. This is cool, but I’m pretty sure some of you prefer using the bit.ly service. No problem, you can still use PHP to get your shortened url.

01.function bitly($url) {
02.    $content = file_get_contents("http://api.bit.ly/v3/shorten?login=YOURLOGIN&;apiKey=YOURAPIKEY&longUrl=".$url."&format=xml");
03.    $element = new SimpleXmlElement($content);
04.    $bitly = $element->data->url;
05.    if($bitly){
06.        return $bitly;
07.    } else {
08.        return '0';
09.    }
10.}

To use the function, simply use the following:

» http://woorkup.com/2010/06/06/3-practical-wordpress-code-snippets-you-probably-must-know/

Twitter BOT作るときOAuthのAccess token取得するのがめんどいから簡単に取得できるwebサービスつくった – yayuguのにっき

Twitter BOT作るときOAuthのAccess token取得するのがめんどいから簡単に取得できるwebサービスつくったAdd Star

Twitter BOT作るときOAuthAccess token取得するのがめんどいから簡単に取得できるwebサービスつくりました。

http://getaccesstoken.yayugu.net/

使い方は簡単!!

1. http://twitter.com/apps から適当なアプリケーション名を登録。そのときに

ここらへんをこんな感じで設定しときます。callback URLはダミーでgetaccesstoken.yayugu.net側で指定するのでなんでもいいです。

2. 作りたいBOTアカウントtwitter.comにログイン

3. そしたらGet Access tokenでConsumer key と Consumer Secretを入力すると……

こんなふうにAccess tokenとAcess token secretが表示されます。BOT作るのにOAuthAccess token取得のコードまで書くのは面倒だからね! これで楽チン!!

追記:

ソースコード

http://github.com/yayugu/getAccessToken

で公開してます。Consumer keyを集めるとかそういった悪いことはしてません><

さらに追記:

http://dev.twitter.com で見れるじゃんってブコメをいただきました。確かにOAuthアプリケーションの登録者(=だいたいの場合開発者の本アカウント)のAccess tokenはみれるんですが、だいたいの場合BOTって別アカで運用するとおもうんですよね。アカウント毎にOAuthアプリケーション登録するのもありですけどね。

だからこのwebサービス

OAuthアプリケーションの登録者アカウント ≠ 運用するBOTアカウント

な場合に便利です。

……なんかニッチになってしまったw