人生クソ怯み

ワクワクのもっと先へ物語は続いていくんだ twitter→@solf_poke

Node.js+Glitchでwebアプリを作ってみた

こんなサムネとタイトルにしておけばさも技術ブログみたいな雰囲気でかっこいい

f:id:solf_poke:20200411143507p:plain

 

 

ソルフです。新型コロナの感染爆発が深刻ですね。ムッチャ怖いから外出できない。皆さんはその辺大丈夫でしょうか。

なんか技術的な話をしそうなタイトルですがただの日記、経験談でコードとか載せてませんのでその辺りに期待してる方はバック推奨。

自分語りの前書きが長いのでお話が長いよ〜って人は次の区切りまで飛ばしてくださいな。

 

 

さて私G-ソルフ、その影響がちょびっと強い場所におりまして、住んでる地域にも緊急事態宣言が適用されてしまいました。

外出自粛が叫ばれるこのご時世、プリチャンしか生きがいのなかった自分にはクリティカルなもので。なにせ家でやることがない。土日何すりゃいいのよ〜アニメでも見る???くらいの。FGOやればいいんですけどね…(急いでやってる)

そんな時ふと前にTwitterAPIを取得したはいいものの案外あっさり飽きてしまったのを思い出しまして。

良〜しじゃあ今回こそネトストイッタラーのクラスタを調べるツールを作るぞ〜あわよくば公開しちゃうぞ〜と、なったわけです。恥ずかしながらNode.jsを使ったことがなく…。後html等web系のコードもあんまり経験がなく、その辺りの練習としてね。業務で使うかと言われるとまあ…。

しかし公開する設備が思い当たらない…レンタルサーバAWS?うーんどうしよう?まあ1ヶ月にソフト一本程度の値段なら出してもいいか…?などと考えていたのですが。神サービスを発見してしまいました。この辺りについても記述していきたいと思います。

 

 

というわけで作ったシロモノがこちら。(スマホ推奨)

tweetclustersearcher.glitch.me

node初心者なのでガバサーバ処理はゆるして(懇願)

作り始めということでhttp+fsというシンプルかつ初心者丸出しな組み合わせでやってます。express使えばよかったな…いや言うてもexpress使っときゃいいってもんじゃないってもどこぞの有識者が語ってたし…。

CSSが貧弱?うるせえ!!!!!

いろんなサイトから各演出のコードを引っ張らせていただきました、ありがとうございます(フリーらしいところからしか引っ張ってきてない&出典を覚えてないので引用は省略)

今回は「特にログイン処理なしでTwitterユーザのつぶやきを取得し、そこから形成されているクラスタを表示できるようにする」ものを作りました。

具体的には、あるユーザが送った(または送られた)ツイートを一週間分、そのうち1000件を取得しリプライを抽出。そのリプライの送り先(送り元)を件数とともに表示。その中からクラスタを探すといった形です。

クラスタ自体は、そのフォローかつフォロワー関係にある人(以下FF)を洗濯したユーザ分だし、その各FFでさらに共通するユーザを割り出す、といった流れで行なっていきます。う〜んめんどいぞ。

加えて言えばTwitterAPIには「そのアプリ共通のAPI呼び出し回数上限」なるものが15分単位で設けられています。

特にこのクラスタの割り出し、ユーザのフォローとフォロワーを出力するAPIはわりと厳しめに設定されており、「いやこんなの公開したところであんまり使いもんにならんくないか」という感想。う〜む…。

お金を払えばその上限はあげられるものの、そんな大人気webアプリというわけでもないし、一個グレードを上げるだけで費用が月15kと新卒2年目には洒落にならん額。「まあ15分単位で回復するしええやろ!W」とそのまま実装することにしました。

webページの構成に関しては基本ejsでサーバから適宜値を流し込んでやる形で実装しました。これが正しいのかはわかんない。

 

 で。なんとなくモノは作れたわけですが、公開するプラットフォームをどうしよう、と。悩んでいたのですがありましたありました、最適なブツが!

 

glitch.com

 

クゥ〜〜〜ッあるじゃねえか!!無料でwebアプリケーションの類を公開できるものが!!!

大まかな説明はもうだいたいやってくれてる人類がいるのでそちらを読んでください。

qiita.com

laboradian.com

 

こいつの強みはブラウザ上のエディタでの編集の他にGithubからそのままコードを持ってこれるという機構がありまして、これが非常に便利です。

課金することで呼び出し回数とかストレージとかその辺を引き上げられるようですがそんな大人気コンテンツになるわけでもないのでそのまま。

Firebase上での公開もなんとなく悪くないように思いましたが、自分が組んだモノに特にdbに何かを記録するような動作もなく、メンテナンス、デプロイ手順などGlitchの手軽さがダンチだったのでGlitchでよくね?となった次第。いや言うてFirebaseもさほど変わらんくらい楽ではあるけど…。Glitchは5分以上使われていないとスリープに入るのでなんか常に動かしていたい、みたいなサービスを運営する際は確実にFirebaseだと思います。あとデフォのドメインはglitchの方がシンプルで好みかも。

 

てなわけでサクッと公開。

 

f:id:solf_poke:20200411143007j:plain

 

と言うわけで、そんなにハードル高くないのでお試しあれ。