Pollofeedみたいなサイトの作り方

Pollofeedみたいなサイトの作り方

今朝、こちらの記事を読みました。

【相談】「POLLO FEED」の水槽版を作ってみたいのだが…

前からライトニングアプリの雛形みたいなのを作りたいと思っていたので、この機会に作ってみました。

Pollofeedみたいなサイトとは

「動画が再生されていて、投げ銭ができる」サイトのことです。(Pollofeed参照)

本当はいろんなライトニングアプリがノーコードで作れるツールとかができれば最高ですが、そこまでできないので本当にサクッとしたものを作りました。デモサイトです。(残念ながら、ハードウェアは特に作っていないので私に投げ銭が入る以外は何も起こりません)

なんなら今回作ったツールは、自分のライトニングノードですらなく、手軽さ重視でOpenNodeというサービスを使います。

構成

前提として、Pollofeedタイプのライトニングアプリは3つの部分からなります。

①動画を中継したり、餌を投下するハードウェア
②ライトニングノードもしくはOpenNodeアカウント
③ユーザーが見るサイトと、アクセスを捌くサーバー

①今回はYouTube Liveなどを利用して中継し、カメラやハードウェアのセットアップはできるという設定で話を進めます。ハードウェアの設定方法が知りたい方はググって下さい。(基本的にはRaspberry Piなどを使い、ネットワーク経由でリクエストが来たら作動するようにします)

②OpenNodeはライトニング決済ソリューションで、累計1万ドル分までならライトニング決済は手数料無料で受け付けられます(以降は1%)。便利なのは、難しい設定なしにコールバックなるものが利用できることです。とりあえずOpenNodeアカウントを作りましょう。

コールバックとは、支払いが完了したときに、OpenNodeからこちらが指定したURLに通知してくる機能です。

③最後に、ユーザーが見るサイトと、ユーザーのリクエストを捌くサーバー(インボイスを見せる)を用意する必要がありますね。ここが今回作ったものです。②もOpenNodeで用意されるので、自力で実装しなければならないのはハードウェアと、コールバック時の処理だけですね。

導入する

まずはこちらのGitHubリポジトリまでどうぞ。ご自身のアカウントにフォークして下さい。

サーバーにはHerokuを使います。こちらも無料枠で十分なので、とりあえず登録しましょう

GitHubリポジトリ内の「Deploy to Heroku」ボタンをクリックして、Herokuに展開します。この時点でアプリ名を決めて下さい。

デプロイ後は、Herokuの設定からアプリの設定に入り、Settingsタブ内の"Reveal Config Vars"ボタンを押して環境変数を設定します。sats建てで受け取りたい場合は、以下の環境変数を設定します:

HEROKU_URL: アプリを閲覧するURL(最後にスラッシュをつけないように) 例) https://test-lapp.herokuapp.com

LAPP_NAME - ページ内やインボイスに表示されるアプリ名 例) Koi Feed

MIN_PAYMENT - サトシ建て(既定)、または特定通貨建ての支払金額 例) 100

OPENNODE_API_KEY - OpenNodeのAPIキー

VIDEO_EMBED - ビデオの埋め込みコード

次に、任意で設定できる環境変数を設定します。必要なもの以外は設定しないでください:

CURRENCY - 法定通貨で金額を指定したい場合、https://api.opennode.com/v1/currencies のリストから選ぶことができます。 例) JPY

CALLBACK_URL - ユーザーが支払うと、OpenNodeからこのURLにbodyに支払情報を含むPOSTリクエストが送られてきます。違うサーバーや自宅ネットワークに通知させて、機械を作動させるような場合に指定しましょう。 例) http://(自宅のIPアドレス):(特定のポート)/callback

SUCCESS_URL - これを設定すると、支払後に支払画面にこのリンク宛の「ページに戻る」ボタンが表示されます。

PORT - 何らかの理由で3000番以外を指定したいときに指定してください

ここまで設定したら、アプリのページをもう一度読み込んでみてください。おそらく動作しているはずです!

見た目は悪いので、必要に応じてviews/index.ejsを改造して下さい。改造した後は、Herokuの設定ページから再度Deployを忘れずに!(GitHubと連携させて、リポジトリを更新するたびに再度Deployされるようにも設定できます)

コールバックの実装

CALLBACK_URL宛にOpenNodeからPOSTが来たらなにかするようにして下さい。自宅ならルーターでポート転送の設定も必要かもしれません。

野良リクエストのセキュリティが気になる方は、Nodejsのopennode公式パッケージを使えばOpenNodeからかどうか検証できます。もしくは、今回作ったツールのroutes/opennode.js内にあるconsole.log文のあたりは検証済みなので、そこから任意のリクエストを自宅宛に飛ばして下さい。誤ってGitHub上に上げてしまわない形でやりましょう!(新たな環境変数を使用するなど)

一日何回までに制限するとか、回数が増えると値段が上がるような設定がしたい場合は、そのロジックは自力で頑張って組んで下さい。

おわりに

数時間で組んだすごい雑なものですが、気軽に編集できるベースラインなんじゃないかなと思います。問題があればコメントかイシューをお願いします。もし面白い機能を実装したら、どしどしプルリク下さい。

この続き : 0字 / 画像 0枚
100

会員登録 / ログインして続きを読む

参加しているキャンペーン

関連記事

記事を書いた人

ビットコインが好きです。ビットコイン研究所に寄稿したり、トラストレスサービス株式会社という会社で実験的なサービス開発をしています。

SNSにシェア

このクリエイターの人気記事

11年ぶりに動いたビットコインはサトシのものか?

7205

MicroStrategy社はなぜビットコインを440億円分買ったのか【インタビュー要点和訳】

5561

【和訳】New York Times 『プログラマーと独裁者』

3514