Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
8
Help us understand the problem. What is going on with this article?

More than 3 years have passed since last update.

@akameco

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);

おわりに

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

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

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

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

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

参考

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

8
Help us understand the problem. What is going on with this article?
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
8
Help us understand the problem. What is going on with this article?