🐦

Twitter API v2.0をラッピングしたDart/Flutterライブラリを開発しました

2022/05/19に公開約4,300字

Dart/Flutter ライブラリ「twitter_api_v2」 の紹介

twitter_api_v2

twitter_api_v2 とは

twitter_api_v2は、Dart VM 上で動作する Twitter API v2.0 をラッピングしたライブラリです。

Dart/Flutter アプリで Twitter API v2.0 の諸機能をとても簡単に使うことができるように設計開発を行いました。

https://github.com/twitter-dart/twitter-api-v2

https://pub.dev/packages/twitter_api_v2

初期ビルドを Pub.dev にアップロードしてまだ数週間程度ですが、既に国内外を問わず様々な方々から反響をいただいております。ありがとうございます。

使い方

この記事はあくまでもライブラリの紹介なので、基本的な使い方のみを記述します。とは言っても、このライブラリは先述したようにとても簡単に扱えるように設計されているため、一度触れていただければ諸機能の使い方は理解していただけると思います。

前提条件

  • 少なくとも Twitter Developer で発行された App-Only のベアラートークン、または Consumer KeyConsumer Secret が必要です。
  • App-Only のベアラートークンではユーザー権限が必要な操作は行えません。
  • OAuth 1.0a 方式での認証もサポートしていますが、一部のエンドポイントでは OAuth 1.0a 方式でのアクセスは拒否されます。

ライブラリのインストール

DartFlutter でお馴染みの以下のコマンドでライブラリを pubspec.yaml に追加します。

Dart:

 dart pub add twitter_api_v2
 dart pub get

Flutter:

 flutter pub add twitter_api_v2
 flutter pub get

インポート

twitter_api_v2 を使うためのインポートは以下の一行だけで大丈夫です。

import 'package:twitter_api_v2/twitter_api_v2.dart';

検索したツイートにいいねを付ける

import 'package:twitter_api_v2/twitter_api_v2.dart' as v2;

void main() async {
  final twitter = v2.TwitterApi(
    // ベアラートークンの指定は必須です。
    // App-OnlyまたはOAuth 2.0 PKCEで取得したトークンを指定してください。
    bearerToken: 'YOUR_TOKEN_HERE',

    // OAuth 1.0a方式での認証もオプションとして提供しています。
    // しかし、この方式では一部のエンドポイントでアクセスを拒否されるため注意してください。
    oauthTokens: v2.OAuthTokens(
      consumerKey: 'YOUR_CONSUMER_KEY_HERE',
      consumerSecret: 'YOUR_CONSUMER_SECRET_HERE',
      accessToken: 'YOUR_ACCESS_TOKEN_HERE',
      accessTokenSecret: 'YOUR_ACCESS_TOKEN_SECRET_HERE',
    ),
  );

  try {
    final me = await twitter.usersService.lookupMe();
    // 検索クエリにはハッシュタグも使用できます。
    final tweets = await twitter.tweetsService.searchRecent(query: '#ElonMusk');

    // 検索したツイートにいいねを付けます。
    final response = await twitter.tweetsService.createLike(
      userId: me.data.id,
      tweetId: tweets.data.first.id,
    );

    print(response);
  } on v2.TwitterException catch (e) {
    // 例外オブジェクトには例外発生時のHTTPレスポンスが格納されています。
    print(e.response.headers);
    print(e.response.body);
  }
}

Awesome Modern Twitter API に選ばれました

Twitter 社の Developer Advocate である Andy Piper が私が開発したtwitter_api_v2を Dart/Flutter コミュニティにおける Awesome Modern Twitter API として選んでくれました。

Dart/Flutter コミュニティとしては現時点(2022/05/19)で私が作成した twitter_api_v2 以外で選択されたライブラリは存在しないため、大変な名誉だと考えています。

https://github.com/andypiper/awesome-modern-twitter-api#dart--flutter

また、 Andy Piper は上記以外にも様々な形で私が作成した twitter_api_v2 を世界に普及させるためのサポートをしてくれており、ここまでこのライブラリが世界に拡散され認知されることになったのは間違いなく彼のおかげです。

https://twitter.com/andypiper/status/1521443306596671488

https://twitter.com/andypiper/status/1524522220294479872

Thank you Andy!

Google の 開発者からメッセージをいただきました

Dart/Flutter 開発の総本山といえば Google ですが、その Dart/Flutter 開発のコアメンバーである Tim Sneath からメッセージをいただきました。

https://twitter.com/timsneath/status/1526812158352162816

Google OSS にプルリクエストを送った際に何度か彼にレビューをしてもらった経験はあるのですが、ここまで直接的なコンタクトは初めてなので衝撃を受けました。正直なところ、通知を見たときには震えました。

Thank you Tim!

貢献者の募集

twitter_api_v2オープンソースですのでどのような方でも開発に貢献することができます。開発リポジトリの公用語は英語にしていますが、日本人の方々も大歓迎ですのでお気軽に IssuePull Request を作成してください。

また、このライブラリが役に立った場合にGitHub の開発リポジトリスターを付けることや、Pub.devいいねを付けることもよろしくお願いします。これは twitter_api_v2 の開発コミュニティを活性化するためにとても大きな意味があります。

もしなにか疑問がある場合は開発リポジトリのディスカッションにでもスレッドを立てていただければと思います。

https://github.com/twitter-dart/twitter-api-v2

https://pub.dev/packages/twitter_api_v2

また別件ですが、私は Dart 言語でジョブスケジューリングを可能にするフレームワーク Batch.dart を開発しています。Batch.dart に関しては過去に以下の記事を書きましたので参考にしてください。

https://zenn.dev/kato_shinya/articles/what-is-batch-dart

スポンサーの募集

オープンソース開発をサポートしてくださるスポンサーを募集しています。少額($1)からの寄付が可能ですので、以下のリンクからご支援ください!

https://github.com/sponsors/myconsciousness

また、この記事にバッジを贈っていただくことでも支援は可能です。

GitHubで編集を提案

Discussion

ログインするとコメントできます