見出し画像

真夜中の334test

  …↓これ何してるか分かりますか。

画像1

 どれも、真夜中の3時34分に「334」って呟いてるんです。

 するとね、数分後に

 この334_Rankerさん(bot)が、日本時間で3:34ぴったしに「334」て呟いた正確さをミリ秒単位で計測した世界ランキングを発表してくれるのです。入賞は30人まで(334_Rankerさんをフォローしておくこと)。

 私、これに入賞したくて、入賞したくて…💧

 無理はしていませんが、遅くなった時はもう少し起きて、3:34につぶやくの。それを待ち構えて、失敗した時の気分って…

それって電車の乗り過ごしみたいじゃないですか…。ベタのレッテル直撃。

334チャレンジ

 3:34にミリ秒単位で撃ち込むにはどうすればいいか?現在時刻をミリ秒単位で表示するWeb サイトとかを見てツイーヨしても、タップのタイミングでかなり遅れるんです。
 そこで実際どのくらいなのか、Tweetした時刻をミリ秒単位で教えてくれるサイトで調べてみたら。

画像2

 おしいっ…!

画像3

 …早すぎ💢

画像4

 …遅すぎ。手動では、ぜんぜんダメな気がしてきました…。

ping打ってみた

 遅れる分を見越して、3:34より少し前に撃つべきか?とか考えていたら、そうだ、手元の回線からTwitterのサーバに届くまでどのくらいの時間かかってるんだろと思って、ping打ってみたところ(通信の到着時間が分かる)

(104.244.42.134はTwitter社のサーバ)

 やはり、11ms~100ms、平均だいたい14msぐらいかかってることが判明。(ネットって「開く時間」がかかるのは実感してると思うけど、そもそもデータ一つとってもそれぞれ十数ミリ秒などの時間がかかってるんですよ。送信先サーバとの物理的距離も影響するし、「5G」はこれが極めてみじかく速くなるっぽい。)

 なのでベタ思った。334ぴったし少し手前(14msぐらい)の時間正確に、自動でツイーヨしてくれるTwitterアプリ作ればいいんじゃね?と(不正?え?なんのこと?←)

Twitterアプリ、作ってみよっかな!(初)

 Twitterアプリといえば、たとえば「診断メーカー」とか。あとこういった↓「性格診断」とか。有名ですよね。Twitterにログインしたうえで、調べて結果を返すやつ。↓ここで紹介してるのはみな、Twitterアプリね。

 そういえば、最近はTwitterする、といえば本家クライアント(つまりTwitter社のTwitterアプリ)を使うのがほとんどだと思うけど、昔はオリジナルのTwitterクライアントが、多数あってそれが多機能で便利だということで、使う人も多かったよね。あれも、Twitterアプリ、です。Twitterアプリとは、Twitter社が開発者のために用意した「API」(Application Programming Interfaceな)を利用したアプリのこと。そのAPIを使うには、Twitter社に「開発者登録」をして、「Twitter APIキー」なるパスワードみたいなものをもらわねばなりません。

 が、Twitterアプリって、あほみたいにたくさん、あほみたいなものがあるから、すぐ開発者登録してAPIキー手に入れて、すぐ作れるんじゃないかって思ってたんです。もちろんベタはTwitterアプリは作ったことはございません。

 そこで、ちょっと調べたら、Twitter Developer サイト、なるところで登録してキーをもらえる、とのことだったので、使用するアカウントのままで入って、

画像5

ここのアカウント申請(Apply for a developer account)をポチ。で、何やら英語でなんか内容とか?目的とか?言われてるきがするけど、それっぽいことこしょこしょと答えたら、メールで結果待ちとのこと。

…あれ?…すぐじゃあないのね。簡単に登録してAPIキーすぐ貰えると思ってたのに😨

 その間に、アプリを仮組みしておこうかな、と。開発の準備をしてみます。

こしょこしょっとプログラムしてみゆ

 何の言語でやろうかなぁ?たぶん、Node.jsかなぁ(直感、根拠なし)

 サーバは、AWS Cloud9ね(タダだし)

 で、AWSで用意したクラウドのサーバ環境に(これはほぼ一瞬で登録して使える…無料で。Amazonさんすごい、太っ腹)、Node.js開発環境を、どこかの解説サイトの見様見真似でインスコして、こしょこしょっとやって、テストしてみる。

画像6

 こんな感じ。で、…お決まりの文句

Hello World!

って表示するプログラムが組めました!(一行だけど)

 ここまでできれば、あとはTwitter開発者登録が完了してAPIキーをもらえれば、それをこしょこしょっとやって、すぐできるから、今晩の334に間に合って、初のランクイン!?\(≧∇≦*)/ヤッター!!  …と、思っていました😱

twitter社とメール戦争勃発(寸前)

 待つこと、忘れかけてた半日後。届いたメールはご覧の通りでした。せ、政府機関!?

画像7

…ここは日本語なのね。まあラッキー♪ んーでも、政府機関とか関係ないし。なのでその旨丁寧にお返事差し上げました。

Twitterご担当さま

お世話になっております。回答したします。
・この使用目的において、Twitterコンテンツ、またはTwitterコンテンツから得た情報にアクセスする政府機関または公共部門の法人のリスト。
政府機関・公共部門の法人、一切関係いたしません。個人利用です。

・政府機関または公共部門の法人による製品またはサービスの具体的な使用目的
同上、政府機関・公共部門の法人、一切関係いたしません。個人利用です。

(誤解ある文章でしたでしょうか?
 個人的な、自分のアカウントからの1日1度の自動ツイートを行うアプリを制作するのみです)

よろしくお願いいたします。
Betalayertale

 …すると今度は比較的速く四半日後に返事が。しつもんいっぱいだぁ😨
 …意図、ビジネス上の目的、ツイートを分析するならその分析内容と手法、リツイート・いいねするならどのような操作をするか。Twitter以外で表示するならどのように表示するのか(つまりWebサイトでTwitterらしくなく表示するとかかな)…。

画像8

 細かいな…(イラっ)。でも、淑女なベタはここで気落ちをぐっと抑えて、丁寧に詳しくお返事さしあげましたよ。

Twitterご担当さま

お世話になっております。回答したします。

それぞれ回答いたしますが、初心者ですので、まずは触ってみたい程度、というのが正直なところです。
なにかすごいアプリを作れるという技術力はありません。
個人用であり、公開いたしません。

>Twitter APIを使用する中核的な使用目的、意図、ビジネス上の目的。
Tweetをするのみです。

指定の時刻に、登録していた文章をツイートするのみです。1日1回。
テストで、1日に数回使用するかもしれません。
ビジネス用途、広告などは入れません。他社に売りもしません。


>ツイート、Twitterアカウント、またはそのコンテンツを分析する場合は、実施する分析の内容と手法または技術について詳しくお教えください。
分析・ツイートの取得はしません。

>ツイート、リツイート、いいねの使用が含まれる場合は、Twitterアカウントまたはそのコンテンツに対してどのような操作を行うのかをお教えください。
しません。
(以下略)

 …うーん、最初に書いた「個人的な、自分のアカウントからの1日1度の自動ツイートを行うアプリを制作するのみです」で、必定十分な説明になっていると思うんだけどな?でも、上記のように丁寧に詳細まで説明してお返事差し上げました。何がなんでも「334ツイーヨで勝つためのアプリです」とは言いません、決して。

 …すると今度は比較的速く四半日後に返事↓↓↓が。同じこと繰り返されてる。圧がすごい😨怖いw

画像9

 …私は、一字一句よく先方の主張を読んで、丁寧に、詳細まで、しつこく説明するよう心がけて回答差し上げました。1800文字の長文ニキでな💢

画像10

画像11

betalayertale

…すると、待つこと半日後のお昼前、Twitter社からお返事が。

画像12

…承認されましたとのこと。よかったぁー。もう一生お前にはTwitter社として取引せん💢、とかでなくて。それは仕事で困るw 戦争勃発寸前でしたな!…ていうか、このやりとり見たノーテのみなさま(あなた)、私と仕事したくなくなったです?こんなに丁寧にメール差し上げてるのに…なんで?(・_・)?

ベタ、Twitter開発者になる

 さあ、いよいよTwitter Developer Portalに入ることができました!カッコいい!あがる!…何が書いてあるのかさっぱり(笑)てか、たぶん知らなくてよさそう。

画像13

 …でも、お目当ての「APIキー」は難なくゲットして、Let's!334testのプログラミングを開始します。

334test(Node.js)

var twitter = require('twit');
var bot = new twitter({
   consumer_key        : 'q6fJXXXXXXXXXXXXXXXXXXX',
   consumer_secret     : 'KHnZXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
   access_token        : '4312XXXX-jE0yXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
   access_token_secret : 'e7rTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
   timeout_ms:           60*1000,  // optional HTTP request timeout to apply to all requests.
   strictSSL:            true,  
})
console.log("tweettest..");

〜〜〜〜
中略(3:34になるのをひたすら待つ、10行程度のプログラム)
〜〜〜〜

do {
    var date = new Date();
    ss = date.getMilliseconds();
} while(ss < 887) ;
console.log("..");
console.log(date.getMilliseconds() );
bot.post('statuses/update', {status: '334' }, function(error, tweet, response) {
   if (!error) {
     console.log("ok.");
    } else {
     console.log("error:"+error);
   }
});

 こしょこしょこしょ…と、↑こんな感じで(APIキーは一応秘密ね)。何度か小ミスのバグをとって、だいたい15分ほどで完成。そして何度も撃って試してみます。私のTwitterに実験しているその跡が残ってます。それで時差を計測してみて、目的の分の1分前+「887」ミリ秒(113ミリ秒前)あたりが、無難に3:34ジャストに近いところを狙えるかな、と予測して(回線の通過時間はばらつきがあるので確実では無い&3:34より手前だとNGなので少し過ぎたぐらいの時間にしないとで)、完成。

 あとは起動して、プログラムは実行させたまま時が来るの待ちます。

 ドキ、ドキ…。

本番。334test実行中

 …(これ書いてて忘れかけてたのであわてて)なにやら3:30頃から怖くなってきました。気がつくと、AWSが勝手に(しばらく触ってないから)止まってるじゃん!とかに気づいてすぐに対処して…待ちます。

 そして…1分前になるとコンソールでも1秒ごとにカウントダウンが始まり…59:887の瞬間!tweetしたと報告が!

画像14

 twitterでも見ます。

…あれ?午前3:33…??

…前倒ししすぎて3:34より手前になってしまいました。

失格。orz.😭

 …当然、30位入りは果たせませんでした。

戦いは続く

 …深夜だから、回線がもっと早くなってるのかなぁ?

 調整して、明日こそは……😓

(早く寝たい)



betalayertale 

5060文字

楽しい哀しいベタの小品集 代表作は「メリーバッドエンドアンドリドル」に集めてます