Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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

akameco
シュレーディンガーの社会人.js
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした