ツイッターが英語で280文字書けるようになりました🎉
つまり、ツイッター上でコードを書くのが現実的になったということですね。
せっかくなので、ツイートをライブラリとして使ってみましょう。適当に呟いて、import hello from 'twitter:あなたのツイート'
と書いたら、Babelをつかってツイートをコンパイルして実行です。
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文字で出来るのはハローワールドだけじゃありません。
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
へのキャッシュはava
やbabel-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);
おわりに
絶対にプロダクションで使わないで下さい。ツイートが削除された瞬間あなたのプロダクトは終了です。
twitterはエディタなので、ツイートをバベるとコードを実行できるhttps://t.co/GlEDNmG8TY pic.twitter.com/VRQ8fAac23
— あかめ@無職.js (@akameco) November 9, 2017
例のアレ
— あかめ@無職.js (@akameco) 2017年11月11日
https://t.co/GlEDNmG8TY pic.twitter.com/xEgjohhdR7
Babel Pluginについて興味が出たなら他の記事もどうぞ。
さよならボイラープレート。s2sによる高速reduxアプリケーション構築
面接でFizzBuzzを書けと言われたときにすべきこと - Qiita
JavaScriptのfloatで正確な比較を行う - Qiita
参考
ツイートをローカルで実行するの元ネタはrauchg氏のrequireFromTwitter
です。