JavaScript
Twitter
ネタ
babel

twitterが280字になったので、ツイートをライブラリとしてバベって使う

ツイッターが英語で280文字書けるようになりました🎉
つまり、ツイッター上でコードを書くのが現実的になったということですね。

せっかくなので、ツイートをライブラリとして使ってみましょう。適当に呟いて、import hello from 'twitter:あなたのツイート'と書いたら、Babelをつかってツイートをコンパイルして実行です。

https://gyazo.com/e3851ff3d1cdee3acd8bef2a777b2dc3

How to Use

babel-plugin-twitterをインストールして、create-babelrcで.babelrcを生成します。

$ yarn add --dev babel-{cli,preset-env,plugin-twitter}
$ npx create-babelrc -o
Created .babelrc

{ presets: [ 'env' ], plugins: [ 'twitter' ] }

あとは適当にコードを書いて実行します。
もちろん280文字で出来るのはハローワールドだけじゃありません。

index.js
import leftPad from 'twitter:712799807073419264'

console.log(leftPad(1, 5)) // '00001'
console.log(leftPad(1234, 5)) // '01234'
console.log(leftPad(12345, 5)) // '12345'
$ yarn run babel-node index.js
00001
01234
12345

🎉

これで、ツイッター = コーディング という関係が成り立ちました。
これからは堂々とツイッターというエディタでコードを書くことが出来ますね。

実装

同期的にツイートを取得して、それをnode_modules/.cache以下にキャッシュします。なので、リクエストは最初の1回だけで2回目からは不要なリクエストもせず高速で動きます。node_modules/.cacheへのキャッシュはavababel-loaderでも使われている手法です。

後はASTを適当にいじれば以下のように変換されます。簡単ですね。

import leftPad from 'twitter:712799807073419264'

           

const leftPad = (v, n, c = '0') => String(v).length >= n ? '' + v : (String(c).repeat(n) + v).slice(-n);

おわりに

絶対にプロダクションで使わないで下さい。ツイートが削除された瞬間あなたのプロダクトは終了です。

https://github.com/akameco/babel-plugin-twitter

Babel Pluginについて興味が出たなら他の記事もどうぞ。

さよならボイラープレート。s2sによる高速reduxアプリケーション構築

面接でFizzBuzzを書けと言われたときにすべきこと - Qiita

JavaScriptのfloatで正確な比較を行う - Qiita

参考

ツイートをローカルで実行するの元ネタはrauchg氏のrequireFromTwitterです。

https://gist.github.com/rauchg/5b032c2c2166e4e36713