2010年11月29日月曜日

TwitterのC#クライアントを考え中

前記事は[TwitterのC#用ライブラリを考え中]

ツイッターのクライアントを作るのって、ツイッターをやってるプログラマの憧れですよね!

有名な日本製のクライアントといえばTweenですね。なんとこれ、オープンソースで開発されているらしいのです。

つまり、すでにあるTweenのソースを使って独自に開発できるのです!

自分で0から作るのは大変。ささ、あなたも早くTweenの開発サイトへ

ちょっとTweenを使ってみて、使いづらいと思ったところを自分で改良しちゃえばいいのです。とっても優れた改良ができれば、その機能をTween本家で採用してくれるかもしれませんよ。そうやってどんどん素晴らしいソフトウェアに仕上げていくのがオープンソースプロジェクトの醍醐味ですからね。

あ、ライセンスには注意が必要ですよ。見つけにくかったのですが、どうやらGPL v3.0みたいです。
GPL系のライセンスはコピーレフト条項を持っているので、元のソフトウェアと同じライセンスで公開しないといけません。
つまり、Tweenのソースを改良して作ったソフトはやっぱりオープンソース(GPL v3.0)で公開しないといけないということです。

さあさあ、ライセンスのことも分かったところで早く開発に参加しちゃいましょう!→Tweenの開発サイトへ





よし、多少の人間は追い払えたかな。

それで、私もオープンソースなツイッタークライアント開発を予定しています。

ソフト名は

綺麗なツイ子



陰湿なツイ子

です。『ツイ子』というのはツイッターのアプリケーション登録のときに適当に付けた名前です。考えるの面倒だからもうこれで行こうかと。

綺麗なツイ子陰湿なツイ子の違いは、ローカルにデータを残すかどうかです。綺麗なツイ子は昔のツイートを見たいときには随時ツイッターにアクセスします。

対して陰湿なツイ子は最初の一回だけアクセスしたらそのデータをローカルに残しておいて、次回からはローカルのデータを参照します。ユーザーが消しちゃったデータまで残しておくわけですから倫理的にアレな面がありますが、昔のタイムラインをそのまま再現できたり、Twilogのように統計解析できたりします。

他人のツイートを勝手に解析したり、消えちゃったユーザーのデータを残しておいたりするのはやっぱりどうかね。でも私が作るアプリで制限したとしても、それができるという事実は変わらないわけですから、むしろそうされる恐れがあることを一般に周知したほうがいいのかな?と。
いやでも、簡単にそれができる道具を提供するというのはやっぱり……というわけで、陰湿なツイ子は一時保留して綺麗なツイ子をサクサク作ろうかなと思います。


最初に言っておく。今までの経験から言って、作り上げる自信はない!

それでもこういう機能が欲しいとかあったら教えてください。





では、ここからは技術的な話です。こっちがメイン?

ツイッターAPIの使い方を解説します。

と言っても、ツイッターのOAuth認証のサンプルを載せるだけなんですけど、正直載せるか迷いました。
だってさ、2日間苦労したことをこれを読んだ人が数時間でできちゃったりするとすごくムカツク。

この記事を読んで理解できたという人は私を褒めよ!崇めよ!フォローせよ!

ツイッターのAPIを利用するには気を付けないといけないことが色々あります。
私はネットワークに関するプログラミングは全然経験が無かったので苦労しました。理解が不十分な面があると思いますが、とりあえずサンプルは動くので公開します。

ツイッターのAPIはOAuth認証が必要なものと、必要無いものがあります。認証が必要無いものについては前記事→[TwitterのC#用ライブラリを考え中]

OAuth認証は次の3ステップで行います。

※事前にアプリケーションを登録し、コンシュマーキーを持っている。
Step1.コンシュマーキーを使ってリクエストトークンを取得
Step2.リクエストトークンを使ってユーザーにアプリの許可をさせる(Verifierを得る)
Step3.Verifierを使ってアクセストークンを取得

事前にアプリケーションを登録しておかないといけません。この登録は後で変更できるのでとりあえず適当にしておいてOKです。

こうして得られたアクセストークンをOAuth認証が必要なツイッターAPIに付加してやれば、APIが使えるようになります。

よく「ツイッターのDMで住所をやり取りするな」と言いますが、このアクセストークンを盗まれた場合を言っているのでしょう。安全のためにアカウントとパスワードをやり取りしないように考えられたOAuth認証が逆に危険になったとは皮肉な話ですね。もちろん、最悪パスワードが漏れることは防いでいます。他のセキュリティを少し緩くする代わりにパスワードだけは守り抜くという感じ?
心配な人は使わないアプリの許可を取り消しておきましょうね。

さて、あとは私のサンプルプログラムと、他のサイトを参考に頑張ってください。

参考にした解説
ツイッター公式の解説(英語)
ヤフーのOAuth認証解説ページ
Pure PerlでのOAuth実装メモ - adiary開発日誌

参考にしたコード
C#でOAuthでTwitter - nojimaの日記
OAuthLib
Twitter oAuth with .NET - Shannon Whitley

以下、私が書いたサンプルです。

長いコードはブログに載せると見にくいですね・・・ダウンロード版

※このサンプルは動作するのですが、変数名などでOAuthの仕様に合っていません。ここに載せていたコードは削除しました。ダウンロード版は残しておきます。
いずれ仕様に沿った形のサンプルを別記事に載せます。(2010/12/02)


C#3.0以降でコンパイルして使ってください。単独で動きます。

なるべく構造化を解いた形にしました。構造化されていると、使うのは簡単なんですが、中身を理解したいときとか、オリジナルで組み直したいときには不便ですからね。私はサンプルはなるべく構造化しないほうが良いとおもいます。


ライセンス? これをそのまま使うとかあり得ないから!w
好きに使ってください。

0 件のコメント:

コメントを投稿