
TomoyaNode.jsの導入が済み、土台ができあがりました!!
ここからは、いよいよ実際に何かを作っていく開発の段階に移っていきます。
Tomoya何を作ろうか、正直かなり悩みました。
AIに相談して候補をいくつか挙げてもらい、そこから自分でも考えを重ねていきました。
せっかくVPSを使うのだから、その利点(24時間動き続けられること)を活かしたシステムにしたい、自分にとって実際に役立つツールにしたい、という思いがあったので、それを踏まえて提案してもらった候補の中から決めていきました。
Tomoyaもう一つ、自分の中で条件にしたのが「シンプルなシステムであること」です。
これまで、複雑さゆえに挫折してしまうことが何度もありました。良いものを作ろうとするあまり、時間がかかったり、ある程度の専門知識が前提になっていたりして、学習コストの高さに踏ん張りきれずフェードアウトしてしまう——そんな経験があったので、
今回は「やったことはないけれど、構造はシンプル」というものを条件に加えました。
何を作るか:ビットコインの価格監視+Discord通知
最終的に、ビットコインの価格を監視し、条件を満たしたらDiscordに通知する24時間システムに決めました。

Tomoya理由は2つあります。
1つは、ビットコインの市場にこれまで参入したことがなく、自分にとって未知の領域だったこと。
もう1つは、「価格を監視して、条件を満たしたら通知する」という構造自体が、非エンジニアの自分にもシンプルで理解しやすかったことです。
使うものも、仮想通貨のAPI(CoinGecko)とDiscordのWebhook、この2つを用意すればいい、というシンプルな構成です。
もっと詳しい分野だったら、あれもこれもと機能を足したくなって複雑化しがちだったと思いますが、仮想通貨についてあまり知らないからこそ、今回のシンプルな構成でも「完成させられた」という達成感につながっている気がします。
Tomoyaまた、コスト面でも安心感がありました。
Discordは無料で通知を受けられますし、今回初めて使うCoinGeckoも、無料枠(100コール/分・1万コール/月)の範囲内で進められます。

Tomoya準備段階の時点で、コストの見積もりに不安が少なかったのは良かったです。
Discord Webhookの発行
Discordはもともと通話やチャット用のアカウントを持っていたので、新しくチャンネルを作り、そこに通知を送れるようにするためのWebhook URLを発行しました。ここはスムーズにできました。
CoinGeckoのAPIキー発行
CoinGeckoのサイトを触るのは今回が初めてだったので、APIキーの取得はもっと手間がかかるものだと身構えていましたが、実際は意外なくらいすんなり進められました。
アカウントを作り、開発者用のダッシュボードからAPIキーを発行するだけで完了しました。
なお、有料プランに進むと利用できる枠がさらに増え、より自由度の高い使い方ができるようです。仮想通貨を普段からよく触るような方であれば、そちらのほうがリアルタイムの情報を見やすく使えるかもしれません。

プロジェクト用のフォルダと必要なパッケージのインストール
① プロジェクト用のフォルダを作る
mkdir ~/crypto-watcher
cd ~/crypto-watcher
npm init -y ※「Node.jsのプロジェクト」として認識させるための初期設定ファイルを自動生成するコマンド
② 必要なパッケージをインストール
npm install dotenv node-cron
※dotenv: .envファイルに書いた内容を、プログラムから読み込めるようにするパッケージ
※node-cron: 「○分おきに実行する」という定期実行の仕組みを作るパッケージ

環境変数の作成と外部に漏らさないための設定
①環境変数ファイルを設定
nano .env ※環境変数ファイルを作成
以下の内容を入力
DISCORD_WEBHOOK_URL=実際のWebhook URL
COINGECKO_API_KEY=実際のAPIキー
もしコードの中にconst apiKey = "実際のキー文字列"のように直接書いてしまうと、後でこのコードをGitHubなどに公開した際、そのままキーが世界中に漏れてしまいます。
代わりに使うのが環境変数という仕組みです。「秘密の情報だけを別のファイルに切り分けて、コードからはその中身を呼び出すだけにする」という考え方です。

②ファイルを外部に漏らさないための設定
nano .gitignore ※GitHubにアップロードする際、このファイルだけは除外する為のファイル
以下の1行だけ入力して保存
.env
今後このプロジェクトをGitHubに保存しても、.envの中身(秘密の情報)だけは自動的に除外されるようになります。
どのくらいの頻度でチェックするか
1分1秒単位のリアルタイム性を求めてしまうと、あっという間にコール数が膨れ上がってしまいます。ここはAIに見積もりを出してもらい、無料枠に収まる範囲で、なるべく実用的な頻度がどれくらいかを一緒に計算してもらいました。

もし枠を超えてしまっても、無料利用の範囲であれば単に取得が止まるだけだとは思いますが、24時間動かし続けることを前提にするなら、事前にある程度の感覚を計算した上で頻度を決めておくことが、効率よく運用するために大事なことなのだと感じました。
環境変数という考え方
ここは「重要の中の重要」だと今回痛感した部分です。
コードの中に直接APIキーやURLを書かないこと。そして、その情報をまとめた環境変数ファイルを公開しないこと。
Tomoyaこれは開発における大前提なのだと理解しました。
正直に書くと、非エンジニアの自分は、最初この重要さが全くわかっていませんでした。
実際に、コードの中に直接APIキーを貼り付けてしまっていたこともありますし、それをそのままGitHubのリポジトリに登録してしまったこともあります。(注意!)
幸い、Privateリポジトリだったので他人の目に触れにくかったことと、APIキー自体も無料枠の学習用のものだったので、実害としてのリスクは小さかったと思います。
これから非エンジニアとしてプログラミングの世界に入って何かを開発してみたい、という方には、いきなり従量課金のAPIやリスクの大きいサービスを使わないことをおすすめします。もしどうしても使うなら、先に環境変数について学んでからにするのが安全です。
勢いで進めることも大事だとは思いますが、リスクを取るなら、きちんと調べた上でにするのが良いと、今回身をもって感じました。
次回予告
準備が整ったので、次回はいよいよ実際にコードを書き、24時間稼働するシステムを開発していきます!!

前回の記事のこちらも参考に:





コメント
コメント一覧 (1件)
[…] 【非エンジニアが挑む】仮想通貨の価格監視Botを作る前に準備したこと […]