bitFlyerのRealtime APIにはJSON-RPC
と Socket.io
の二通りの接続方式がある。Socket.io
においてはその名をよく聞くばかりか、私も別のアプリケーション開発で使用した経緯がある。
この2つを初めに見た時に「ならSocket.ioでいいよね」という思考が働いてしまった。おそらく皆そうなのではないか。しかし、どうせ研究ブログを書くのであれば比較記事のほうが需要があるのではと考えた。
「JSON-RPC Socket.io」で検索をかけてみるとbitFlyerのbotを作っている人のブログ記事が殆どで技術系の記事は殆どヒットしない。
つまり、JSON-RPC
あまり有名ではないのではないか。実際にGoogle検索の件数を調べると
JSON-RPC
: 約 8,430,000 件Socket.io
: 約 489,000,000 件圧倒的な差である。bitFlyerのBOTに限って言えばJSON-RPC
を選択しているユーザは少なくないようだが、比較して検討している記事は見当たらなかった。だとすれば調べてみる価値があるはずだ。
基本的にプログラムは生物である。更新が止まったものはすぐに時代の波に飲まれていく世界である。2つのプロトコルがどれぐらいバージョンアップしているかを調べた。
JSON-RPC
1.0が2005にリリース。2010/03に2.0がリリース。公式サイトでは2013/01/04が最終アップデートのようだ。
Socket.io
いつから開発されているかは不明(調べ方がわからない)が2019/09/20に最終アップデートされている。
やはりSocket.io
のほうが頻繁に更新されている模様。ただ安定していれば更新の必要はなくなるためこれだけの指標で善悪は決められない。
調べているうちにイーサリアムのクライアントGeth(Go Ethereum)のAPI通信にJSON-RPCを
使用している事がわかった。
Gethはマイニングやスマートコントラクトの作成などイーサリアムを扱う上で重要なクライアントソフトだ。bitFlyerが採用している理由はここに一つあるのかもしれない。
単純にbitFlyer公式に投稿されているサンプルのコードに対する文字数を比較すると数十文字しか違わない。誤差だ。
よく見るとRealtime APIでは新規注文などのコマンドが無いことに気づいた。
Realtime APIに関しての実装はデータ受信が主なため比較的シンプルなものとなりそうだ。どちらのプロトコルを利用するかによって実装コード自体に大きな違いもないだろう。
どちらをとっても大差ないのではというのが個人的回答だ。
やはり汎用性を考慮したらSocket.io
に慣れておくのがベターかと思う。
一方でイーサリアム関連のアプリ開発など仮想通貨業界でJSON-RPC
が主流になる可能性が無くもない。ある意味投資としてJSON-RPC
を習得しておくのもありだ。
なお、この記事を執筆した時点では実際に使用した感想ではないので注意願いたい。