28
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-11-11

ツイッターが英語で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);

おわりに

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

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

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

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

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

参考

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

28
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
28
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?