Twitter社からTwitter APIへのアクセスをTLS1.2以上に限定するとのお達しがきており、2019年7月29-30日あたりから拙作のWEBサービスツイポーートでもログインおよびツイートの検索などTwitter APIを使用する機能が動作しない問題が発生しました。
Removing support for legacy TLS versions (1.0/1.1) on Twitter – Announcements – Twitter Developers
対応に大変時間がかかってしまいましたが、サーバーリプレイスおよびいくつかの修正対応を行って2019年8月11日17時頃に取り急ぎのサービス復旧を行いました。
修正点や今後の展望も含めてご報告いたします。
ツイポーートをめぐる状況
ツイポーートは2009年10月に初板を公開し、2012年02月にVersion2、2013年04月にVersion3を公開するなど、すでに運営10年に迫る比較的古いTwitter Webサービスです。
ツイポーート カテゴリーの記事を見返すととても懐かしく感じますが、サービス開始当初は自分自身がTwitterでの情報発信や分析に力をいれていたこともあり自分がやりたいことを簡単に実現するためのツールとして作り上げたモチベーションがありましたが、かなり前から私自身がTwitterでの分析などはそれほど力を入れなくなってしまったこともあり、サービス自体は不具合メンテナンスだけの「とりあえず継続」状態を続けておりました。
一方、Twitter APIについては、セキュリティに関する要求が年々厳しくなっており既存のアーキテクチャでは対応しにくくなっていることも感じておりました。もちろん、対応できる範囲ではメンテナンスを続けていこうと思っておりましたが、今回はどうやらサーバー移転も踏まえた対応が迫られており、復旧させるかどうか自体の判断についてもかなり迷いました。
現在、約85000本のレポートが作成されていますが、実は公開状態になっているのはわずか5%ほどであり、ほとんどが解析やバックアップ目的の非公開レポートとなっております。Twitterまとめサービスとしては類似のものがいくつかありますが、CSVに保存できたり、Twitter検索をほとんどそのまま利用できるというものは他になく、キーワードに対する分析の元データとしてや、キャンペーンの抽選のために利用するという利用目的がほとんどになっているようです。
本サービスで得られる広告収入はごく僅かで、ビジネス的な目線でみれば閉鎖不可避という状況ではあったのですが、基本的にはソーシャルメディアを使ったオープンコミュニケーションに寄与したいという私の想いのみでサービス継続をしてきたので、いくつかの制限事項を追加しつつサービス自体は継続することにしました(もちろん可能な限りという条件ですが・・・)
ツイポーートの改修点について
■ サーバーを移転しました
TLS1.2に対応するためには内部のミドルウェアを新しいものにアップデートする必要がありましたが、これまでのサーバーでは更新が難しかったため、別のサーバーに移転を行いました。
■ 常時SSL化しました
サーバー移転に合わせて常時SSL化しました。このあたりはTLS1.2にも間接的に関わりますが、今後APIからのリターンがSSLでないといけないなどの制限もあると見越しての対応です。
httpアクセスはhttpsにリダイレクトされますが、はてブなど一部のURLベースの集計値はリセットされてしまうと想います。
■ Twitter APIライブラリを更新しました
これも長くコアソースを変更していなかったため、古くなっていたTwitter関連ライブラリを最新に変更しました。
(ちなみにPHPのTwitterOAuthを使っています)
■ データベースの最適化や絵文字対応を行いました
膨大なサイズとなっているTweetデータベースの最適化や、文字コードをutf8mb4に変更する対応を行いました。もしかしたら、これまでも絵文字付きのツイートが正常に保存できていなかったかもしれません・・・
■ 古いデータの削除に関する表示
サービス継続のため、過去データを一定の条件で削除することにいたしました。ポリシーについては次項で説明いたします。
古いレポートデータの削除について
今回の改修ポイントの一つは、TLS1.2対応にまつわるセキュリティ要因ではありましたが、今後のサービス継続に関わる部分で最も重要なのはデータの保持期間に関する問題です。
現在、無料でサービス提供をしておりますが、全レポートはそのまま保持し続けており、サーバー容量を圧迫しておりました。特に前述した通り、全体の95%のレポートは非公開でログインしているユーザーのみ見られる状態であり、かつ、CSV・TSVでダウンロードできるにも関わらず永続的に保持しつづけるのは非常にコストがかかりすぎるとの判断し、一定のルールで削除を行うことにいたしました。
★削除されないレポート
・公開されているレポート
・非公開でも最終更新日付が3ヶ月以内のもの
★削除されないがダウンロードだけ許可するレポート
・非公開で最終更新日付が3ヶ月以上〜6ヶ月未満のもの
★削除されるレポート
・非公開で最終更新日付が6ヶ月以上前のもの
要するに、非公開で更新されていないレポートは段階的に削除しますよ。ということです。
最終更新3ヶ月以上になった非公開レポートにはダッシュボードで、黄色で「DL限定」と表示されます。最終更新6ヶ月以上になった非公開レポートにはダッシュボードで、赤色で「削除間近」と表示されます。レポートの削除は毎日1回深夜に行われる予定です。
「DL限定」または「削除間近」となった非公開レポートについてレポートの編集(ツイートの追加や公開・非公開の変更)などはできません。
レポート削除開始までの猶予時間
この削除ポリシー自体の発表が急となってしまったため、CSV・TSVへの保存期間として、実際に古いレポートの削除を開始するための猶予期間を2ヶ月ほど空け、10月10日あたりから削除運用開始とします。
本記事公開(8月11日)時点で、2月10日以前の非公開レポートには「削除間近」と表記されますが、これが削除されるのは10月10日以降とします。それまでに必要な方はCSVダウンロードをするなどバックアップをお願いします。
今後の展望について
基本的には機能的なアップデートは考えておりませんが、今回の旧データ削除のような最適化を実施しながら細くサービスを続けていければと考えております。一部ご相談させていただいたユーザー様より、有料化して高機能化やデータ保持期間の永続化などできないかというお話がありましたが、要望が多い場合は検討したいと想います。
対応遅れてしまったことを改めてお詫びするとともに、今後も生暖かく応援していただければと想います。