Hatena::ブログ(Diary)

あごにます このページをアンテナに追加 RSSフィード

2012-03-14

C言語でTwitterに投稿できるモジュール「Twitter4C」を公開しました

C言語でTwitterに投稿できるモジュール「Twitter4C」を公開しましたを含むブックマーク

前からあったらいいなとは思っていたんだけど、CでHMAC-SHA1ダイジェストの生成とかどうやるの?っていう障壁があって諦めていたのが、ひょんなことからソースコードが手に入ったのでそれを使ってTwitterに投稿できるモジュールを作ってみました。

なんでC?

Web用界隈ならPHPとかRubyデスクトップクライアントならC++とか.NETとかJavaとかで開発して、それにちゃんとしたライブラリがあって(Javaなら、このモジュールの名前の元となった「Twitter4j」とか)、それを使って自前で取得してきたコンシューマキーとシークレットをセットしてポーンと投げれば完成なんだろうけど、マイコンとかの組み込み用途とか、たとえば学校の授業でネットワークプログラミングをCで始めたばっかりの学生とかがちゃらっと使えるようなものが欲しいなと思って、こうして作ってみたわけです。

Cはいろいろ批判されてるというか、オワコンだとか糞だとか言われてるけど、需要がないわけではないと思うのです。はい。

仕様

公開版のソースコードでは、

  • Linuxのコンソールでの使用を想定(ソケット通信の関数がそっち用なので)。Ubuntu11.04で動作確認済み。
  • コンシューマキーをソース中にセットして実行するだけで、リクエストトークンの取得とユーザ認証用のページへの誘導、ツイートが出来るようになる
  • リクエストトークン取得、アクセストークン取得、ツイートの3つのモジュール
  • 通信はSSLを使用(組み込み用途への移植を想定して、OpenSSLのインポートではなく「CyaSSL」を使用)
  • 通信周りのソースは分離しているので、Winsock2用に変更するなどといった改良も簡単にできる(と思う)
  • 日本語のツイートに対応

現状把握している問題点

  • 文字数カウントを実装していないので、バッファオーバーフローするかも?(→ツイート部分の関数を改良すれば対応できる)
  • 配列要素の無駄が多い気がする(→関数化すると関数が終わった時点で開放される?と思ったけど、もう少し効率良くしたい)
  • 組み込み用途を想定しているとか言う割に配列2000とか使っている(4桁配列って動作しなくなった気が…)
  • たまに署名に失敗する
  • エラー処理が不十分かも?

今後の予定

さいごに

これを公開するためにGithubを始めました。

https://github.com/Plemling138/Twitter4C

「Cでもこんなことできるんだぜ!」ってことで、いろんな人に活用してもらって、そしてばんばん改良なりしてもらえればいいなと思っています。

Enjoy!

トラックバック - http://d.hatena.ne.jp/Plemling/20120314/p1
リンク元