12月 02, 2017

マストドンのフォロー状態可視化ツール「フォローリンク」

Mastodon 2 Advent Calendar 2017の2日目です。
昨日はナツキさんのマストポータルについてでした。

トゥートでの発表はしていたのですが、自分のブログでは書いていなかったので、改めて紹介します。
マストドンでのフォロー・被フォロー状態を可視化するツール「フォローリンク」を作りました。



昔、mixiGraphという友達状態を表示するソフトが有り、あれはWindowsやMac上で動作するソフトでしたが、こちらはブラウザ上で動作します。
ただし、ひたすらに重たいです。
画面上に表示されるアカウントが1000アカウントを越えるぐらいから重たくなってくるかと思います。

表示するアカウントの関係として
  • 相互フォローだけ見る
  • フォローだけ見る
  • 被フォローだけ見る
  • フォローだけ見る(相互フォローを除く)
  • 被フォローだけ見る (相互フォローを除く)
  • フォロー・被フォローを見る
が有りますので、フォローしていない被フォローの中から、新しくフォローしてみたい人を探すという使い方も可能です。


内部的な話もしておきましょう。
フォローリンクの表示処理自体はJavaScriptでSVGを操作して行っています。D3.jsのForceグラフ機能を使って座標計算を行っています。この処理がCPUを使い切って重たいのです。
計算処理部分だけをWeb Workerとして切り出し、ブラウザのUIスレッドと分けることでフリーズしたような重さを避けることができるのですが・・・。フォローリンクでは、随時表示アカウントの追加などが行われます。
その他ドラッグしてアカウントの表示場所を移動させたり、何かと計算中でも外部からの変更が行われます。
このため、計算用スレッドとのやり取りが多くなり、現状の処理をちょろっと書き換えただけでWeb Workerに切り出すのは難しそうだという考えになりました。
たぶん、Web Workerで計算部分だけ切り出すなら、WebGLとかでGPUに計算させた方がもっと効率よさそうだな、とか。

そしてサーバ側。フォロー情報については、フォローリンクのサーバでキャッシュをしています。これは複数の人が同じアカウントの情報を見ようとしたときに、個別にマストドンインスタンスへフォロー情報を取りに行くとインスタンス側へ負荷をかけてしまうため、その対策としてキャッシュを持っています。
マストドンのフォローページをjson形式で要求することで、ブラウザに表示するHTML形式より少ない転送量で、またプログラムで処理しやすい形式として取得することができます。フォロー情報は少しずつ変わっていくと思いますので、24時間キャッシュが残るようにしています。
このjson形式での取得がGNU SocialやPleromaが現在対応していないため、マストドンだけの対応となっています。

他にも便利そうな機能があれば追加したいと思っていますので、なにか要望があれば @osapon@mstdn.nere9.help まで連絡ください!

追伸1 ITmediaにも記事にしていただきました。
マストドンのフォロー状態を可視化する「フォローリンク」

追伸2 他のマストドンアドベントカレンダーも楽しみですね。
Mastodon Advent Calendar 2017(Adventar)
Mastodon 2 Advent Calendar 2017(これ)
Mastodon Advent Calendar 2017(Qiita)
mstdn.jp Advent Calendar 2017
knzk.me Advent Calendar 2017
nico.friends Advent Calendar 2017
ますとどんちほーりれーマンガ Advent Calendar 2017

11月 05, 2017

ぶろるっくがサスペンドされています

タイトル通り、現在拙作「ぶろるっく」は10月31日からTwitter社によってサスペンドされています。

Twitter社からのメールには、Developer Policy: Section I.C.1.d-eに違反していると書かれていました。

セクションIのCの1のdとeには以下のように書かれています。
  • C. Respect Users’ Control and Privacy
    • 1.Get the user’s express consent before you do any of the following:
      • d.Store non-public Content such as Direct Messages or other private or confidential information.
      • e.Share or publish protected Content, private or confidential information.

非公開情報(この場合ブロック情報を指すのでしょう)を収集するときに、ユーザーに同意を得よということなのですが、それはログインボタンの下に太字で書かれていました。
ひとまず説明の一行目にも追加して、問い合わせを送り、11月1日に以下のような再審査する旨のメールが来ました

これが届くと、すぐに回復するらしいのですが、時間が掛かっているようです。
わたしの方ではどうすることも出来ないので、Twitter社の対応待ちです。

よく分からないのは、他のアプリも同じ理由で止められているのですが、問題のないアプリもあります。
テスト用アプリで、どこにも公開していないものや、自分がKrileにセットして使う用のものまで止められているので、基準が分かりません。自分用のアプリはどうやってポリシーを明示すれば良いのでしょうか。
この状態で新しいアプリを作成するのは危険すぎるので、Krile用の新しいアプリは作らずに、Twitterを見なくなってしまいました。
スマホの通知を見るのは気が付いたときだけなので、なにか連絡があればマストドン( https://mstdn.nere9.help/@osapon )の方にいただけると助かります。

またスパムアプリチェックのアプリだけお目こぼしをいただいている様ですが、スパムツイートをチェックするアプリが止められているので、システムとしては効果がありません。

ぶろるっくのトークンが100万を越えそうだったので、問い合わせをしたのですが、完全にやぶ蛇という感じです。
Twitter社は大阪にもオフィスがあるようですが、お伺いした方が良いんでしょうか。


12月12日追記
新しいアプリとして登録し直しました。
過去の登録情報は削除しています。

10月 01, 2017

ふぁぼるっくの収集を停止しました

2009年7月から8年続けてきたふぁぼるっくですが、この度データの収集を停止しました。
公開されているサイトも、そのうち停止します。

公開当初は、まだふぁぼったーが有って、まだfavstarは無い状態でした。
ふぁぼったーの収集状況が完璧ではなかったのを見つけて作り始め、自分自身が面白いと感じるツイートを見つけるために開発を続けてきました。

ふぁぼ爆撃などの文化が生まれたため、アカウント毎にふぁぼの重み付けなどを行い、「あまりふぁぼらない人のふぁぼは貴重」という評価からスコアを算出したりしていました。

複数のサーバを運用し、収集したデータを一つのデータベースへ集め、色々と新技術を試してみたりする実験的なプロジェクトとしても役立ちました。
個人的にこれだけの大規模データを処理したことがなかったので、大変勉強になりました。

多くの方に支持をいただき、一時期はたくさんの方に見ていただけたのですが、設備投資が追いつかないままに競合が登場し、すっかり注目を集められないプロジェクトとなってしまいました。
今後もデータが増え続ける中で、運用にかかるコストが大きくなりすぎてしまい、 趣味の延長として続けるには辛くなってきたので、そろそろ終わりだなと決断した次第です。

つらみポイント

  • 公開当初、Twitter API勉強会@大阪で発表枠の申し込みに遅れ、知名度アップのスタートダッシュに失敗した。
  • クライアント作者へふぁぼるっくの宣伝をしなかったため、ふぁぼったーを開く機能を持っていたクライアントは軒並みfavstarに対応した。いやらしいかなと思ってやらなかったんだけど、もっと出て行かないと存在を示せない。
  • 自宅サーバから始まり、VPSへ移行し、AWSへ移り、再び自宅サーバへ戻ってきたが、データ取得部分だけはAWSに残していて費用が辛い。しかし現状が一番マシ。
  • AWS時代はサーバ代・通信量だけで年間80万円掛かっていた。スポットインスタンスとかも活用していたんだけど。それとは別に自宅サーバも別に運用。全データをインターネット側に置く費用は用意できなかった。
  • 広告を貼っているが年間5000円も収益がない。広告が非表示・別インデックスで表示が高速化される有料会員制度を作ってみたりしたが、契約はゼロだった。お試しみたいな宣伝が必要だったと思う。
  • 現在は2TBのSSDを5台でRAID5を構成しているが、寿命がどんどん削れる。2年は持たなさそう。
  • データベースはPostgreSQLで運用しているが、トランザクションID周回によるバキュームが常に動き続けている状態。そのうち間に合わなくなるのでは。データベースインスタンスそのものを水平分割するべきなのだろうけど、同じスペックのサーバを揃える費用が…。
  • スコア計算を導入したが、Twitterがインフラとして広がるにつれて計算量が爆発的に増えてしまい、当初は10分で終わっていた毎時処理が最終的には2週間以上も掛かるようになってしまった。Xeonの10コア20スレッド、メモリ64MBのサーバが常にロードアベレージ60以上。ぶろるっくも同じデータベースサーバで管理しているので、負荷に引きずられる。
  • 自分がマストドン( @osapon@mstdn.nere9.help )へ移行してしまい、Twitterの面白い話題を追いかけることが無くなった。面白い話題は大体RTで回ってくるのと、ふぁぼるっく側でスコア計算をやめてしまったため、自分自身がふぁぼるっくを見なくなってしまった。
  • 新しいこともしてみたくなる中で、ストレージの再設計とそれに伴う作り直しをするモチベーションが沸かなかった。
  • ふぁぼがいいねに変更されて、名前の由来が分からなくなった。(一番つらい)

収集したデータ

アカウント数54,906,240
ツイート数5,878,570,230
ふぁぼ数35,238,885,993
RT数10,629,973,759
データベースサイズ4.42TB

アプリケーション連携をしてくれた皆さん、見に来てくれた皆さん、ありがとうございました。

9月 28, 2017

スパムツイートをしているアプリの広告について調べてみた(その4・自動フォロー)

Twitterで猛威を振るっているスパムアプリですが、どういう広告をしているのか調べてみました。第4弾です。

スパムアプリに書き込み権限を渡すことで、勝手にツイートされたりフォローが行われたりします。
今回は勝手にフォローしてしまうアカウントについてまとめてみました。

これらのアカウントは、普通の人間を装っていますが、そのうち広告ツイートなどを行うと思われます。
フォロワーが居ることでブロックによる凍結から回避する狙いも有るかもしれません。
他にアカウントを見ていると、フォロー販売の材料にもされているようです。

以下のようなアカウントがあります。
リンク先はユーザーIDで指定してあるので、スクリーンネームが変わっている場合が有るかもしれませんが、同じアカウントです。
自動でスパムアプリにだけ感染するアカウントを作って調査をしているため、間違いはないです。

注意が必要なアカウント

ユーザーID:14733825 @120
ユーザーID:2156597922 @jp100i
ユーザーID:3167516418 @uwasanosa_twi
ユーザーID:3502212972 @gj495t2
ユーザーID:916250641097355266 @nagisa969001
ユーザーID:921205038508269569 @arisaend
ユーザーID:1031791578023526406 @wannnnpi_su
ユーザーID:1032989500895506432 @chun_chunzZ
ユーザーID:1032457054483492865 @iyashinomovie
ユーザーID:1032994542566264832 @YYutinik
ユーザーID:1033159225311019010 @kawah5chan
ユーザーID:1033163726587748352 @takkuHGK
ユーザーID:1033166605394501632 @kaminohima
ユーザーID:1209654742508421120 @lupinboat

凍結されました。通報してくれた方ありがとう

ユーザーID:3302232746 @twispotlight
ユーザーID:698044217357049856 @twijapa
ユーザーID:840157651161948161 @sayumi_jyi_ise
ユーザーID:840524552966828032
ユーザーID:903145563897479168
ユーザーID:903200178110210048
ユーザーID:903488880896163841
ユーザーID:904306316948025344
ユーザーID:904310023949451266
ユーザーID:905672172131074048
ユーザーID:905681444764135424
ユーザーID:905713897868365824
ユーザーID:906407496721432576
ユーザーID:906436615588913152
ユーザーID:906452834647908353
ユーザーID:906467391818817537
ユーザーID:912261008818806784
ユーザーID:912918604169056256
ユーザーID:912956841491021824
ユーザーID:912967285538566144
ユーザーID:913989707498905600
ユーザーID:914004201805455360
ユーザーID:914693585756348416
ユーザーID:914694969935355905
ユーザーID:917949702074646528
ユーザーID:917957673349533703
ユーザーID:918345908693057536
ユーザーID:918706129068212226
(新しいアカウントが見つかれば更新します)
間違ってもフォローなどしないように、ご注意ください。
ブロックしておいても、ブロックを解除されてフォローさせられている場合があります。
TLに見覚えのないアカウントの投稿が流れてきたら、注意してください。
引用RTをするアカウントにも注意してください。

8月 05, 2017

builderscon tokyo 2017へ行ってきました #builderscon

タイトル通り、builderscon tokyo 2017へ行きました。
カンファレンスのために東京まで来たのは、YAPC::Asia Tokyo 2015以来です。
buildersconという名前になったことで、PHPerとしてアウェイ感がぐっと下がりましたね。

ということで、前夜祭から参加してきたので、聞いた講演の感想などを。

前夜祭

  • オンプレミスデータセンター撤退!

    口外禁止ということで、感想としては「面白い話でした。」
  • データストア撤退の歴史

    口外禁止と(以下略)「ためになる話が大量にあった。」
  • PaaS完全撤退の歴史

    口外(以下略)「感動的な話だった。」
  • ブロックストレージとの戦い、そして撤退

    口(以下略)「あのときの裏話、漏れ伝わっていたけどさらに詳しく知れた。」

「愚者は経験に学び、賢者は歴史に学ぶ。」という言葉がありますが、他人の不幸は蜜の味失敗話というか、これがだめだったという話は、経験と歴史を同時に知ることができ、とても有用なのではないかと思うのです。失敗知識データベースというものができるぐらいですから。人間が進歩してきた上で、先人の知識というものは偉大だなと改めて感じた前夜祭でした。

1日目

  • DeepLearningによるアイドル顔識別を支える技術

    教師役を自分がやることで、自分がその分野に詳しくなってしまい、できた判定機を使う機会がなくなってしまう問題って、どうやって解決したらいいのでしょうね。多分みんなが教師として参加できる分野だと違ってくるのでしょうか。
  • ランチセッション A 株式会社VOYAGE GROUP

    fluctとか広告システム周りの話かなと思っていたのですが、ポッドキャストの公開収録でした。kauliは使っていたのですが、fluctになってから離れてしまい、技術ブログなどを追いかけていなかったので、またいろいろ見てみようと思います。
  • ランチセッションB Momentum株式会社

    こちらもアドテクの会社ということで、やばいサイトに広告を出さない仕組みの話が興味深かったです。やばいサイトにこの会社の広告が出てしまっているのは正常な動作ということで、これはこれで上手い広告になっているなと感心しました。
  • ブラウザ拡張のクロスブラウザ対応についてどう向き合っているか

    わたしも古いXPCOMを使ったアドオンを公開しているのですが、いよいよ使えなくなるぞということで、最近WebExtension周りを調べていたので、聞きに行ってみました。
    またTumbfixやHTTP2インジケーターなど、古いアドオンのおかげでマルチプロセスが使えないため、何か手を出せるかなと考えていたのですが、どう見ても辛みのある話しか聞けなくて、本当につらさがよく伝わってくる話でした。
  • Anatomy of DDoS

    CloudflareのDDoS攻撃に対する話。攻撃手法については、なんとなくで知っていた程度でしたが、詳しい原理が聞けてよかったです。確かにこれは簡単には防げませんね。拙作「ぶろるっく」も時々DDoS攻撃を受けていたのですが、Cloudflareを挟むようになってからは問題が出ていません。とても助かっています。
  • RDBアンチパターン リファクタリング

    過去にアンチパターンの話を聞いたことがあるのですが、アップデートというか、少しPostgreSQLから離れた感じの話になり、データベースを維持していくための話になりました。
    途中まで話を聞いている段階では、拙作「ふぁぼるっく」のデータベースももう一回ぐらい整理しようかなと思ったのですが、トランザクション周回によるバキュームが常に走っているような状況なので、帰宅途中にちょっと難しいなと思い直したりしました。新しい成果物から頑張るぞ。

2日目

  • 知られざる世界 〜WEB以外のPHP〜

    uzullaさんの軽快トークで改めてPHPの潜在能力を再発見しました。
    最近というか、先月末ついにわたしの管理下からPHP5.3のサーバ全廃され、よしPHPやっていくぞという感じになっているので、頑張ってPHP7に向かっていくぞと心持ちを新たにすることができました。
  • Ionic 3+ではじめる次世代アプリ開発(HTMLでiPhoneアプリをつくろう!)

    一つ前のセッションで、PHPでもアプリ開発ができるという話を聞いた後で、真面目な!?アプリ開発の話を聞きました。
    今後、やはりアプリは避けて通れない道だよなぁ、でもネイティブ技術を覚えるのは辛すぎるしというところで、Progressive Web Appsの概要と、それを上手く包括できるフレームワークを知ることができました。うまい使いどころを見つけて是非活用していきたいと感じました。
  • ランチセッション【PR】エンジニアがkintoneを使うべき3つの理由 サイボウズ株式会社

    名前だけは聞いたことがあるkintoneについての解説でした。フリーランスになってから、なかなか大規模な管理ツールに触れる機会がなく、サイボウズ?ああ、あのスケジュール管理ツール作ってる会社ねみたいな認識だったのですが、認識がアップデートされました。
  • ランチセッション 【PR】検索サービス開発が絶対におもしろいと思う理由 Supership株式会社

    検索サービスというと、Yahoo!JAPANもエンジン切り替えちゃったし、もう国内で残っているのってgooぐらいじゃないのという認識だったのですが、まだまだ頑張っている会社があるんだなと知ることができました。
  • OSS の引き継ぎ方

    せっかく見つけた使えそうなライブラリがメンテナンスされてなさそうで、あとちょっと気に入らないところを直したら使えそうなんだけど、何かしら問題が出てきたときに手を入れていくのが面倒だなと思って、結局採用を見送ったということが何度かありました。作者が放置しているぐらいですからメンテナンスの手間が大変そうという思いが強くて、他人のコードを引き継ぐというのは、やはり強い「やっていき」の心が大事だなと感じました。
  • Factory Class

    ラノベ風タイトルで表現すれば「普通のプログラマーがハードウェアの作成に手を出した件について」でしょうか。わたしもkickstarterでZNAPSに出資をして現物を受け取れておらず、制作者からの更新で工場とのやりとりが大変なんだろうなとは感じていたのですが、ハードウェアの素人がkickstarterで支援を受けてハードウェアを大量生産するまでの苦労話を聞くことができました。具体的な注意点や、注目すべき点がまとめられていて、何か機会があればこの知識がとても役に立ちそうだと感じました。
  • The Evolution of PHP at Slack HQ

    slackがどうしてPHPを選んだのかという話が聞けました。創業者の意見ってやはり大きいですよね。PHPを使っているという話は聞いていたのですが、いつの間にかHHVMになっているとは知りませんでした。HHVMの勉強会にも2回ほど参加したのですが、PHP7が正統みたいな感じで進んでいく中で、HHVMの立ち位置は正直微妙だなと思って(当時CentOSでのビルドもできず)あまり深くは追いかけなくなったのですが、Facebookはまだまだメンテナンスをやっていくということで、もう少しアンテナを広げてみてもいいかなと感じました。


わたしがベストトークとして投票したのは以下の3本でした。
・ブラウザ拡張のクロスブラウザ対応についてどう向き合っているか
・知られざる世界 〜WEB以外のPHP〜
・Ionic 3+ではじめる次世代アプリ開発(HTMLでiPhoneアプリをつくろう!)


builderscon全体の感想として、「やっていく気持ち」は大事だなと、改めて思い直しました。
日々の作業に追われてしまい、もちろんそれらの作業も継続することや一つずつ片付けていくことが大事なのですが、そうした作業をしているうちに新しいことにチャレンジする気持ちが失われていく気がします。
buildersconのテーマでもある「知らなかった、を聞く」そしてそれに刺激を受けるというのは、マンネリ化しがちな生活に波紋を作り、自分の中の新しい波に変えていく一滴になるのではないか、と思うのです。
この気持ちを大切にして、改めてやっていくぞ!

7月 25, 2017

スパムアプリの導入URLを真っ先に貼った手動アカウント

短縮URL提供業者のご協力により、スパムアプリの導入へ繋がるリンクを大量に停止していただけました。
そのため、最近はスパムアプリ運営者は自前で短縮URLを運用し始めたようです。

bitly.main.jp
shindameker.lovepop.jp
hccve.kilo.jp
carry.kilo.jp
dereteyou2.mond.jp

あたりがそれです。
このドメインを検索してみると、若い短縮URLしか存在せず、新興のサービスであることが分かります。
またトップページには登録画面のようなものは存在せず、Twitter上に存在するアドレスや、短縮URLの「/1」から順にアドレスを開いていくと、スパムアプリへのリンクしか存在しないことが分かります。

スパム専用短縮URLを検索していて、こんなアカウントを見つけました。
(ツイートのリンク先には飛ばないように注意してください。)

ユーザーID:888618364343525376 投稿時スクリーンネーム:mormentyoung45
問題のツイートのステータスページ
魚拓
スクリーンショット


このようにTwitter Web Clientからツイートしています。ほかにもワンピースキャラ診断のアドレスもTwitter Web Clientでツイートしていました。
完全に「クロ」です。

スパムツイートをしているアプリの広告について調べてみた(その3・引用RT)

Twitterで猛威を振るっているスパムアプリですが、どういう広告をしているのか調べてみました。第3弾です。

スパムアプリが流す広告の中には、他の広告用アカウントでツイートしたものを引用RTの形で紹介するものがあります。

なぜかいくつかのアカウントは、わたしを先行ブロックしています。何か都合が悪いんでしょうかね。

以下のようなアカウントがあります。
リンク先はユーザーIDで指定してあるので、スクリーンネームが変わっている場合が有るかもしれませんが、確実に前科のあるアカウントです。

注意が必要なアカウント

ユーザーID:2156597922 @jp100i
ユーザーID:2517580981 @Og6Zv
ユーザーID:2880323089 @udon35729
ユーザーID:2918894336 @otkumamamn
ユーザーID:2936556006 @omosiro5gda
ユーザーID:3163973185 @Rd94b
ユーザーID:3591506532 @akiito06
ユーザーID:3726409753 @yagt4y
ユーザーID:4832790826 @twisoku1
ユーザーID:4896329119 @yaruohai
ユーザーID:4896329119 @nui_sira60
ユーザーID:697991353070845952 @tokge14
ユーザーID:704316849366786048 @app379J
ユーザーID:705359612145332226 @toru__9
ユーザーID:705758159541923840 @____yuki02
ユーザーID:973726894158790656 @Waraitainaityu
ユーザーID:1184831261551943681 @nidopdx
ユーザーID:1209608423991468033 @shafuu03
ユーザーID:1209654742508421120 @lupinboat
ユーザーID:1210569264186265600 @Fashionjp4
ユーザーID:1212587547173351424 @pe_en_
ユーザーID:1276069978433708032 @tyunndesuu6
ユーザーID:1279996010068996098 @tekubikarai15
ユーザーID:1317779536092614656 @krs_vx

以下は凍結されました。通報してくれた方ありがとう

ユーザーID:1937135491 @Mecutelo
ユーザーID:3302257819
ユーザーID:4752444012 @kentjp8
ユーザーID:4892869524 @hazimeiinn943
ユーザーID:4895437416
ユーザーID:698040461076746240 @bzsh_
ユーザーID:703086049950478336 @LovJapn
ユーザーID:703086596606693376 @twhitore84
ユーザーID:703087970132176896 @Toretoreso20
ユーザーID:704316209458577409
ユーザーID:704317478604701696 @ririRingh
ユーザーID:704317997511380992
ユーザーID:704267257182965761
ユーザーID:704267899309920256
ユーザーID:704268513611948032
ユーザーID:871337646274039809
ユーザーID:970540131282227200 @Ren10ss
ユーザーID:1210545510374768640 @girlstalk2020
ユーザーID:1212584811132383232 @53x_o

(新しいアカウントが見つかれば更新します)
間違ってもフォローなどしないように、ご注意ください。
ブロックしておくのが確実かもしれません。
自動フォローするアカウントにも注意してください。

7月 02, 2017

スパムツイートをしているアプリの広告について調べてみた(その2・漫画アプリ)

Twitterで猛威を振るっているスパムアプリですが、どういう広告をしているのか調べてみました。第2弾です。

これはまた分かりやすい広告が流れてきました。
フリーブックスや漫画村を使うような人達に向けて、双葉社のアプリを紹介するツイートです。
BRったーがツイートしていましたが、検索キーワードだけを提供していて、リンクなどは有りません。これでは広告効果が計れませんね。
ツイートしている側はどういう利点があるのでしょうか。
スパムアプリに許可を出している人数で値段が決まるのでしょうか?
それとも、スパムアプリ運営者と、このアプリの運営者が同じなのでしょうか?(8月30日 漫画アプリ運営者と連絡が取れたため削除)
この広告で紹介されているアプリは、アイコンや画像を勝手に使われたコピーアプリなのか、または双葉社が公式に公開しているアプリか、どちらの事を紹介しているのでしょうか。
コピーアプリなら双葉社にはきちんと対応していただきたいですし、公式アプリの広告なら、どういう経緯でこういう広告が流れているのか、説明して欲しいですね。(8月30日 漫画アプリ運営者と連絡が取れたため削除)
双葉社経由で、このアプリの運営元とコンタクトを取り事情を伺いましたが、原因は分からないとのことでした。
スパムアプリからツイートされたという情報や、スパムアプリの作者情報はTwitter社に残っているので、できればスパムアプリ制作者に対して対応を取って頂きたいところですが、マイナスの効果をプラスマイナスゼロにするだけで、効果が少ないので難しいところです。
個人的には、企業からの対応によって悪質なスパムアプリが一掃されるきっかけとなれば、とても評価が上がることだと思っています。

「アプデ入ってからマジでフリーブックス」の検索結果

7月24日追記 双葉社のサイトには本に関する問合せ窓口の紹介は有るものの、このような総合的な問合せ窓口が存在せず、双葉社の営業用アカウントが活発に活動していたのでこちらに問合せを投げてみました。 7月2日から14日にかけて何度か問いかけをしましたが、他人のリプライ等には反応があるものの、当方のリプライには反応がいただけませんでした。
また、この問いかけの後から、該当のアプリを宣伝するツイートが止まっていることを付け加えておきます。

8月12日追記 双葉社の方から問い合わせ先の返答をいただけたので、そちらへ問い合わせを送信しました。

8月29日追記 双葉社の方から教えて頂いた連絡先から返答がないため、再度別のメールアドレスから問い合わせを送信しました。

8月30日追記 マンガリーフ運営元から返答をいただけたため、一部本文を修正しました。

5月 18, 2017

スパムアプリの注意点

Twitterで猛威を振るっているスパムアプリですが、注意喚起ページに余り長々と書くと、どうやらそれだけで拒否反応が出るようで、アプリ解除を面倒に感じて放置し、新しいアカウントを作る人が多々居るようです。

またいくつかの媒体が「○○というツイートに注意」と注意を呼びかける記事を出してくれていますが、少し書き足りない部分があります。
そこで、もう少し詳しい注意点をこちらにもまとめておきます。

まず大量にある複数のスパムアプリは、「同一の人物(団体)」 が運営しています。
これらのアプリは、お互いを紹介しあっています。
そのため、どれか一つのツイート内容に注意するというのは得策ではありません。
一つの内容に注意すると、別の内容に騙されます。

ではどうやって注意すれば良いのか。
これらのアプリがツイートする宣伝リンクをクリックすると、ある特徴が有ります。
アプリの紹介ページなどがなく、いきなりアプリ認証の画面が開くのです。
中には、「もう一度リロードして」と短い文章を表示するアプリなどもあります。
目立つ特徴としては、アプリがどういうものか説明するページが無いということです。


ツイート権限を要求するアプリが悪者だ!という声も見かけましたが、ツイートを要求する=すぐに悪者というわけではありません。そのアプリがどういう動作のためにツイート権限を要求しているか確認しましょう。
また、おかしなツイートを見かけたら、アプリ名表示に対応しているクライアントを使ってみるのも良いかもしれません。(誰かまとめて欲しい)

特徴を理解して、アプリ認証の画面が出てきたら注意しましょう。

P.S.同一人物(団体)が運営と書きましたが、注意が必要なアプリを注意深く観察していると、お互いに紹介をしあわないアプリがあります。現在三グループほどの運営者がいるようです。

スパムツイートをしているアプリの広告について調べてみた(その1・株式会社ビケンコ)

Twitterで猛威を振るっているスパムアプリですが、どういう広告をしているのか調べてみました。
いくつかあるので、気が向いたときに順番に紹介していこうと思います。

アフィリエイトなどが多いので、実際に営業を展開されている企業さんは、こういう実態に気が付かないまま自社の評判を落としてしまっている可能性があります。
アフィリエイトの支払いを停止すれば、こういう悪質な方法をする旨みが無くなりますし、企業としてもよい評価になるのではないでしょうか。

株式会社ビケンコ HappyMagic
よく見かけるツイートが「痩せた」というツイート。
「ブロックされているIDを表示ったー」
「BRったー」
「ブロIDわかるったー.」
などがツイートしていますが、スパムアプリ群は3グループほど確認しているため、数百のアプリが同様のツイートをしていると思われます。

ここでツイートされているリンク bit.ly/2km648V は、以下のように a-kirei.com/beauty/440/ へ繋がっています。
a-kirei.com は美容関係のブログのようですが、基本的にはほとんどの記事が何かの製品を紹介するようになっています。ただ気になるのは記事には購入ページへのボタン画像を付けているのですが、リンクが張られていないものがかなり多いです。
リンク先の a-kirei.com/beauty/440/のページは、ツイート通り痩せる商品の紹介となっています。

この記事にある申し込みページへのボタンは、 bikenko-cosme.jp/1754 へのリンクとなっていて、クリックすると bikenko-cosme.jp/shopping/lp.php?p=happym_white&adcd=cadopb1iypt へ飛びます。
このアドレスで、アフィリエイターを識別しているのでしょう。

そうなると、a-kirei.comの運営者がスパムアプリ運営者に対して広告を依頼したか、a-kirei.comの運営者とスパムアプリ運営者が同一である可能性があります。

重ねて申し上げますが、株式会社ビケンコがa-kirei.comの運営者に対してこのような広告方法を認めないようにすれば、Twitterの平和ひいては貴社の評判にも繋がるのではないかと思います。

bit.lyのリンク作成日から見ても、2017年2月14日で、拙作ぶろるっくに対するリダイレクトが始まった日に近いです。三ヶ月近く経ちましたが、いまだに続いている状態です。
なお、広告が流れなくなったことが確認できたら、この記事についても修正を行い、販売企業が対応を行ってくれた素晴らしい会社であるという表記に変更いたします。
一度お問い合わせからメールを送ったのですが、反応が無かったので、この記事を作成しました。

3月 04, 2017

YAPC::Kansai 2017 OSAKAへ行った & LTでぶろるっくの紹介をしてきました

YAPC::Kansai 2017 OSAKAへ行って来ました。

以下のセッションを聞いてきました。

深沢 千尋氏「実録!『すぐわかるPerl』」

社内ツール作成担当から、どのようにしてPerlに関わることになったか、という話。
「わかる~👉👉」という感じだった。

risou氏「高速化の初歩」

高速化をするときの注目箇所と、やらなくて良いことの見極めが大事。

Yappo氏「Elasticsearch で作る ranking system のスヽメ」

キャッシュというと、どうしてもredisに頼っちゃうよね、と。
でもElasticsearchでも出来るよって話。

moznion氏「Webアプリケーションのキャッシュ戦略とそのパターン」

アプリケーションキャッシュに重点を絞って、どのような方法が取り得るかという話。

木本裕紀氏「MojoliciousとWebSocketsでサーバーpush配信」

WebSocketsの話は、まあよく見るサンプルという感じだったけど、その前の古い文字コードや言語混じりの旧設計システムを置き換える話が面白かった。

小飼弾氏「スペシャルセッション mail_form.cgi reborn」

面白かったです。ベテランと言えども、追い立てられると簡単なミスをしてしまうんだなぁということが分かって、なんだか安心(?)しました。

meru_akimbo氏「TRUNCATE user;に如何にして立ち向かうか」

定期バッチでのバックアップは処理量が増えてくると、定期で終わらないよね、と。
binlogを使って、PostgreSQLで言うWALとPITRみたいなことをするという話。

motemen氏「はてなシステムの考古学」

はてなが古代から進化するに当たって、どのような思想でサービスを作ってきたかという話。

あと、LTでぶろるっくの紹介をしてきました。

スライドの最後にもあるように、人は万人とは分かり合えないので、言語戦争とか、エディタ戦争とか、コーディングスタイル戦争とかはやめよう。

2月 13, 2017

ぶろるっく 最近のブロック集計 2017年2月


下限上限人数
14200000 1
14000000 14199999 1
8300000 8399999 1
7900000 7999999 1
7800000 7899999 1
6900000 6999999 1
2300000 2399999 1
1800000 1899999 1
1400000 1499999 27
1300000 1399999 2
1100000 1299999 1
900000 999999 1
700000 799999 2
500000 699999 5
400000 499999 6
300000 399999 9
200000 299999 16
100000 199999 123
90000 99999 10
80000 89999 14
70000 79999 15
60000 69999 31
50000 59999 70
40000 49999 143
30000 39999 222
20000 29999 200
10000 19999 435
9000 9999 76
8000 8999 115
7000 7999 195
6000 6999 305
5000 5999 446
4000 4999 891
3000 3999 1501
2000 2999 2452
1000 1999 6891
900 999 1539
800 899 1741
700 799 2180
600 699 2878
500 599 3629
400 499 5235
300 399 8709
200 299 16982
100 199 43042
1 99 422214
0 0 160486
合計682847
昨年2016年1月26日に公開した拙作「ぶろるっく」。前回の集計が2016年9月でしたので、5か月ほど間が空きました。
きちんと、定期的に件数を集計したり、毎日の延び具合とかを記録しておけばよかったんですが、最初はどのくらい集まるか分からず、とりあえず公開という流れからズルズルと来ています。
いつも通りに右の表は、ブロック数です。

集計タイミングは2017年2月13日 19時
登録アカウント数 68万2847件

ブロックした件数の平均値は452、中央値は18でした。
被ブロック件数の平均値は23、中央値は6でした。

手作業でブロックしていると2000件ぐらいが限界かなと思いますが、数万件以上ブロックしているのはどんなツールなんでしょう。気になります。
また、そのアカウントのタイムラインはどんな感じなんでしょうね。

あと自動的にデータを取り直して最新状態を保つようにしていますので、よろしければアプリ連携を残しておいてもらえると嬉しいです。
アプリ連携を解除された方のデータは、自動取得のタイミングでデータを消しています。

アプリのアイコンも設定しました!オリジナル感を出したかったので、頑張ってGIMPで作りました。

ぶろるっくは上の画像にもあるように、「読取専用」となっています。
意図しないツイートは、Twitterの仕様で不可能です。

似たようなアプリで、スパムツイートをされてしまうものがあるようですが、ツイートを検索してみると全員同じ数字なので診断メーカーとかで作った方がまだマシそうです。
こういうことを書くと、人数がランダムになるパワーアップとかされちゃうんでしょうけど。

色々見比べていると、2015年から存在するシステムっぽいですね。
そういうパッケージなのか、同じ人が運営しているのか。