こんばんは!夜はハッキンガム宮殿でハッキングタイム!
久しぶりに天才ハッカーのOCEAN RABBITです!
最近仮想通貨界隈もALIS界隈も悲観気味。特にALISコミュニティではALISの将来性に付いて悲観的な議論が多くコミュニティを去る方もちらほらいる状況です。
巷では僕が騒動を起こしてハッカー部とともにALISを去るのではないかとの噂も流れています。
詳しい経緯は省きますが簡潔にまとめると、コミュニティが法定通貨に対して影響力を持って少しでもALISの価格を上げる(そぶりだけでもみせるw)ことができればそれがきっかけ(ブートストラップ)になって、現状の『鶏が先か卵が先か』で停滞してる問題を破れるのではないかとの考えをぶちまけた次第です。
まあ、一旦その件は置いて置きましょうw。僕はあの手この手でALISを成功に導くハッカーです。今日は別件!
トークン価格を上げ報酬がブログ執筆の対価に釣り合うところまで上げてユーザー流入の正のスパイラルを作る以外に、ALISを成功させるる方法がもう一つあると考えています。
それは記事を書いてもらえる換金不可能なALISトークンを使った経済活動を内部でぶん回すことです。記事でトークンを稼いでそれを内部で使う仕組みを作ることによって、換金できないトークンでも取得したいインセンティブを作ることです。
ALIS内部に記事トークンで課金できる有用サービスが沢山立ち上がればよいわけです。ALIS内部で経済活動ができればよいのです。
その一例を昨日ハッカー部のホーさんが示してくれました。
ホーさんに5ALIS投げ銭すると、そのユーザーの統計をコメント欄に自動で貼り付けてくれるサービスです。このBOTサービスによってホーさんがALISを稼ぐことができる仕組みです。
もしこんなサービスを誰もが簡単に立ち上げて、色々な人が有用な課金サービスを出したら記事を書いて貰えるALISで経済圏が回り始めないでしょうか?ホーさんの記事でもこれを無料で運営する方法を模索しているので誰か教えて下さいと書いてありました。
天才ハッカーの僕が教えましょう!
誰もが完全無料で簡単にBOTサービスを立ち上げ、アイデア次第でALIS長者になる方法を大公開します!
一応簡単なステップのはずですので詰まったら是非ハッカー部にお越しください!部員の誰かが手取り足取り腰取りやさしく教えてくれるはず!
プログラミングが必要な部分を最低限にして、無料サービスを使って投げ銭課金BOTを簡単に設置・運用できるようにしました。プログラミングがわからなくても僕のサンプルをコピペするだけで一応BOTサービスが設置できます。
1. Nodejsをインストール
2. gitをインストール
3. 必要サービス登録
4. プロジェクトをgitでクローン
5. データベース作成
6. 環境変数設定(※パスワードがないパターンを追加)
7. 通知処理ロジックをプログラミング実装
8. BOTをクラウドサービスにデプロイ(設置)
9. サーバー監視サービスで定期的にBOTを実行
10. (おまけ)ローカル環境で動作確認
※最低限のプログラミング知識(JavaScript)が必要なのは7番だけです!
使ってるOS環境ごとにやり方が異なるので、この辺の記事を参考にしてください。
これも環境によって違うので何か記事を参考にしてください。例えばwindows
MacやLinuxだとコマンドラインで瞬殺かと思います。
完全無料でBOTを動かすために登録が必要なサービスが3つあるので、なんとか登録してください(笑)。どれも数分で終わると思います!全て無料です。
BOTの実行履歴を保存するデータベース
BOTをサーバーレスに設置するサービス
BOTを定期的に動かすサービス
さて環境整備・準備完了!ここからが本番です。以下Linuxのコマンドの例なのでwindowsなどでは多少違うかもしれません。詰まったらハッカー部へ!
まず僕が作ったgithubのレポジトリを任意の場所にクローンします。
git clone git@github.com:alisista/alis-bot-service.git
そして作成された『alis-bot-service』というディレクトリに移動
cd alis-bot-service
必要パッケージをnpmでインストール
npm install
これでyarnというプログラムもインストールされるのでこっからはnpmの代わりにyarnを使います。yarnはnpmの上位互換です。
このプロジェクトの主要ディレクトリの構造はこんな感じです
もう一つだけ必要な環境設定があります。
先ほど登録したmlabにデータベースを作成してそのデータベースアドレスを".env"という環境変数ファイルに書き込むことです。このデータベースにBOTサービスの実行状況を記録して重複実行を防ぐ必要があります。
作成方法は、
登録したアカウントでmlabにログインして => create new => amazonWebServices => sandbox[free] => continue => US EAST(Versinia) => continue => DATABASE NAME (任意。。。例えば『tip』) => continue => submit order
といった具合にクリックしていけばできると思います。作成されたデータベースをクリックすると
USERSというタブがあるので、そこをクリックして『Add database user』をクリック。
Database username (任意 例えば ocrybit)
Database password (任意 例えば sdlkKLKJ234sjfksdjfo)
Confirm password (同上)
を入力して『CREATE』をクリック。
すると画面上部にデータベースのアドレスが
mongodb://<dbuser>:<dbpassword>@ds143132.mlab.com:43132/tip
表示されているのでこのdbuserとdbpasswordを設定したユーザー情報に置き換えた値が必要です。例えば
mongodb://ocrybit:sdlkKLKJ234sjfksdjfo@ds143132.mlab.com:43132/tip
がデータベースのアドレスです。(下画像はサンプルで取得が必要なアドレス部分をハイライトしてあります。)
これを『alis-bot-service/.env』ファイルを作成して書き込みます。ALISのユーザー名とパスワードもここに書き込みます。これは重要な情報がオープンソースなどでコードを公開する際に一緒に公開されないようにする工夫です。
フォーマットは『.env.sample』ファイルを参照。
『.env.sample.no.password』を参照してALIS_PASSWORDの代わりにALIS_REFRESH_TOKENを埋めて下さい。
このトークンは少し特殊な方法で取得する必要があります。Google Chromeブラウザーの場合の手順を示すので、他ブラウザーの場合はそれぞれの方法で同等のrefresh_tokenを入手して下さい。
1. ALISにログインした状態で【Shift + Ctrl + i】を押し、ディベロッパーコンソールを開きます。
2. 以下の画像を参照し、【Application > Storage > Local Storage > https://alis.to > xxxxx.refreshToken】 の値(赤枠)をコピーして上のALIS_REFRESH_TOKENの"xxxx...."にペーストして下さい。この値はかなり長いです。
さて、このプロジェクトは既に
通知をチェックして、条件に該当する投げ銭に対してなんらかのアクションを一度だけする
という部分は実装されています。ですので皆さんがプログラミングするのはそのアクションの部分だけです。
actions.sample.js
というファイルを参考にして、実際のサービス内容を
actions.js
に書いてください。必要なプログラミングはそれだけです!
以下が僕がこの記事への投げ銭に対して設置した超画期的な課金サービスです。どんどん投げ銭してみて下さいw!もしプログラミングがわからない方はこのコードをactions.jsにそのままコピペでもよいかもしれませんw。記事IDだけご自分の記事に変えてください。
基本的に
module.exports["2APJkQqzNbeb"] = async notification => {}
の形で{}内に該当記事の投げ銭に対するロジックを書きます。"2APJkQqzNbeb"の部分を任意の自分の記事のIDに置き換えてください。この関数からtrueをリターンすると処理は成功されたものとして記録され、二度目は実行されません。falseをリターンするとひとまずスキップし、次回の通知チェック時にまた実行されます。
ホーさんの例では5ALISのときのみ実行するサービスでしたが、その辺の金額ロジックも必要であれば{}内に書いてください。5ALISの時のみ実行したいのであれば、5ALISのときに動作を実行してtrueを返す、それ以外の時は何もしないでtrueを返すといった具合です。falseはスキップ用なので次回の通知チェックのときにもう一度実行したい場合にのみ使います。5ALIS以外を弾くのであれば何も処理をせずにtrue(実行完了)を返してデータベースにそれを記録します。
複数記事のロジックを書く場合は同一の
actions.js
ファイルに
module.exports["xxxxx"] = async notification => {}
module.exports["yyyyy"] = async notification => {}
module.exports["zzzzzz"] = async notification => {}
と連ねて書いてください。このファイルからmodule.exportsされていれば本番環境にも設置されます。
さて、Javascriptがわかる方には、簡単なコードかと思いますが、僕のBOTサービスがやることは、投げ銭主の最新の記事を取得してそこに
xxx ALISの投げ銭ありがとうございました。
とコメントを残すだけです。とても革命的ですね!単に領収書のようなものですw
サンプルなので極力簡潔にしました。
この関数に渡されるnotificationというオブジェクトはAPIから取得できる投げ銭の通知です。例えば、サンプルでゆうきさんから僕への投げ銭データの通知をお借りしました。
これと同じフォーマットのデータがnotificationオブジェクトとして関数に渡されるので、それを処理して何らかのアクションを起こすロジックを関数に書いて下さい。これは通知APIから渡される値そのままなのですが、一点だけ変更点は、notification.tip_value_normalizedというフィールドが追加されてtip_valueの値が正常なものに変換されて来ます。APIで渡されるtip_valueは単位がALISとは違うのでとても大きな値になっています。(上の僕のサンプルを参照)
ALIS API node.js Clientを使うとALISで出きることはほぼ全てAPIで可能になります。
投げ銭やコメント、シマリスさんを通報する例等も載っていますので是非参照してください。何か実装したい機能がありわからなかったらハッカー部へお越し下さい!
ロジック部分単体をテストする際に便利なプログラムを2つ付けてあります。
node dev/testSample.js 3Qjr7Y5DxwEN sample
というコマンドで"data/sample.json"というサンプルファイルを使って"3Qjr7Y5DxwEN"記事に対する関数を一回だけ実行することができます。ご自分で"data/sample2.json"とういサンプルデータを用意して、"abcde"という記事に対する関数をテストしたければ
node dev/testSample.js abcde sample2
と打ちます。独自のサンプルデータは『data』というディレクトリに作って下さい。
また、サンプルデータの補助として
node dev/copyNotifications.js filename 10
と入力すると新着の通知10件を"data/filename.json"に出力します。但し、この出力ファイルはフォーマットが違うので直接サンプルデータとして使えるものではないことにご注意下さい。ファイルを開けて比較してみるとわかります。filename.json(複数の通知データ)からsample.json(ひとつだけの投げせん通知データ)に必要データをテスト用にコピペして使えればという考えです。
さてactions.jsに記事ごとの必要な投げ銭通知処理を書き終わったらいよいよ本番環境にデプロイします。
まず先ほど登録したnowにコマンドラインからログインする必要があります。
now login
と打つとEメールアドレスを聞かれてそこにログイン用のメールが送られてきます。Eメールの『VERIFY』ボタンをクリックすると自動でコマンドラインでもログインされる思います。この動作はログイン時に一回だけする必要があります。
ログインが完了したら
now
と打てばBOTの設置は完了です。zeit.coのダッシュボードにいくと
のようにデプロイしたサービスの一覧が表示されているので今デプロイしたサービスのホストネームをコピーしましょう。上の画像で言うと
bot-riz6cjt02.now.sh
がそれに当たります。この場合BOTの実行アドレスは
https://bot-riz6cjt02.now.sh/lambda/bot-service/
となり、このURLにアクセスがあるとサーバーレスな関数で最新通知をチェックして必要処理をする仕組みになっています。
ただし、この状態では誰かが上のURLに定期的にアクセスしてくれなければ新着通知チェックはされません。
そこで必要なのが3番目に登録したUptime Robotというサービスです。このサービスはウェブサイトが落ちていないかを定期的(最短5分)に無料でチェックしてくれるので、ここに上記URLのチェックを設定すると5分に一回BOTが稼動する仕組みが出来上がるのです。
サーバーレス関数とサーバー監視サービスを組み合わせた完全無料ハックです。
Uptime Robotにログインすると『Add New Monitor』というボタンがあるのでクリック、
Monitor Type: HTTP(s)
Friendly Name: 任意 (例 ALIS BOT SERVICE)
URL or IP: https://bot-riz6cjt02.now.sh/lambda/bot-service/
Monitoring Interval: 任意 (例 5分)
を最低限入力して『Create Monitor』をクリックです。Alertはどちらでもよい思います(アクセスできない時にE-mailで通知してくれます)。
以上でBOTの設置は完了です。
また、クラウド上に設置する前にローカルで同様の動作をテストしたい場合は、
yarn run develop
のコマンドで、
http://localhost:5000/bot-service/
に関数が立ち上がるのでこのURLをアクセスすると実際の挙動を確認できます。
注意点
投げ銭BOTサービスを停止したい場合はUptime Robotの監視を停止し、zeit.coのDeploymentsタブから設置したインスタンスをDELETEします。コードを変更して新たなBOTをzeit.coに設置した場合、新しいURLが与えられるのでUptime Robotを再設定する必要があります。
と、かなり端折った部分はありましたが、環境設定以外は通知を処理するロジックをプログラムするだけでALISにBOTサービスを完全無料で立ち上げることができます。Javascriptを少し知っていれば誰でもALIS長者になれる可能性があるのです!
例えばこの仕組みで有益なBOTサービス、面白いBOTサービスが100個立ち上がったらどうでしょう?記事を書いてALISを集めたい理由になりませんか?何もコメントや統計データなどのALIS内部で完結するサービスでなくとも言いわけです。アイデア次第で何でもできると思います。
例えば、10ALISの投げ銭で最新の記事を影響力のあるツイッターアカウントで自動で呟くとかも作れます。ゲーム的なサービスも作れるかと思います。法律に詳しくないのでALISの投げ銭でギャンブル的なことをするサービスはどこまで作ってよいのかわかりませんが。
僕の記事だと少し分かりにくい部分もあるかと思いますが、ひよぷろ部・ハッカー部の方ならなんとか解読してくれるはず!やり方は示したのでおそらくALIS離れを思いとどまったゆうきさんあたり(名指しw)が、もう少し分かり易く各ステップを説明してくれるでしょう!
わからないことがあったらDISCORDでハッカー部に聞いて下さい。ひとまずBOTサービスを10個作ってALISを潤すことを目指したいと思います。その次は100個目指します!100人のアイデアを形に!
投げ銭サービスを共同マガジンにまとめて行きます。
コメント欄でBOTでこんなサービスが作れそうとか、作りたいとか是非アイデアを投げ合ってみませんか?
もし、プログラミングが全くわからずそれでも自分のBOTサービスを設置したいという方いましたら僕が内部完結するサービスの設置は100ALISで承ります!
外部サービスとの連携が必要なものは応相談で。
ALIS経済を回したいのでどんどんALIS徴収します!開発して欲しいBOTがありましたら是非ご相談下さい。
そのうち課金ALISボット運用サービスも開発するかもしれません。。。が未定。開発したBOTの売買なんかもよいかもしれません。
さあ、市場は開かれました!皆さんアイデアを振り絞って毛根女子さん・ALISMANさんに保有ALISで追いつきましょう!
課金BOTビジネスを制するものがALISを制す。
この記事にジャンジャン投げ銭待ってます!
ありがとうございましたの領収書がコメントされるだけですがw。
新しいサービス作りました!